代码静测,黑白盒测试,动态测试,代码覆盖率的介绍
我们在日常工作中经常会听到测试讲一些专业术语,比如代码静测啦,黑白盒测试,动态测试,代码覆盖率啦。对这些专业术语我们有时候可能会感觉云里雾里的,不知道这些术语到底表达什么意思,有什么用,今天我们来介绍一下,什么是代码静测,黑白盒测试,动态测试,代码覆盖率。
1.代码静测
代码静测,也叫做静态测试。是指不运行被测程序本身,通过分析或检查源程序的语法、结构、过程、接口等来检查程序的正确性的过程。借助专用的软件测试工具评审软件文档或程序,度量程序静态复杂度,检查软件是否符合编程标准,借以发现编写的程序的不足之处,减少错误出现的概率;
2.动态测试
指的是实际运行被测程序,输入相应的测试数据,检查实际输出结果和预期结果是否相符的过程,所以判断一个测试属于动态测试还是静态的,唯一的标准就是看是否运行程序。
3.黑盒测试
也称功能测试,是基于规格说明(需求文档)的测试。测试人员不考虑/不关心软件内部结构,只关心程序的功能是否符合他的功能说明。一般用来确认软件功能的正确性和可操作性,目的是检测软件的各个功能是否能得以实现,把被测试的程序当作一个黑盒,不考虑其内部结构,在知道该程序的输入和输出之间的关系或程序功能的情况下,依靠软件规格说明书来确定测试用例和推断测试结果的正确性。
4.白盒测试
基于设计文档(结构)的测试。关注软件内部结构和程序的设计实现。又称为结构测试或逻辑驱动测试。
5.几种测试方法的关联
黑盒测试有可能是动态测试(运行程序,只看输入和输出),也有可能是静态测试(不运行程序,只是查看界面)
白盒测试有可能是动态测试(运行程序,并分析代码结构),也有可能是静态测试(不运行程序,只是静态查看代码)
动态测试有可能是黑盒测试(运行程序,只看输入和输出),也有可能是白盒测试(运行程序,并分析代码结构)
静态测试有可能是黑盒测试(不运行程序,只是查看界面),也有可能是白盒测试(不运行程序,只是静态查看代码)
静态、动态测试注重过程。(技术)
黑盒、白盒测试注重结果。
6.代码覆盖率
代码覆盖率对应的还有需求覆盖率,两种都被归纳为测试覆盖率。
那么什么是测试覆盖率和需求覆盖率呢?
测试覆盖率通常被用来衡量测试的充分性和完整性。
需求覆盖率是指测试对需求的覆盖程度,通常的做法是将每一条分解后的软件需求和对应的测试建立一对多的映射关系,最终目标是保证测试可以覆盖每个需求,以保证软件产品的质量。
代码覆盖率是指,至少被执行了一次的条目数占整个条目数的百分比。
最常用的三种代码覆盖率指标
-
行覆盖率又称为语句覆盖率,指已经被执行到的语句占总可执行语句(不包含类似 C++ 的头文件声明、代码注释、空行等等)的百分比。这是最常用也是要求最低的覆盖率指标。实际项目中通常会结合判定覆盖率或者条件覆盖率一起使用。
-
判定覆盖又称分支覆盖,用以度量程序中每一个判定的分支是否都被测试到了,即代码中每个判断的取真分支和取假分支是否各被覆盖至少各一次。比如,对于 if(a>0 && b>0),就要求覆盖“a>0 && b>0”为 TURE 和 FALSE 各一次。
-
条件覆盖是指,判定中的每个条件的可能取值至少满足一次,度量判定中的每个条件的结果 TRUE 和 FALSE 是否都被测试到了。比如,对于 if(a>0 && b>0),就要求“a>0”取 TRUE 和 FALSE 各一次,同时要求“b>0”取 TRUE 和 FALSE 各一次。
1.代码覆盖率的价值
统计代码覆盖率的根本目的是找出潜在的遗漏测试用例,并有针对性的进行补充,同时还可以识别出代码中那些由于需求变更等原因造成的不可达的废弃代码。
2.代码覆盖率的局限性
即使你所设计的测试用例已经达到 100% 的代码覆盖率,软件产品的质量也做不到万无一失。其根本原因在于代码覆盖率的计算是基于现有代码的,并不能发现那些“未考虑某些输入”以及“未处理某些情况”形成的缺陷。
高的代码覆盖率不一定能保证软件的质量,但是低的代码覆盖率一定不能能保证软件的质量。
3.总结
代码覆盖率其实通俗的讲,就是用来度量测试完整性的一个手段和标准。就是看测试人员测试一段代码,是否测试完全,有没有没有测到的代码。