by:授客
场景设计-制定负载测试计划
步骤1.分析应用程序
你应该对硬件和软件组建,系统配置和典型的使用场景很熟悉。这些应用程序的分析保证你在使用loadrunner进行测试时,创建的测试环境可比较准确的反应应用程序环境和配置。
a) 确定系统组建
画张示意图对你的应用程序架构进行说明。如果要测试的系统是一个大的网络系统的一部分,你应该确定这个网络系统要测试的系统组建。确保示意图包含了所有系统组建,如客户端机器,网络,中间件和服务器。
示例:
以下示意图描述一个多web用户访问的在线银行系统。web用户每次连接到相同数据库进行资金转账和余额查询。 顾客通过web,使用各种浏览器连接到数据库服务器。
b) 描述系统配置
用更详细的信息优化示意图,描述每个系统组建配置。可以从下几个方面进行考虑:
有多少用户连接到系统?
应用程序客户端配置咋样?(硬件,内存,操作系统,软件,开发工具等)
用的是哪种类型的数据库和Web服务器?(软件,数据库类型,操作系统类型,文件服务器等等)
服务器和客户端是怎么通讯的?
前端客户端和后端服务器之间的中间件和应用服务器是什么配置?
通信设备的吞吐量咋样?每个设备每次可以处理多少并发用户?
示例:
以下这张表说明了前端客户端的配置信息
c) 分析使用场景
定义系统的典型使用场景并决定哪些功能是测试重点。考虑哪些用户使用系统,用户的数量,每个用户的常用操作。此外,考虑考虑任何可能会影响系统响应时间的后台负载。
例子:
假设每天早上都有200个员工登录帐号系统并且同样办公网络上有一个恒定后台负载--50个用户执行各种word处理和打印任务。你可以创建一个拥有200个虚拟用户登录银行数据库的场景并测试服务器响应时间。
为了检查后台负载是怎么影响反应时间的,你可以在员工执行文字处理和打印活动的网络上运行模拟场景。
d) 检查任务分布
除了定义一般用户操作,还要检查操作任务的分布。.
例子:
假设银行使用中央数据库来服务来自各个州和时区的客户端。有250个客户端位于两个不同的时区,都连接到同样的Web服务器。有150个在芝加哥,100个在底特律,每个客户端都在早上9点开始他们的业务,但是因为他们在不同时区,任何时刻不应该有多余150个用户登录。你可以分析任务分布来决定数据库活动高峰期,哪些典型活动在高峰期出现。
步骤2.定义测试目标
测试计划应该基于一个清晰定义的测试目标。
a) 决定总体目标
以下表展示了使用lr测试一般应用程序的测试目标。
说明:
1 Measuring end-user response time
检查用户执行业务过程并接收服务器返回的时间要多久。例如,假设你想确认当你系统运行于正常负载条件下,在20秒内响应终端用户操作。
以下图形展现一个负载样例
2 Defining optimal hardware configuration
检查各种系统配置(内存,CPU速度,缓存,适配器,路由器)对性能的影响。 一旦你理解了系统架构并已经测试了应用响应时间,你可以为不同系统配置测试应用响应时间并确定哪种设置可以提供预期的性能水平。
3 Check Reliability
确定系统在重压力或持续工作负载下的稳定性
4 Check Hardware or Software Upgrades
执行“回归”测试(Application regression testing)来比较一个新版硬件或软件和旧版硬件或软件。你可以检查升级是怎么影响反应时间(基线)或者可靠开性。Application regression testing不是测试升级的新特征,反而在于检测新版和旧版的效率和可靠性一样。
5 Evaluating New Products
你可以在新产品生命周期中的计划和设计阶段运行测试来评估产品和系统。例如,你可以基于评估的测试为服务器机器或数据库包选择硬件。
6 identifying Bottlenecks
你可配置lr模拟组件来确认系统瓶颈并决定哪些元素降低性能。例如,文件锁,资源抢占,网络超负荷。使用lr联合网络及机器模拟器工具来创建负载并和测量系统不同点的性能。
7 Measuring system capacity
测量系统容量,并判断超过系统容量的多少,系统仍然可处理并不会引起性能的降低。
b) 量化测试目标
一旦确定了测试的总体目标,你应该通过可测量术语来描述你的测试对象。 为了提供一个测试评估基线,准确定位什么样的组成是可接受及不可接受的测试结果
例如
总体目标:
产品评估:为Web服务器选择硬件。
详细目标:
产品评估:在两个不同服务器,HP和NEC上运行同样的拥有300个虚拟用户的组。当所有的300用户同时浏览Web应用程序时,决定哪种硬件提供一个比较好的反应时间。
c) 决定什么时候测试
负载测试贯穿于产品生命周期。如下表
步骤3.用loadrunner实施测试活动
a) 决定性能测试范围
你可以用LoadRunner来测量系统不同点的反应时间。根据测试目标决定哪些地方需要运行Vusers及哪些虚拟用户需要运行:
l Measuring end-to-end response time
你可以检测一个典型用户通过运行前端GUI虚拟用户来测量反应时间。GUI虚拟用户通过输入提交和接收客户端应用输出来模拟真实用户。可以运行前端GUI虚拟用户来测量整个网络包括终端模拟器或者GUI前端,网络和服务器的反应时间。
2 Measuring network and server response times
你可以在客户机上通过运行虚拟用户(非GUI)测量网络和服务器反应时间,包括GUI前端反应时间和服务器反应时间。Vuser在无用户界面的情况下模拟客户端对服务器的调用。当你从客户端机器上运行许多虚拟用户时,你可以测量负载是怎么影响网络和服务器反应时间的。
3 Measuring GUI response time
你可以通过前两者的相减判断客户端应用接口怎么影响反应时间的。GUI response time = end-to-end - network and server
4 Measuring server response time
你可以测量服务器响应不通过网络的请求要花多长时间。当你在一台直接连接到服务器的机器上运行Vusers,你可以测量服务器性能
5 Measuring middleware-to-server response time
如果你有访问中间件和其API,你可以测量从服务器到中间件的响应时间。你可以用中间件API创建虚拟用户并测量the middleware-server性能。
b) 定义Vuser活动
根据你对Vuser类型,典型任务,和测试目标的分析,创建虚拟Vuser脚本。由于Vusers模拟典型的终端用户操作。例如,模拟在线银行客户端,你应该创建一个Vuser脚本执行典型的银行任务,比如,浏览你经常访问的资金转账和余额查询的页面。
基于你的测试目标你决定那些操作需要测量并为这些操作定义事务。事务测量服务器回应Vusers用户提交操作任务需要多长时间(end-to-end time)。例如,检查银行web服务器提供账户余额响应时间,为这个操作任务在Vuser脚本中定义一个事务。
此外,你可使用rendezvous集合点来模拟高峰期活动。集合点指示多用户同一精确时间里执行操作任务。例如,你可以定义一个集合点来模拟70个用户,同步更新银行帐号信息。
c) 选择虚拟用户Vusers
在你决定用于测试的硬件配置前,判断需要的Vuser的类型和数量。观察典型使用模式结合测试目标来判断要多少Vuser和运行哪种Vuser:
以下是建议:
l 使用一个或几个GUI用户来模拟每种典型用户连接。
2 为每种用户类型运行多用户来生成剩余负载。
例如,假设有5种类型用户。每种执行一个不同的业务操作:
d) 选择测试硬件/软件
软硬件配置应该够强大和够快,以模拟必要数量的Vuser。参考HP安装指南了解详细硬件要求。
为了决定机器数量和正确的配置,考虑以下:
l 建议在独立主机上运行HP lr controller。
每种GUI Vuser需要一个单独的基于windows的机器。多个GUI用户可以运行在一台单独的UNIX机器上。
2 GUI Vuser测试机配置应该尽可能的和实际用户机器相近。
注意:对于一个有许多事务要长时间运行的场景,结果文件要求几M的磁盘空间 。如果没网络文件系统NFS,负载生成器也要求为其临时文件提供几个M的磁盘空间,对于更多关于运行时文件存储的信息,查看运行时文件存储位置。