Jmeter
概述
Jmeter是Apache公司(服务器软件)使用java开发的一款测试工具。安全 高效 功能强大
使用:
下载安装
-
官网:http://jmeter.apache.org/
-
下载jmeter 解压缩(download&release):开源软件
-
安装java环境(jmeter和java环境的关系就类似于mp4和播放器关系)
- jdk+jre
-
简单了解jmeter目录结构
- bin:存储了jmeter的
可执行程序
比如启动程序 - lib:存储了jmeter整合的功能(一些.jar文件的小程序)
- bin:存储了jmeter的
-
启动jmeter
(1)双击Jemter.bat/Jemter.sh启动(注意:控制台在运行过程中不关闭)
-
Jemter.bat 是windows下批处理文件
-
Jemter.sh 是linux mac系统启动文件 java是跨平台的软件环境
(2)直接双击
ApacheJMeter.jar
程序,用javaw打开.jar文件-
若用javaw打不开.jar文件,可能是java环境的某部分被破坏了
解决方法:
1)到bin目录下,cmd 2)输入命令:
javaw -jar ApacheJMeter.jar
-
-
编写一个jmeter版本的测试案例
优缺点:
- 接口测试
- 性能测试 :测试程序的内在 — 程序的算法
- 压力测试 :测试程序的外在 — 外在负载
- Web自动化测试
- 数据库测试
- JAVA程序测试
优点
- 开源、免费
- 支持多协议
- 小巧
- 功能强大
缺点
- 不支持IP欺骗
- 使用JMeter无法验证JS程序,也无法验证页面UI,所以要须要和Selenium配合来完成
Web2.0应用的测试
JMeter组成
任何一个性能测试都由着三个组成
- 取样器-进行脚本逻辑控制 sampler
- 线程组-场景设置(e.g:访问多少次)
- 监视器-监控我们的脚本运行,取得性能指标
Jmeter组件:
使用
-
右键“测试计划”,添加一个“线程组”
-
线程属性:
线程数,想要模拟的用户数 -
特殊线程组
set up ---- 最先执行的线程组
tear down – 最后执行的线程组
-
-
Ramp-Up Period (in seconds)(加压策略):在多少秒 之内完成
-
循环次数:
永远:不让软件去控制脚本什么时候停止;
次数:多少秒之内对于多少线程数的并发循环; -
右键线程组-添加Sampler:添加取样器
-
右键线程组-添加监听器(监控脚本运行:e.g:察看结果数)
-
多并发使用Jmeter断言:
- 请求之后,可进行断言:请求之后,判断请求结果里面到底哪些是期望的,返回结果是不是跟想的一样(如测试人员做测试设计的时候的期望结果),jmeter断言这个地方可能有bug
-
其他脚本:添加里面的东西基本都是进行脚本逻辑控制的;
-
逻辑控制器:更精细的来控制脚本逻辑的;
-
配置元件:系统测试时出现no cookies时添加那一类;
-
定时器:用户并发时,跑的太快不能真实的模拟用户;
-
如果只是为了测试系统的承受能力,可以不用修改前置处理器:在sampler之前要做的事情;
-
后置处理器:在sampler之后要做的事情(一般可进行断言)
Jmeter组件:参数化概述
1、参数化是动态的获取并设置数据
2、比如执行批量操作时,批量插入或批量删除,之前数据都是手写的,每执行完就需要修改一次,效率太低了。
参数化是可以 以程序替代人工获取并设置数据:安全+高效
Jmeter组件:参数化实现CSV Data SetConfig
1、动态获取并设置数据
2、操作数据高效 安全
线程组
- 进程:一个正在执行的程序就对应一个进程
- 线程:进程中的执行线索(一个进程有多个执行线索)
- 线程组:按照线程性质对线程进行分组
区分:
-
三者关系:进程有多个进程组,线程组可以有多个线程
线程与进程两者的区别:做个简单的比喻:进程=火车,线程=车厢
三者之间:不完全比喻:进程>线程组>线程
-
进程 — 测试计划
-
线程组 — 线程组
-
线程 — 线程组属性的线程数
线程的两种执行顺序
- 并发执行:多个线程同时执行
- 特点:执行介素的顺序和线程的启动顺序不一定一致
- 顺序执行:按照线程的启动顺序挨个执行
- 特点:方便管理
- 默认情况下,线程组中的线程是并发执行的
- 每一个线程都要执行组内的http请求
线程组属性
属性1:线程数 ---- 模拟用户数
属性2:时间值 ---- 在指定时间内启动所有线程
属性3:循环数 ---- 单个用户访问的次数
Jmeter设置线程组顺序执行:
勾选测试计划的第一个复选框(独立运行每个线程组)
添加-取样器-http请求
调度器
- 循环次数设置为 永远
- 设置启动延迟x和持续时间y
- 在x秒后访问服务器,并且持续y秒
- 设置启动时间M,和结束时间N
- 在M时开始访问,在N时结束
注意:2、3实现不能同时使用,否则矛盾了