性能测试的工具

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了性能测试的工具相关的知识,希望对你有一定的参考价值。

参考技术A

HPLoadRunner 是一种预测系统行为和性能的负载测试工具。通过以模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题,LoadRunner 能够对整个企业架构进行测试。通过使用LoadRunner ,企业能最大限度地缩短测试时间,优化性能和加速应用系统的发布周期。
企业的网络应用环境都必须支持大量用户,网络体系架构中含各类应用环境且由不同供应商提供软件和硬件产品。难以预知的用户负载和愈来愈复杂的应用环境使公司时时担心会发生用户响应速度过慢,系统崩溃等问题。这些都不可避免地导致公司收益的损失。LoadRunner 能让企业保护自己的收入来源,无需购置额外硬件而最大限度地利用现有的IT 资源,并确保终端用户在应用系统的各个环节中对其测试应用的质量,可靠性和可扩展性都有良好的评价。 使用LoadRunner 的Virtual User Generator,您能很简便地创立起系统负载。该引擎能够生成虚拟用户,以虚拟用户的方式模拟真实用户的业务操作行为。它先记录下业务流程(如下订单或机票预定),然后将其转化为测试脚本。利用虚拟用户,您可以在Windows ,UNIX 或Linux 机器上同时产生成千上万个用户访问。所以LoadRunner能极大的减少负载测试所需的硬件和人力资源。另外,LoadRunner 的TurboLoad 专利技术能。
提供很高的适应性。TurboLoad 使您可以产生每天几十万名在线用户和数以百万计的点击数的负载。
用Virtual User Generator 建立测试脚本后,您可以对其进行参数化操作,这一操作能让您利用几套不同的实际发生数据来测试您的应用程序,从而反映出本系统的负载能力。以一个订单输入过程为例,参数化操作可将记录中的固定数据,如订单号和客户名称,由可变值来代替。在这些变量内随意输入可能的订单号和客户名,来匹配多个实际用户的操作行为。
LoadRunner 通过它的Data Wizard 来自动实现其测试数据的参数化。Data Wizard 直接连于数据库服务器,从中您可以获取所需的数据(如定单号和用户名)并直接将其输入到测试脚本。这样避免了人工处理数据的需要,Data Wizard 为您节省了大量的时间。
为了进一步确定您的Virtual user 能够模拟真实用户,您可利用LoadRunner 控制某些行为特性。例如,只需要点击一下鼠标,您就能轻易控制交易的数量,交易频率,用户的思考时间和连接速度等。 Virtual users 建立起后,您需要设定您的负载方案,业务流程组合和虚拟用户数量。用LoadRunner 的Controller,您能很快组织起多用户的测试方案。Controller 的Rendezvous 功能提供一个互动的环境,在其中您既能建立起持续且循环的负载,又能管理和驱动负载测试方案。
而且,您可以利用它的日程计划服务来定义用户在什么时候访问系统以产生负载。这样,您就能将测试过程自动化。同样您还可以用Controller 来限定您的负载方案,在这个方案中所有的用户同时执行一个动作---如登陆到一个库存应用程序——---来模拟峰值负载的情况。另外,您还能监测系统架构中各个组件的性能——--- 包括服务器,数据库,网络设备等——---来帮助客户决定系统的配置。
LoadRunner 通过它的AutoLoad 技术,为您提供更多的测试灵活性。使用AutoLoad ,您可以根据用户人数事先设定测试目标,优化测试流程。例如,您的目标可以是确定您的应用系统承受的每秒点击数或每秒的交易量。 LoadRunner 还能支持Media Stream应用。为了保证终端用户得到良好的操作体验和高质量Media Stream,您需要检测您的Media Stream应用程序。使用LoadRunner ,您可以记录和重放任何流行的多媒体数据流格式来诊断系统的性能问题,查找原由,分析数据的质量。
完整的企业应用环境的支持。
LoadRunner 支持广泛的协议,可以测试各种IT 基础架构。 PerformanceRunner (简称PR)是性能测试软件,通过模拟高并发的客户端,通过协议和报文产生并发压力给服务器,测试整个系统的负载和压力承受能力,实现压力测试、性能测试、配置测试、峰值测试等。
功能如下:
● 录制测试脚本
PR通过兼听应用程序的协议和端口,录制应用程序的协议和报文,创建测试脚本。PR采用java作为标准测试脚本,支持参数化、检查点等功能。
● 关联与session
对于应用程序,特别是B/S架构程序中的session,通过“关联”来实现。用户只需要点击“关联”的按钮,PR会自动扫描测试脚本,设置关联,实现有session的测试。
● 集合点
PR支持集合点,通过函数可以设置集合点。设置集合点能够保证在一个时间点上的并发压力达到预期的指标,使性能并发更真实可信。
● 产生并发压力
性能脚本创建之后,通过创建项目,设置压力模型,就可以产生压力。PR能够在单台机器上产生多达5000个并发的压力。
● 应用场景支持
通过设置多项目脚本的压力曲线,可以实现应用场景测试。
● 执行监控
在启动性能测试之后,系统会按照设定的场景产生压力。在执行过程中,需要观察脚本执行的情况,被测试系统的性能指标情况。PR通过执行监控来查看这些信息。
● 性能分析报表
一次性能测试执行完成,会创建各种性能分析报表,包括cpu相关、吞吐率、并发数等。
系统要求:windows(32位/64位) 2000/xp/vista/2003/7/2008

参考技术B 网络监控--透视宝APP端监控提供完善的网络监控功能,能够支持各种流行的网络库,第三方的ASI和AF、系统库NSURLSession和NSURLConnection,丰富的监控指标确保准确定位问题根源。包括网络请求的响应时间、请求类型、请求的POST参数、参数大小、首包时间、响应数据大小。 如果请求发生错误,能准确抓取错误码、错误信息、错误类型,通过和服务端的配合能进行端到端网络性能分析。

Socket请求分析,透视宝APP端监控查看响应最慢的主机以及异常数最多的主机。通过主机IP进而查看单次连接的详情,包括设备的详细参数、连接耗时、DNS解析耗时以及向Server端写或读时的耗时及字节变化趋势。 标记出有异常的Socket。异常信息通过摘要查看更加详细的分析,包括异常次数的变化趋势、设备分布、操作系统分布及异常堆栈。
支持对android ANR信息和ios卡顿信息的抓取,通过深入追踪和分析相关线程、Trace文件和信息,帮助您发现引起ANR/卡顿的原因,通过优化应用程序的性能,提升玩家的用户体验。 提供ANR/卡顿详情,包括App基本的软硬件信息、ANR/卡顿线程、全部线程、ANR/卡顿Trace文件及ANR/卡顿Message信息。
通过运营商、区域、接入点、设备以及操作系统等不同维度的数据分析 帮您在复杂的环境中“拨 云见日”
参考技术C 性能测试的工具有PerfDog,可以测试移动端各种形式的性能问题。

性能测试总结--工具选型篇

  本篇文章主要简单总结下性能测试工具的原理以及如何选型。性能测试和功能测试不同,性能测试的执行是基本功能的重复和并发,需要模拟多用户,在性能测试执行时需要监控指标参数,同时性能测试的结果不是那么显而易见,需要对数据进行分析。这些特点决定了性能测试更适合通过工具来完成。

 

一、浅谈为什么需要工具

我们来看下工具的定义:它原指工作时所需用的器具,后引申为为达到、完成或促进某一事物的手段。(---来自百度的解释) 

1、从人类进化的角度来看,会制造并使用工具是人和猿人最根本的区别,因为工具可以帮助我们提高生产力和效率。

  

2、想象下如果不使用工具进行性能测试会怎么样?

我们可以从性能测试的定义的角度来分析性能测试是指通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。如果不使用工具,仅靠人工进行性能测试会存在以下的弊端:

a)测试需要投入大量的资源

  为了模拟多种负载、并发的场景需要多人协同工作,通常测试没有很多的资源,而且就算有资源人工的效果也会大打折扣,甚至于某些场景仅凭人工是无法完成的。

b)可重复性非常差

  性能测试经常需要反复调优和测试执行,如果没有工具的帮助,全靠人工实在不敢想象。

c)测试准确性较差

  由于需要模拟多种负载和并发场景,如果由人工来操作,难免会存在误差,而且相对工具或程序来说这种误差会更大,对测试结果影响也非常大。

d)结果的收集、整理和呈现形式差

  如果没有工具,全凭人工采集数据相对工具来说也会存在较大的误差。

  

性能测试与性能测试工具的关系

1、性能测试从测试阶段来划分属于系统测试,其和具体使用什么工具并没有直接的关系。使用工具只是为了提高性能测试效率和准确性的一种方法和手段。从本质上来看,同做其它事情时使用工具没有什么实质性的区别。

2、性能测试不等于Loadrunner,LR只是性能测试工具其中的一种,而且它也不是万能的,在某些情况下它也并不能派上用场。推荐看下《让LoadRunner走下神坛》和《让LoadRunner再次走下神坛这两篇文章于对性能测试和LR的关系讲的比较深刻。

3、自动化测试工具与性能测试工具的区别:性能测试工具一般是基于通信协议的(客户器与服务器交换信息所遵守的约定),它可以不关心系统的UI,而自动化使用的是对象识别技术,关注UI界面。自动化无法或很难造成负载,但是通过协议很容易。

 

三、性能测试工具选型参考:

通常在公司或项目中,我们选择任何工具时都会做一些调研,目的就是为了选择适合公司或项目的工具。那么性能测试工具也不例外,通常可以从以下几个方面进行考虑:

1、成本方面

  a)工具成本:工具通常分为商业闭(shou)源(fei)和非商业开(mian)源(fei)两种,商业工具通常功能比较强大,收费,由于收费所以可提供售后服务,如果出了问题有专业人士帮忙处理。而开源工具通常是免费的,功能有限,维护工具的组织也是自发的,所以如果碰到问题需要自行解决,没有专人提供服务。具体选择商业还是开源的工具,需要根据公司的情况,比如公司规模、愿意承担的成本、项目综合情况等方面考虑。一般来看大公司通常可以承担的起工具的费用,会考虑购买商业工具。而小公司由于资金压力,可能会选择开源的工具。

  b)学习成本:使用任何工具都需要进行学习,这样一来就会产生学习成本(比如:时间),因此我们在选择工具时也需要考虑到项目组成员的学习成本。如果有两种工具A和B都能满足项目组测试的需求,如果A工具大部分人都会使用,而B工具只有极少部分人会使用,那么建议优先考虑A工具。通常,对于测试人员最好熟悉一款流程的商业(性能)工具,一款开源免费(性能)工具,还需要熟悉常见的(性能)脚本开发语言等,这是基本要求。

2、支持的协议

  性能测试通常跟协议联系非常紧密,比如B/S的系统通常使用http协议进行客户端和服务器商的信息交换,C/S的系统通常使用socket协议进行信息交换。在选择工具时,需要考虑项目使用的协议。一个测试工具能否满足测试需求,能否达到令人满意的测试结果,是选择测试工具要考虑的最基本的问题。

3、生命力

  现在的性能测试工具非常多,比如LR,jmeter这类较大众的工具网上相关的资料非常多,但一些小众工具可能网上资料比较少。如果在工具使用过程中碰到了比较极手的问题,在录求解决方案或帮助时,大众的的工具相对来说会比较有优势一点,毕竟使用的人越多,资料越多,那么自己碰到的问题也许别人早就碰到并解决了,即时之前没有人碰到过,由于使用研究的人多,通过社区或论坛的帮助相信总会有高手能协助解决的。

4、跨平台

  这一点自不必多说,看看JAVA为什么一直这流行就知道了。

 

四、常见性能测试工具:

性能测试工具,从理论上来讲在性能测试过程中使用到的所有工具都可以称其为性能测试工具,通常分为以下几类:

说明:

  • 服务器端性能测试工具:需要支持产生压力和负载,录制和生成脚本,设置和部署场景,产生并发用户和向系统施加持续的压力。
  • web前端性能测试工具:需要关于心浏览器等客户端工具对具体需要展现的页面的处理过程。
  • 移动端性能测试工具:同web端性能测试工具也需要关心页面的处理过程,另外还要具体数据采集的功能,比如:手机CPU、内存、电量,启动时间等数据的记录。
  • 资源监控工具:这个主要是能够收集性能测试过程中的数据以及良好的结果展现方式。

 

PS:本篇文章主要总结下服务器端性能测试工具LR和Jmeter,后面也会对这两个工具进行简单的对分。

 

五、常见性能测试工具特点

  • JMeter:采用的是多线程模型,扩展性很强,不过制造压力没有那么高。它很适合用来压一些Tomcat服务,或者一些后端接口。JMeter的缺点是压力值不能精确控制,难以适应高并发的情况,而且由于是JAVA编写的,本身比较消耗资源。
  • LoadRunner:更像是一个模拟器,它比较适用于前端构造较复杂场景的情况,比如模拟100个用户登录的场景,LoadRunner对非技术人员提供了很好的支持。LoadRunner不适用后端接口。

下表为JMeter和LoadRunner对比表:

描述 JMeter LoadRunner
架构原理 通过中间代理,监控和收集并发客户端的指令,把他们生成脚本,再发送的应用服务器,再监控应用服务器反馈的过程 JMeter
安装 简单,解压即可,比较灵活 LoadRunner安装包比较大,安装比较麻烦,工具本身相对比较笨重
支持的协议 支持多种协议:HTTPHTTPSSOAPFTPDatabase via JDBCJMS等,但相对LR还是不够全面,由于此原因相对来说jemter比较灵活,轻便 支持的协议非常多,比较全面,但正因此显得工具本身比较笨重,不够灵活
脚本录制 提供了一个利用本地ProxyServer(代理服务器)来录制生成测试脚本的功能,也支持badboy录制再生成JMeter脚本 自带录制功能强大,可直接录制回放
并发模型 通过增加线程组的数目,或者是设置循环次数来增加并发用户 支持多种并发模型,通过在场景中选择要设置什么样的场景,然后选择虚拟用户数
分布式测试 支持,可设置多台代理,通过远程控制实现多台机器并发压力 JMeter
资源监控 通过JMeterPlugins插件和ServerAgent实现 自带资源监控功能
报告分析 通过与Ant集成,生成HTML报告 自身支持生成HTMLWord报告
虚拟IP 不支持 支持
网速模拟 不支持 支持
扩展性 开源,可根据需求修改源码 通过扩展函数库实现
学习成本 主要是自学官网上的资料 网上资料和相关培训很多,购买正版的话,还有技术支持

 

六、性能测试工具学习教程:

1、Loadrunner:目前还未整理,后续会慢慢整理成文章,敬请期待...

2、Jmeter:可查看我的另一篇文章Jmeter教程索引贴

3、Gatling:未使用过,网上资料也比较少,入门推荐新一代服务器性能测试工具Gatling

 

以上是关于性能测试的工具的主要内容,如果未能解决你的问题,请参考以下文章

我们可以在aws服务器上使用哪些工具进行性能测试? [关闭]

系统性能测试方案

我是新手,刚接触性能测试,实际工作中的性能测试的流程怎样的呢?

怎么进行性能测试

创建自动性能测试

使用开源工具进行性能测试-打破神话