如何攻破软件测试

如何攻破软件测试# 如何攻破软件测试

输入/输出攻击

单一输入攻击

  • 迫使所有的报错信息出现

    • 不能时程序正常中止或结束就是所谓的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