@TOC压测工具笔记的主流工具(一):https://blog.csdn.net/weixin_...)JMeter之压测工具笔记(2):https://blog.csdn.net/weixin_...Introduction在正式发布移动应用和Web服务之前,除了进行必要的功能测试和安全测试,以保证互联网的服务交付质量产品,经常需要做压力/负载/性能测试。然而,在互联网+试水的过程中,很多传统企业由于资源或产品迭代速度等原因,往往忽略了这部分工作,导致新产品上线后频繁出现卡顿等问题,严重影响用户体验。那么为什么互联网产品需要进行压力/负载/性能测试,有哪些工具可以帮助我们实现呢?本文将为您详细解读。压力/负载/性能测试之间的异同在产品开发过程中,压力/负载/性能测试之间的差异经常被混淆。这三个测试之间有什么区别?压力测试又称强度测试,通过模拟实际软硬件环境和用户使用过程的系统负载,长时间或长时间运行测试软件,测试被测系统的性能、可靠性和稳定性。在大负载下。性等。压力测试需要确定系统的瓶颈或不可接受的性能点,以获得系统可以提供的最大服务水平。通俗地说,压力测试就是发现在什么情况下你的应用程序的性能会变得不可接受。负载测试(LoadTesting)通常被定义为将其可以操作的最大任务数添加到被测系统的过程。负载测试有时称为“容量测试”或“耐久性测试/持久性测试”。其目标是确定并确保系统能够在超出最大预期工作负载的情况下正常运行。对于WEB应用,负载是并发用户数或HTTP连接数。负载测试通过测试系统在资源过载条件下的性能来检测设计错误或验证系统的负载能力。在本次测试中,测试对象将承受不同的工作负载,以评估和评估测试对象在不同工作负载条件下的性能行为,以及持续正常运行的能力。性能测试(PerformanceTesting)的目的不是为了发现系统漏洞,而是为了消除系统性能瓶颈,为回归测试建立基准。性能测试的操作实际上是一个非常仔细和可控的测量和分析过程:“运行负载测试->测量性能->调试系统”。理想情况下,被测应用程序此时足够稳定,可以顺利进行该过程。性能测试的另一个目标是为被测系统建立一组基线数据。网络应用性能测试重点是利用成熟先进的自动化技术对网络应用性能进行监控、网络应用性能分析和网络预测。虽然三种测试的目的完全不同,但测试操作的环节基本相同。因此,一个测试流程完全可以包括三个方面:性能测试、负载测试、压力测试。使用的测试工具往往是相似的。市面上流行的压力/负载/性能测试工具大多来自国外。同时,由于开发目的和侧重点的不同,它们的功能也大不相同。下面简单介绍一下最常见的检测产品。LoadRunnerLoadRunner是一种负载测试工具,可预测系统行为和性能。它通过模拟实际用户行为进行实时性能监控,帮助测试人员更快地发现和发现问题。LoadRunner适用于各种架构,支持广泛的协议和技术,并提供专门的测试解决方案。通过LoadRunner,企业可以最大限度地减少测试时间、优化性能并加快应用系统的发布周期。LoadRunner提供三大功能模块:VirtualUserGenerator(用于记录性能测试脚本)、LoadRunnerController(用于创建、运行和监控场景)和LoadRunnerAnalysis(用于分析性能测试结果)可以作为独立的工具完成,它们各自的功能可以是作为LoadRunner的一部分相互连接,与其他模块一起完成软件性能的整体测试。参见:《性能测试入门——LoadRunner使用初探》(http://www.admin5.com/article...)LoadRunner官网:https://saas.hpe.com/zh-cn/so...ApacheJMeterJMeter是一款应用广泛的流行的开源压测产品最初是为web应用测试而设计的,现在JMeter可以用来测试静态和动态资源,如静态文件、Javaservlets、CGI脚本、Java对象、数据库、FTP服务器等,作为以及模拟服务器、网络或对象上的巨大负载,测试它们的强度并通过不同的压力类别分析整体性能。此外,JMeter可用于应用程序的功能测试和回归测试,通过创建带有断言的脚本来验证您的程序是否返回了您期望的结果。为了获得最大的灵活性,JMeter允许使用正则表达式来创建断言。JMeter的特性包括对HTTP、FTP服务器和数据库的压力测试和性能测试;完全的便携性;完整的Swing和轻量级组件支持包;完整的多线程;测试结果的缓存和离线分析/回放;linkablesampling具有为测试提供动态输入的功能;支持脚本编程的采样器等。在设计阶段,JMeter可以作为HTTPPROXY(代理)记录浏览器的HTTP请求,或者记录Apache等WebServers的日志文件重现HTTP流量,并设置测试运行时的重复次数和并发数(线程数)用于压力测试。参考文章:《云智慧压测实战分享之JMeter工具使用初探》(https://segmentfault.com/a/11...)官网链接:http://jmeter.apache.org/LoadsterLoadster是一款商用负载测试软件,用于测试高负载下的性能网站、Web应用程序和Web服务支持Linux、Mac和Windows等操作环境。Loadster可以对Web应用/服务的Cookie、线程、头文件、动态表等元素发起测试,获取Web在压力下的性能、弹性、稳定性和可扩展性。官网链接:http://www.loadsterperformanc...CloudTestCloudTest是一款集性能和功能测试为一体的综合性压力测试云平台。它专为现代网络和移动应用程序测试而设计和开发。CloudTest可以图形化的实现判断和循环,减少测试开发的整体工作量,缩短开发时间。CloudTest基于内存的分析引擎可以实时采集和展示数据,所有数据可以在3秒内聚合展示。CloudTest采用虚拟化技术,与公有/私有云计算技术完美配合,不需要过多的硬件、带宽资源投入,人力维护成本几乎为零,测试按需进行,远程访问,适合多团队协作。所有规模的模拟成本都远优于传统工具,同时大大缩短了测试周期时间。官网链接:https://soasta.com/cloudtest阿里云PTS阿里云性能测试(PerformanceTesting)是一个SaaS性能测试平台,具有强大的分布式压力测试能力,可以模拟海量用户的真实业务场景,让应用程序的性能问题无法隐藏。PTS平台的特点包括提供压测机,无需安装软件;简化脚本场景监控,省时省力;分布式并发压测,无限压测能力;大规模集群快速扩容,支持数十万用户、百万级TPS性能压力测试;80%以上的用户基本不需要花费额外的费用。PTS分为两个版本。精简版免费,企业版提供资源包月和按量付费两种计费方式。官网链接:https://www.aliyun.com/produc...压测宝是云智宝推出的一款真实用户行为和地域分布的全链路云压测平台,通过云服务器生成真实分布,对其进行模拟各区域用户访问后台带来的真实流量,无限贴近生产环境面临的各种复杂因素,衡量真实的用户体验。通过云智能应用性能管理和监控产品的集成,帮助实现基于真实用户行为的压测方案定制,实时定位压测过程中各环节的应用资源和代码瓶颈,现场纠错,分析应用性能原因。在产品特性方面,压力测试通过其独特的开放架构支持各种主流网络协议;同时支持手机APP的脚本录制方式,可以大大降低制作压力测试脚本的时间和难度。依托压测宝和完整的产品线,云智为用户提供一站式压测服务,为云计算时代的复杂应用提供专业的性能压测服务,帮助企业客观评估应用性能能力,发现充分-链路性能瓶颈,提供专业的应用架构优化、架构容量规划咨询服务,满足企业灵活多变的业务需求。目前,压测宝已提供高达10万的UV并发压测服务。官网链接:http://www.yacebao.com/kylinTOP测试监控平台kylinTOP测试监控平台是集性能测试、自动化测试、业务监控为一体的B/S架构跨平台测试平台。是深圳市石麒麟软件有限公司的产品,本工具开放10个免费虚拟用户供学习使用。在易用性方面,录制脚本支持最新版本的浏览器,对谷歌和火狐的支持都很好。对于一些https。网站证书问题,自动为用户处理,方便记录。录音过程高效便捷,是其他演奏工具无法比拟的。在仿真能力方面,是目前业界性能最好的工具。它可以完全模拟浏览器的行为,即单个用户的HTTP请求的瀑布图可以和浏览器完全一样。总之是国内非常少见的好用的性能测试工具,完全可以替代国外同类产品。目前在军工、评估检测机构、国有企业、银行系统、大型企业都有广泛的应用。它支持多种协议,尤其是在视频领域,具有得天独厚的优势。官网地址:http://www.70testing.comNeoLoadNeoLoad是Neotys出品的一款负载和性能测试工具,能够真实模拟用户活动,监控基础设施的运行状态,从而消除所有web和移动应用的瓶颈。通过使用无脚本的GUI和一系列自动化功能,NeoLoad可以将测试设计速度提高5-10倍,并将脚本保持在原来设计时间的10%,同时帮助用户使用持续集成系统进行自动化测试。NeoLoad支持WebSocket、HTTP1/2、GWT、HTML5、AngularJS、OracleForms等技术协议,可以监控包括操作系统、应用服务器、Web服务器、数据库、网络设备在内的各种IT基础设施。平台发起外部压力。官网链接:http://www.neotys.com/product...WebLOADWebLOAD是Radview公司的一款负载测试工具,可用于测试系统性能和弹性,也可用于正确性验证(verification返回结果正确性)。它的测试脚本是用Javascript(和集成的COM/Java对象)编写的,支持多种协议,如Web(REST/HTTP,包括AJAX)、SOAP/XML和其他可从FTP、SMTP等脚本调用的协议,因此应用程序可以在所有级别进行测试。WebLOAD有两个版本,免费版和专业版。免费版支持50个虚拟用户,专业版提供更多报告和协议供用户选择。WebLOAD通常作为QA团队的独立运行工具使用。在开发周期的验证阶段,在被测系统(SystemUnderTest,SUT)投入实践之前,先在模拟环境中对被测系统(SUT)进行测试。官网链接:http://www.radview.com/LoadstormLoadstorm是一款针对web应用的云负载测试工具,通过模拟海量点击来测试web应用在重负载下的性能。由于使用云端资源,Loadstorm的测试成本非常低,用户可以选择在云端创建自己的测试计划、测试标准和测试场景。Loadstorm最多可以产生50,000个并发用户,并通过数千个云服务器发起访问。使用Loadstorm不需要任何脚本知识,并提供多种测试图表和报告模板来准确衡量Web应用程序的各种性能指标,如错误率、平均响应时间和用户数。Loadstorm可以申请免费试用,但更多压力和功能需要付费账户。官网链接:http://loadstorm.com/Loadimpact(开源)是一个在线免费测试网站负载能力的网站,可以满足你的基本要求,当然会有更多的项目需要他的付费用户来测试。Loadimpact是一个DevOps的性能测试工具,支持在各种平台上测试网站、Web应用程序、移动应用程序和API。Loadimpact可以帮助用户了解应用的最高在线用户访问量,通过模拟网站在不同在线用户下的响应时间来估算服务器的最大负载。Loadimpact的使用非常简单,只需要输入网址进行测试,然后就可以统计出加载网站的一些详细数据。包括整体加载和现场图片、javascript、CSS等代码加载。您可以从右侧的列表中选择不同的文件,同时比较最多三个对象的加载数据,并生成图表展??示,方便网站设计者进行分析。测试完成后,网站还可以存储测试的统计数据。官网链接:http://loadimpact.com/特别提示:1、由于该测试数据发生在国外,一般反映了国外用户访问您要测试的网站的速度参数,具有一定的参考意义;2、对于国内主机,以及主要客户来自中国的用户,请谨慎使用此数据作为依据。locust(开源)Locust是一种完全基础的Python编程语言,使用PurePython描述测试脚本,HTTP请求完全基于Requests库。除了HTTP/HTTPS协议,Locust还可以测试其他协议的系统,只需要使用Python调用相应的库来描述请求即可。但是脚本需要手工编写,难度较大。OpenSTA(opensource)OpenSTA是一款免费、开源的web性能测试工具,可以记录非常强大的脚本流程,进行性能测试。例如,虚拟多个不同用户同时登录被测网站。它还可以根据指定的语法编辑录制的测试脚本。测试脚本录制完成后,可以对测试脚本进行编辑,进行具体的性能指标分析。其比较丰富的图形化测试结果大大提高了测试报告的可读性。OpenSTA是基于CORBA的结构。它虚拟化了一个代理,并使用其特殊的脚本控制语言来记录所有通过代理的HTTP/S流量。通过分析OpenSTA的性能指标收集器收集的各种性能指标和HTTP数据来分析系统的性能。综上所述,就是市面上常见的十种压力/负载/性能测试工具。以Jmeter、Loadrunner为代表的产品大多属于传统防火墙中的压力测试,适用于测试内网系统硬件资源、服务、数据库等。并发条件下的性能。以阿里云PTS、CloudTest为代表的二代压测产品将压测机迁移到云端,利用云资源在防火墙外产生大规模并发,有效降低压测成本和准备周期,提高效率.但受压测点的限制,国外或阿里云的压测产品很难对国内的应用进行有效测试,尤其是部署在非阿里环境的应用。商业性能工具在易用性(脚本生成)、并发模型、统计指标等方面都比开源免费软件好很多。它们可以大大提高工作效率,降低使用难度,统计指标也更加丰富。免费开源软件的优点是免费,不花钱。但其使用难度大,统计指标少,仿真能力相对较弱。为满足复杂的云分布式应用交付场景的压力测试需求,以云智能压力测试为代表的第三代压力测试产品应运而生。它从最终用户行为和体验的角度检查应用程序性能问题。APM集成了深度跟踪系统,可以准确找到影响性能的瓶颈。不断更新。..参考:
