Jmeter常用元件介绍
Jmeter常用组件
1、测试计划:起点。所有组件的容器
2、线程组:代表一定数量的用户
3、取样器:向服务器发送请求的最小单元
4、逻辑控制器:结合取样器实现一些复杂的逻辑
5、前置处理器:在请求之前的工作
6、后置处理器:在请求之后的工作
7、断言:用于判断请求是否成功
8、定时器:负责在请求之间的延迟间隔。固定,高斯,随机
9、配置元件:配置信息
10、监听器:负责收集结果
顺序: 测试计划》线程组》配置元件》前置处理器》定时器》取样器》后置处理器》断言》监听器
作用域: 必须组件:测试计划,线程组,取样器 辅助组件:除了必须组件外;辅助组件作用于父组件,同级组件,以及同级组件下的所有子组件
测试计划:
1、勾选主线程结束后运行teardown线程组,线程组之间是串行(AABAB无序);未勾选时,并行(AAABBB)
2、setup线程组 在线程组之前执行,teardown线程组 在其他线程组之后执行
调度器:(循环次数必须勾选永远,否则按照具体的循环次数执行)
持续时间 ;启动延迟
正常情况下并发500没有问题,如果用户数特别大,应当使用分布式处理,每台机器分摊一定的并发;(每个应用就是一个进程;线程是并发执行程序的过程中分配和管理资源的一个基本单位)
Beanshell Timer 定时器:
希望执行完每个线程等待一下,或者某个变量达到指定值等待;
Beanshell Preprocessor 前置处理器:
可以进行参数前的预处理,比如格式化参数,时间;
在http信息头管理器初始化两个参数:一个时间戳$(timestamp) 一个签名校验$(Sign);
Beanshell sampler:
自定义请求
Beanshell 内置变量:
log:写入信息到jmeter.log文件,使用方法log.info("this is log info!")聚合报告;
ctx:该变量引用了当前线程的上下文图形结果;
vars:操作jmeter变量,引入jmeter线程中的局部变量容器(Map)是测试用例和beanshell交互的桥梁;
vars.get(String key):从jmeter中获取变量值;
vars.put(String key ,String value) 数据存到jmeter变量中,线程组内部实现传递;
props:操作jmeter属性
Jmeter执行接口测试
1、拿到api文档(Fiddler)熟悉接口业务,接口地址,鉴权方式,入参,出参,错误码
2、编写接口测试用例。
正例:输入正常入参,查看接口成功返回
反例:(1)鉴权:空 ,错误,鉴权过期,鉴权次数限制...(2)参数:空,类型错误,长度错误,错误码的覆盖(3)其他:黑名单、分页
3、使用接口测试工具执行。
4、Jmeter+Ant+Git+Jenkins 实现持续集成输出接口测试报告,通过电子邮件发送。
Jmeter接口关联
1、使用正则表达式实现接口关联
如果说一个请求里面有多个请求服务器。
2、使用Jsonpath表达式实现接口关联
从根目录开始找(绝对路径):$.expires_in
从任意目录开始找(相对路径):$.expires_in
Bean Shell内置变量和语法规则
BeanShell是一种完全符合Java语法规则的脚本语言,同时他还有自己的语法规则。
1、log打印日志
2、vars表示:JmeterVariables,操作Jmeter变量。(只能在当前线程组使用)
(1)用户定义的变量(2)正则表达式,json提取器(3)定义变量
获取变量的值:
log.info(vars.get("test_name"))
log.info(vars.get("access_token"))
vars.put("www","yyy")
3、props用于存取Jmeter的全局静态变量。(可以跨线程组)
..jmeter/bin/jmeter.properties
4、prov 获取到前面一个取样器返回的信息。
5、ctx 上下文
Jmeter执行数据库操作
1、准备数据的驱动jar包。mysql,oracle...
方式一:在测试计划里面引用。
方式二:放到jmeter的lib目录下。
2、新建一个:JDBC connection configuration.
连接池的名称:
3、新建一个:JDBC request
Jmeter的非GUI(界面)方式运行
1、执行JMX文件的命令:jmeter。
2、命令行参数:
-n -t -n 非界面方式运行。 -t 指定jmx文件的位置。
-l -l 指定生成的jtl格式的结果。
-e -o -e 生成HTML报告。 -o 指定HTML报告的文件夹(这个文件夹必须是空目录)