前言:
大家好,我是一菲,最近很多小伙伴给我留言:怎么能快速的进行软件测试呢?有哪些方法呢?今天特意给大家总结了这篇文章,希望能够给大家带来帮助。
正文:
一些快速测试方法,这里进行补充和调整,并同步更新到我们的测试知识共享库中,使用时可灵活增删改查。
1.用户界面
若软件在应用商店中销售,界面很可能成为用户是否安装或购买的重要因素
a.漫游用户界面 ,发现是否有任何令人厌烦的界面设计。
b.可参考受欢迎的界面设计,以发现被测产品的可改进之处"
2.边界
软件在处理数值边界时可能出错
a.发现业务的范围和边界,测试边界上的值和临近边界的值
b.测试超出范围的值
c.令数值计算产出超出范围的值
.令一个模块输出其他模块不能接受的值,如界面字段只能显示10个字符的字符串,测试人员让后台产生11个字符的字符串。后台DB的字段是8位整数,测试人员让前台网页传递大于255的整数"
3.溢出
整数和浮点数运算可能溢出,会导致计算错误和安全漏洞
留意软件的数值计算,若觉得某个计算有溢出的风险,就传入极大值或极小值去触发潜在的溢出
4.计算和操作
数据转换和数值计算有些典型错误
a.输入错误的数据以测试数据转换,如软件期望输入整数,测试输入浮点数、无效字符串、空字符串
b.除0
c.除很接近0的极小数值,会产生很大的计算结果,有可能导致数值越界或溢出
d.将高精度数值强制赋给低精度数值,可能导致精度丢失,甚至计算错误
e.浮点数运算很可能产生误差,一些小的误差会累积出严重的偏差,所以测试要关注涉及多个变量或步骤的数值计算,仔细检查其结果的精度"
5.初始状态
一段程序在使用一个变量时,可能对该变量的状态有不正确的假设,这会导致软件故障
变量通常有5个状态,测试要检查程序的对变量状态的假设是否总是正确的:
a.未初始化
b.已初始化
c.默认值
d.已经被赋予当前计算需要的值
e.带有其他计算的结果
f.被修改的值
软件可能不能侦测到它所依赖的事物发生了变化 ,这会导致错误
为一个变量设置值,让一些功能依赖于该变量,然后修改该变量的值,并检查相应功能是否正确。
eg.用图片应用浏览图片,切换到OS界面下删除正在显示的图片,返回图片应用,看被删的图片如何显示
6.控制流
控制流的意外跳转可能暴露隐藏的问题
测试要想办法打乱软件的控制流,如触发异常、输入异常数据、造成环境失败等
7.序列
有些软件错误会在漫长的操作序列中暴露
考虑反复执行以下操作:
a.产生错误消息的操作
b.令任务被迫中断的操作
c.会执行递归计算的操作
另外, 测试可编写测试程序,用随机的顺序调用已有的自动化测试用例,实施长序列的测试"
8.消息
软件与外界的通讯可能中断
若软件与网络服务、DB、其他软件有任何形式的交互 ,测试要破坏它们之间的通讯。
可编写测试程序来监听并篡改信息,或强制被依赖的软件返回错误信息,以测试软件如何处理破损的消息
9.时序和竞态条件
软件可能对操作的时序有不正确地假设
测试异步调用时,测试让软件先后启动A和B两个计算,并让B先完成计算。有些软件不能处理后提交的在计算先返回的情况,会发生故障。
测试可同时启动多个操作去访问共享的数据或功能,以检查并发计算是否造成数据损坏。"
10.错误处理
软件的错误处理代码需要应对意外情况,有较高的编写难度,故易出错
测试尝试触发软件的错误信息,然后反复执行导致 错误消息的操作,以检查错误处理代码是否产生了资源泄漏问题。
强力测试软件,来检查错误处理代码是否将软件恢复到正确状态。"
11.失败处理
软件的失败恢复可能包含错误,使得损失加重
测试要检查失败处理代码的正确性。如,文档崩溃重启后,是否显示用户最近的编辑成果,避免或降低了用户的损失。
12.文件系统 文件系统的异常情况会影响软件的运行
a.用调试工具令OS的文件读写API返回错误,可模拟出磁盘损坏等异常情况
b.删除正在被使用的文件
c.删除即将被使用的文件
d.锁住即将被使用的文件
e.窃取软件持有的文件句柄
f.修改一个需要更高权限才能修改的文件
g.令文件名和文件路径的长度超过OS支持的最大路径长度
h.令文件名包含OS禁止的字符
i.修改文件名后缀为大写或其他无效的后缀名
j.将文件名修改对OS有特殊含义的单词
k.读写尺寸巨大的文件
l.将文件写入只读的磁盘
m.将文件写入容量即将耗尽的磁盘
n.将文件写入网络磁盘,在写入过程中,断开网络
o.将文件写入移动硬盘,在写入过程中,拔出移动硬盘
二、尝试各种输入以触发软件的所有错误消息
一、软件处理错误输入的常见方式有三种:
a.输入过滤:滤除错误的数据
b.输入检查:检查输入并报告错误
c.异常处理:当错误输入产生故障时,异常处理代码会捕获异常并加以补救。
正确编写以上代码需周密思考和反复测试,稍有不慎就可能引入缺陷 "
采用极限值测试、边界值测试、非法值测试、压力测试等方法来测试用户输入
二、强制让软件使用默认值
不同模块由不同程序员编写,他们可能期望不同的默认值 ,这种不一致性会导致错误
a.接受所有默认值,然后提交
b.使用空值
c.将默认值改为另一个值,然后再改回来
d.将默认值改为另一个值,然后改为空值"
三、探索允许的字符集和数据类型
常见问题:
a.字符集:有些软件只支持特定编码的字符集,输入其他编码的字符会导致错误
b.编程语言:有些软件会将用户输入作为程序来执行,这导致了许多问题,如SQL注入
c.OS:OS会禁止创建一些特定名字的文件。一些软件在西文OS上不能正确显示中文字符
测试了解软件、编程语言、实现技术、OS对字符集和数据的期望与限制,然后使用对它们而言具有特殊含义的字符串或数据进行***
四、令输入缓冲区溢出
软件未考虑输入值超长、超大的情况,导致数值计算溢出或缓冲区溢出
常见测试想法:
a.输入超长的字符串,字符串最好类似于“中文中文数字1234567中文…”有助于定位导致错误的长度
b.输入极大值(针对加法和乘法计算)、负的极大值(针对减法计算)、很接近0的值(针对除法计算)等"
==五、测试一组相关变量的取值组
当多个程序员共同开发一段代码时,他们的代码所产生的数值可能不能正常协作。
此外,程序员还会用复杂的嵌套if语句来检查多个变量,这些代码不容易编写,更容易在维护时出错。
测试人员通过调查软件需求和实现,以识别真正相关的变量,它们通常属于同一个数据结构或参与到同一项计算中。
然后,根据软件使用它们的方式设计Case。
也可使用组合测试工具来产生Case
六、重复输入多次
软件可能不了解它在空间和时间上的限制,当重复操作耗尽其资源时,它会失败
测试反复执行一些消耗较多资源的操作,或反复执行一些大量数据的操作。如,在测试在线商城时,测试持续向购物车中添加货品,创建出一个包含许多商品的“超级订单”。该订单可能导致提交失败,或令未来的订单处理遇到困难。
补充: