性能测试学习之路(二)—性能测试常用工具

前言

性能测试是测试人必备的能力之一,只会功能测试(点点点)的测试注定在社会的竞争中处于劣势。在这里把我五年的测试经验中自学和在项目中运用到的性能测试经验总结一下。下面让我们在性能测试从0开始学习,本文接着上次讲的性能测试基础来继续说一下性能测试常用的工具。其中有错误的地方大家多多给予批评,不完善的地方大家多多指导。

一、性能测试常用工具

LoadRunner:这是一个重量级的商业性能测试工具,功能强大但学习难度较高。它支持多种协议和技术栈,适用于企业级应用。

JMeter:这是一个基于Java平台的开源性能测试工具,易于使用且功能强大。它支持多种测试场景,适合复杂的性能测试需求。

Lighthouse:web前端性能测试工具

二、LoadRunner简介

本人只了解过LoadRunner并没有深入的了解,所以以下内容只是对LoadRunner做了一下简单的介绍。

1.什么是LoadRunner

LoadRunner是一种预测系统行为和性能的负载测试工具。通过模拟上千万用户实施并发负载及实时性能监测的方式,对响应时间、吞吐量、并发用户和性能计数器等指标进行监控,达到监控平台是否稳定,进而找到平台瓶颈和突破瓶颈的目的。

2.LoadRunner工作原理

在这里插入图片描述

3.LoadRunner组成

loadrunner由三大基本组件构成分别是:VuGen、Controller、Analysis

VuGen:Virtual user generator是录制与编写脚本的地方,就是录制与编写脚本来模拟用户的行为,可以理解为用户行为模拟器,同时会打印出日志信息,方便调试脚本。vugen也是一个集成开发调试环境,在这里完成脚本开发并调试通过后就可以放到controller 中来创建场景了。

controller:是性能测试场景设计以及监控的地方,让脚本按照预定的规则并产生压力,同监控重要指标都在此完成。

Aanlysis:是收集测试数据后生成图表报告的地方,帮我们分析数据并产生图表,方便对负载生成后的相关数据进行整理分析。

具体的安装和使用可以自行去百度一下loadrunner的安装和使用。

三、Jmeter简介

1.什么是Jmeter

JMeter是一款开源桌面应用软件,可用来模拟用户负载来完成性能测试工作。JMeter 的功能在版本升级的过程中已经十分强大,现在多数互联网公司都在使用JMeter来完成产品或者项目的性能测试工作。因为开源所以更具扩展性,能够胜任更多的工作具有更多的可能性可以不夸张地说,JMeter是使用率最高的性能测试工具之一,也是当前最好的最全面的性能测试工具之一,企业能够更低成本地使用JMeter 进行性能测试构建工作。
JMeter可以对Web应用进行测试,同时也提供了Web录制功能;另外还支持Java请求JMS、EJB、WebService、JDBC、FTP、LDAP、SMTP、Junit、Mail、MongoDB、JSR223等的测试。基本上我们常见的应用类型都可以用JMeter进行测试。除此之外,我们还可以方便地扩展JMeter功能来满足我们特定的测试需求。当前HTML5盛行,手机APP如火如荼,我们也可以用JMeter来进行性能测试。JMeter也支持Socket 协议的测试。另外JMeter也很方便用来进行性能测试自动化。可以说JMeter就是一个百变性能测试工具,鲜有做不到的,只有想不到的。

2.Jmeter工作原理

JMeter基本原理是建立一个线程池,多线程运行取样器产生大量负载,JMeter通过线程组来驱动多个线程(类似LoadRunner中的虚拟用户)运行测试脚本对被测试服务器发起负载,每一个负载机上都可以运行多个线程组。JMeter运行场景不仅可以在GUI方式中完成,还可以使用命令行,而且命令行运行的方式对于负载机的资源消耗会更小。此外Jmeter还支持远程运行。Jmeter远程运行架构图如下:
在这里插入图片描述

3.Jmeter组成

如下图为Jmeter的结构图
在这里插入图片描述
我们把它拆解成一个三维空间。X空间分为5个维度,Y空间分为2个维度,Z空间1个维度:
X1~X5 是负载模拟的一个过程,使用这些组件来完成负载的模拟。
Y1:包含的是负载模拟部分,负责模拟用户请求。
Y2:结果验证部分,负责验证结果正确性。
Z:负载结果的收集,实践上只有一个组成部分–监听器,监听器不仅可以放在线程组之内,也可以放在线程组之外,所以在图中我们看到它们是相交的。

下面我们详细的介绍一下每个组件的功能。

X1【取样器】:取样器用来模拟用户操作,向服务器(被测试系统)发出请求或者Java请求,我们可以把Http请求元件看成是一个没有界面的浏览器,它可以发送Http请求,接收服务器的响应数据。
在这里插入图片描述

X1【断言】:断言用来验证结果是否正确,可以帮助我们来判断请求是否成功返回且是否符合要求。说白了就是用一个预设的结果(值、表达式、时间长短等条件)与实际结果匹配,匹配到则成功,反之失败。
在这里插入图片描述

X1【监听器】:JMeter的测试结果需要添加监听器来收集,JMeter结果收集程序的设计模式就是监听器模式。JMeter的监听器有两个任务。(1)添加结果监听,并且可以保存测试结果到文件,这些结果数据可以供再次分析使用;(2)展示结果,JMeter可以以表格及图形的形式展现结果,方便测试人员分析测试结果我们在开发测试脚本时,不可避免需要调试,监听器也提供了辅助(比如察看结果树,我们可以在其中看到请求与响应的数据)。
在这里插入图片描述

X2【前置处理器】:在测试脚本开发过程中,我们在请求发送前可能会做一些环境或者参数的准备工作,那么我们可以在前置处理器中来完成这些工作。比如,我们在对数据库进行操作前需要先建立-个数据库连接,那么前置处理器就可以完成这个功能。
在这里插入图片描述

X2【配置元件】:性能测试中为了模拟大量用户操作我们往往需要做参数化,Jmeter 的参数化可以通过配置元件来完成,比如 CSV Data Set Config,它可以帮助我们从文件中读取测试数据。另外JMeter 也提供了众多的函数(通过函数助手可以查看到,后续会讲到)来帮我们生成动态数据。当然配置元件的作用不仅于此,它还可以用来记录服务器的返回数据,比如HttpCacheManager,自动记录服务器返回的Cache信息。简而言之它为取样器提供预备数据,然后由取样器发出请求。
在这里插入图片描述

X2【后置处理器】:后置处理器一般放在取样器之后,用来处理服务器的返回结果,比如一个 Web 应用程序,我们登录后会返回一个SessionID,这个SessionID在登录之后的业务操作过程中会作为验证条件,验证用户是否合法登录了。我们利用取样器模拟这个请求时就需要带上这个属性,那么如何获取呢? 首先我们要知道这个 SessionID 从哪里来?它是由服务器返回的。接着我们要获取它,用什么工具获取呢?JMeter 帮我们提供了元件,比如正则表达式提取器,它支持正则表达式的方式来提取数据。
在这里插入图片描述

X3【逻辑控制器】:我们在收邮件时,只需要登录一次邮箱即可以查看多封邮件。如果这个场景我们要在JMeter中实现,我们需要控制登录的次数,如何实现呢?JMeter 逻辑控制器中的仅一次控制器即可以完成。当然了,控制器不只有这一个,还有很多其他的控制器来完成我们的各种需求。
在这里插入图片描述

X4【定时器】:为了足够真实地模拟用户负载,我们有时会需要模拟这些请求在同一时刻发送,就好像把大家集合在一条起跑线上,然后一声令响,同时起跑。那么我们此时需要一个集合的功能,JMeter中可以通过定时器来完成这个需求。当然了,定时器可不只有这一个功能,定时器种类有很多,每一种代表了不同的功能。
在这里插入图片描述

X5【线程组】:性能测试需要模拟大量用户负载的情况,线程组就是用来完成这个工作的,在此元件中我们可以设置运行的线程数(就是模拟多少用户,一线程一用户)。线程组的设置十分简单,除了设置线程数以外,还可以设置运行时长,定时运行等。另外第三方插件(JMeter Plugin)的扩展也让JMeter的场景设计更加丰富。
在这里插入图片描述

四、Lighthouse简介

1.什么是Lighthouse

Lighthouse是Google开发的一款工具,用于分析网络应用和网页,收集现代性能指标并提供对开发人员最佳实践的意见。

2.Lighthouse使用

1.打开浏览器
2.打开开发者模式,点击Lighthouse在这里插入图片描述
3.选择相应配置后,点击分析网页加载情况按钮,等待工具分析完成后,会生成一个结果。
在这里插入图片描述
4.分析结果主要有5个方面:性能(Performance)、可访问性(Accessibility)、网络最佳实践(Best Practies)、搜索引擎优化(SEO)渐进式应用PWA(Progressive Web Apps)。每个标准都有相应的得分,总体得分为100,分数越高表示网站性能越好。此外,Lighthouse 生成的报告还提供了详细的建议和改进措施,帮助开发人员优化网站并提高用户体验。

以上是在工作中和平时学习中积累的内容,是比较基础的,对于刚进入软件测试的同学是非常有用的。下一期将重点讲一下Jmeter的简单使用。

  • 33
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值