以下是测试专家James Whittaker在HTBS(How To Break Software)中以失败模型为基础介绍的一些快速测试方法,这里进行补充和调整,并同步更新到我们的测试知识共享库中,使用时可灵活增删改查。


尝试各种输入以触发软件的所有错误消息

软件处理错误输入的常见方式有三种:

1.输入过滤:滤除错误的数据

2.输入检查:检查输入并报告错误

3.异常处理:当错误输入产生故障时,异常处理代码会捕获异常并加以补救。

正确编写以上代码需周密思考和反复测试,稍有不慎就可能引入缺陷 "

采用极限值测试、边界值测试、非法值测试、压力测试等方法来测试用户输入


强制让软件使用默认值

不同模块由不同程序员编写,他们可能期望不同的默认值 ,这种不一致性会导致错误

1.接受所有默认值,然后提交 

2.使用空值

3.将默认值改为另一个值,然后再改回来

4.将默认值改为另一个值,然后改为空值"


探索允许的字符集和数据类型

常见问题:

1.字符集:有些软件只支持特定编码的字符集,输入其他编码的字符会导致错误 

2.编程语言:有些软件会将用户输入作为程序来执行,这导致了许多问题,如SQL注入

3.OS:OS会禁止创建一些特定名字的文件。一些软件在西文OS上不能正确显示中文字符

测试了解软件、编程语言、实现技术、OS对字符集和数据的期望与限制,然后使用对它们而言具有特殊含义的字符串或数据进行***


令输入缓冲区溢出

软件未考虑输入值超长、超大的情况,导致数值计算溢出或缓冲区溢出

常见测试想法:

1.输入超长的字符串,字符串最好类似于“中文中文数字1234567中文...”有助于定位导致错误的长度

2.输入极大值(针对加法和乘法计算)、负的极大值(针对减法计算)、很接近0的值(针对除法计算)等"


测试一组相关变量的取值组

当多个程序员共同开发一段代码时,他们的代码所产生的数值可能不能正常协作。

此外,程序员还会用复杂的嵌套if语句来检查多个变量,这些代码不容易编写,更容易在维护时出错。

测试人员通过调查软件需求和实现,以识别真正相关的变量,它们通常属于同一个数据结构或参与到同一项计算中。

然后,根据软件使用它们的方式设计Case。

也可使用组合测试工具来产生Case


重复输入多次

软件可能不了解它在空间和时间上的限制,当重复操作耗尽其资源时,它会失败

测试反复执行一些消耗较多资源的操作,或反复执行一些大量数据的操作。如,在测试在线商城时,测试持续向购物车中添加货品,创建出一个包含许多商品的“超级订单”。该订单可能导致提交失败,或令未来的订单处理遇到困难。