线程组( Threads (Users))理解:一个虚拟用户组,线程组内线程数量在运行过程中不会发生改变。 注意事项:线程间变量相互独立。
一个测试计划内可以包含多个线程组。 可定义内容: 取样器错误后执行的操作:继续执行,启动下一个线程,停止线程,停止测试,立刻停止 线程属性:线程数量,线程启动间隔时间(0为立刻启动所有线程),单线程循环次数,线程执行顺序,是否使用调度器。 调度器配置:持续时间,启动延迟,启动时间,结束时间
HTTP信息头管理器理解:定义信息头,在其覆盖下的所有元件都会使用该信息头。例如定义在测试计划中的信息头,即该测试计划所有请求的信息头,可以添加cookie 和refer信息
##################参数化################:
1、从csv文件中读取,右键线程组中添加一个“配置元件”->“CSV Data Set Config”,Virable Names中填写变量名,如果csv文件中有多个变量,则用逗号隔开,win10 操作系统需要放在jmeter文件中的bin文件夹下,然后再在需要参数化的地方修改填写的参数名即可:"${}"
2、选项-函数助手对话框,可以选择随机数,然后点击数生成,然后修改脚本中的: 某个参数为对应的值即可
3、“配置元件”->“用户定义的变量” ,理解:用户自定义的变量,可用于存储接口路径等信息 ,可以参数化
##################断言##################:
可以验证获取的信息是否正确
##################关联##################
一个接口与另一个接口之间存在前后依赖关系时,在第一个接口增加后置处理器
第一种方法jp@gc - JSON Path Extractor需要提前安装插件:
1、添加后置处理器选择:jp@gc - JSON Path Extractor
学生金币充值 中的sign 从登陆接口返回信息中获得,因此需要在登陆接口中增加后置处理器,检查返回json格式,然后层级结构去取。
例如登陆接口返回
json格式为:
{
"error_code": 0,
"login_info": {
"userId": 1,
"sign": "d58e3582afa99040e27b92b13c8f2280",
"login_time": "20171207113501"
}
}
sign为login_info节点下的信息,因此需要先获取login_info节点然后拿到sign
"$"代表接口返回的全部,然后再返回的全部信息中先找到login_info,然后才能找到sign,即输入的格式为:$.login_info.sign
提前的信息必须为json格式
第2种方法:正则表达式:"sign": "(.*)",
登陆返回的json格式中:"sign": "978969b31afc182e4185b87ac73dfd23", 对应的正则表达式为:"sign": "(.*)",
在登陆下点击右键,选择添加-后置处理器-正则表达式提取器(插件无需安装)
############################连接数据库################################
点击“测试计划”先导入文件: mysql-connector-java-5.1.7-bin ,
1、在线程组上,右键点击添加>配置元件>JDBC Connection Configuration 2、配置连接信息,注意填写Variable name,Database Url填写jdbc:mysql://数据库IP或hostname:端口号/数据库 3、在线程组上,右键点击添加创建>sample>JDBC request :填写Variable name与第4步中Variable name一致。其中“Query type ”选择Select Statement 只支持查询,如果支持其他SQL语句使用选择Callable Statement写sql语句
jdbc:mysql://211.149.218.16:3306/jxz?allowMultiQueries=true&characterEncoding=UTF-8 characterEncoding=UTF-8 解决乱码问题
select * from bt_stu where real_name =‘薛宝钗‘ ;
update bt_stu set phone= ‘13144471273‘ where real_name =‘薛宝钗‘ ;
insert into bt_stu (`real_name`,`sex`,`phone`,`type`,`class`) value (‘薛宝钗‘,‘1‘,‘13456784666‘,‘1‘,‘巨蟹座‘); 注意前边是`` 不是‘‘
select * from bt_stu where real_name =‘薛宝钗‘ ;