最近接到一个需求,对一个微信公众号上的一个登录进行压力测试,看是否存在压力问题。
刚拿到需求有点瞢,1.这个程序不是公司的开发做的,是第三方做的2.没有问题说明,只能自己想把法。
好吧,领导要求完成任务,只能自己想办法了。
初步评估了下。有2种方法可行:
第一种是使用badboy录制整个交互的过程,生成jmter接口脚本直接调用。
第二种可以通过捉包工具wireshark,指定本地ip捕捉整个登录过程,然后提取,请求地址、端口、协议等信息。
由于第一张比较简单,选择第一种方法,获取脚本如下
但是回放时候出错了。返回{"msg":"未知异常,请联系管理员","code":500}
由于没有后台查看日志,没有文档查看,也没有开发人员问询,所以没方法解决。
由于第一种办法不行,只能通过第二种办法,先捉包查看交互过程
对比了下通过badboy录制的脚本,发现bodboy录制的头信息没完整,所以猜测是头信息有问题。
所以在HTTP Header Manager处按正常交互的信息添加。发现只要包含Content-Type: application/json
脚本就能正常交互,所以可以断定,后台服务是有约定头信息的,如果没包含这个参数就做错误处理。
脚本调试正常后,开启压力测试。
首先要确定下测试目标有2个,第一是要确定下服务器瓶颈在那里,第二个是在极端情况下服务器是否会出错。
第一个测试目标实现的方法使用逐级增加用户的场景,多次测试可得出结果。
需要设置的地方有2处。
设置线程数
设置qps
经过测试,当并发请求达到每秒60用户登录时候,登录会有报错出现,同时让第三方人员查看了下cpu使用率已经达到80%以上。所以推测瓶颈是cpu使用率,服务器心性能为50Qps。
第二个测试目标测试方法。时间使用1000用户循环登录,让服务器在高负荷情况下运行。
测试结果。运行后出现大量错误,再次登录失败,说明服务器在高负荷运行存在问题,需要优化