赞
踩
注意:
通过负载测试,可以确定系统的最大负载量和极限负载量
系统对外宣称的最大负载量
负载测试的时间一般为1-2小时
分类:
高负载下的长时间稳定性压力测试 (如:B-C区间内进行24/3*24小时长时间测试)
极限负载下的破坏性压力测试(如:C-D区间内进行测试)
与负载测试对比:
负载测试:主要目的是测试高负载情况下,对系统资源的消耗,是否会耗尽的问题(双11活动)
并发测试:主要目的是测试极短时间内,并发请求时,系统资源争抢的问题(抢红包、秒杀)
-指从客户端发起请求开始,到客户端接收到结果的总时间
-包括:服务器处理时间 + 网络传输时间
-某一时刻同时向服务器发送请求的用户数
QPS:
TPS:
-所有的页面元素(如:图片、链接、框架等)的请求总数量
-注意:
-点击数是请求数,不是页面上的一次点击
-指系统在负载情况下,失败业务的概率
-注意:
-错误率是性能指标,是高负载下的失败业务的概率
-随机bug是功能bug,先解决随机bug才能进行性能测试
性能测试的核心:需求分析、性能测试执行、性能分析调优
需要大家掌握:性能测试执行
说明:性能测试分析人员经过对结果的分析以后,如果不符合性能需求,则会提出性能bug,然后由开发人员进行后续的调优。
1)性能测试的概述
性能测试的关注点:时间 和 资源
性能测试的概念:使用自动化的工具,模拟用户真实的使用场景,对软件各项性能指标进行测试和评估的活动
性能测试的目的:评估当前的系统能力; 出现性能bug后,优化性能;预测未来的性能需求是否满足
性能和功能的对比:
2)性能测试的策略
基准测试:
3)性能测试的指标
响应时间:客户端发起请求开始,到收到响应的总时间。包含:服务器处理时间 + 网络传输时间
并发(用户)数:同一段时间往服务器发送请求的用户数
吞吐量:单位时间内,服务器处理的客户端请求的数量。QPS和TPS
点击数:访问页面时,加载页面的各种元素(文本、图片、css、js等)的请求数量。
错误率:在用户负载情况下,失败业务的概率。 注意:与功能的随机bug区分
资源使用率:使用系统时,资源占用的比例。常见:CPU、内存、磁盘、网络
4)性能测试的流程
性能需求分析
性能测试计划和方案
性能测试用例
性能测试执行: 搭建性能环境、准备测试脚本、配置监控指标、执行测试脚本
性能结果分析和调优
性能测试的报告
安装JDK:
•下载JDK – 安装JDK – 配置环境变量 – 验证
安装Jmeter:
•下载Jmeter – 安装Jmeter – 配置环境变量 – 启动验证
注意点:
•下载JDK时,注意电脑操作系统是32位/64位
•下载Jmeter时,注意与本机安装的JDK版本匹配
•安装Jmeter时,安装路径中不能有中文/空格
Ø取样器:核心,没有作用域
Ø逻辑控制器:只对其子节点中的取样器和逻辑控制器起作用
Ø其他元件:
•如果是某个取样器的子节点,则该元件只对其父节点起作用
•如果其父节点不是取样器,则其作用域是该元件父节点下的其他所有后代节点(包括子节点,子节点的子节点等)
在同一个作用域(目录/级别/缩进)的不同元件的执行顺序:
配置元件 - 前置处理程序 - 定时器 - 取样器 - 后置处理程序 - 断言 - 监听器
在同一个作用域(目录/级别/缩进)的相同元件的执行顺序:
从上到下的顺序依次执行
正确:定时器1 - 请求1 - 定时器1 - 定时器2 - 请求2 - 定时器1 - 定时器3 - 请求3
线程组的介绍:
参数介绍:
作用:向服务器发送http及https请求
位置:选中线程组->右键->添加->取样器->HTTP请求
参数:
案例一(使用HTTP请求路径来传递get请求参数):
(1)使用1个线程组,添加HTTP请求(百度),路径为:/S
各部分的含义:
定义:使用不同的测试数据,调用相同的测试方法进行测试
本质:实现测试数据与测试方法的分离。
实现方式:
(1)JMeter基本使用
元件:配置元件、前置处理器、定时器、取样器、后置处理器、断言、监听器
作用域:
执行顺序:
(2)核心元件
线程组:
HTTP请求
(3)JMeter参数化
作用:使用不同的测试数据,调用相同的测试方法
问题描述:
当发送www.jd.com的http请求时,查看结果树看到的发送消息和HTTP取样器中配置的不完全一样?
原因分析:
参数:
案例1:检查百度首页的接口响应中包含“百度一下,你就知道”
案例2:响应断言中,有多个待校验的测试数据
案例:
请求: http://www.weather.com.cn/data/sk/101010100.html
检查:让程序检查响应的JSON数据中,city对应的内容是否为“北京”
案例:
请求: https://www.jd.com
检查:让程序检查响应时间是否大于100毫秒
正则表达式:就是一个公式,或者说一套规则,使用这套规则可以从任意字符串中提取出想要的数据内容
公式格式:左边界(匹配符号)右边界:可以提取出想要获取的数据内容
.:是通配符,可以代表任意字符(除换行回车)
*: 代表前面的字符出现0次或者多次
.*匹配规则:找到左边界值后,往右查找有边界,找到最后面的右边界,中间的所有数据都被记录下来
?: 代表非贪婪匹配,找到左边界后,往右查找匹配右边界,只要有匹配的右边界就停止继续查找;再次查找
左边界和右边界
公式格式:左边界(.*?)右边界
<title>百度一下,你就知道</title><title>百度一下,你就知道</title>
<title>(.*?)</title>
案例:
原始文本:
021-1234-1234
022-1234-1235
023-1234-1236
024-1234-1237
025-1234-1238
026-1234-1239
027-1234-1230
要求:匹配出 城市号、地区号、个人号码三组
正则表达式匹配:
(.*?)-(.*?)-(.*?)\n
结论:
案例1:获取传智播客首页的title,并作为参数传递
**案例2:**获取传智播客首页的地址,把第5个校区地址作为参数传递(span为地址的校区)
响应中的地址格式显示:<p><span>地址</span>上海市浦东新区航头镇航都路18号万香创新港</p>
方法1:
方法2:
引用:以列表索引的方式来引用。格式:${变量名_索引} ,索引从1开始
案例3:获取传智播客首页的地址,把第5个校区地址作为参数传递(span为地址/后面带一、二、三)
地址格式1:<p><span>地址一</span>昌平区建材城西路金燕龙办公楼一层</p>
地址格式2:<p><span>地址</span>上海市浦东新区航头镇航都路18号万香创新港</p>
案例:
//a[@id='kw']: 在HTML页面中,找出a标签(有一个属性为id,且id的值为kw)
//a : 找出所有的a标签
案例:获取传智播客首页的title,并作为参数传递
案例:提取天气接口中的城市信息,作为参数在访问百度首页时传递
案例:
1.添加HTTP代理服务器,并进行配置
2.开启windows操作系统的浏览器代理
- 启动代理服务器,开始录制
- 在浏览器页面中进行操作,成功后,就能在JMeter当中看到抓取到的接口请求了。
练习:
设置过滤规则,录制tpshop的登录脚本,运行脚本观察测试结果
当使用代理的过程中,发现抓不到包,几个可能的情况:
(1)JMeter断言
响应断言:
JSON断言:
持续时间断言:
(2)JMeter关联
概念:请求依赖关系,一个请求的响应作为另一个请求的参数进行传递
正则表达式提取器:
XPath提取器:
JSON提取器:
JMeter属性:
(3)JMeter脚本录制
原理:JMeter作为代理服务器,所有请求和响应数据都会经过JMeter,Jmeter再还原为脚本
步骤:
需求:
1、在tpshop首页中搜索商品名称“长虹(CHANGHONG) 49A1U 49英寸双64位4K超清智能网络LED液晶电视”,
请求URL:http://127.0.0.1/Home/Goods/search.html
请求方法:GET
请求参数:q=
2、在搜索的响应数据中检查是否有该商品对应的商品链接:/Home/Goods/goodsInfo/id/65.html
(id:65需要通过数据库查询返回,才保证每次都是有效的)
编写JDBC脚本步骤(搜索指定商品,在返回结果中检查是否包含指定商品的ID的详情URL):
1.添加线程组
2.添加 JDBC Connection Configuration
3.添加 JDBC request
4.添加 HTTP请求 - 搜索商品
5.在搜索HTTP请求下,添加响应断言,检查响应结果中的字符 是否包含 **商品URL。引用格式:${变
量名_索引}
6.添加查看结果树
案例:
1、使用‘用户定义的变量’定义一个变量name,name的值可以是baidu或itcast
2、根据name的变量值实现对应网站的访问
案例:
(1) 循环访问百度10次
(3)思考:线程组属性可以控制循环次数,那么循环控制器有什么用?
不同点:线程组的循环次数对线程组下的所有HTTP请求有效,循环控制器的循环次数对子节点下的
HTTP请求有效
关联:循环控制器次数为M,线程组循环次数为N,
与用户定义的变量配合使用(案例1):
案例1需求
1. 有一组关键字 [hello,python,测试],使用用户定义的变量存储
2. 要依次取出关键字,并在百度搜索,例如:https://www.baidu.com/s?wd=hel
步骤:
1.添加线程组
2.添加用户定义的变量
3.添加ForEach控制器
4.添加HTTP请求-百度
5.添加查看结果树
与正则表达式配合使用(案例2):
案例2:
1. 访问传智播客首页http://www.itcast.cn,获取首页中的地址信息,并全部保存下来
2. 要依次取出地址关键字,并在百度搜索,例如:https://www.baidu.com/s?wd=地址
案例:1、模拟100个用户同时访问百度首页,统计各种高并发情况下运行情况
使用同步定时器的操作步骤?
1.添加线程组,设置线程数为n
2.添加HTTP请求
3.添加同步定时器
4.添加查看结果树
5.添加监听器-聚合报告
案例:
(1)一个用户以 20QPS (20 次/s) 的频率访问百度首页,持续一段时间,统计运行情况.
(2)2个用户针对 (服务器的QPS要求:20QPS (20 次/s)) 的频率访问百度首页,持续一段时间,统计运行情况.
案例:
(1)IHRM系统登录错误3次后,锁定1分钟,1分钟后重新输入正确的用户名密码登录成功
步骤:
添加线程组
添加HTTP请求1 - 错误1次
添加HTTP请求2 - 错误2次
添加HTTP请求3 - 错误3次
添加HTTP请求4 - 正确用户名密码
在HTTP请求4下,添加固定定时器
添加查看结果树
注意:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。