Jmeter
Http request请求讲解
一个http请求指从客户端到服务端的请求信息,可通过浏览器f12,查看一下信息:请求地址,请求方法,http协议/版本,请求头,请求参数。
http response详解
一个http response(http响应)指的是从服务端到客户端的响应消息,它包含一下信息:响应状态码:标记响应状态的一个标识;响应头:告诉客户端关于服务器,响应报文的一种信息;响应报文,针对请求从服务响应回来的数据,比如html,xml,json等。
http请求常见状态码
200--(成功)服务器已成功处理了请求;3开头(请求被重新定位)表示要完成请求,302--(临时移动),304--(未修改);4开头(请求错误),400(请求语法错误),401(禁止访问),403(请求被拒绝),404(资源不存在);5开头(服务器错误),500--(服务器内部错误),502--(网关错误),505--(http版本不受支持)。
请求默认值
作用:http请求默认值会在发送请求的时候会自带参数;
什么时候添加?大部分信息一致的时候加;
如果加了http请求默认值之后,在单个http请求中还填写了同样的数据,以哪个请求为准?以http请求中添加的为准。
察看结果树之CSSJQuery-Tester使用
作用:CSS/Jquery测试程序只适用于文本响应,可以根据jsoup对响应数据进行过滤和查看,selector属性-精准定位。
察看结果树之html的使用
html模式一共有3种选项
1、html视图以HTML方式呈现;
2、会下载HTML代码引用的图像,样式等;
3、如果选择了HTML sourse格式化视图选项,则呈现有jsoup格式化和清理的html源代码。
察看结果树之JSon使用
json模式一共有2中选项
1、json视图将显示树形风格的响应;
2、json path tester:json路径测试视图将允许您测试json-path表达式,并从特定响应中查看所提取的数据
》Json Path Expression表达式:$表示根节点,一级一级往下走,如老黄历:$.result["yangli"] or $.result.yangli
察看结果树之Document使用
作用:视图将显示从各个类型的文档中提取文本。
》使用Document需要下载apache tika binary package (tika-app-X.X.jar)并将它放在jmeter_home/lib目录。
察看结果树之Regexp tester使用
regexp仅适用于文本响应,点击“test”按钮,系统将应用regexp对面板中的文本进行查询,将结果显示在面板中
》正则包大师引擎与正则表达式提取器中使用的正则表达式引擎相同。
察看结果树之XPath tester使用
Xpath仅适用于文本响应
使用方法:打开浏览器f12,定位后复制xpath,粘贴在xpath expression
Jmeter配置元件之http信息头管理器使用
什么是信息头?请求头
什么时候用?cookie,token或其他
场景设计?反爬虫添加信息头--模拟浏览器发送请求---user-agrent
分全局和局部吗?分的
Jmeter断言之响应断言
作用:用于检查测试中得到的响应数据等是否符合预期,用以保证性能测试过程中的数据交互与预期一致
目的:在request的返回层面增加一层判断机制,因为request成功了并不代表结果一定正确。
使用:给某个请求添加好断言 ,添加对应的断言结果监听器
Jmeter断言之xpath assertion
定义:xpath 即为xml路径语言,它是一种用来确定xml(标准通用标记语言的子集)文档中某部分位置的语言,xpath基于xml的树状结构,提供在数据结构树中找寻节点的能力
作用对象:针对返回信息为xpath的数据类型进行断言
使用方法:浏览器中f12,定位后,复制xpath到xpath assertion中,添加对应的断言结果监听器
Jmeter结合fiddler查看相应结果
使用方法:在http请求中配置Proxy server [fiddler的信息]
作用:更方便查看响应结果
Jmeter请求元件之用户自定义变量
意义:提高脚本复用性
使用方法:${变量名}
Jmeter请求元件之参数化txt
如登录接口:发送登录请求,针对登录接口设计5条测试用例,针对5条用例,首先想到的是添加5个http请求,使用优解法--参数化
txt参数化数据管理(CSV DATA SET CONFIG 【从本地读取文件】),一个http请求就搞定
使用:1、在本地创建文本txt,编写用例(用逗号隔开);
2、填写参数名(用逗号隔开)
3、请求中引用变量(引用方式:${变量名})
Jmeter请求元件之参数化CSV
以注册接口为例,需要不同的手机号完成注册,如果继续用txt不容易管理,换成excel类型的数据CSV,会便携很多,其它用法和txt一样,只是创建数据会更加便利
Jmeter之参数化函数助手_CSVRead
步骤:1、准备好CSV格式的数据
2、准备好接口(注册为例) 参数:mobliephone 以及pwd
3、调用_CSVRead函数,传入对应的值[列号从0开始]
4、请求中将生成的函数引用到值中
5、设置线程循环次数,查看结果
Jmeter之参数化函数助手_randonmstring
有时有些参数是不断变化的,如果用CSV去做,需要准备很多不同的数据,利用_randomstring就方便很多
步骤:1、准备好CSV格式的数据
2、准备好接口(注册为例)mobliephone 以及pwd,regname
3、调用_CSVRead函数,传入对应的值
4、调用randonmstring来设置不同的regname
5、请求中将生成的函数引用到值中
6、设置线程组循环次数,查看结果$(函数)
》缺点:数据存在重复
Jmeter之必备正则表达式
| 元字符 | 意义 | 限定符 | 意义 |
| . | 任意单个字符 | + | 匹配至少大于1次 |
| \d | 任意单个字符 | ? | 匹配0次或1次 |
| [0-9] | 等价0-9 | * | 匹配0次或多次 贪婪匹配 |
| a-zA-Z | 等价所有的大小写字母 | {n}、{n,m}、{n} | 匹配限定次数 |
举例练习:元字符限定符
》匹配数字123456 可.* 、 \d* 、 \d{6} 、 {0-9}{6}
如何使用正则表达提取器?
如果你想要在某个请求的相应结果里面拿到某个值
1、确定想取值的左右边界
2、写正则表达式(用括号)
3、确定边界是唯一的,可以帮我们确定到值的
如何查看正则表达提取器使用结果的正确性
1、线程组下添加Debug Sample
2、运行后台查看响应数据
》模板:提取第一个圆括号中匹配的内容,【分组作用】多组时$1$ $2$
》匹配数据(0代表随机),-1代表所有值(使用foreach 控制器拿到每一个值)
Jsonpath提取器的使用
场景:json格式的数据,字典格式的{“name”:"lemon","teacher":"huahua","QQ":"12345678"} key:value
Cookie处理
如登录------》充值
1、添加http cookie管理器
2、登录产生的cookie使用正则表达式提取器获取cookie
Token处理
如登录------》投资(结合fiddler抓包完成接口请求)
如何确定这个问题?
1、参数确定是否有问题
2、是否有别的参数是自动输入的,非手动输入的,包含了数字字符大小写字母,是不断变化的,一般在该请求之前的某个请求的响应结果值
》其它问题也可以参照这个解决方案,最后找到token这个值,才去的解决方法是:正则表达式提取+变量应用
Jmeter存储测试结果
发送请求后,我们可通过察看结果树看到结果,如果想把结果保存起来,可利用监听器------保存响应到文件,对结果进行存储
Jmeter写入结果到EXCEL之环境准备
步骤:1、下载jxl.jar包
2、下载完成后,放到Jmeter的安装目录lib下
3、jxl.jar的作用:完成对Excel的读写以及操作
利用Jmeter操作Excel的思路分析
》Excel中一般有三个要素:werkbook、sheet、cell
想要把结果存储到指定的单元格中,必须要确定好这是哪个元素,依次定位
1、先获取excel的文件名
2、获取表单名
3、获取单元格的坐标
》获取结果写入到对应的单元格中
》需要利用beanshell写java代码,获取对应的数据写入到excel中
Jmeter测试数据结构准备
准备代码后,我们需要准备对应的测试数据,共2份数据
1、测试用例设计----表格:CSV格式【用例编号、标题、预期结果】
2、参数化数据设计(测试数据)---【编号、标题、测试数据、预期结果、实际结果、执行结果】
Jmeter写入结果到excel之代码准备
1、 阅读java代码,明白代码的作用
2、编写代码完成后,导出(Export) jar包:CWResultFile.jar
3、导出的jar包放在Jmeter的安装目录lib-->ext下
Jmeter写入结果到Excel
1、新建线程组,创建一个登录请求的http,并传入相关参数
2、新建一个正则表达式提取器,获取http请求返回的结果
3、创建一个beanshell调用代码,创建一个excel。需要用仅一次控制器
代码......
4、创建一个beanshell调用代码,写入数据到excel中
代码.....
Jmeter Json Extractor获取数组类型的数据
jsonpath方式获取的值
》单个值获取?data.files[索引从0开始,取头不取尾].fileId
》多个值获取?data.files
》0与-1的设置:0,只取一个,-1取所有值,需用逻辑控制器foreach,遍历没一个数组的数据
浙公网安备 33010602011771号