1、论文关键词:web 应用 性能测试 loadrunner 论文摘要:性能测试可以测算出应用系统能够承受的负荷,从而保证系统在实际压力下的正常工作。本文通过一种能够模拟真实用户实际行为的方法,对应用系统进行性能测试,获取数据进行分析,并对其性能指标进行比较,找到系统瓶颈,从而进行性能优化。 引言 World Wide Web 简称 Web 或 WWW ,中文名字万维网。是自 20 世纪 90 年代以来最重要的 Internet 应用。作为一种资源的组织和表达机制,Web 已成为 Internet 最主要的信息传送媒介。 随着 Internet 的迅速发展,web 应用越来越深入人们的工作和生活。
2、java 自 1995 年问世以来,由于其简单易学、跨平台、纯面向对象等诸多优点吸引了人们。因此基于 java 的 web 应用程序得到了广泛的应用。软件除了能满足用户的需求之外,还要保证各个部分协调有效的运行,发挥整个系统的一体作用,因此软件的性能也是非常重 要的。在保证软件质量的过程中,需要进行各种测试,例如功能测试、性能测试、可用性测试、客户端兼容性测试及安全性测试。由于基于 web 的 B/S 架构的应 用程序,客户端只能完成浏览、查询、数据输入等简单功能,绝大部分工作由服务器承担,这使得服务器的负担很重。因此系统并发的用户数,系统的事务率及响应 时间,在基于 JAVA 的 web 应
3、用程序尤其重要。所以本文着重描述其性能测试。 1.软件性能测试 软件性能测试是为了描述对象与性能相关的特性并对其进行评价,而实施和执行的一类测试。性能测试主要检验软件是否达到需求规格说明中规定的各类性能指标,并满足一些性能相关的约束和限制条件。 中国软件评测中心将性能测试概括为三个方面:应用在客户端性能的测试、应用在网络 上性能的测试和应用在服务器端性能的测试。 本文主要关注应用在客户端性能的测试。 应用在客户端性能测试的目的是考察客户端应用的性能,测试的入口是客户端。它主要包括并发性能测试、疲劳强度测试、大数据量测试和速度测试等,其中并发性能测试是重点。 并发性能测试的过程是一个负载测试和压
4、力测试的过程,即逐渐增加负载,直到系统的瓶颈或者不能接受的性能点,通过综合分析交易执行指标和资源监控指标来 确定系统并发性能的过程。负载测试是确定在各种负载下系统的性能,目标是测试当负载逐渐增加时,系统组成部分的相关输出项,例如通过量、响应时间、CUP 负载、内存使用等来决定系统的性能。负载测试是一个分析软件应用程序和支撑架构、模拟真实环境的使用,从而来确定能够接受的性能过程。压力测试是通过确定一个系统的瓶颈或者不能接受的性能点,来获得系统能提供的最大服务级别的测试。 并发性能测试的目的主要体现在三个方面:以真实的业务为依据,选择有代表性的、关键的业务操作设计测试案例,以评价系统的当前性能;当
5、扩展应用程序的功 能或者新的应用程序将要被部署时,负载测试会帮助确定系统是否还能够处理期望的用户负载,以预测系统的未来性能;通过模拟成百上千个用户,重复执行和运行 测试,可以确认性能瓶颈并优化和调整应用,目的在于寻找到瓶颈问题。2.基于 JAVA 的 WEB 应用程序性能测试策略 软件测试就是在受控制的条件下对系统或应用程序进行操作并评价操作结果的过程,所谓控制条件应包括正常条件与非正常条件。对任意一个程序进行的测试,无 论使用自动化的测试工具或是手动测试,穷尽测试是不可能。任何一个经过严格测试的程序,也不能保证其百分之百的正确。 因此,为了较少这种不必要的错误。测试之前一定先要制定其测试策略
6、,测试计划,选用合适的测试工具,从而设计出高效的测试用例。只有这样,一个好的测试策略和好的测试计划才能做到事倍功半的作用。 基于 JAVA 的 web 应用程序性能测试重点在于并发测试。并发测试一般使用虚载测试的方法,即通过一个控制器发送测试信息给多个参与测试的主机,在每台机器上模拟多个用户的操作(使用多个进程或线程)向服务器发送用户请求,使系统运行起来。 基于以上的工作原理,其性能测试采用的策略主要有: (1)脚本的个数、负载生成器和每个组中包括的 VUSER 数为固定数。 (2)脚本的个数、负载生成器和每个组中包括的 Vuser 数可以以一定的百分比进行改变。 (3)可以固定虚拟用户数、每
7、秒事务数、每分钟也面数及事务的响应时间。 (4)可以设置脚本的种类 (5)设置不同的操作系统,模拟真实的用户现象。 3.性能测试的实现 性能测试,大多数的测试只有借助测试工具才能完成。目前,广泛使用的性能测试工具大多是商业软件,如 mercury interactive 公司的 loadrunner、Astra LoadTest,Compuware公司的 QA Load,IBM Rational 公司的 TeamTest。本文选用的用 Mercury 公司的自动化性能测试工具 loadrunner,在 Windows XP, My Sql 数据库的测试 环境下进行性能测试。 (1)性能测试设计
8、 Loadrunner 是一个可以进行自动化测试执行,并对测试的数据进行分析,从而得到系统瓶颈的行业标准的性能测试解决方案。有以下三部分组成: VuGen 用来录制虚拟用户的脚本。Controller 用来执行脚本并且对整个测试过程进行监控。Analysis 提供图和报表来显示测试结果。 具体方法:首先通过使用 VuGen(虚拟用户生成器)录制用户在客户端应用程序中执行的典型业务流程来开发 Vuser 脚本。VuGen 还可以运行脚本,为了成功的把脚本集成到LoadRunner 方案中,在录制了基本的 Vuser 脚本以后,还要对脚本进行增强及编辑,设置好运行时环境后,以独立模式运行 Vuse
9、r 脚本。其次通过 Controller 从一个单一的控制点简单有效地控制所有的 Vuser。导入测试脚本,在方案(描述测试会话期间发生的事情)中配置好 Vuser 的计算机列 表、运行 Vuser 脚本的列表以及在方案执行期间运行的指定数量的 Vuser 或 Vuser 组。执行方案时, Controller 将该方案中的每个 Vuser 分散到负载生成器,负载生成器是执行 Vuser 脚本,从而使 Vuser 可以模拟实际用户操作的计算机。在运行的同时,还可以用 LoadRunner 的性能监视器来监视方案的执行。最后,Analysis 把在方案执行期间,LoadRunner 纪录下来的不
10、同负载下的应用程序性能,以图和报表显示出来。从而可以方便的分析出应用程序的性能。(2)性能测试数据的准备 通过使用最少的硬件资源,为所有 VUSER 提供一致的、可重复并可度量的负 载,像实际用户一样使用开发的应用程序,这是 Loadrunner 的一大特点及优势。在提供负载时,除了准备一些比较有代表性的数据,还要注意测试脚本的 重用问题。一个是关联,即通过参数化,来实现测试用例的充分利用。另一个是 ip 欺骗因为当运行场景时,虚拟用户使用它们所在的负载生成器的固定的 IP 地址。每个 Load Generator 上(同时)运行大量的虚拟用户,这样就造成了大量的用户使用同一 IP 同时访问一
11、个网站的情况,这种情况和实际运行的情况不符,并且有一些网站会限制同一个 IP 的登陆。为了更加真实的模拟实际情况,LoadRunner 允许运行的虚拟用户使用不同的 IP 访问同一网站,这种技术称为“IP 欺骗”. (3)性能测试执行 在测试计划、测试环境及测试数据准备好以后就可以进行测试。Controller 通过远程代理调度程序启动负载生成器计算机上的应用程序。通过代理 Controller 和负载生成器互相通信。运行方案时,Controller 指示远程代理调度程序启动 LoadRunner 代理。该代理根据从 Controller 接受到的指令来初始化、运行、暂停和停止各个 Vuser
12、。同时,该代理还将各个 Vuaer 的状态数据传回 Controller。 (4)性能测试评估 在应用程序的测试测试结束后,可以对应其各个性能指标来分析系统的可用性。 有许多因素能够影响系统的性能指标,如,测试环境、网络、应用的数据库和中间件的使用及它们之间的关联应用。其中任何一个环节都可能造成整个系统的可用 性。Loadrunner Controller 通过隔离并标识潜在的客户端、网络和服务器瓶颈。监视负载下的网络和服务器资源,检查出现性能延迟的地方:网络或客户端延迟、CPU 性能、I/O 延迟、数据锁定或服务器上的其他问题。在进行 web 应用测试中, LOADRUNNER 提供的性能指
13、标有每秒点击次数吞吐量每秒 HTTP 响应 数、每秒下载页面数每秒连接数。同时。用户通过在 LOARUNNER ANALYSIS 中看到这些性能指标的图或报表,很方便的分析各部分的性能状况。 4.总结 任何软件的测试结果都不是只与应用程序本身有关,特别是性能测试,还与其测试硬件环境、软件环境、测试方法及测试工具有关,因此在进行测试之前、一定要 了解应用程序的使用及运行的约束条件。Loadrunner Controller 通过使用虚拟用户技术来达到并发的目的,这个测试属于黑盒测试,测试人员不需要对程序代码有很深刻的了解。通过模拟真实用户对系统的 访问,可以帮助系统分析员提早发现系统的瓶颈,从而优化各部分的软硬件配置。 参考文献: 张大陆,伟力基于 WEB 应用系统的评测方法和技术计算机工程第 29 卷第四期。陈战华杨斌Client/Server 结构软件的性能测试测试技术 。 啄木鸟部落如何选择性能测试工具 。 中国软件评测中心测试中心性能软件测试的重中之中 。 LOADRUNNER 使用手册。