根据产品开发提供的接口文档,接口参数,接口地址进行接口测试。
自动化用到的Jmeter中的常用组件介绍
测试计划:
测试计划至少要包含测试计划,一个线程组和一个或多个实例
在创建测试计划时,可以在勾选复选框functional testing(用于记录返回数据)。
若勾选了该选项,则jMeter会记录服务器和各实例返回的数据。若你对实例的监听对象选择了指定文件,那么数据会写入该文件内。这个很有用,可以用来运行检查你的jMeter配置是否正确,你的服务器是否返回了指定的结果。当然,返回数据存在文件里面,肯定会让文件变的很大。这时,你可在配置中选择对监听对象指定写入文件的字段。若你是不想要记录返回的数据,那么该选项对于你来说就是没用的。
当你要做压力测试时,就不要勾选该选项了。
线程(组):
场景的起始点,用于设置多少用户并发?什么时候开始跑?跑多久?
所有的测试计划,都是从线程组开始的。所有的控制器和实例都是基于线程的,所以控制器和实例必须放在线程中。其他的部分也可以直接放在测试计划中,便于应用于所有的线程组中,例如,监听对象。
逻辑控制器:
包括循环控制器、简单控制器、If控制器等等
配置元件:
对samplers进行配置,避免重复内容
-
HTTP Cookie Manager
作用域:
- HTTP Cookie Manager放在测试计划下,对整个测试计划有效
- 放在线程组内,对特定的线程组有效
- 放在简单控制器或事务控制器下对当前控制器有效
- 位于分支中的优先级高于位于它的父级的。
如果线程组中配置Cookie管理器,测试计划中的Cookie管理器仍然对线程组生效,此时应禁用测试计划中的Cookie管理器,线程组中的才会生效。
”每次反复清除Cookie“选项的作用:勾选上,线程组将所有的接口跑完时会清除Cookies,第二次跑的时候不会受缓存的影响。涉及到sso登录,线程组第一次登录没问题,第二次的时候中间登录接口的相关参数需要从第一次登录中提取正则匹配等。
-
HTTP Header Manager
设置HTTP消息头。Jmeter中每条用例都是发送一个请求,需要添加消息头在这里设置,放在用例内部。
-
用户定义的变量
设置自定义变量的名称,在用例中可以使用${var_name}调用,注意:用户定义变量不管放置在哪个位置,都会被优先处理。建议这种元素最好放在线程组的开头。
定时器
请求之间的暂停
- 高斯定时器:随机(偏差100,延迟300,则范围为200-400)
- 固定定时器:固定延时时长(ms)
前置处理器
运行在Sampler之前,多用于设置sampler和更新从上一个响应获得的变量值
-
用户参数:
Sampler(取样器)
真正的请求,jmeter脚本中必须要包含sampler
后置处理器
运行在sampler之后,多用于响应数据的处理。
断言:
响应断言:使用频率最高,用例执行以后需要对执行成功与否进行判断,所以每条用例都要添加断言
BeanShell断言:编写js脚本进行判断
监听器
-
查看结果树
查看接口运行的详细情况
-
聚合报告:
看整体情况的
- label - 在不勾选include group name in label?复选框的情况下,为请求取样器的名称。否则为“请求取样器所在线程组:请求取样器名称”
- Samples - 用同一个请求取样器,发送请求的数量(注意:该值是不断累积的)。比如10个线程数设置为10,迭代10次,那么运行一次测试,该值就增加10*10=100
- Average - 默认情况下是单个request的平均响应时间。当使用了Transaction Controller时,也可以以Transaction为单位显示平均响应时间
- Median - 中位数,表示响应时间本不大于该时间值的请求样本数占总数的50%
- 90% Line - 表示响应时间不大于该时间值的请求样本数占总数的90%
- Min - 针对同一请求取样器,请求样本的最小响应时间
- Max - 针对同一请求取样器,请求样本的最大响应时间
- Error % - 出现错误的请求样本的百分比
- Throughput - 吞吐量以“requests/second、requests/minute、requests/hour”来衡量。时间单位已经被选取为second,所以显示速率至少是1.0,即每秒1个请求。当吞吐量被保存到CSV文件时,采用的是requests/second,所以30.0requests/second在csv文件中保存为0.5
- Received KB/sec - 每秒接收多少KB数据
- Sent Kb/sec - 每秒发送多少KB数据
单击Configure按钮,可以配置结果保存各种选项。
-
Transaction per second
性能测试用的查看tps
-
Response Times Over Time
查看请求响应时间
-
PerMon Metrics Collector
监控资源使用情况的
执行顺序:
jMeter测试树包含的元素既是分层次的又是有顺序的。在测试树中的一些元素是非常严格分层的(监听器,配置元件,前/后处理器,断言,定时器),一些元素也是按照基本顺序来执行的(控制器和取样器)。当你创建一个测试计划时,你将通过创建一些实例来创建一个有序的实例请求列表,来呈现一个执行步骤的集合。这些请求通常都是用控制器来组织的,并且这些请求也是有顺序的。
配置元件 -> 前置处理器 -> 定时器 -> 取样器(sampler) -> 后置处理器 -> 断言 -> 监听器
注意:只有有sampler的时候,定时器、断言、前置/后置处理器才会被运行,逻辑控制器和sampler按他们在树中的顺序执行
作用域
变量和属性都是大小写敏感的。
- 如果相同的变量由多个用户定义的变量,那么只有最后一个有效。
- 一旦一个线程开始,每个线程的相关“用户定义的变量”将会初始化。其他元素如前置处理器中的”用户参数“或者后置处理器中的“正则表达式提取器”可能被用来重定义这个相同的变量,或者创建一个新的变量。这些重定义的变量只对当前的线程有效。
- 取样器(Sampler):不与其他组件相互作用,无作用域问题
- 逻辑控制器:元件只对其子节点中的取样器和逻辑控制器起作用
- 除取样器和逻辑控制器以外,其他6类元件中,如果是某个sampler的子节点,则该元件只对其父子节点起作用。
- 除取样器和逻辑控制器以外,其他6类元件中,如果其父节点不是sampler,对其作用域是该元件父节点下的其他所有后代节点。