越来越多人注重软件质量,性能测试也进入很多人的眼前,性能测试的工具大家都知道,常见的JMeter、locust等,今天说一下性能测试方案。
测试目的
从目标出发,可以把性能测试分为几类:
1.测试性能参数的情况,帮助设计人员作出决策。
2.检测性能弱点,有针对性地增强硬件配置。
3.进行测试,监控产品进程或方法函数等影响性能的情况,调优软件性能。
4.进行高压测试,查看产品在高并发负载、单次大容量负载下是否有问题。
5.制定好性能指标,持续运行一定时间,验证系统在预设生产场景时的稳定性和可靠性。
6.确保产品的性能可以满足预定的生产场景
最基础的性能测试一般以最后一点为目标,即确保产品的性能可以满足预定的生产场景,下面以这个为例制定性能测试方案。
测试背景
测试背景指的是产品的业务背景,分析好业务背景,得出需要进行性能测试的业务,从而确定测试范围。
测试背景分析的目标只有一个 —— 找出请求压力最大的场景。
一个场景的请求压力受三个指标影响,请求人数、操作时长、人均请求次数,测试指标的数值依赖于测试背景。
例如:市场活动的测试指标
预计活动的客户量,计算客户从进行活动到确认活动成果需要的接口请求次数,模拟客户的操作时长。
客户量 * 活动请求次数 / 操作时长 = 平均QPS
平均QPS * 2 = QPS高峰
注:*2为举例,实际QPS高峰不一定是平均QPS的两倍。
测试范围
测试时检查的数据维度,包括响应时间,服务器CPU、内存使用率等。
预估的场景指标不一定正确,性能测试需要更多的数据来参考,在进行性能测试时应监控服务的CPU、内存等使用率,监控
方法也简单,如top -b命令即可监控linux系统的性能并输出日志,Perfmon可以监控Windows系统。
嫌麻烦,随意定个性能指标的人员便开始测试的人员,更加需要注意服务器的性能情况,了解在该情况下服务器的负载情况。
测试策略
测试策略,即如何进行性能测试,需确定使用的性能测试工具,测试脚本模拟的场景。
性能测试工具的介绍网上很多很详细,不再作说明,测试脚本的策略说几种比较常见的策略
1.并发测试:同时并发一定数量的请求,有明确的并发目标时使用,建议并发数为目标并发数*1.5。
2.负载测试:不断增加请求以查看不同负载的性能状态,需要关联负载和服务器的性能情况,有一定的数据处理。
3.稳定性测试:一定的负载下持续测试一段时间,长时间连续处理业务的产品建议进行稳定性测试。
不同测试策略关注的方向不同,收集的数据类型不同,根据测试目的选择策略。
测试资源
性能测试的结果与硬件配置相关性很强,需要在测试前确认好进行测试的资源。
1.服务器硬件资源
2.服务器网络资源
3.测试机硬件资源
4.测试机网络资源
测试进入条件
为了提高性能测试效率,避免无效测试,应有合理的测试进入条件
已完成功能测试
在功能还不够完备的情况下没有多大的意义,功能完善会对系统性能有影响,过早进入性能测试会出现测试结果不准确、浪费测试资源等情况。
准备好测试数据
不同数据量下测试的结果会不同,需要准备测试所需的数据
测试退出条件
避免无限期的延期、测试,应有确切的退出条件
成功退出
完成目标数据的获取后,退出性能测试。
失败退出
系统出现大量错误或测试情况不如预期,退出性能测试。
测试时机
如果服务器是云主机或测试环境是生产环境,需要定好测试时机。
若服务器是云主机,其他用户的主机使用情况会影响服务器,需在预定好的时间进行性能测试。
测试环境是生产环境,则需要注意不能让性能测试影响到线上业务的进行