1.Jemter元件和组件
1.1 元件和组件的概念
元件:多个功能相似的的组件的容器,类似于一个工具箱。
组件:实现某个特定功能的实例,类似于工具箱中的螺丝刀,十字扳手...
1.2 作用域和执行顺序
1.2.1 作用域
例子:
1.2.2 执行顺序
1.3 线程
线程通过测试计划右键添加,线程又分为:setUP线程组、tearDown线程组、开放模型线程组、线程组,下面将分别介绍这几个的区别:
1.3.1 setUP线程组
在执行整个测试计划之前执行的操作,和unittest中的setUp功能基本一样
1.3.2 tearDown线程组
在执行整个测试计划之后执行的操作,和unittest中的teardown功能基本一样
我们可以看出不管setUp和tearDown的位置在哪,它们都是在固定的时间执行。
1.3.3 线程的参数设置
1.4 取样器
真正执行的请求,和postman中设置请求相同,这里以http请求为例:
1.5 逻辑控制器
1.5.1 If控制器
作用:控制它的子节点是否执行
路径:线程组右键--添加--逻辑控制器--IF控制器
1.5.2 循环控制器
路径:右键线程组--添加--逻辑控制器--循环控制器
作用:设置子节点循环运行几次,可以嵌套
循环控制器和线程中设置的循环次数的区别主要是:作用域不同。线程租的作用域是整个线程,比如上图,线程组控制baidu和itcast的请求,下面循环控制器只控制itcast。
1.5.3 ForEach控制器
路径:右键线程组--添加--条件控制器--
作用:于用户定义的变量或正则表达式提取器一起使用,遍历该对象的值,类似于Python 中的 for - in 循环
如果自定义变量下标并不是连续的,那么会在最后一个满足条件的下标遍历完成后结束。从上面的例子来看,如果有个name_5的话,它并不会被遍历到,循环到name_3就结束。它们的没有先后顺序,只要name_1遍历完成后能找到一个name_2的话,那么循环就能继续进行。
1.6 前置处理器
一般用来实现参数化,添加自定义的用户参数,然后在请求体中使用 ${参数名} 使用
可以看到两个线程的请求分别对应我们设置的用户1和用户2的值
1.6 后置处理器
对响应的结果进行处理,一般使用各种提取器把响应的结果的某些属性设置为一个变量,供其他的请求使用
2.参数化
2.1 使用用户定义的参数
使用场景:一个或多个用户需要需要使用不同的值时
路径:添加--前置处理器--用户参数
这里的用户数就对应线程数,如果用户数<线程数,那么用户变量会被重复使用,例如四个线程只有三个用户,那么第四个线程就会得到第一个用户的值,类似于循环队列。
通过 ${参数名} 使用
2.2 使用CSV文件
使用场景:一个用户循环多次并且每次需要不同的值时
路径:添加--配置原件--CSV Data Set Config
因为这里是三条数据,所以需要配置线程为:
2.3 函数方式
使用场景:多个用户多次循环需要使用不同的值时
路径:工具--函数助手对话框--counter函数
True,每个用户拥有自己的计算器的意思是:分别用变量计单个用户循环的次数
False,使用全局变量的意思则是:使用一个全局变量计算循环了多少次
点击生成后,直接复制函数字符串到需要的位置,和普通变量使用方法一样
可以看到请求的参数number的值在不断增加。
3.断言
判断预期结果是否和响应结果一致,如果不一致,jemter查看结果树的时候会显示请求错误
3.1 响应断言
路径:右键取样器--添加断言--响应断言
作用:可以断言任意数据类型的数据
3.2 JSON断言
路径:右键取样器--添加断言--JSON断言
作用:对JSON类型的响应数据进行断言
3.3 断言持续时间
路径:右键取样器--添加断言--断言持续时间
作用:断言响应时间在多少毫秒的范围内,否则显示请求错误
4.关联
作用:和Postman中类似,都是一个请求的响应数据需要作为另一个请求的请求参数。在Jmeter中则是在前一个请求中将返回值提取出来,后一个请求中使用 &{变量名} 使用
4.1 正则表达式关联方法
路径:右键请求--添加--后置处理器--正则表达式提取器
作用:可以提取任意格式的响应数据
4.2 XPath提取器
路径:右键请求--添加--后置处理器--XPath提取器
作用:针对HTML的响应格式数据进行提取
4.3 JSON提取器
路径:右键请求--添加--后置处理器--JSON提取器
作用:对JSON数据进行提取
以上的关联方式都只能用在同一线程组里面,如果是不同线程组需要关联,就需要使用配置函数来完成不同线程间的属性传递。
4.4 使用配置函数关联请求
作用:可以跨线程关联,类似于先设置一个全局变量,然后其后的请求就能使用,下面的全局变量和属性都是指的同一事物,只是感觉全局变量更好理解?
4.4.1 设置属性
函数名:setProperty
路径:工具--函数助手对话框--setProperty
4.4.2 BeanShell取样器:
路径:右键线程--添加--取样器--BeanShell取样器
4.4.3 提取属性
路径:工具--函数助手对话框--Property
复制上面的函数字符串,然后在需要使用的地方直接粘贴:
注意事项:因为默认多个线程之间是没有先后顺序的,因此可能会导致使用在后,提取在前,要解决这一问题,需要在测试计划中勾选独立运行每个线程,达到从上至下执行的效果
5.录制脚本
2.开启windows代理服务
3.启动代理服务器,开始录制