以下是测试专家Cem Kaner在黑盒软件测试中总结的一些快速测试方法,这里进行补充和调整,并同步更新到我们的测试知识共享库中,使用时可灵活增删改查。

1.用户界面

若软件在应用商店中销售,界面很可能成为用户是否安装或购买的重要因素

1).漫游用户界面 ,发现是否有任何令人厌烦的界面设计。

2).可参考受欢迎的界面设计,以发现被测产品的可改进之处"

2.边界

软件在处理数值边界时可能出错

1).发现业务的范围和边界,测试边界上的值和临近边界的值

2).测试超出范围的值

3).令数值计算产出超出范围的值

4).令一个模块输出其他模块不能接受的值,如界面字段只能显示10个字符的字符串,测试人员让后台产生11个字符的字符串。后台DB的字段是8位整数,测试人员让前台网页传递大于255的整数"

3.溢出

整数和浮点数运算可能溢出,会导致计算错误和安全漏洞

留意软件的数值计算,若觉得某个计算有溢出的风险,就传入极大值或极小值去触发潜在的溢出

 

4.计算和操作

数据转换和数值计算有些典型错误

1).输入错误的数据以测试数据转换,如软件期望输入整数,测试输入浮点数、无效字符串、空字符串

2).除0

3).除很接近0的极小数值,会产生很大的计算结果,有可能导致数值越界或溢出

4).将高精度数值强制赋给低精度数值,可能导致精度丢失,甚至计算错误

5).浮点数运算很可能产生误差,一些小的误差会累积出严重的偏差,所以测试要关注涉及多个变量或步骤的数值计算,仔细检查其结果的精度"

5.初始状态

一段程序在使用一个变量时,可能对该变量的状态有不正确的假设,这会导致软件故障

变量通常有5个状态,测试要检查程序的对变量状态的假设是否总是正确的:

1).未初始化

2).已初始化

3).默认值

4).已经被赋予当前计算需要的值

5).带有其他计算的结果

6.被修改的值

软件可能不能侦测到它所依赖的事物发生了变化 ,这会导致错误

为一个变量设置值,让一些功能依赖于该变量,然后修改该变量的值,并检查相应功能是否正确。

eg.用图片应用浏览图片,切换到OS界面下删除正在显示的图片,返回图片应用,看被删的图片如何显示

7.控制流

控制流的意外跳转可能暴露隐藏的问题

测试要想办法打乱软件的控制流,如触发异常、输入异常数据、造成环境失败等

8.序列

有些软件错误会在漫长的操作序列中暴露

考虑反复执行以下操作:

1).产生错误消息的操作

2).令任务被迫中断的操作

3).会执行递归计算的操作

另外, 测试可编写测试程序,用随机的顺序调用已有的自动化测试用例,实施长序列的测试"

9.消息

软件与外界的通讯可能中断

若软件与网络服务、DB、其他软件有任何形式的交互 ,测试要破坏它们之间的通讯。

可编写测试程序来监听并篡改信息,或强制被依赖的软件返回错误信息,以测试软件如何处理破损的消息

10.时序和竞态条件

软件可能对操作的时序有不正确地假设

测试异步调用时,测试让软件先后启动A和B两个计算,并让B先完成计算。有些软件不能处理后提交的在计算先返回的情况,会发生故障。

测试可同时启动多个操作去访问共享的数据或功能,以检查并发计算是否造成数据损坏。"

11.错误处理

软件的错误处理代码需要应对意外情况,有较高的编写难度,故易出错

测试尝试触发软件的错误信息,然后反复执行导致 错误消息的操作,以检查错误处理代码是否产生了资源泄漏问题。

强力测试软件,来检查错误处理代码是否将软件恢复到正确状态。"

12.失败处理

软件的失败恢复可能包含错误,使得损失加重

测试要检查失败处理代码的正确性。如,文档崩溃重启后,是否显示用户最近的编辑成果,避免或降低了用户的损失。

13.文件系统 文件系统的异常情况会影响软件的运行

1).用调试工具令OS的文件读写API返回错误,可模拟出磁盘损坏等异常情况 

2).删除正在被使用的文件

3).删除即将被使用的文件

4).锁住即将被使用的文件

5).窃取软件持有的文件句柄

6).修改一个需要更高权限才能修改的文件

7).令文件名和文件路径的长度超过OS支持的最大路径长度

8).令文件名包含OS禁止的字符

9).修改文件名后缀为大写或其他无效的后缀名

10).将文件名修改对OS有特殊含义的单词

11).读写尺寸巨大的文件

12).将文件写入只读的磁盘

13).将文件写入容量即将耗尽的磁盘

14).将文件写入网络磁盘,在写入过程中,断开网络

15).将文件写入移动硬盘,在写入过程中,拔出移动硬盘