0


性能测试工具介绍

一、性能测试工具的基本组成

性能测试工具基本都会包含如下几个核心的模块。

  • 压力生成器(Virtual User Generator):来产生无限压力地方,相当于无数个测试人员

压力发生器是性能测试工具最核心的部分,它主要有两个功能,一是真实模拟用户操作,二是模拟有效并发。

  • 结果采集器(Result Collector):结果记录人员
  • 负载控制器(Controller):对应的是指挥人员
  • 系统资源监控器(Monitor):对应的是若干资源监控人员,监控客户端、网络端、服务端
  • 结果分析器(Analysis):对应的是结果统计人员

二、性能测试工具缺陷

1.模拟用户网页操作时,浏览器是异步请求6个,而工具是同步执行6次请求

    模拟真实用户操作:浏览器在加载网页的时候,是同时并发多个TCP连接去请求页面对应的HTTP资源,包括HTML、JS、图片、CSS,当前流行的浏览器普遍会并发6-10个连接。然而,性能测试工具在模拟单个用户操作的时候,基本上都是单连接串行加载页面资源。产生的差异在于,假如页面有100个资源,每个HTTP请求的响应时间约为100毫秒,那么浏览器采用6个连接并行加载网页时大概会需要1.7秒(100/6*100毫秒),而测试工具采用单连接串行加载就需要10秒(100*100毫秒),两者结果相差十分巨大。这也解释了为什么有时候我们通过性能测试工具测试得到的响应时间挺长,但是手动用浏览器加载网页时感觉挺快的原因。

2.有效并发数 因压力机本身设备限制 而无法达到并发压力

    有效并发:有效并发就是我们在测试工具中设置了1000虚拟用户数,实际在服务器端就能产生1000并发压力。然而现实情况是,很多时候由于测试设备自身出现了性能瓶颈,压力发生器产生的并发压力远小于设定值,并且通常测试工具也不会将该问题暴露给测试人员;如果测试人员忽略了这个问题,以为测试得到的结果就是在设定并发压力下的结果,那么最终分析得出的结论也就跟实际情况大相径庭了。不过,我们可以通过保障测试环境不存在瓶颈,使得实际生成的并发压力尽可能地与设定值一致;另一方面,我们也可以通过在测试过程中监控Web层(例如Nginx)的连接数和请求数,查看实际达到服务器端的并发数是否跟我们的设定值一致,以此来反推压力发生器的压力是否有效。

三、主流测试工具

1、服务端性能测试工具

1.Loadrunner (商用)

    是一款C/S架构的商业版性能测试工具,在国内存在的时间较早,在国内在使用较广泛,知名度较高。该工具免费开放了50个虚拟用户,可供学习和使用。在国内的网站上有破解版本,但是到了最新的12版本,不再有破解版。**破解版的仿真度较差,**HTTP的瀑布图是按两个两个并发(与浏览器行为不一样),最新版本的仿真相对提高很多,对于HTTP静态请求相似度请求提高到80%,而**动态请求就要差很多。**

    由于loadRunner起步早,支持的协议很多,**很多不常用的协议都支持,**如电子邮件相关协议都支持。但对一些视频协议支持的不太好。loadrunner目前对浏览器最新版支持的不太好,最新的loadrunner12只支持ie11,对其它浏览器如谷歌、火狐等支持的较差。在脚本录制方面有些网站录制不了。价格上比较昂贵,一般小企业无力承担。

LoadRunner官网:https://saas.hpe.com/zh-cn/software/loadrunner

2.jmeter(开源免费)

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

Apache jmeter 可以用于对静态的和动态的资源(文件,Servlet,Perl脚本,java 对象,数据库和查询,FTP服务器等等)的性能进行测试。它可以用于对服务器、网络或对象模拟繁重的负载来测试它们的强度或分析不同压力类型下的整体性能。你可以使用它做性能的图形分析或在大并发负载测试你的服务器/脚本/对象。

官网链接:http://jmeter.apache.org/

3.Locust

    locust是一个基于python的开源框架。是一个易于使用的分布式用户负载工具。它旨在对网站(或其他系统)进行负载测试,并弄清一个系统可以处理多少个并发用户。

    并 发机制:采用协程(gevent)的机制。采用多线程模拟用户时,线程数会随着并发数的增加而增加,而线程之间的切换是需要占用资源的,IO的阻塞和线程的sleep会不可避免的导致并发效率下降。

    协程和线程区别:协程避免了系统资源调度,由此大幅度提高了性能,单台普通配置的测试机可以生产数千并发压力,这是LoadRunner和Jmeter都无法实现的。

    Locust功能单薄,特别是在性能指标监控和测试报告图表方面比较缺失,但是Locust的代码结构清晰,核心代码量也只有几百行,可扩展性不错,深入挖掘性能测试工具原理非常合适

4.LoadNinja

    LoadNinja 是一个基于云的负载测试和性能测试平台,用于 Web 应用程序和 Web 服务。它可以帮助开发人员、QA 团队和性能工程师检查他们的 Web 服务器是否承受大量负载,以及服务器是否健壮和可扩展。

    使用 LoadNinja,您可以创建基于 UI 的测试来模拟用户对测试的 Web 应用程序的操作,以及类似于客户端通过 API 到达服务器的 API 测试。

5.Jmeter + Prometheus + Grafana

    JMeter + Prometheus(InfluxDB)插件将JMeter指标导出到Prometheus(InfluxDB)数据库,将数据可视化需要在Grafana中配置数据源。

Grafana(自译:格拉法纳)

是大多数 数据库的开源分析和监控解决方案

Prometheus(普罗米修斯)

是一个开源的系统监控和报警工具包,最初是在SoundCloud开发的。

InfluxDB(数据库)

是一个用于存储和分析时间序列数据的开源数据库

JMeter-Prometheus Plugin

它是一个开源项目,该插件的工作是将JMeter运行的后的指标数据导出到Prometheus

Grafana

2、web前端性能测试工具

** 1.** web前端 常见 性能测试工具表

英文名称 描述

Fiddler Fiddler是一个http协议调试代理工具,它能够记录并检查所有你的电脑和互联网之间的http通讯,设置断点,查看所有的“进出”Fiddler的数据(指cookie,html,js,css等文件)。

Charles Charles是在PC端常用的网络封包截取工具,可通过代理方式抓取移动端网络通讯协议,支持WIndows、Mac、Linux。

HttpWatch HttpWatch是一款强大的网页数据分析工具,集成在internet explorer工具栏。

Firebug Firebug是firefox下的一个扩展能够调试网站的工具

3、移动端性能测试工具

移动端性能测试工具,获取手机应用CPU、内存、FPS、电量,启动时间等数据的记录。

    3.1 *PerfDog*

英文名称 描述

PerfDog PerfDog性能狗是移动全平台iOS\Android性能测试工具,快速定位分析性能问题工具

GT 腾讯GT工具是一款能表达移动app测试的性能测试工具

iTest iTest APP性能测试,可获取CPU、Mem、网络等

Android Studio Android Studio工具是开发Android应用,同时也可手机操作APP就可以在androidstudio查看性能测试数据了。也可以查看日志。

  •    3.2Android Studio*
    
标签: 测试工具

本文转载自: https://blog.csdn.net/weixin_44551274/article/details/127795573
版权归原作者 ✨W許伱一世承諾.✨ 所有, 如有侵权,请联系我们删除。

“性能测试工具介绍”的评论:

还没有评论