一、测试依赖登陆的接口。
1、构造登陆的接口请求,添加正则表达式,提取token。
正则表达式提取器说明:
Apply to:应用范围(一般就选择默认的Main sample only),就算有重定向,一般也是提取最终那个请求的接口。
要检查的响应字段:样本数据源。
主体: 接口响应主体内容,一般要提取普通http响应结果的数据,都勾选这个。
信息头:响应头的所有内容。
Request Headers:请求头的所有内容。
url:是对sample的url进行匹配,也就是查看结果树里请求内容的第一行url,不包含data里的请求参数(即只能匹配protocol(协议)+host+path+querystring,如:https://www.baidu.com/index.php?tn=monline_3_dg)。
响应代码:http响应代码,如101,200,302,404,501等。
响应信息:http响应代码对应的响应信息,例如:OK, Found(HTTP/1.1 200 Ok;HTTP/1.1 302 Found)。
引用名称:其他地方引用时的变量名称,名称只能是一个。
正则表达式:数据提取器,一般简单的通用语法就是:左边界(.*?)右边界,左右边界就是为了能准确定位到想匹配的内容。
缺省值:匹配失败时的默认值。通常用于后续的逻辑判断,建议使用一些特殊含义的,比如0,NULL,ERROR等。
2、添加HTTP信息头管理器,引用token值。
3、构造依赖登陆的接口请求。
二、生成脚本
第一种方法:采用badboy录制(只能是web端的),导出jmeter脚本。
第二种方法:利用fiddler抓包,获取接口信息,在jmeter上构造请求。(web端和app端)
第三种方法:利用jmeter录制脚本(web端和app端)
步骤:给网页或手机设置代理,端口号和jmeter的一致,
Jmeter:添加线程组;添加http代理服务器,设置一下如下图。设置好,点击【启动】。
三、压测数据库
1、下载数据库驱动,添加到jmeter的lib目录下。
2、添加到测试计划下
3、添加线程组,添加配置元件JDBC connection configuration,配置JDBC connection configuration
4、添加JDBC Request,Variable name和上图保持一致。
5、添加查看结果树,执行,并查看结果。
6、注意:如果需要一次执行多条语句,在第3步的时候Database URL后面添加如下的信息
jdbc:mysql://172.16.14.28:3306/shop?allowMultiQueries=true
相应地,在在第4步的时候,Query Type 选择 Callable statement。
四、CSV参数化
1 创建csv文件
创建.csv文件,用户名和密码中间以逗号隔开
2 在线程组中添加并配置CSV Data Set Config
添加CSV Data Set Config
配置CSV Data Set Config
Filename: 指保存信息的文件目录,可以相对或者绝对路径。否则会在jmeter日志文件(jmeter.log目录位置D:\Program Files\apache-jmeter-2.13\bin)中提示:系统找不到指定文件,运行脚本后,登录失败。
File encoding: 保持默认。默认为ANSI
Variable Names: 给csv文件中各列起个名字(有多列时,用英文逗号隔开列名)便于后面引用
Delimiter:与 .csv文件的分隔符保持一致。如文件中使用的是逗号分隔,则填写逗号;如使用的是TAB,则填写\t;
Allow quoted data? :是否允许引用数据,—这个目前还未弄明白,设置成True或者False都能正常引用数据。
Recycle on EOF?:到了文件尾是否循环,True—继续从文件第一行开始读取,False—不再循环
Stop thread on EOF? :到了文件尾是否停止线程,True—停止,False—不停止,注:当Recycle on EOF设置为True时,此项设置无效。
Sharing mode:共享模式,All threads –所有线程,Current thread group—当前线程组,Current thread—当前线程。
All threads:计划中所有线程,假如说有线程1到线程n (n>1),线程1取了一次值后,线程2取值时,取到的是csv文件中的下一行,即与线程1取的不是同一行。
Current thread group:当前线程组,假设有线程组A、线程组B,A组内有线程A1到线程An,线程组B内有线程B1到线程Bn。取之情况是:线程A1取到了第1行,线程A2取第2行,现在B1取第1行,线程B2取第2行。
Current thread:当前线程。假设测试计划内有线程1到线程n (n>1),则线程1取了第1行,线程2也取第1行。
3 引用csv文件中的数据
1)找到需要传递参数的HTTP请求
2)将具体值改为变量引用,引用变量:${变量名}
4 在察看结果树中,察看变量引用的具体值