为期2个月的软件测试实习即将结束,值此时刻我想记录一下这两个月的收获,也为以后的复习做准备。

Jmeter

Jmeter是这次实习使用最多的软件了,现已达到熟练水平。
现在我将从安装开始,重新梳理一遍Jmeter的使用方法。

什么是Jmeter

Apache JMeter 是 Apache 组织开发的基于 Java 的压力测试工具。用于对软件做压力测试,它最初被设计用于 Web 应用测试,但后来扩展到其他测试领域。 它可以用于测试静态和动态资源,例如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库、FTP 服务器, 等等。JMeter 可以用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整体性能。另外,JMeter 能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证你的程序返回了你期望的结果。为了最大限度的灵活性,JMeter 允许使用正则表达式创建断言。
Apache jmeter 可以用于对静态的和动态的资源(文件,Servlet,Perl 脚本,java 对象,数据库和查询,FTP 服务器等等)的性能进行测试。它可以用于对服务器、网络或对象模拟繁重的负载来测试它们的强度或分析不同压力类型下的整体性能。你可以使用它做性能的图形分析或在大并发负载测试你的服务器/脚本/对象。
Jmeter的工作原理如图

下载Jmeter

登录官网Jmeter下载,得到压缩包,下载地址http://jmeter.apache.org/download_jmeter.cgi
如图所示,jmeter是需要java环境的,所以需要先有Java8.0以上的JRE,JRE的下载和配置方法这里不再赘述。
截至目前Jmeter的最新版本是5.4.1,下载zip后解压到任意目录下。

Jmeter目录

  • bin 包含启动、配置等相关命令
  • docs 官方本地文档目录
  • extras 辅助库
  • lib 核心库,包含 JMeter 用到的各种基础库和插件
  • licenses 包含 non-ASF 软件的许可证
  • printable_docs 可打印版本文档目录
  • LICENSE JMeter 许可说明
  • NOTICE JMeter 简单信息说明
  • README.md JMeter 官方基本介绍

下面我们重点看下 bin 目录,如图,有几个重点文件需要关注

  • jmeter.properties JMeter 核心配置文件,各种配置基本在这完成

  • log4j.conf JMeter 日志配置管理

  • jmeter.log JMeter 运行日志记录,什么输出信息、警告、报错都在这里进行了记录

  • jmeter.bat windows 下 jmeter 启动文件

  • shutdown.cmd windows 下 jmeter 关闭文件

  • stoptest.cmd windows 下 jmeter 测试停止文件

  • jmeter-server.bat windows 下 jmeter 服务器模式启动文件

注:每一个.cmd 文件都对应一个.sh 文件,.sh 是 linux 下的对应功能的文件

Jmeter.properties的个性化配置

Jmeter的默认配置有一些不太方便的地方,自己可以修改配置。在Windows上可以用记事本或者markdown编辑器打开,在macOS上可以先复制一个.txt文件,修改后改后缀再替换原文件,或者直接用vim编辑。

  • 中文GUI配置
#language=en
language=zh_CN #简体中文
  • GUI图标放大比例设置

JMeter GUI界面布局
当JMeter以GUI模式运行时,窗口主要由三部分构成:
1.功能区
上方菜单栏,下方工具栏。菜单栏展示了JMeter提供的功能菜单,而工具栏中的图标
是常见功能的快捷方式。
2.视图区
以树状结构呈现JMeter元素,其中“Test Plane”是树的根节点,每一个节点就是一个JMeter元素。
在此区域可以添加、删除节点或者通过拖曳调整节点的位置。
3.内容区
当在视图区选中一个JMeter元素节点时,内容区则会相应地显示该元素的内容。
这时可以对其内容进行查看、设置等操作。


GUI图标放大比例设置

jmeter.hidpi.mode=true #开启视网膜模式,2k以上分辨率屏幕适用
jmeter.hidpi.scale.factor=1.2 #将图标放大1.2倍

功能区工具栏图标大小设置

#工具栏图标默认size: 22x22
#可用size: 22x22, 32x32, 48x48
jmeter.toolbar.icons.size=32x32

视图区目录树图标大小设置

#目录树图标默认size: 19x19
#可用size: 19x19, 24x24, 32x32, 48x48
jmeter.tree.icons.size=24x24

内容区编辑字体设置

#调整JMeter内容区的编辑字体
jsyntaxtextarea.font.family=consolas #默认Hack,太难看,使用经典的consolas
jsyntaxtextarea.font.size=18 #这两个配置项必须同时设置才有效
  • 响应数据编码设置
#响应数据编码默认为ISO-8859-1(即Latin-1)
sampleresult.default.encoding=UTF-8 #设置为UTF-8,避免出现乱码
  • 远程主机配置

配置远程主机的 IP,默认为本机。用逗号","可以设置多个远程主机

remote_hosts=127.0.0.1

多个远程主机指定示例如下,其中:后为端口

remote_hosts=127.0.0.1:1099,127.0.0.1:1200,127.0.0.1:1300
  • 日志管理配置

设置日志格式

log_format_type=default

设置日志输出级别

log_level.jmeter=INFO

设置 junit 日志输出级别

log_level.jmeter.junit=DEBUG

设置日志输出目标文件,默认为 jmeter.log

log_file=jmeter.log
  • jmeter.bat 关键配置修改

为了更优化的使用 jmeter,需要对 jmeter.bat 中的一些配置根据当前机器的配置进行优化,这里进行关键配置项说明,大家根据自己的机器的配置来进行修改。jvm 相关配置,大概在 80 行左右,找到这些配置,对其中的数值根据当前机器的硬件配置来修改。

 set HEAP=-Xms2048m -Xmx2048mset NEW=-XX:NewSize=512m -XX:MaxNewSize=512mset SURVIVOR=-XX:SurvivorRatio=8 -XX:TargetSurvivorRatio=50%set TENURING=-XX:MaxTenuringThreshold=2if %current_minor% LEQ "8" (rem Increase MaxPermSize if you use a lot of Javascript in your Test Plan :set PERM=-XX:PermSize=512m -XX:MaxPermSize=1024m)

Jmeter接口测试脚本

打开Jmeter后如图所示

首先新建一个线程组

线程组是一系列线程的集合,每一个线程代表着一个正在使用应用程序的用户。在 jmeter 中,每个线程意味着模拟一个真实用户向服务器发起请求。

在 jmeter 中,线程组组件运行用户设置线程数量、初始化方式等等配置。例如,如果你设置线程数为 100,那么 jmeter 将创建并模拟测试100 个用户请求到服务器端。


线程数表示一次测试所用的线程个数。
Ramp-Up时间表示若干个线程的启动时间,假设有100个线程数,Ramp-Up时间设置为1,就表示1秒钟内启动100个线程去测试。
循环次数控制测试数量,如果勾选“永远”,则测试会一直进行下去,知道出错或手动结束,一般“永远”会搭配下面的调度器一起使用,持续时间表示这次测试会持续多少秒。
Jmeter一般用于压力测试或者接口测试。压力测试就需要很多线程数量在一段时间内一起启动,考察服务器的抗压能力,而接口测试一般只需要一个线程一次循环,查看返回值是否正确即可。

接下来添加一个HTTP请求

比如现在有一个接口,网址是http://127.0.0.1:8080/test/getname/,作用是返回服务器中的name。
那么Http请求写http,ip写127.0.0.1,端口号写8080,http请求是rest服务,我们要从服务器读取数据,自然是Get,路径就是/test/getname/,如果请求内容有中文内容编码一般写UTF-8。
有时我们还需要随请求一起上传一写参数,可以以键值对的方式一个一个添加

也可以用json格式的数据,点击消息体数据直接编写。

接下来我们要查看这个请求的结果正确与否,添加一个“查看结果树”。

点击上方的绿色箭头开始一次测试,可以在“查看结果树”中看到每次请求的结果是否正确,每次的请求内容和每次的响应数据。“查看结果树”只能判断请求的数据返回是否成功,并不能判断返回的数据是不是正确的,因此需要做断言判断。

如果你的程序有规范的返回信息格式的话(比如json返回请求结果成功或失败),那么可以添加Json断言,以返回的json中是否含有“success”作为接口功能正常的依据。

注意: 默认下载的 jmeter 是不支持该方式的,需要安装 json plugins,在选项-Plugins Manager-Available Plugins 找到 JSON Plugins 安装好即可。下面对 json path assertion 进行说明

如果有多个http请求,每一次都要填写ip,端口,十分麻烦,那么可以添加“http请求默认值”。


他的内容和http请求基本相同,只要设置一次,那么“http请求默认值”的所有子节点http请求就都默认使用设置好的了。

在某些情况下,我们可以设置一些用户定义的变量,比如端口号就可能会改变,如果一次改变我们就要把脚本中的所有端口号都要找到改正,那很麻烦,因此对于某些经常改变的值,或者需要用户自定义的值,我们可以设置,类似于全局变量,所有的调用都是对他的引用。


比如说我们定义了localhost的值为127.0.0.1。那么在http请求的地方,我们只需要使用${localhost},就能直接调用了。

Jmeter性能测试脚本

同样,还是先新建一个线程组,若干个http请求,性能测试主要考虑服务器的响应时间和正确率,所以查看单次请求成功与否的“查看结果树”意义就不大,我们需要“汇总报告”或者“聚合报告”。


汇总报告有几个参数:
样本:这次测试的所有样本数量
平均值:响应的平均时间
最小值:响应的最小时间
最大值:响应的最大时间
标准偏差:响应的标准差
异常:错误响应的比例
吞吐量:每小时服务器处理的响应数量
接受:服务器接受数据的带宽
发送:服务器发送数据的带宽
平均字节数:服务器响应的结果的平均字节数


聚合报告有几个参数:
样本:这次测试的所有样本数量
平均值:响应的平均时间
中位数:响应时间的中位数
90%百分位:响应时间分布在90%处的值
95%百分位:响应时间分布在95%处的值
99%百分位:响应时间分布在99%处的值
最小值:响应的最小时间
最大值:响应的最大时间
异常:错误响应的比例
吞吐量:每小时服务器处理的响应数量
接受:服务器接受数据的带宽
发送:服务器发送数据的带宽

Jmeter自动录制脚本

如果我们要测一个网页打开速度,网页有很多个请求,这时我们就可以把这些请求自动录制下来。
首先新建一个http代理服务器。选择好本地ip和端口号,还有目标控制器。

接着打开浏览器的http代理,配置代理服务器和端口与jmeter中设置的一致。
然后在jmeter中点击启动,在浏览器中执行打开网页。
此时就能在jmeter中看见打开网页时发送和接收时所有请求,录制成功。
最后,关闭录制和浏览器代理。

Jmeter软件测试总结相关推荐

  1. 谈软件测试人员定位---三年软件测试总结

    因为一直从事web产品的测试,我的观点并不一定适合所有的类型项目. 工作已将近三年了,虽然这三个年头里我都在积极的学习着与测试相关的技术:但是能沉淀的东西很少.相信测试同学都有类似的感觉. 不要为了测 ...

  2. 软件测试总结之覆盖法语句覆盖

    软件测试总结之覆盖法&语句覆盖 今天浏览是发现之前的笔记了,把之前没写完的内容补上,以后好回顾. 其余试题直达 软考总结之性能测试专题习题 软考总结之UML类图专题试题 软考总结之等价类划分法 ...

  3. 软件测试总结——常见的面试问题(三)

    自动化测试软件作用(重点): 一:jmeter: 纯java编写负载功能测试和性能测试开源工具, 支持接口自动化测试,录制.抓包.可进行压力测试(增加线程,考验服务器最大支持访问数).弱网测试.添加请 ...

  4. JMeter压力测试总结

    Apache JMeter是Apache组织开发的基于Java的压力测试工具.用于对软件做压力测试,相比其他HTTP测试工具,JMeter最主要的特点在于扩展性强.JMeter能够自动扫描其lib/e ...

  5. Charpter5 软件测试总结

    一.什么是软件测试 软件测试是一种用来促进鉴定软件的正确性.完整性.安全性和质量的过程 英语的解释是 Software testing is an investigation conducted to ...

  6. 软件测试流程进阶----两年软件测试总结[转]

    工作两年了,我一直希望让自己每年对测试的理解更深入一层.工作一年的时候我写了<谈软件测试---一年工作总结> ,谈轮了自己对各种测试的理解,这一年来,虽然对那些理概念的有所加强,自我感觉没 ...

  7. 入行多年软件测试总结的经验

    1.控制好自己的情绪 成长过程中,最要紧的事情是:停止暴露自己,学会隐藏自己".这不是教我们虚伪,而是职场中的大智慧.很多人都是打着"追求自己的内心"的幌子,来掩盖自己情 ...

  8. APP软件测试总结,android输入法下载

    4)安装后没有生成多余的目录结构和文件. 2.卸载 1)测试系统直接卸载程序是否有提示信息. 2)测试卸载后文件是否全部删除所有的安装文件夹. 3)卸载是否支持取消功能,单击取消后软件卸载的情况. 4 ...

  9. 软件测试总结(十一)

        快世界末日了,不知道这软件测试在传说中的末日来临之前还能总结完不,不管末日来不来,软件测试的总结还得进行下去.好了今天开始总结逻辑覆盖中的语句覆盖.     什么是语句覆盖呢?从字面上理解,就 ...

最新文章

  1. (0079)iOS开发之安全策略之HTTPS(2)
  2. Keepalived全局配置
  3. tmap的使用_MapInfo教程--二次开发入门
  4. JS日期函数getMonth()的值域是0--11
  5. xp2003服务器怎么安装系统,UEFI里启动Windows XP/Server 2003 x86教程
  6. c语言mysql 学生信息管理系统_学生信息管理系统学生时代小作品源码(C语言版)...
  7. Java 面试之线程与锁
  8. 数字图像处理基本原理和常用方法
  9. 平民价国产Android,1600左右的Broncho A1真机配置
  10. bzoj 1492: [NOI2007]货币兑换Cash
  11. 如何在 Linux 上检查可用磁盘空间 [终端和 GUI]
  12. nginx limit_req限速设置
  13. 选择Python科学计算发行版
  14. matlab新建数据字典及如何导入
  15. 网络异常无法连接远程服务器,《Chess Rush》网络异常进不去怎么回事 无法连接服务器解决方法...
  16. ipa 上传卡在鉴权_上传app,一直卡在“正在通过 App Store 进行鉴定”
  17. Thinking -- CSS从根解决选择前一个兄弟元素
  18. Matplotlib绘图库入门(一):pyplot绘图基础
  19. Vue2基础、组件化编程、脚手架、Vuex、Vue路由、UI组件库
  20. 电脑安装双系统(win+Linux)的一些重要步骤总结

热门文章

  1. Mysql数据库使用:学生选课系统,其中设计到三张表,分别为学生表,课程表,学生和课程对应的关联表。
  2. Python简单爬虫第六蛋!(完结撒花)
  3. 哈工大威海分校计算机学院,柏军(计算机科学与技术学院)老师 - 哈尔滨工业大学(威海) - 院校大全...
  4. 线路位宽和CPU位宽详解,是个人就能懂(022/12/6笔记)
  5. 如何实现iOS图书动画-第2部分(下)
  6. 索尼战略转型:合作中求发展
  7. 客户的管理及分类怎么做?
  8. 基于STM32单片机窗帘窗户晾衣架雨滴光照检测控制系统电子代
  9. python隐藏刻度_plot sin示意图(隐藏刻度,自定义刻度)
  10. 007 UseGCLogFileRotation NumberOfGCLogFiles GCLogFileSize