1. 模块做异常测试考虑点

作者: Shirley_奋进中的虾米 | 来源:发表于2017-03-18 11:51 被阅读132次

    ###关于异常测试###

    异常测试就是人为地构造异常场景,观察服务在异常场景下的表现是否符合预期。

    常见异常测试类型有接口入参异常、模块异常、底层依赖异常、资源异常(cpu,内存,带宽,io,端口)、压力异常(比如流量突增情况)

    ###对于单模块做异常测试###

    1. 重要接口模拟异常,前提是熟悉接口协议(pb协议?macpack?)

        1)接口字段是否有required和optional之分,重点是required字段

              a)required字段缺失,接口如何表现?

              b)注意字段数据类型,修改值大小(结合边界值考虑)或替换数据类型或字段过长

              c)optional字段缺失,接口如何表现?

         2)修改接口返回值(比如包含特殊字符或缺少某些字段或返回数据为空),看上游接口表现

         3)接口之间是否有超时,超时后是否有重查机制

         4)对于异常捕捉是否优雅处理,不要时不时地吐个core

         5)发送数据大包?

    2. 模块启动或运行过程中加载本地文件需求(不一定指配置文件)

        1)文件不存在,是否优雅捕捉异常并报相关warning日志或直接启动失败

        2)文件内容为空,模块加载&解析过程是否正常运行

        3)对文件破坏,比如使内容乱码或格式异常(比如不是json格式?json格式多字段或少字段?),模块是否能正常解析

        4)文件内容特别大,超出模块可用buffer

        5)文件是在启动时加载的,如果在模块运行过程中把该文件删了,会有什么表现?

    3. 模块与模块之间通信,其实也是接口通信,可参考第1点

        1)连接模式

             a)长连接或短连接,连接池大小设计,主要考虑若一个模块流量突增时对后端模块的影响;

             b)是否有主动关闭连接,这个主要是为了不出现泄露的考虑

        2)接口不兼容

        3)接口字段内容非法

        4)是否有心跳探活机制,多久发送心跳包,若发现没有收到心跳包会怎么表现

        5)模拟网络抖动,对于超时如何处理,是否有重查机制,重查次数

        6)将一个模块所在的机器带宽打满,观察是否影响跟其他模块的通信

    ###机器资源做异常测试###

    1. 模拟CPU受限

        1)写个程序循环占用机器cpu,观察模块表现,最直观表现就是处理请求的时延托大了

    2. 模拟内存受限

       1)写个程序不停malloc机器的free内存来构造场景

    3.  模拟带宽异常

       1)模拟带宽打满

       2)模拟网络抖动(参考iptables或tc工具)

    4. 模拟io异常

        1)磁盘异常,比如将挂载的磁盘摘了

        2)磁盘满了,是否影响落日志和数据

        3)磁盘坏了

        4)模拟io打满,ioutil=100%

    5. 端口异常

        1)从端口入/出数据包,加延时模拟端口慢(iptables或tc工具)

        2)限制从端口入/出数据包大小(tc工具)

        3)模拟丢包(tc工具)

    相关文章

      网友评论

        本文标题:1. 模块做异常测试考虑点

        本文链接:https://www.haomeiwen.com/subject/dwjunttx.html