性能测试工具Jmeter最全学习分享

软件测试之性能测试

一、性能

1.B/S结构

程序一般会关注的通用指标如下(简):
Web服务器指标指标:

  • Avg Rps: 平均每秒钟响应次数=总请求时间 / 秒数;
  • Avg time to last byte per terstion (mstes):平均每秒业务脚本的迭代次数;
  • Successful Rounds:成功的请求;
  • Failed Rounds :失败的请求;
  • Successful Hits :成功的点击次数;
  • Failed Hits :失败的点击次数;
  • Hits Per Second :每秒点击次数;
  • Successful Hits Per Second :每秒成功的点击次数;
  • Failed Hits Per Second :每秒失败的点击次数;
  • Attempted Connections :尝试链接数;

2.C/S结构

C/S结构程序,由于一般软件后台通常为数据库,所以我们更注重数据库的测试指标:

  • User 0 Connections :用户连接数,也就是数据库的连接数量;
  • Number of deadlocks:数据库死锁;
  • Buffer Cache hit :数据库Cache的命中情况
    在实际中我们还会察看多用户测试情况下的内存,CPU,系统资源调用情况。这些指标其实是引申出来性能测试中的一种:竞争测试。什么是竞争测试,软件竞争使用各种资源(数据纪录,内存等),看他与其他相关系统对资源的争夺能力

二、性能测试

1.什么是性能测试?

性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。

2.为何要进行性能测试?

目的是验证软件系统是否能够达到用户提出的性能指标,同时发现软件系统中存在的性能瓶颈,优化软件,最后起到优化系统的目的。
包括以下几个方面
1.评估系统的能力,测试中得到的负荷和响应时间数据可以被用于验证所计划的模型的能力,并帮助作出决策。
2.识别体系中的弱点:受控的负荷可以被增加到一个极端的水平,并突破它,从而修复体系的瓶颈或薄弱的地方。
3.系统调优:重复运行测试,验证调整系统的活动得到了预期的结果,从而改进性能。
检测软件中的问题:长时间的测试执行可导致程序发生由于内存泄露引起的失败,揭示程序中的隐含的问题或冲突。
4.验证稳定性(resilience)可靠性(reliability):在一个生产负荷下执行测试一定的时间是评估系统稳定性和可靠性是否满足要求的唯一方法。
3.性能的测试分类
性能测试包括:负载测试、强度测试和容量测试等。

测试分类 描述
负载测试(Load Testing) 负载测试是指通过测试系统在资源超负荷情况下的表现,来发现设计上的错误或验证系统的负载能力。在这种测试中,将使测试对象承担不同的工作量,以评测和评估测试对象在不同工作量条件下的性能行为,以及持续正常运行的能力。负载测试的目标是确保系统在超出最大预期工作量的情况下仍能正常运行,确定在各种工作负载下系统的性能,目标是测试当负载逐渐增加时,系统组成部分的相应输出项,例如通过量、响应时间、CPU负载、内存使用、磁盘I/O吞吐率、网络吞吐量等来决定系统的性能。此外,负载测试还要评估性能特征,如响应时长,事物处理速率和其他与时间相关的性能指标。
压力测试(Stress Testing) 在软件工程中,压力测试是对系统不断施加压力的测试,是通过确定一个系统的瓶颈或不能接收的性能点,来获得系统能提供最大服务级别的测试。例如测试一个Web站点在大量的负荷下,何时系统的响应退化或失败。
容量测试(Volume Testing) 容量测试确定系统可处理同时在线的最大用户数、最大存储量、最多处理的数据流量等
基准测试 比较新的或未知测试对象与已知参照标准(如现有软件或评测标准)的性能,无论选取之前的任何一种测试方式,都需要先进行基准测试,作为后续性能测试的参照
争用测试 核实测试对象对于多个主角对相同资源(数据记录、内存等)的请求的处理是否可以接受性能配置 核实在操作条件保持不变的情况下,测试对象在使用不同配置时其性能行为的可接受性。
强度测试 核实测试对象性能行为在异常或极端条件(如资源减少或用户数过多)之下的可接受性。

三、性能测试工具

如何模拟实际情况呢? 找若干台电脑和同样数目的操作人员在同一时刻进行操作,然后拿秒表记录下反应时间? 这样的手工作坊式的测试方法不切实际,且无法捕捉程序内部变化情况,这样就需要压力测试工具的辅助

1.jemeter

JMeter是Apache组织开发的基于Java的压力测试工具,用于对软件做压力测试。可以用于测试静态和动态资源,例如静态文件、Java服务小程序、CGI脚本、Java对象、数据库、FTP服务器等。JMeter可以用于对服务器、网络或对象模拟巨大的负载,来在不同压力类别下测试他们的强度和分系整体性能。注:jemeter由java语言开发,安装jemeter之前需安装jdk;
[apache-jmeter-5.4.3.zip]

2.jemeter相关参数

2.1原生线程组

代表一定数量的用户,用来模拟用户并发发送请求
thread group(线程组)、setup thread group(设置线程组)、teardown thread group(拆线组)
在这里插入图片描述

2.1.1thread group(线程组)

①最常用的线程组
②一个线程组,可以看做一个虚拟用户组,线程组中的每个线程都可以理解为一个虚拟用户

2.1.2setup thread group(设置线程组)

一种特殊类型的线程组,可用于执行预测试操作,执行顺序在普通线程组之前,这些类型的线程执行测试前进行定期线程组的执行,测试开始时进行初始化的工作。
应用场景举例:
A、测试数据库操作功能时,用于执行打开数据库连接的操作。
B、测试用户购物功能时,用于执行用户的注册、登录等操作。

2.1.3teardown thread group(拆线组)

一种特殊类型的线程组,可用于执行测试后动作。执行顺序在普通线程组之后,这些类型的线程执行测试结束后执行定期的线程组,测试结束时进行回收工作。
应用场景举例:
A、测试数据库操作功能时,用于执行关闭数据库连接的操作。
B、测试用户购物功能时,用于执行用户的退出等操作。

2.1.4线程组参数

在这里插入图片描述

2.2取样器
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值