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)双击[Line 56]Outcome:int_return=1,查看验证前对应测试用例源代码,如图2-2所示。

(3) 右键点击[Line 56]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)在确定了期望值后,右键单击[10]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所示。

lilycheng

一、准备工作

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)双击[Line 56]Outcome:int_return=1,查看验证前对应测试用例源代码,如图2-2所示。

(3) 右键点击[Line 56]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)在确定了期望值后,右键单击[10]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所示。

lilycheng


相关内容

  • 软件测试基本知识
  • 第一章 软件工程及UML 笔试题 1. [基础题]UML:Unified Modeling Language它是一种用于描述.构造软件系统以及商业建模的语言.简单的理解就是它可以以一种直观的方式表示出一个系统的各项内容. 2. [基础题]软件开发模型有哪些? 答:瀑布模型,快速原型模型,增量模型,螺 ...

  • 基于QTP的自动化测试
  • 本科毕业论文(设计) 题目:基于QTP 的自动化测试 姓 名:学 号:专 业:院 系: 信息工程学院 指导老师:职称学位:完成时间: 教务处制 安徽新华学院本科毕业论文(设计)独创承诺书 本人按照毕业论文(设计)进度计划积极开展实验(调查)研究活动,实事求是地做好实验(调查)记录,所呈交的毕业论文( ...

  • 软件c面试题
  • 软件测试面试试题--请能人解答 软件测试面试试题 1.软通动力面试笔答 1.白箱测试和黑箱测试是什么?什么是回归测试? 回归测试是指修改了旧代码后,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误.自动回归测试将大幅降低系统测试.维护升级等阶段的成本.回归测试包括两部分:函数本身的测试. ...

  • 手机游戏测试要点
  • 一.有可能造成手机游戏出现bug 的一些中断: 1. 手机来电显示 2. 短信,彩信,手机增值业务 3. 手机充电中,手机在充电时拔出充电器 4. 手机低电量,手机没电时的提示 5. 手机闹钟 6. 手机的背景音乐与手机铃声 7. 手机的背光与手机游戏 8. 插上耳机与拔出耳机 9. 蓝牙下载 注意 ...

  • 软件工程考试重点
  • 1.What is Software? (1)指令的集合(计算机程序),通过执行这些指令来满足预期的特征.功能和性能需求: (2)数据结构,使得程序可以合理的利用信息; (3)文档描述,用来描述程序操作和使用.2. Software Engineering 软件工程是)建立和使用一套合理的工程原则, ...

  • LIBSVM使用方法
  • LIBSVM 1 LIBSVM简介 LIBSVM是台湾大学林智仁(Lin Chih-Jen)副教授等开发设计的一个简单.易于使用和快速有效的SVM模式识别与回归的软件包,他不但提供了编译好的可在Windows系列系统的执行文件,还提供了源代码,方便改进.修改以及在其它操作系统上应用:该软件还有一个特 ...

  • 蒸压加气混凝土超声波速与强度的关系探讨
  • 第34卷第5期V ol.34No.5 河北工业大学学报2005年10月October 2005 JOURNAL OF HEBEI UNIVERSITY OF TECHNOLOGY 文章编号:1007-2373(2005) 05-0042-04 蒸压加气混凝土超声波速与强度的关系探讨 刘 杰1,孙志亮 ...

  • 中国商业银行体系信用风险评估
  • 摘要:宏观压力测试,作为压力测试方法在宏观经济分析中的具体运用,可以提供极端事件对金融体系影响的前瞻性信息.随着各国金融监管当局对系统性风险的日趋重视,宏观压力测试方法逐渐成为检验一国银行体系的脆弱性.维护金融稳定的首选工具.本文主要研究宏观压力测试在银行信用风险评估中的应用,并在已有的模型成果的对 ...

  • 沥青混合料用矿粉性能指标研究
  • 第21卷 第4期2008年7月 文章编号:100127372(2008) 0420006206 中 国 公 路 学 报 China Journal of Highway and Transport Vol. 21 No. 4J uly 2008 沥青混合料用矿粉性能指标研究 李 平1, 芦 军2,3 ...