尝试各种输入以触发软件的所有错误消息
软件处理错误输入的常见方式有三种:
1.输入过滤:滤除错误的数据
2.输入检查:检查输入并报告错误
3.异常处理:当错误输入产生故障时,异常处理代码会捕获异常并加以补救。
正确编写以上代码需周密思考和反复测试,稍有不慎就可能引入缺陷 "
采用极限值测试、边界值测试、非法值测试、压力测试等方法来测试用户输入
强制让软件使用默认值
不同模块由不同程序员编写,他们可能期望不同的默认值 ,这种不一致性会导致错误
1.接受所有默认值,然后提交
2.使用空值
3.将默认值改为另一个值,然后再改回来
4.将默认值改为另一个值,然后改为空值"
探索允许的字符集和数据类型
常见问题:
1.字符集:有些软件只支持特定编码的字符集,输入其他编码的字符会导致错误
2.编程语言:有些软件会将用户输入作为程序来执行,这导致了许多问题,如SQL注入
3.OS:OS会禁止创建一些特定名字的文件。一些软件在西文OS上不能正确显示中文字符
测试了解软件、编程语言、实现技术、OS对字符集和数据的期望与限制,然后使用对它们而言具有特殊含义的字符串或数据进行攻击
令输入缓冲区溢出
软件未考虑输入值超长、超大的情况,导致数值计算溢出或缓冲区溢出
常见测试想法:
1.输入超长的字符串,字符串最好类似于“中文中文数字1234567中文...”有助于定位导致错误的长度
2.输入极大值(针对加法和乘法计算)、负的极大值(针对减法计算)、很接近0的值(针对除法计算)等"
测试一组相关变量的取值组
当多个程序员共同开发一段代码时,他们的代码所产生的数值可能不能正常协作。
此外,程序员还会用复杂的嵌套if语句来检查多个变量,这些代码不容易编写,更容易在维护时出错。
测试人员通过调查软件需求和实现,以识别真正相关的变量,它们通常属于同一个数据结构或参与到同一项计算中。
然后,根据软件使用它们的方式设计Case。
也可使用组合测试工具来产生Case
重复输入多次
软件可能不了解它在空间和时间上的限制,当重复操作耗尽其资源时,它会失败
测试反复执行一些消耗较多资源的操作,或反复执行一些大量数据的操作。如,在测试在线商城时,测试持续向购物车中添加货品,创建出一个包含许多商品的“超级订单”。该订单可能导致提交失败,或令未来的订单处理遇到困难。
原文地址:http://blog.51cto.com/hongz/2084240