lilycheng 发表于 2009-9-1 15:48:16

C++test之回归测试

一、准备工作

1. 回归测试的概念

每当软件发生变化时,我们就必须重新测试现有的功能,以便确定修改是否达到了预期的目的,检查修改是否损害了原有的正常功能。同时,

还需要补充新的测试用例来测试新的或被修改了的功能,为了验证修改的正确性及其影响就需要进行回归测试。

2. 回归测试的目的

回归测试可以有效防止由于修改代码或者新增代码造成原本正常的功能出现不正常的现象发生;修改有可能产生副作用从而导致软件未被修改

的部分产生新的问题,使本来工作正常的功能产生错误。同样,在有新代码加入软件的时候,除了新加入的代码中有可能含有错误外,新代码

还有可能对原有的代码带来影响。因此,每当软件发生变化时,我们就必须重新测试现有的功能,以便确定修改是否达到了预期的目的,检查

修改是否损害了原有的正常功能。同时,还需要补充新的测试用例来测试新的或被修改了的功能。为了验证修改的正确性及其影响就需要进行

回归测试。

举例来说,一般而言,一个项目会可能会划分成几个阶段进行实施。项目第一阶段完成后,通过测试发现第一阶段需要实现的功能均已经正常

。项目进入第二阶段,实现新的功能,在新加入代码过程中,可能导致原本正常功能发生错误。回归测试的目的就是测试新引入的代码是否导

致原本正常功能受损。

3. 回归测试的难点

回归测试作为软件生命周期的一个组成部分,在整个软件测试过程中占有很大的工作量比重,软件开发的各个阶段都会进行多次回归测试。在

渐进和快速迭代开发中,新版本的连续发布使回归测试进行的更加频繁,而在极端编程方法中,更是要求每天都进行若干次回归测试。因此,

通过选择正确的回归测试策略来改进回归测试的效率和有效性是非常有意义的。

4. C++test如何实现回归测试

C++test单元测试后,会将每个测试用例的返回值在测试结果面板的Outcome中显示出来,使用者需要验证返回值是否是预期值,一旦验证之后,C++test即可记住该验证值。当下次测试时,C++test会自动比较最新的返回值与之前验证值是否一致,如果不一致,C++test将报告一个回归性错误提示,提醒使用者其可能是一个回归性错误。

5. 导入待测工程

按照前面介绍的方法导入Cal_coverage工程作为待测工程,然后生成单元测试用例,并运行单元测试,得到任务报告。
二、C++test之回归测试

1. 验证结果

(1)打开C++test面板查看测试结果,展开测试TestSuite_Cal_coverage_c_13beb5ae_test_calculate_1,可查看其返回值

Outcome:int_return=1,如图2-1所示。

(2)双击Outcome:int_return=1,查看验证前对应测试用例源代码,如图2-2所示。

(3) 右键点击Outcome:int_return=1,选择Verify Outcome进行验证,如图2-3所示。

(4)验证后,会发现对应测试用例源代码改变,并且任务报告减少为9个,如图2-4所示。

2. 模拟回归测试

(1)验证之后,模拟一个回归性错误产生场景:将原函数的case 4分支中result = n1 / n2改为result = n1 * n2,然后保存,如图2-5所示。

(2)对Cal_coverage工程重新运行单元测试,C++test会报告一个Assertion failed错误,提示期望值为1,但实际值为16,如图2-6所示。

3. 生成回归测试套件
(1)在确定了期望值后,右键单击TestSuite_Cal_coverage_c.c,选择Verify All Outcome(验证所有结果),可以记录所有测试用例的验证值,如图2-7所示。

(2)此时再次按照模拟回归测试中的方法修改原函数,重新进行单元测试,会发现涉及flag=4的都提示期望值与结果不一致,如图2-8所示。

(3)另外通过Test Using(使用测试)->Builtin(内置)->Unit Testing(单元测试)->Generate Regression Base(生成回归测试基)也可验证所有结果,如图2-9所示。

如果需要被测试的Cal_coverage工程,请到www.tryarm.com的“资源共享”区下载
最新版本C++test免费下载:www.edukit.com.cn

sandy-guo 发表于 2015-1-4 15:49:19

顶一个,很好呢,不晓得有木有软件呀?

woddebbmm 发表于 2015-1-14 17:07:29

不错,感谢分享
页: [1]
查看完整版本: C++test之回归测试