您的位置:首页 > 其它

零成本实现WEB性能测试之JMETER(一)

2015-01-26 17:37 232 查看
第一章 性能测试基础知识简介
1.1性能测试的概念

关于“性能测试是什么”这个问题,真可谓众说纷纭,我在这里列出百度百科的解释。性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。负载测试和压力测试都属于性能测试,两者可以结合进行。通过负载测试,确定在各种工作负载下系统的性能,目标是测试当负载逐渐增加时,系统各项性能指标的变化情况。压力测试是通过确定一个系统的瓶颈或者不能接受的性能点,来获得系统能提供的最大服务级别的测试。这是百度百科的解释,附上链接地址http://baike.baidu.com/link?url=90C13f1XUdMeUmwWkvugvpTLTd1bEeUD81XEJxpHbD1o3HgtJlEHZ3b4npReKn2sa7Jz5QbnGmxfCmgEoc9_Oq

1.2性能测试的目的

目的是验证软件系统是否能够达到用户提出的性能指标,同时发现软件系统中存在的性能瓶颈,优化软件,最后起到优化系统的目的。性能测试的目的包括以下几个方面。

A.评估系统的能力,测试中得到的负荷和响应时间数据可以被用于验证所计划的模型的能力,并帮助作出决策。

B. 识别体系中的弱点:受控的负荷可以被增加到一个极端的水平,并突破它,从而修复体系的瓶颈或薄弱的地方。

C. 系统调优:重复运行测试,验证调整系统的活动得到了预期的结果,从而改进性能。

D. 验证稳定性(resilience)可靠性(reliability):在一个生产负荷下执行测试一定的时间是评估系统稳定性和可靠性是否满足要求的唯一方法。

1.3性能测试的分类

性能测试类型包括负载测试,压力测试等。

负载测试(Load Testing):通过测试系统在资源超负荷情况下的表现,以发现设计上的错误或验证系统的负载能力。在这种测试中,将使测试对象承担不同的工作量,以评测和评估测试对象在不同工作量条件下的性能行为,以及持续正常运行的能力。负载测试的目标是确定并确保系统在超出最大预期工作量的情况下仍能正常运行。此外,负载测试还要评估性能特征。例如,响应时间、事务处理速率和其他与时间相关的方面。

压力测试(Stress Testing):对系统不断施加压力的测试,是通过确定一个系统的瓶颈或者不能接收的性能点,来获得系统能提供的最大服务级别的测试。例如测试一个 Web 站点在大量的负荷下,何时系统的响应会退化或失败。压力测试和负载测试最大的差别在于测试目的不同。压力测试可以被看作是负载测试的一种,即高负载下的负载测试,或者说压力测试采用负载测试技术。通过压力测试,可以更快地发现内存泄漏问题,还可以更快地发现影响系统稳定性的问题。例如,在正常负载情况下,某些功能不能正常使用或系统出错的概率比较低,可能一个月只出现一次,但在高负载(压力测试)下,可能一天就出现,从而发现有缺陷的功能或其它系统问题。通过负载测试,可以证明这一点,某个电子商务网站的订单提交功能,在10个并发用户时错误率是零,在50个并发用户时错误率是1%,而在200个并发用户时错误率是20%。

1.4性能测试的指标

在实际工作中我们经常会对两种类型软件进行测试:BS和CS,这两方面的性能指标一般需要哪些内容呢?

BS结构程序一般会关注的通用指标如下(简):

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 :尝试链接数;

* THroughput:尝试链接数;

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

*User 0 Connections :用户连接数,也就是数据库的连接数量;

*Number of deadlocks:数据库死锁;

*Buffer Cache hit :数据库Cache的命中情况

注意,在实际的性能测试过程中,我们观察的性能指标并不限于这些,需要根据实际情况做出选择和权衡,譬如内存,CPU,系统资源调用情况,也很非常有参考意义。

1.5性能测试的基本流程

由于工程和项目的不同,所选用的度量,评估方法也有不同之处。不过仍然有一些通用的步骤帮助我们完成一个性能测试项目。步骤如下

1. 明确性能测试需求

2. 制定性能测试方案

3. 设计性能测试用例

4. 运行性能测试用例

5. 分析性能测试结果

6. 生成性能测试报告

1.6 测试工具的选择

A、LoadRunner

LoadRunner,是一种预测系统行为和性能的负载测试工具。通过以模拟上千万用户实施并发负载及实时性能 监测的方式来确认和查找问题,LoadRunner能够对整个企业架构进行测试。通过使用 LoadRunner,企业能最大限度地缩短测试时间,优化性能和加速应用系统的发布周期。 LoadRunner是一种适用于各种体系架构的自动负载测试工具,它能预测系统行为并评估系统性能。

B、Jmeter

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

在这里我推荐大家使用Jmeter,因为LoadRunner一款商业软件收费比较贵,增加协议和并发用户都是要收费的,Jmeter最大的优点的是开源的,但是可以完成LoadRunner的95%的功能。当然我们也需要考虑一些实际情况,比如公司领导不信任免费的开源测试软件,部分有充足的资金预算,个别功能必须要使用LoadRunner进行测试等情况。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: