当前位置: 首页 > news >正文

【5.20】四、性能测试—性能测试工具

目录

4.5 性能测试工具

4.5.1 LoadRunner

4.5.2 JMeter


4.5 性能测试工具

性能测试是软件测试中一个很重要的分支,人们为了提高性能测试的效率,开发出了很多性能测试工具。一款好的测试工具可以极大地提高测试效率,为发现软件缺陷提供重要依据。两个比较常用的性能测试工具:LoadRunner和JMeter。

4.5.1 LoadRunner

LoadRunner是一款适用于各种体系架构的性能测试工具,它能预测系统行为并优化系统性能,其工作原理是通过模拟一个多用户(虚拟用户)并行工作的环境来对应用程序进行负载测试。测试完成,LoadRunner可以自动生成分析报告,给用户提供软件产品所需要的性能信息。

相比于其他性能测试工具LoadRunner主要有以下特点

  • (1)广泛支持业界标准协议。
  • (2)支持多种平台开发的脚本。
  • (3)可创建真实的系统负载。
  • (4)具有强大的实时监控与数据采集功能。
  • (5)可以精确分析结果,定位软件问题。

LoadRunner好用且功能强大,唯一美中不足的是它不是开源产品,使用LoadRunner的用户需要向HP公司付费。

LoadRunner工具主要由3部分组成:

1. VuGen(Virtual User Generator)

LoadRunner是通过多个虚拟用户在系统中同时工作或访问系统的环境来进行性能测试的,虚拟用户进行的操作通常被记录在虚拟用户脚本中,而VuGen就是用于创建虚拟用户脚本的工具,因此它也被称为虚拟用户脚本生成器。

2. Controller

Controller用于创建和控制LoadRunner场景,场景负责定义每次测试中发生的事件,包括模拟的用户数、用户执行的操作以及测试要监控的性能指标等。

3. Analysis

Analysis是LoadRunner的数据分析工具,它可以收集性能测试中的各种数据,对其进行分析并生成图表和报告供测试人员查看。

4.5.2 JMeter

JMeter的工作原理与LoadRunner类似,它也是通过模拟出多个虚拟用户向服务器发送请求检测响应返回情况,如并发用户数、响应时间、资源占用情况等,以此检测系统的性能。

与LoadRunner不同的是,JMeter工具通过线程组创建虚拟用户,一个线程组可以设置多个线程,每个线程就是一个虚拟用户,这些线程相互独立,互不影响。虚拟用户向服务器发送一个请求,JMeter称之为一次采样,这个操作由采样器来完成。

JMeter工具主要由以下几个核心组件构成:

  • (1)逻辑控制器(Logic Controller):逻辑控制器确定采样器的执行顺序。
  • (2)配置元件(Config Element):配置元件可用于设置默认属性和变量等数据,供采样器获取所需要的各种配置信息。
  • (3)前置处理器(Per Processors):在实际的请求发出之前,对即将发出的请求进行特殊的处理。
  • (4)定时器(Timer):用于在操作之间设置等待时间。
  • (5)采样器(Sampler):采样器是JMeter的主要执行组件,它用于向服务器发送一个请求,并记录响应信息,包括成功/失败、响应时间、数据大小等。
  • (6)后置处理器(Post Processors):后置处理器一般放在采样器之后,用来处理服务器的返回结果。
  • (7)断言(Assertions):断言用于检查测试得到的数据是否符合预期结果。
  • (8)监听器(Listener):用于监听测试结果。此外,监听器还具备查看、保存和读取测试结果的功能。

使用JMeter进行性能测试时,在线程组中设置好相关参数,并通过配置元件、前置处理器、定时器、断言等组件设置其他的参数信息,然后使用采样器发送请求,通过后置处理器、断言、监听器等组件分析查看测试结果。


与LoadRunner相比,JMeter是一款开源免费的轻量级工具安装简单,并且支持二次开发,但是在性能测试过程中,JMeter的录制功能、环境调试功能与LoadRunner都存在一定差距,而且JMeter的报表较少,结果分析也没有LoadRunner详细

http://www.lryc.cn/news/69583.html

相关文章:

  • 朗诵素材-《少年正是读书时》(两角色主持朗诵)
  • 凭借这个笔记,拿下8家大厂offer....
  • 介绍一下全链路压测平台的相关内容
  • 对于无效的数据,该如何处理
  • 港联证券:机器人行业有望迎来整体性机会 六氟磷酸锂翻倍上涨
  • css 伪类选择器 结构伪类
  • 常用的表格检测识别方法-表格区域检测方法(上)
  • 【运维知识进阶篇】集群架构-Rewrite重定向
  • JavaScript如何使用while循环
  • 『MySQL 实战 45 讲』16 - “order by” 是怎么工作的
  • 怎么给移动硬盘查错?移动硬盘查错能恢复数据吗
  • javaIO流之缓冲流
  • 定义制造业操作(定义 MES/MOM 系统)
  • 人工智能专栏第二讲——人工智能的基础技术
  • 注意!ChatGPT的Plus账号也会被封禁
  • 理解:Public Key Cryptography的应用
  • 深度学习中的图像分类介绍
  • 自然语言处理基础
  • 低代码与其拓荒,不如颠覆开发行业
  • 【数据结构】散列表(哈希表)
  • Flutter 笔记 | Flutter 核心原理(一)架构和生命周期
  • 【Linux进阶之路】基本指令(下)
  • Vue--》Vue 3 路由进阶——从基础到高级的完整指南
  • 【华为OD机试真题】【python】 网上商城优惠活动(一)【2022 Q4 | 100分】
  • 【业务数据分析】—— 用户留存分析(以挖掘Aha时刻为例)
  • 极客的git常用命令手册
  • spring-data 一统江湖,玩转多种数据源
  • 【EMC专题】为什么PCB上的单端阻抗控制在50欧?
  • 想自学写个操作系统,有哪些推荐看的书籍?
  • 深入理解Java虚拟机:JVM高级特性与最佳实践-总结-7