读书笔记:软件测试的分类及原则

2020-09-24 10:13:35 浏览数 (1)

软件测试的艺术-第2章 软件测试的心理学和经济学


输入--输出

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

软件测试是为了试图发现程序中错误的破坏性的过程。

黑盒测试

黑盒测试是一种重要的测试策略,又称为数据驱动的测试或输入/输出驱动的测试。使用这种测试方法时,将程序视为一个黑盒子。测试目标与程序的内部机制和结构完全无关,而是将重点集中放在程序不按其规范正确运行的环境条件。

测试数据来源于软件规范。如果想用这种方法来发现程序的所以错误,判定的标准就是“穷举输入测试”,将所以可能的输入条件都作为测试用例。

为什么这样做?

比如说在三角形测试的程序中,试过了三个等边三角形的测试用例,这不能确保正确地判断出所有的等边三角形。程序中可能包含对边长3842、3842、3842的特殊检查,并指出此三角形为不规则三角形。

由于程序是黑盒子,因此能够确定此条语句存在的唯一方法,就是试验所有的输入情况。

但是,穷举测试实际上需要创建无限的测试用例,这当然不可能。是无法测试完所有有效和无效的处理,以及所有可能的事务的处理顺序。

穷举输入测试是无法实现的,这有两方面含义:一是我们无法测试一个程序以确保它是无错的,二是软件测试中需要考虑一个基本问题是软件测试的经济学。也就是说,在测试中,测试投入的目标在于通过有限的测试用例,最大限度地提高发现的问题的数量,以取得最好的测试效果。除了这个因素外,要实现这个目标,还需要能够窥见软件的内部,对程序做些合理但非无懈可击的假设。

白盒测试

白盒测试,或称为逻辑驱动的测试,允许我们检查程序的内部结构。这种测试策略对程序的逻辑结构进行检查,从中获取测试数据。

穷举路径测试:即将程序中的每条语句至少执行一次。如果使用测试用例执行了程序中所以可能的控制流路径,那么程序有可能得到完全测试。

穷举路径测试的问题:1、是不可能的,也是不切实际的,因为路径太多;2、虽然可以测试到程序中的所有路径,但是程序仍然可能存在着错误,原因如下:

1)、即使是穷举路径测试也决不能保证程序符合其设计规范。举例来说,如果要编写一个升序排序的程序,但却错误地编写成一个降序排序程序,那穷举路径测试就没有多大价值了;程序仍然存在着一个缺陷:它是个错误的程序,因为不符合设计的规范。

2)、程序可能会因为缺少某些路径而存在问题。穷举路径测试当然不能发现缺少了哪些必需路径。

3)、穷举路径测试可能不会暴露数据敏感错误。

将黑盒测试和白盒测试的要素结合起来,形成一个合理但并不十分完美的测试策略。

软件测试的原则

编号

原则

1

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

2

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

3

编写软件的组织不应当测试自己编写的软件

4

应当彻底检查每个测试的执行结果

5

测试用例的编写不仅应该根据有效和预料到的输入情况,而且也应该根据无效和未预料到的输入情况

6

检查程序是否“未做其应该做得”仅是测试的一半,测试的另一半是检查程序是否“做了其不应该做得”

7

应避免测试用例用后即弃,除非软件本身就是一个一次性的软件

8

计划测试工作时,不应默许假定不会发现错误

9

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

10

软件测试是一项极富创造性、极其智力挑战性的工作

小结

软件测试的三个重要的测试原则:

  • 软件测试是为了发现错误而执行程序的过程。
  • 一个好的测试用例具有较高的发现某个尚未发现的错误的可能性。
  • 一个成功的测试用例能够发现某个尚未发现的错误。

0 人点赞