【软件测试】使用C++ Test进行覆盖测试

一、测试目的

1.掌握覆盖率测试、回归测试的方法。
2.掌握使用Parasoft C++ Test进行覆盖率测试、回归测试。

二、测试环境

Windows XP, Parasoft C++ Test 9.2

三、测试内容

使用Parasoft C++ Test进行覆盖率分析,并手动添加测试用例提高测试覆盖率,以及回归测试。

四、测试步骤及结果
5.1 C++Test的覆盖率分析概述
1.1.测试覆盖率介绍

行覆盖率(Line Coverage–LC)
指出多少源码的可执行受控制流影响至少一次。如果所有可执行代码107受到影响至少一次,将会获得完全的 100% 行覆盖率。
块覆盖率(Block Coverage–BC)
与行覆盖率类似,除了带有块覆盖率的测量代码单元是一个基本块(见前面表格中这一术语的定义)表示源码中有多少基本块受到控制流影响至少一次。
路径覆盖率(Path Coverage–PC)
表明是否一个给定的函数中每条可能的路径随后有控制流。用于挑选路径的分开点(见前面表格中这个术语的解释)与在判断(分支)覆盖率中相同。因为循环引入极多数量的路径,这个测量只考虑有限循环的可能性。
判断(分支)覆盖率(Design/Condition Coverage—DC/CC)
表明源码中有多少分支控制流通过。当每一个判决在所有的分支点取得所有可能的结果至少一次时,可获取完整的,100% 覆盖。C++test 考虑源码中下列语句类型分支点:if-else, for,while, do-while和switch.。C++test 没有将这样的动态分支点当作为异常操作 (throw-catch 语句)。如果在一个文件里没有判断,C++test 报告这种度量标准不可用(使用"N/A"选项卡)。
修正的条件/判断覆盖率(MC/DC)
根据 DO - 178B 标准必需满足下面三个条件才能获得全部的 (100%) MC/DC覆盖率: a. 每个判断至少有一次已经产生所有可能的结果 b. 判断中的每一个条件至少有一次已经产生所有可能的结果。 c. 判断中每一个条件已经证明独立地影响判断结果。由于 C++test 认为每一个条件和判断可能只有两个 MC/DC覆盖率的结果:真或假。C++test 只检查上面列出的第三个选项(c),因为(c)中暗含条件(a)和(b)。 通过改变一些特殊条件,又固定所有其他可能的条件,来证明这种条件能够独立地影响判决结果。

1.2 C++Test进行覆盖率分析

1.2.1 导入工程项目
1.2.2 查看测试覆盖率
在这里插入图片描述

1.2.3 配置规范
在这里插入图片描述

1.2.4 执行测试用例
在这里插入图片描述

1.2.5 对测试覆盖率进行分析
在这里插入图片描述
在这里插入图片描述

1.2.6 查看不同类型的覆盖率分析

判定覆盖率
在这里插入图片描述
简单条件覆盖率
在这里插入图片描述
修改条件覆盖率
在这里插入图片描述

5.2 添加测试用例,C++Test提高测试覆盖率

2.1 手动添加测试用例提高测试覆盖率
2.2查看之前运行测试用例后的测试覆盖率。
在这里插入图片描述
通过查看该函数并进行分析,可以发现当函数int calculate(int a,int b,int c)的输入参数c的值为4,b的值为 0时,该红色标志的程序应该被执行。因此,在测试的时候应该构造一个这样的测试用例。测试用例在设计时关键的是要提供有效的用于测试的输入值。
2.3 手动添加测试用例
在这里插入图片描述
选定要添加测试用例的套件
2.4 接下来在该窗口中选择需要测试的方法或函数,自定义测试用例名称。
在这里插入图片描述
选择待测试的函数模块和命名测试用例
2.5 配置测试用例,这里重点配置测试用例的输入参数的值。有效的输入参数值才能测试程序的执行路径。这里配置 b=0,c=4。
在这里插入图片描述
2.6 查看添加的测试用例及其源码

在这里插入图片描述测试用例浏览器面板中出现新添加的测试用例及源码
2.7 运行配置好的测试规范(选择“Parasoft”->“测试执行”->“用户自定义”->“Run Unit Test for Coverage” )。
在这里插入图片描述
手动添加测试用例后提高测试覆盖率
6.1 C++Test回归测试
6.1.1 使用C++Test执行回归测试
1.对工程代码执行测试

生成的测试用例
在这里插入图片描述
执行生成的测试用例
在这里插入图片描述
查看测试结果
在这里插入图片描述
测试用例源码
在这里插入图片描述
校验后的测试用例
在这里插入图片描述
6.2 对修改后的工程代码执行回归测试

执行原来校验过的测试用例
在这里插入图片描述
回归测试后的结果
在这里插入图片描述
回归测试报告(断言失败)
在这里插入图片描述
五、测试总结

  1. C++Test自动测试的测试用例不一定能够完全满足用户对测试覆盖率的要求。通常情况下,需要用户根据实际代码功能结构设计并添加测试用例。C++Test提供三种方式支持用户添加测试用例:
    在了解C++Test测试用例相关API的基础上,在自动生成的测试用例文档中完全手工添加;
    使用C++Test工具提供的测试用例添加向导方式,手动加入单个测试用例;
    使用C++Test工具提供的数据源测试用例方式,手动指定被测项与输入项之间的关系。
    通过上述三种方式,用户可方便地手动添加满足需求的测试用例进行单元测试并提高测试覆盖率
  2. 使用Parasoft C++test工具,开发测试人员可以:
    1)自动化执行测试用例库,将测试用例在软件代码修改前后的执行结果做对比,以图形化界面报告回归测试结果,提高效率。
    2)提高对测试用例库维护的效率。借助C++test的自动化生成/执行测试用例功能,以及回归测试的对比报告,测试人员可以根据修改后的软件需求,快速地添加/删除测试用例等。
    通过本节测试,我学会了用C++test 测试的方法以及覆盖率测试和回归测试。更好的掌握了软件测试。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值