上堂课的问题:
软件交付客户之前,是否需要保证软件彻底没有错误?
为什么测试只能检测错误的存在,而不是错误的不存在?
答:不需要保证。因为根本保证不了,也无需保证。软件错误是多种因素综合的结果,和运行环境有关,使用习惯有关,只能保证当前缺省情况下,出错的概率符合要求。
因为要检测错误不存在必须用穷举法,而测试的基本规则中的第五条就说明了穷举不可能。
*
15 软件测试技术
*
设计测试方案是测试阶段的关键技术问题。
所谓测试方案包括具体的测试目的(例如,预定要测试的具体功能),应该输入的测试数据和预期的结果。
通常又把测试数据和预期的输出结果称为测试用例。
最困难的问题是设计测试用的输入数据。
白盒测试技术
*
15 软件测试技术
*
设计测试方案的基本目标是,确定一组最可能发现某个错误或某类错误的测试数据。
已经研究出许多设计测试数据的技术,这些技术各有优缺点,没有哪一种是最好的,更没有哪一种可以代替其余所有技术;同一种技术在不同的应用场合效果可能相差很大,因此,通常需要联合使用多种设计测试数据的技术。
*
15 软件测试技术
*
有选择地执行程序中某些最有代表性的通路是对穷尽测试的惟一可行的替代办法。
所谓逻辑覆盖是对一系列测试过程的总称,这组测试过程逐渐进行越来越完整的通路测试。
逻辑覆盖
*
15 软件测试技术
*
1. 语句覆盖
语句覆盖是选择足够多的测试数据,使被测程序中每个语句至少执行一次。
例如,。
为了使每个语句都执行一次,程序的执行路径应该是sacbed,为此只需要输入下面的测试数据(实际上X可以是任意实数):A=2,B=0,X=4
*
15 软件测试技术
*
被测试模块的流程图
*
15 软件测试技术
*
语句覆盖对程序的逻辑覆盖很少。此外,语句覆盖只关心判定表达式的值,而没有分别测试判定表达式中每个条件取不同值时的情况。
综上所述,可以看出语句覆盖是很弱的逻辑覆盖标准,为了更充分地测试程序,可以采用下述的逻辑覆盖标准。
*
15 软件测试技术
*
2. 判定覆盖
判定覆盖又叫分支覆盖,它的含义是,不仅每个语句必须至少执行一次,而且每个判定的每种可能的结果都应该至少执行一次,也就是每个判定的每个分支都至少执行一次。
判定覆盖比语句覆盖强,但是对程序逻辑的覆盖程度仍然不高,例如,上面的测试数据只覆盖了程序全部路径的一半。
*
15 软件测试技术
*
3. 条件覆盖
条件覆盖的含义是,不仅每个语句至少执行一次,而且使判定表达式中的每个条件都取到各种可能的结果。
条件覆盖通常比判定覆盖强,因为它使判定表达式中每个条件都取到了两个不同的结果,判定覆盖却只关心整个判定表达式的值。
*
15 软件测试技术
*
4. 判定/条件覆盖
既然判定覆盖不一定包含条件覆盖,条件覆盖也不一定包含判定覆盖,自然会提出一种能同时满足这两种覆盖标准的逻辑覆盖,这就是判定/条件覆盖。它的含义是,选取足够多的测试数据,使得判定表达式中的每个条件都取到各种可能的值,而且每个判定表达式也都取到各种可能的结果。
有时判定/条件覆盖也并不比条件覆盖更强。
*
15 软件测试技术
*
2021年15软件测试技术 来自淘豆网m.daumloan.com转载请标明出处.