软件测试的艺术-CH2

by GlenFord J. Myers(U.S.A)

测试是为发现错误而执行程序的过程

软件测试心理学

人类的行为总是倾向于具有高度目标性,建议一个正确的目标有重要的心理学影响,如果我们的目标在于证明程序中的错误,那我们设计的测试数据就会发现更多的问题,

反之,则相反。

如果在测试阶段发现了错误并且成功得到修复,那么测试是成功的

如果本次测试可以确定再无其它可以查出的错误,那么本次测试仍然是成功的

总结,软件测试更适宜被视为试图发现程序中错误的破坏性过程。一个成功的测试用例,通过诱发程序发生错误,从而在这个方向上可以促进软件质量的改进。

最终我们通过软件测试来建立某种程度的信心:软件做了该做的,未做其不该做的,通过对错误的不断研究是实现这个目的的最佳途径。

软件测试经济学

软件测试是否能够发现“所有”的错误?一般来说这是不切实际的。这个基本的问题反过来暗示出软件测试的经济学问题,即测试人员对被测软件的期望,以及测试用例的

设计方式。

为了应对经济学上的挑战,应该在测试之前建立某些策略

黑盒测试

又成为数据驱动的测试或者输入/输出驱动的测试。程序视为一个黑盒子,重点集中在发现程序不按其规范正确运行的环境条件。

这种方法如果想要发现所有的错误,就要穷举输入测试数据,这当然是不可能完成的任务。

故这种方法目标在于如何通过有限的测试用例集,最大限度的提高发现问题的数量,以取得最好的测试效果,当然要实现这个目标,还需要能够窥见软件的内部,对程序

做一些合理的假设,如 2,2,2是一个等边三角形,那么有理由相信 3,3,3也会被程序认定为等边三角形。

白盒测试

又称逻辑驱动的测试,允许我们检查程序的内部结构。

软件测试的重要原则

1. 测试用例中的一个必需部分是对预期输出或结果的定义

一个测试用例必需包含两个部分

   1.对程序输入数据的描述

   2.对程序在上述输入数据下的正确输出结果的精确描述

2. 程序员应当避免测试自己编写的程序

  处于心理学层面,应当避免让程序员直接测试自己编写的程序,让其它人来测试程序会更加有效,也更容易测试成功

3. 应当测查每个测试的执行结果

  常常被忽视检查执行结果,导致遗漏场景

4. 不仅要输入有效的数据场景,也要输入无效和未预料的输入情况

5. 程序某部分存在更多错误的可能性,与该部分已经发现的错误数量成正比

   错误总是倾向于聚集存在,最好对容易存在错误的部分进行额外的测试,以获取更大的成效。

小结

1. 软件测试是为发现错误而执行程序的过程

2. 尽量避免编码人员测试自己编写的程序

3. 好的测试用例对未发现的错误高度敏感

4. 成功的测试用例能够发现未知的错误

5. 成功的测试用例要仔细定义输入输出的期望值

6. 成功的测试需要仔细分析测试结果

原文地址:https://www.cnblogs.com/muyiblog/p/6916682.html