Python实现⾃定义的压⼒测试框架及压测分析报告 ⽤Python实现压⼒测试
本⽂章原创⼿写,如需转载请注明出处~
压⼒测试(也称性能测试)的⽬的本⾝并不是为了查系统功能上的bug,所以与传统的功能测试是两个完全不同的概念。
它实现的意义,是希望通过尽可能的模拟真实⽤户数、连接数等检查服务器或客户端在⾼并发的压⼒下是否可以持续稳定的提供良好服务。现有公认两款测试⼯具,jemeter(java)和locust(python)深受⼤家青睐。感兴趣的⼩伙伴⾃⾏研究。摄像机外壳
压⼒测试最终结果,受多⽅⾯条件限制,所以在进⾏压⼒测试的时候,需配合检测服务器状态信息,时间允许情况下,应设计多种业务模型混合测试。主要分为三个维度: 1.单⼀的⼀个接⼝持续性并发,
2.多个接⼝同时并发,
3.设计链路模型,进⾏链路压测。
前期准备⼯作:
1.收集压测接⼝、参数、请求头等信息
33链
2.给出期望值,设计并发量
3.分析业务场景,开发模拟实际业务链路模型
4.产⽣垃圾数据恢复⽅案
压测过程中,影响结果的条件主要有:
1.客户端:
压⼒机硬件条件(决定了单机并发能⼒)
客户端⽹络带宽
等等
2.服务器:
服务器节点数
服务器内存与CPU占⽤率
⽹络带宽
天然气加气机进程/线程数
等等
总之,如果测试过程中发现服务器可以承受的并发极限值低于实际业务期望值,为不合格。先从代码级别优化(看是不是服务端某个功能打开了某些资源,没有及时释放掉;线程配置不合理导致浪费系统资源;代码内部请求接⼝过多或者失败;代码冗余new了过多对象等,研发⾃查),然后再考虑增加硬件配置问题。
回归正题,采⽤python模拟并发量进⾏压⼒测试,选⽤多任务中的协程,本⼈测试过,处理IO密集型任务,协程⽐线程效率要⾼,⽹上也有相应解释,不做赘述。铜管焊接
测试报告主要包含以下信息:
1.请求的接⼝
2.并发量
3.请求时间
4.请求总数
5.成功数量
6失败数量
7.返回值有问题数量
8.服务器最终处理时间
9.服务器RPS(平均每秒可响应数量)
10.响应最⼤时长
11.响应最短时长
不锈钢筛网种类12.响应低于1秒数量
13.处理字节⼤⼩
**
采⽤excel保存测试结果**
**
定义测试类
**
**
⽤户输⼊限制最⾼并发数、并发时长及限制每秒发送时间**
By.姜姜
本⼈经验尚浅,⽂章从⾃学⾓度出发,如有不对,请⼤佬赐教!
闪光灯柔光罩