输入--输出
测试是为了发现错误而执行程序的过程。
软件测试是为了试图发现程序中错误的破坏性的过程。
黑盒测试是一种重要的测试策略,又称为数据驱动的测试或输入/输出驱动的测试。使用这种测试方法时,将程序视为一个黑盒子。测试目标与程序的内部机制和结构完全无关,而是将重点集中放在程序不按其规范正确运行的环境条件。
测试数据来源于软件规范。如果想用这种方法来发现程序的所以错误,判定的标准就是“穷举输入测试”,将所以可能的输入条件都作为测试用例。
为什么这样做?
比如说在三角形测试的程序中,试过了三个等边三角形的测试用例,这不能确保正确地判断出所有的等边三角形。程序中可能包含对边长3842、3842、3842的特殊检查,并指出此三角形为不规则三角形。
由于程序是黑盒子,因此能够确定此条语句存在的唯一方法,就是试验所有的输入情况。
但是,穷举测试实际上需要创建无限的测试用例,这当然不可能。是无法测试完所有有效和无效的处理,以及所有可能的事务的处理顺序。
穷举输入测试是无法实现的,这有两方面含义:一是我们无法测试一个程序以确保它是无错的,二是软件测试中需要考虑一个基本问题是软件测试的经济学。也就是说,在测试中,测试投入的目标在于通过有限的测试用例,最大限度地提高发现的问题的数量,以取得最好的测试效果。除了这个因素外,要实现这个目标,还需要能够窥见软件的内部,对程序做些合理但非无懈可击的假设。
白盒测试,或称为逻辑驱动的测试,允许我们检查程序的内部结构。这种测试策略对程序的逻辑结构进行检查,从中获取测试数据。
穷举路径测试:即将程序中的每条语句至少执行一次。如果使用测试用例执行了程序中所以可能的控制流路径,那么程序有可能得到完全测试。
穷举路径测试的问题:1、是不可能的,也是不切实际的,因为路径太多;2、虽然可以测试到程序中的所有路径,但是程序仍然可能存在着错误,原因如下:
1)、即使是穷举路径测试也决不能保证程序符合其设计规范。举例来说,如果要编写一个升序排序的程序,但却错误地编写成一个降序排序程序,那穷举路径测试就没有多大价值了;程序仍然存在着一个缺陷:它是个错误的程序,因为不符合设计的规范。
2)、程序可能会因为缺少某些路径而存在问题。穷举路径测试当然不能发现缺少了哪些必需路径。
3)、穷举路径测试可能不会暴露数据敏感错误。
将黑盒测试和白盒测试的要素结合起来,形成一个合理但并不十分完美的测试策略。
编号 | 原则 |
---|---|
1 | 测试用例中一个必需部分是对预期输出或结果进行定义 |
2 | 程序员应当避免测试自己编写的程序 |
3 | 编写软件的组织不应当测试自己编写的软件 |
4 | 应当彻底检查每个测试的执行结果 |
5 | 测试用例的编写不仅应该根据有效和预料到的输入情况,而且也应该根据无效和未预料到的输入情况 |
6 | 检查程序是否“未做其应该做得”仅是测试的一半,测试的另一半是检查程序是否“做了其不应该做得” |
7 | 应避免测试用例用后即弃,除非软件本身就是一个一次性的软件 |
8 | 计划测试工作时,不应默许假定不会发现错误 |
9 | 程序中某部分存在更多错误的可能性,与该部分已发现错误的数量成正比 |
10 | 软件测试是一项极富创造性、极其智力挑战性的工作 |
软件测试的三个重要的测试原则:
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。