接口性能测试—测试的职责
性能测试的准备
一、压测的需求
需求来源:
1.测试功能时发现接口的性能没法承受当前的用户量
2.开发评估到自己的代码存在性能上的问题
3.实际线上的用户使用时导致业务在性能上有问题
4.为了预防未来用户量增大的压力,提前做好性能测试
需求的具体说明:
1.分析哪些场景涉及到性能
2.分析哪些接口的调用量过高
汇总以上的分析后,列出所有需要进行性能测试的接口
二、链路分析
接口的链路分析:
1.为何要分析接口的链路?
答:目前,因为很多的项目都是微服务的架构,所以一个接口经常会通过很多的微服务项目,只有分析了接口的链路之后,才知道这个接口通过了哪些系统,哪些系统会对这个接口有所影响,才能找到性能的瓶颈
2.谁去分析接口的链路?
答:开发(测试想要去了解也是可以的)
3.执行:对接口进行基本的说明;列出链路中每个经过的系统的cpu、内存、pod数,以及数据库的连接数、cpu、内存,甚至还有服务器的弹性伸缩数量、cpu利用率、cpu核数估算
4.大家都做好物理实验,要做实验,就要记录数据,记录数据就要实验报告模版;
这里也一样:最好是把整个链路的说明都列出来,然后形成一个表格,同时也方便记录测试的数据
参考这个表格:https://docs.qq.com/sheet/DYW5RV2VjYm1tUnRU?tab=jgystm&_t=1612404896659
三、压测的准备
测试数据:
1.需要测试的数据:课程、专栏、红包、优惠券等等,需要提前创建的,或者在脚本中需要使用到的,必须先准备好
测试脚本
1.对需要测试的接口编写好对应的接口的压测脚本
测试工具&资源
1.确认好压测的环境,是否是在运维系统上,还是说需要在其他的服务器上,或者在本地
2.确认好压测的工具,这个一般就是要跟着脚本来走的,具体的工具也必须要提前部署好在对应的压测环境上
3.和运维组提前沟通好,压测时需要的服务器资源
风险分析
1.评估压测的数据风险:压测后,是否会产生线上的脏数据,如果有,如何进行清除
2.尽可能的避免线上的脏数据的产生,可以尽可能的使用机器人号
3.压测后对线上环境产生的影响范围,需要评估好,然后列出需要回归的列表;假设不能评估很准确的影响范围,那就全平台进行回归
总结:确保压测后,线上环境恢复正常
注意:
1.一定要先设计好压测时需要观察的数据,同时功能的正常使用是非常重要的
性能测试的工具(locust)
一、locust的基本介绍
1.locust,简单来说:是一个简单易用的分布式用户负载测试工具。它用于web站点(或其他系统)的负载测试,并计算一个系统可以处理多少并发用户
官方文档为标准:https://docs.locust.io/en/stable/
二、接口的压测脚本示例
#!/usr/bin/env python
# coding:utf-8
import time
from random import randint
from locust import HttpLocust, TaskSet, task
from collections import namedtuple
import jwt
import logging
# 虾哥的永不过期token
XaToken