性能测试总结(三)--⼯具选型篇
本篇⽂章主要简单总结下性能测试⼯具的原理以及如何选型。性能测试和功能测试不同,性能测试的执⾏是基本功能的重复和并发,需要模拟多⽤户,在性能测试执⾏时需要监控指标参数,同时性能测试的结果不是那么显⽽易见,需要对数据进⾏分析。这些特点决定了性能测试更适合通过⼯具来完成。
⼀、浅谈为什么需要⼯具
我们来看下⼯具的定义:它原指⼯作时所需⽤的器具,后引申为为达到、完成或促进某⼀事物的⼿段。(---来⾃百度的解释)
1、从⼈类进化的⾓度来看,会制造并使⽤⼯具是⼈和猿⼈最根本的区别,因为⼯具可以帮助我们提⾼⽣产⼒和效率。
2、想象下如果不使⽤⼯具进⾏性能测试会怎么样?
我们可以从性能测试的定义的⾓度来分析,性能测试是指通过⾃动化的测试⼯具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进⾏测试。如果不使⽤⼯具,仅靠⼈⼯进⾏性能测试会存在以下的弊端:
a)测试需要投⼊⼤量的资源:
为了模拟多种负载、并发的场景需要多⼈协同⼯作,通常测试没有很多的资源,⽽且就算有资源⼈⼯的效果也会⼤打折扣,甚⾄于某些场景仅凭⼈⼯是⽆法完成的。
b)可重复性⾮常差:
性能测试经常需要反复调优和测试执⾏,如果没有⼯具的帮助,全靠⼈⼯实在不敢想象。
c)测试准确性较差:
由于需要模拟多种负载和并发场景,如果由⼈⼯来操作,难免会存在误差,⽽且相对⼯具或程序来说这种误差会更⼤,对测试结果影响也⾮常⼤。
d)结果的收集、整理和呈现形式差:
如果没有⼯具,全凭⼈⼯采集数据相对⼯具来说也会存在较⼤的误差。
⼆、性能测试与性能测试⼯具的关系
1、性能测试从测试阶段来划分属于系统测试,其和具体使⽤什么⼯具并没有直接的关系。使⽤⼯具只是为了提⾼性能测试效率和准确性的⼀种⽅法和⼿段。从本质上来看,同做其它事情时使⽤⼯具没有什么实质性的区别。
2、性能测试不等于Loadrunner,LR只是性能测试⼯具其中的⼀种,⽽且它也不是万能的,在某些情况下它也并不能派上⽤场。推荐看下《》和《》这两篇⽂章于对性能测试和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 安装包⽐较⼤,安
装⽐较⿇烦,⼯具本⾝相对⽐较
笨重
⽀持的协议⽀持多种协议:HTTP 、HTTPS 、SOAP 、FTP 、Database via JDBC 、JMS 等,但相对LR 还是不够全⾯,由于此原因相对来说jemter ⽐较灵活,轻便⽀持的协议⾮常多,⽐较全⾯,但正因此显得⼯具本⾝⽐较笨重,不够灵活脚本录制提供了⼀个利⽤本地ProxyServer (代理服务器)来录制⽣成测试脚本的功能,也⽀持badboy 录制再⽣成JMeter 脚本
⾃带录制功能强⼤,可直接录制回放并发模型通过增加线程组的数⽬,或者是设置循环次数来增加并发
⽤户⽀持多种并发模型,通过在场景中选择要设置什么样的场景,然后选择虚拟⽤户数分布式测试⽀持,可设置多台代理,通过远程控制实现多台机器并发压⼒
同JMeter 资源监控
通过JMeterPlugins 插件和ServerAgent 实现⾃带资源监控功能报告分析
通过与Ant 集成,⽣成HTML 报告⾃⾝⽀持⽣成HTML 、Word 报告虚拟IP 不⽀持⽀持
⽹速模拟
不⽀持⽀持扩展性开源,可根据需求修改源码通过扩展函数库实现
学习成本主要是⾃学官⽹上的资料⽹上资料和相关培训很多,购买正版的话,还有技术⽀持
六、性能测试⼯具学习教程:
1、Loadrunner :⽬前还未整理,后续会慢慢整理成⽂章,敬请期待...
2、Jmeter :可查看我的另⼀篇⽂章
3、Gatling :未使⽤过,⽹上资料也⽐较少,⼊门推荐:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论