一、软件质量保证
SQA-Sofware Quality Assurance是建立一套有计划,有系统的方法,来向管理层保证拟定出的标准、步骤、实践和方法能够正确地被所有项目所采用。
基本目标:
1、软件质量保证工作是有计划进行的;
2、客观地验证软件项目产品和工作是否遵循恰当的标准、步骤和需求;
3、将软件质量保证工作及结果通知给相关组别和个人;
4、高级管理层接触到在项目内部不呢解决的不符合类问题;
5、软件质量需要全面的测试工作来保证。
研发质量
上线质量
线上质量
白盒测试
从程序的控制结构导出测试用例,使用被测单元内部如何工作的信息,允许测试人员对程序内部逻辑结构及有关信息来设计和选择测试用例,对程序的逻辑路径进行测试。基于一个应用代码的内部逻辑知识,测试是基于覆盖全部代码、分支、路径、条件。
目的:
·保证一个模块中的所有独立路径至少被执行一次;
·对所有的逻辑均需要测试真、假两个分支;
·在上下边界及可操作范围内运行所有循环;
·检查内部数据结构以确保其有效性;
二、逻辑驱动测试(https://www.cnblogs.com/Ming8006/p/5798186.html#top)
一、语句覆盖
在测试时,首先设计若干个测试用例,然后运行被测试程序,使程序中的每个可执行语句至少执行一次。
只需通过路径ace的例子即可。
优点:可以很直观地从源代码得到测试用例,无须细分每条判定表达式。
缺点:由于这种测试方法仅仅针对程序逻辑中显式存在的语句(即可执行语句),但对于隐藏的条件和可能到达的隐式逻辑分支,是无法测试的。
二、判定覆盖
设计若干测试用例,运行被测程序,使得程序中每个判断的取真分支和取假分支至少经历一次,即判断的真假值均曾被满足。
通过路径ace和abd,或者通过路径acd和abe,就可达到判定覆盖。
优点:比语句覆盖有更强的测试能力,无须细分每个判定就可以得到测试用例。
缺点:往往大部分判定语句是由多个逻辑条件组合而成(如,判定语句中包含AND、OR、CASE).若仅仅判断整个最终结果,而忽略每个条件的取值情况,必然会遗漏部分测试路径。
三、条件覆盖
一个判定包含若干个条件,每个条件都执行。
执行abe和abd
优点:它使一个判定中的每个条件都取到了两个不同的结果,而判定覆盖则不保证这一点。
缺点:“条件覆盖”并不包含“分支覆盖”,如两个用例没有覆盖判定(A>1 and B = 0)为True的情况。
四、判定/条件覆盖
执行ace和abd
优点:既有“条件覆盖”,又有“判定覆盖”
缺点:从表面看,测试了所有条件的取值,但是实际上某些条件掩盖了另一些条件。
五、条件组合覆盖
- A>1, B=0 2) A>1, B≠0 3) A≤1, B=0 4) A≤1, B≠0
- A=2, X>1 6) A=2, X≤1 7) A≠2, X>1 8) A≠2, X≤1
A=2,B=0,X=4 使 1)、5)两种情况出现 (沿ace路径);
A=2,B=1,X=1 使 2)、6)两种情况出现 (沿abd路径);
A=1,B=0,X=2 使 3)、7)两种情况出现 (沿abe路径);
A=1,B=1,X=1 使 4)、8)两种情况出现 (沿abd路径)。
优点:既有“条件覆盖”,又有“判定覆盖”,还有“条件组合覆盖”。
缺点:并不能覆盖每一条路径,acd没有执行。
三、路径测试
在程序控制图的基础上,通过分析控制构造的环形复杂性,导出基本可执行路径,从而设计测试用例的方法。
设计出的测试用例要保证在测试过程中程序的每一个可执行语句至少执行一次。
1)控制流图
2)独立路径:至少沿一条新的边移动的路径。
3)基本路径测试
4)工具方法:图形矩阵
四、控制结构测试的其他变种
1)条件测试
2)循环测试
五、类测试方法
结构性测试
六、白盒测试工具
内存资源泄漏检查:Numega中的bounceshecker,Rational中的Purify等;
代码覆盖率检查:Numega中的truecoverage,Rational的Purecoverage,Telelogic公司的logiscope,Macabe公司的Macabe等;
开源覆盖率测试软件gCov等。
七、总结