赞
踩
本文章原创手写,如需转载请注明出处~
压力测试(也称性能测试)的目的本身并不是为了查找系统功能上的bug,所以与传统的功能测试是两个完全不同的概念。
它实现的意义,是希望通过尽可能的模拟真实用户数、连接数等检查服务器或客户端在高并发的压力下是否可以持续稳定的提供良好服务。现有公认两款测试工具,jemeter(java)和locust(python)深受大家青睐。感兴趣的小伙伴自行研究。
压力测试最终结果,受多方面条件限制,所以在进行压力测试的时候,需配合检测服务器状态信息,时间允许情况下,应设计多种业务模型混合测试。主要分为三个维度:
1.单一的一个接口持续性并发,
2.多个接口同时并发,
3.设计链路模型,进行链路压测。
前期准备工作:
1.收集压测接口、参数、请求头等信息
2.给出期望值,设计并发量
3.分析业务场景,开发模拟实际业务链路模型
4.产生垃圾数据恢复方案
压测过程中,影响结果的条件主要有:
1.客户端:
压力机硬件条件(决定了单机并发能力)
客户端网络带宽
等等
2.服务器:
服务器节点数
服务器内存与CPU占用率
网络带宽
进程/线程数
等等
总之,如果测试过程中发现服务器可以承受的并发极限值低于实际业务期望值,为不合格。先从代码级别优化(看是不是服务端某个功能打开了某些资源,没有及时释放掉;线程配置不合理导致浪费系统资源;代码内部请求接口过多或者失败;代码冗余new了过多对象等,研发自查),然后再考虑增加硬件配置问题。
回归正题,采用python模拟并发量进行压力测试,选用多任务中的协程,本人测试过,处理IO密集型任务,协程比线程效率要高,网上也有相应解释,不做赘述。
测试报告主要包含以下信息:
1.请求的接口
2.并发量
3.请求时间
4.请求总数
5.成功数量
6失败数量
7.返回值有问题数量
8.服务器最终处理时间
9.服务器RPS(平均每秒可响应数量)
10.响应最大时长
11.响应最短时长
12.响应低于1秒数量
13.处理字节大小
**
**
**
**
**
**
By.姜姜
本人经验尚浅,文章从自学角度出发,如有不对,请大佬赐教!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。