第 2 章 软件测试的心理学和经济学
软件测试的心理学
- 应当一开始就假设程序中隐藏着错误,然后执行测试去尽可能多地发现程序的错误。实际上,这种假设是几乎对所有程序都成立的。所以,测试的另一种定义为:测试是为发现错误而执行程序的过程。拥有这样的观念,其实是把测试的定位拔高了一筹:测试会找出并推荐修改程序的错误,从而提高程序的可靠性和质量。
- 心理学影响测试的另一个效应是,人类行为总是倾向于具有高度目标性,如果我们的目的是要证明程序中不存在错误,我们潜意识中就会倾向于选择可能较少导致程序失效的测试方法和数据。反之,我们的目标定位尽可能多地发现程序的错误,就会设计并更好地执行较优的测试方法。
- 还有一个心理学效应或说概念,是关于“成功与否的测试”。如果认为发现了程序错误的测试称为不成功,而没有发现程序错误的称为成功,那就是本末倒置了。但基本大多数人一不留神就会倾向于这么想。需要警惕。
- 另一个需要警惕的是,如果软件测试的目标是证明软件做了应该做的,也就是该有的功能都有了,就不易发现软件还有一类错误:做了不该做的。
软件测试的经济学
- 对于具有一定复杂性的程序,较真起来,测试将几乎永远也做不完。因为要发现程序中的所有错误常常是不可能的。那么到底需要做到什么程度呢?这就需要引入“经济学”的思考方法,综合多种考虑因素,合理选择合适的测试策略。
软件测试的原则
- 每个测试用例必须明确定义输入数据与预期输出。
- 避免由开发人员测试自己编写的程序。
- 避免由开发团队测试自己开发的程序。
- 彻底检查每个测试用例的执行结果。
- 测试用例应当覆盖无效的输入和未预料到的输入情况。
- 需要同时检查程序“做了应该做的”和“没做不应该做的”。
- 避免设计的测试用例用完即弃。
- 规划测试工作时不能假定测试不会发现错误。
- 程序多个模块相较而言,某个模块存在的未发现的错误数量,与已发现的错误数量成正比。
- 软件测试是一项极富创造性、极具智力挑战性的工作。
廖杰良 - 2019-05-12