更多功能测试以及全套学习路线图均在专栏,↑↑戳进去领取~
软件测试功能到自动化学习路线图,2022年最新版技术栈
软件测试01:从了解测试岗位职能和测试流程开始,附作业
…
软件测试实战项目web资讯管理平台—黑马头条测试
身为开发必知必会的Linux:Linux远程连接/命令的使用
Linux命令大全,唯一以案例详解文,持续更新中
Linux命令大全以及数据库,唯一以案例详解文,已完结
Web自动化测试01:认识web自动化在什么项目中适用
Web自动化测试02:Web自动化测试工具选择大全
。。。。更多内容看专栏哦!
Web自动化测试11:Selenium之frame切换、多窗口切换
Web自动化测试12:Selenium窗口截图、验证码处理
接口测试-第01天-万字教程带你入门接口测试
…
接口测试-第04天-Postman读取外部数据文件(参数化)
性能测试-第01天-从理解到体验,最后能够对比说出Loadrunner和JMeter的优缺点
性能测试-第02天-JMeter环境搭建完成第一个案例
性能测试-第03天-以案例理解JMeter主要元素以及相关的作用域
掌握Jmeter断言技术
掌握Jmeter关联使用
掌握Jmeter自动录制脚本
元件:配置元件、前置处理器、定时器、取样器、后置处理器、断言、监听器
作用域:
取样器:是核心,本身无作用域
逻辑控制器:只对子节点起作用
其他元件:
父节点是取样器,只对父节点起作用
父节点不是取样器,对父节点的所有后代节点(子节点、子节点的子节点等)都起作用
执行顺序:
同一个作用域的不同元件:配置元件、前置处理器、定时器、取样器、后置处理器、断言、监听器
同一个作用域的相同元件:从上到下的顺序
线程组:
分类:普通线程组、setup线程组、teardown线程组
属性:线程数、ramp-up时间、循环次数、持续运行时间、延迟启动时间
HTTP请求
GET请求(在URL的路径中)
URL:协议、域名、端口、路径、请求方法GET、编码格式
参数:
在路径中添加参数。?参数名 = 参数值&参数名 = 参数值
在参数列表中添加。格式:参数名,参数值
POST请求(在消息体数据中)
URL:协议、域名、端口、路径、请求方法POST、编码格式
参数:
在参数列表中添加(只能添加form格式)
在消息体数据中添加(任意格式)
查看结果树
请求:请求行(URL)、请求体(参数)
响应:状态码、响应体
作用:使用不同的测试数据,调用相同的测试方法
用户定义的变量:定义全局变量
用户参数: 不同的用户使用不同的测试数据
CSV数据文件设置: 不同的用户,或者同一个用户的多次循环,都可以获取不同的数据
函数:不同的用户,或者同一个用户的多次循环,都可以获取不同的数据,不需要提前准备数据。
问题描述
当发送www.jd.com的http请求时,查看结果树看到的发送消息和HTTP取样器中配置的不完全一样?
原因分析:
查看结果数中最外层HTTP请求的 请求信息和响应信息,应该与子节点中最后一个HTTP请求的请求
消息和响应消息一致;
配置的HTTP请求,应该与子节点中第一个HTTP请求的请求信息一致
Jmeter可以自动判断/处理相应状态码
答案:
1、准备CSV数据文件 —— 1000个登录的用户名密码
2、添加线程组,设置线程数为1000
3、添加CSV数据文件设置
4、添加HTTP请求 - 登录,使用读取的用户名密码
5、添加HTTP请求 - 支付 —— 使用counter函数添加不同的测试金额
6、查看结果树
参数:
案例:
请求: http://www.weather.com.cn/data/sk/101010100.html
检查:让程序检查响应的JSON数据中,city对应的内容是否为“北京”
案例:
请求: https://www.jd.com
检查:让程序检查响应时间是否大于100毫秒
正则表达式:就是一个公式,或者说一套规则,使用这套规则可以从任意字符串中提取出想要的数据内
容
公式格式:左边界(匹配符号)右边界:可以提取出想要获取的数据内容
.:是通配符,可以代表任意字符(除换行回车)
*: 代表前面的字符出现0次或者多次 .
*匹配规则:找到左边界值后,往右查找有边界,找到最后面的右边界,中间的所有数据都被记录下来
?: 代表非贪婪匹配,找到左边界后,往右查找匹配右边界,只要有匹配的右边界就停止继续查找;再次查找 左边界和右边界
公式格式:左边界(.*?)右边界
百度一下,你就知道 百度一下,你就知道 (.*?)原始文本:
021-1234-1234
022-1234-1235
023-1234-1236
024-1234-1237
025-1234-1238
026-1234-1239
027-1234-1230
要求:匹配出 城市号、地区号、个人号码三组
正则表达式匹配:
(.*?)-(.*?)-(.*?)\n
结论:
通过一个正则表达式可以提取出多组数据,每组数据设置对应的左边界和右边界即可
每一组数据都可以有一个或者多个值
响应中的地址格式显示:<p><span>地址</span>上海市浦东新区航头镇航都路18号万香创新港</p>
方法1
方法2
引用:以列表索引的方式来引用。格式:${变量名_索引} ,索引从1开始
地址格式1:<p><span>地址一</span>昌平区建材城西路金燕龙办公楼一层</p> 地址格式2:<p><span>地址</span>上海市浦东新区航头镇航都路18号万香创新港</p
案例:
//a[@id=‘kw’]: 在HTML页面中,找出a标签(有一个属性为id,且id的值为kw)
//a : 找出所有的a标签
1、线程组1:请求获取天气的接口,http://www.weather.com.cn/data/sk/101010100.html,获取返
回结果中的城市名称“北京”**
2、线程组2:请求https://www.baidu.com/s?wd=北京 ,把获取到的城市名称作为请求参数**
原理:
jmeter脚本录制:
1.添加HTTP代理服务器,并进行配置
•加HTTP代理服务器:测试计划(右键)->非测试元件->HTTP代理服务器
•配置代理服务器的参数
2. 开启windows操作系统的浏览器代理
3. 启动代理服务器,开始录制
4. 在浏览器页面中进行操作,成功后,就能在JMeter当中看到抓取到的接口请求了。
练习: 设置过滤规则,录制tpshop的登录脚本,运行脚本观察测试结果
当使用代理的过程中,发现抓不到包,几个可能的情况:
过滤规则设置有问题
重启Jmeter代理服务器或者重启Jmeter
换浏览器来使用(Chrome、IE)
检查PC机中的代理设置是否处于可用状态
拔掉网线,抓包