以下是测试专家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).将文件写入移动硬盘,在写入过程中,拔出移动硬盘