做了几次简单的性能测试,沉淀了一点小经验,也踩过些小坑。
1、性能测试实际的测试时间,通常比我预估的测试时间更久。
性能测试是一个独立于功能测试的部分,我在做测试的时候,性能测试往往是安排在第一轮测试周期中的,但是,千万不要用功能测试的周期去对待性能测试。它是一个完整的、独立的事件,没有二轮,没有回归测试!
新手测试,很容易遇到忽视或看轻造数据的时间、不明确测试的方法等问题。
预估测试时间,可分为几个步骤:
- 明确测试场景、测试数据量、测试要求
- 准备测试环境
- 准备测试数据的脚本
- 造数据所需时间
- 准备测试脚本
- 测试脚本的执行时间
- 获取测试结果的方式
- 分析测试结果
- 发送测试报告
2、造数据、调脚本,你真的熟练吗?
前期做单一场景的性能测试时,只需要调用一个http接口,copy一下请求头就可以执行,如此简单,让我以为所有的性能测试都可以这么简单。太天真了好吗,调用链路长的你试试,调脚本都调哭我了好吗。TT
- 造数据
两种造数据的方式:
1、调用接口
2、直接sql插入
两种方式各有利弊吧,如果操作链路较长,调接口造数据经常会遇到调用失败的情况,想造100条数据,往往会因为各种原因,失败成70、80条;用sql插入数据,就要涉及到大数据量的组装,整不好还得写个脚本来帮忙,不过成功率会比调接口好很多。
- 登录
涉及到登录,参数化http头信息就很麻烦了。需要分析到请求头里的cookies,token,获取session,来参数化http头信息。

- 获取上一个请求的返回值,进行参数化,传入下一个请求
1、正则表达式提取器。能够帮你在各种返回信息中过滤出有用的信息。

2、json提取器。提取json格式返回时常用,写法简单,和json的语法类似。


- 定时器
设置一个固定定时器,可以防止请求响应太慢,拿不到返回结果。
- 响应断言
判断请求是否成功,是否有想得到的数据。

- 计数器
可以用来设置自增的数据,例如要造数据为「测试-001」至「测试-099」,即可使用如下设置,引用时,使用「测试-${cnt-customer}」即可。

3、测试执行
- 流程控制
1、 if 循环控制器
2、 while循环控制器 语法是JavaScript,如果不会写,可以用函数助手中的__javascript帮你生成

- 当脚本中有可无限成立的等式时,可以用「调度器配置」执行脚本,循环次数设置为1,设置持续时间来控制脚本的执行时间。

- 当需要脚本执行多次时,设置循环次数为多次即可。这个比较常用,不写了。
4、性能测试分析时的小经验
-
首先要明确做的是对比测试还是第一次优化的性能测试。(这是我所接触项目的类型,其他类型的测试先不敢说话。)
-
如果是对比测试,数据量可以不需要一次性定太大,适量,然后对比响应时间即可。
-
有对比的测试是指啥样的测试
A、相同环境下相同请求对比测试
B、相同测试环境下相似业务对比测试
- 明确所需要的测试环境
cpu的核数和内存大小
- 数据准备:直接从数据库导出数据,sublime text处理数据
- 服务器挂掉一次后,就对半减少测试数据
- 后端返回结果较快的情况下,关注前台的渲染时间
- http接口测试还是RPC接口测试
- 是否依赖其他环境
5、测试结果分析及优化方向
grep后台请求,查看后台服务的流转过程,分析耗时较长的请求在哪里。
1、建议代码优化
2、耗时较长的请求分批处理
网友评论