并发性能测试: 并发性能测试的过程是一个负载测试和压力测试的过程,即逐渐增加负载,直到系统的瓶颈或者不能接收的性能点,通过综合分析交易执行指标和资源监控指标来确定系统并发性能的过程。
疲劳强度测试: 疲劳测试是采用系统稳定运行情况下能够支持的最大并发用户数,持续执行一段时间业务,通过综合分析交易执行指标和资源监控指标来确定系统处理最大工作量强度性能的过程。
大数据量测试: 大数据量测试可以分为两种类型:针对某些系统存储、传输、统计、查询等业务进行大数据量的独立数据量测试;与压力性能测试、负载性能测试、疲劳性能测试相结合的综合数据量测试方案。
速度测试: 速度测试主要是针对关键有速度要求的业务进行测速度,可以在多次测试的基础上求平均值。
jmeter是个纯java编写的开源压测工具,apache旗下的开源软件,一开始是设计为web测试的软件,由于发展迅猛,现在可以压测许多协议比如:http、https、soap、ftp、database数据库、LDAP 轻量目录访问协议、TCP、SOMP(简单邮件协议)等,由于是纯java编写,可以在苹果、window或者Linux下运行,全功能的测试IDE,允许快速的建立测试计划(从浏览器或本地应用程序,官网地址:http://jmeter.apache.org),Jmeter是一个中高级开发或者测试人员都必须掌握的一个工具。
下载地址:http://jmeter.apache.org/download_jmeter.cgi
安装:直接解压zip文件
启动: 运行bin目录中的ApacheJMeter.jar文件(双击即可运行起来)
如果双击后提示"window无法打开此文件"的话
去下载jarfix即可:https://jarfix.en.softonic.com/
先双击运行jarfix,然后再双击运行ApacheJMeter.jar,即可正常打开jmeter
对某个功能进行压力测试,即模拟高并发
右键,添加线程组
这里模拟并发量是100
在线程组里添加取样器,发起请求
添加参数
添加监听器来查看结果
此时运行会报错415(媒体类型错误,400错误是请求参数的问题),那是因为参数是json贵,所以要添加消息头指定参数类型
点击运行
请求结果
清除结果树里的内容
添加聚合报告的监听器,来查看性能方面的信息
再次运行项目,查看结果
聚合报告数据分析
如果jmeter测试的项目需要登录的话,则需要添加cookie和请求头
这里使用Jmeter的ForEach控制器实现网页爬虫
使用Jmeter获取网络图片,并存到本地文件中
目的:取到下边网址的图片和图片对应的名字存到本地
此时如果运行的话,取到的是整个页面的html,不是每张图片,这里需要查看网页信息
在图片上右键,“检查”
在Jmeter里进行设置,从上边的html响应的数据里,取出每个图片的路径和对应的名字
添加XPath后置处理器
XPath可以解析html,获取html里的标签和属性(下边的俩勾必须勾上)
再新建一个提取器来提取图片名称
添加调试取样器
添加查看结果树的监听器
运行后查看结果
之前已经获取到图片和名称了,接下来就是要下载图片到本地
找到总数:
在循环控制器里,写上图片的总数
在循环控制器里添加http请求,去获取每张图片
每次请求需要将图片与自己的名字对应上,所以需要加一个计数器(记录图片循环的次数)
Jmeter函数:${__V(title_${num})}
_V:拼接字符串函数,拼接的是“title”和引用的num;
脚本如下:
prev.setDataEncoding("UTF-8");
byte[] result = prev.getResponseData();
String fileName = "d:\\\aa\\\_${__V(title_${num})}.jpg";
File file = new File(fileName);
FileOutputStream out = new FileOutputStream(file);
out.write(result);
out.close();
切记:需要提前建立好保存目录
在线程组下添加一个计数器,记录每次执行的序号,存放到遍历num中
在线程组下添加一个JDBC Request
写上插入语句
记住如果是插入的话,此处选择update statement
不然后边会报错;
添加查看结果树,观察执行结果;或者是添加聚合报告进行分析
报错:
Response message:java.sql.SQLException: Can not issue data manipulation statements with executeQuery().
那是因为jdbc request这里需要选择update statement
最终结果:
聚合报告:
因测试需求,要打造100W条用户数据,通过用户名、手机号、密码可以新增用户,其中要求用户名和密码不能重复
在线程组下添加一个循环控制器,循环100W次
脚本如下:
phone=${__Random(111111111,999999999,)};
String a =String.valueOf(phone);
phone=${__Random(3,9,)};
String b =String.valueOf(phone);
a=1+b+a;
String account="Ge"+a;
vars.put("phone",a);
vars.put("account",account);
脚本解释
# 手机号的后就为,可以是1-9之间的任意数
phone=${__Random(111111111,999999999,)};
#
String a =String.valueOf(phone);
# 手机号的第二位可以是3-9之间的任意数
phone=${__Random(3,9,)};
String b =String.valueOf(phone);
# 手机号的第一位只能是1
a=1+b+a;
# 用户名是 GE+手机号
String account="Ge"+a;
vars.put("phone",a);
vars.put("account",account);
添加http请求
后台添加用户的代码:
实体类:
所以jmeter里的request如下
添加消息头
配置完成,运行即可;