如何攻破软件测试
# 如何攻破软件测试
输入/输出攻击
单一输入攻击
-
迫使所有的报错信息出现
- 不能时程序正常中止或结束就是所谓的BUG。如果确保所有的报错信息都出现之后,程序依然能正常的工作,就能免去用户很多的麻烦,不是出现报错信息就导致程序crash
-
强制指定默认值
指定默认值需要先改变值的当前设定,然后将其设定为一个不合理的值。连续的转换保证了再转换成其他可用的值前是经过设置默认值
-
尝试所有可用的字符集
- $#%引号等特殊字符
- 快捷键组合
- 空、空格、NULL等
-
迫使输出区域大小改变
- 以时钟举例:9:59–10:00,由4个字符转变为5个字符;12:59-1:00,由5个字符转变为4个字符
-
引发显示区域溢出
- 输入带上标/下标的字符串,如SO₄²⁻(mg/L),放大/缩小该文本框,查看输入内容是否显示正常
-
迫使屏幕刷新问题出现
过度的屏幕刷新导致程序变慢,通过添加、删除、移动元素来触发程序刷新
输入值组合攻击
-
迫使无效输出出现
当我们查看图片的详情时,键盘的左右键会支持查看上一个/下一个图片,我们可以输入上下键,或者发送tab键改变当前焦点,发现程序出校无效的输出
-
找不不能共存的输入值组合
- 先确定期望的输出,然后寻找对应输入值的组合
输入序列攻击
-
迫使无效输出出现
-
选择导致无效的输入序列
对于一张图片不停的点击收藏/取消收藏,导致程序出现死锁
-
-
多次重复同样的输入序列
-
这种操作方式会对资源大规模占用,并且对存储空间造成压力,当然也包括发现其他负面的遗留问题
曾经测试过新建相册A,上传一张图片,删除相册A,再新建相册A,上传一直图片,然后恢复刚才删除的相册A,然后删除最近新建的相册A,再新建相册A,上传一张图片,重复多次删除、新建、恢复相册A,最后发现相册列表错乱的问题
-
数据攻击
变量值攻击
-
存储不正确的数据类型
- 存储数据对象的数据类型与用户输入的数据类型不匹配
-
使数据值超过允许的范围
- 被存储的变量数据与输入的变量数据一样
数据单元大小攻击
-
溢出输入缓冲区
- 输入长字符串导致输入缓冲区溢出
-
存储过多的值
- 数组、矩阵、列表、字典等不仅要考虑存储的数值,还要考虑存储值的数目
-
存储太少的值
- 当数据结构允许增加或删除信息时,操作n-1次增加的同时穿插着或在其之后做n次删除
数据访问攻击
开发:在很多程序中通常任何任务都能通过多种途径完成
测试:同一个函数可以由多个入口来调用,这些入口都必须确保该函数的初始条件得到满足
-
找出同一数据的不同修改方式
- 安装应用程序时,清空默认安装路径
运算攻击
操作数攻击
-
使用非法操作数进行运算
- 1、测试需要知道一个或更多个内部运算中操作数的数据类型和可用值
- 2、正在进行的运算具体是什么,使用的是什么数据类型
-
找出非法操作数组合
-
1、触发由非法操作数引起的运算,如0是一个合法的整数,但是作为除数就是非法的
-
2、找出不能共存的操作数组合,涉及一个以上的操作数运算则存在操作数冲突的可能性
- 举例:同时给程序发送前进和后退的操作指令
-
结果攻击
存储运算结果的数据对象的溢出和下溢
-
使运算结果过大
- y=x+1,x,y是2比特的整数,x值为32768,则运算失败,造成存储溢出
-
使运算结果过小
- y=x-1,x,y是2比特的整数,x值为-32767,则运算失败,造成存储溢出
功能作用相互攻击
-
找出共享数据结果不佳的功能
- 同时操作上下键,或者左右键
XMind: ZEN - Trial Version