作者|陈俊华、刘琳琳
异常测试是有别于功能测试和性能测试的一种测试类型,通过异常测试,可以发现由系统异常、依赖服务异常、应用本身异常等原因引起的问题,提高系统的稳定性。
目 的在日常测试中,由于排期紧张以及异常情况难以模拟,异常测试通常被大家忽略或者放弃。只要功能没问题,就可以上线。但是线上情况千奇百怪,服务器宕机、用户走到代码的犄角旮旯、三方服务挂掉等情况无可避免,因此对于系统的健壮性和稳定性,异常测试不可或缺,但异常测试往往是通过让研发预留bug、注释代码、到测试机上杀死服务等方法进行,代价较大,且有可能带着bug上线。异常测试平台搭建的目的就是降低异常测试的门槛。
工具选型目前异常测试工具有很多,比如模拟网络异常的tc(Traffic Control)、netem和iptables,模拟代码注入故障的jvm-sandbox,以及在生产环境随机模拟故障的Chao Monkey框架,经过了多次调研,秉持着“拿来主义”的原则,最终采用了“集大成”的chaosblade。chaosblade提供了cpu、磁盘、内存、网络、jvm等异常的注入功能。chaosblade的jvm异常注入能力是基于jvm-sandbox,提供了无侵入运行aop的能力,使用起来比jvm-sandbox更加简单。同时,它还提供了server模式,可以暴露web服务,上层可以通过http进行调用。
方 案将chaosblade服务在目标服务器上启动,然后springboot服务进行调用,springboot再对chaosblade进行一次封装(没有什么是通过一次封装解决不了的,如果有,那就两次),简化chaosblade的使用和对数据进行存储,以及一些针对我司的个性化需求,再通过前端,将参数界面化,通过一些简单的填写,就可以进行相应的异常注入。
后端实现遇到无法编译的lib包解决办法:
git上下载chaosblade-exec-jvm源码,在查找需要编译的类那里将无法打开的lib包直接跳过即可。
CPU满载场景 ,在ip的输入框,输入指定的IP 地址,IP的CPU负载会达到100% 。使用者要有该机器的权限才可以操作。
解除满载的操作 操作记录 列表 --->点击详情 进入详情页面 ;
点击解除故障按钮 ,cpu负载恢复到之前状态
自定义方法返回值
填写方法的服务名、包名、全路径类名、方法名,返回值的json格式。
日志获取返回值信息,然后转成json格式,放入到输入框中,该类型的异常注入时间在10s左右,请耐心等待。解除异常与上边操作一致
未来预期首次注入时间通常在15s以上,前端表现为接口超时,后续可以修改超时时间,提高用户体验
将前端的很多输入框修改为选择项,进一步提高效率
加入重试和编辑功能
提供动态mock能力
异常场景测试
转转App代码覆盖率方案
测试环境问题排查的那些事儿
广告召回自动化测试之路
场景接口测试平台搭建实践
转转发布系统问题排查实战
业务场景抽离,助力测试提效
工具尝鲜--单元测试自动生成工具 evosuite
辅助型QA转型之路
Matrix-ApkChecker的实际应用
一名测试实习生的心路历程
转转直播测试揭秘
App测试,安装包走过的一生
RPC服务接口测试自动化初探
H5页面多端兼容测试与监控
移动端自动化测试-远程设备调度
电商业务测试方案与实战落地(转转)
IOS远程真机控制实践
Java字节码增强技术介绍