by:授客 QQ1033553122

场景设计-制定负载测试计划

步骤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:

以下是建议:


使用一个或几个GUI用户来模拟每种典型用户连接。


为每种用户类型运行多用户来生成剩余负载。

例如,假设有5种类型用户。每种执行一个不同的业务操作:


d)  


选择测试硬件
/软件

软硬件配置应该够强大和够快,以模拟必要数量的Vuser。参考HP安装指南了解详细硬件要求。

为了决定机器数量和正确的配置,考虑以下:


建议在独立主机上运行HP
lr controller。

每种GUI
Vuser需要一个单独的基于windows的机器。多个GUI用户可以运行在一台单独的UNIX机器上。


GUI Vuser测试机配置应该尽可能的和实际用户机器相近。

注意:对于一个有许多事务要长时间运行的场景,结果文件要求几M的磁盘空间

。如果没网络文件系统NFS,负载生成器也要求为其临时文件提供几个M的磁盘空间,对于更多关于运行时文件存储的信息,查看运行时文件存储位置。

loadrunner 场景设计-制定负载测试计划的更多相关文章

  1. Loadrunner场景设计篇——负载生成器

    1  简介 当执行一个场景时,Controller把场景中的每个用户配到负载生成器(Load generator). 所谓的负载生成器(Load Generator)就是执行Vuser脚本,运行Vus ...

  2. loadrunner 场景设计-手工场景方案(Schedule)设计 Part 2

    loadrunner 场景设计-手工场景方案(Schedule)设计 Part 2 ---------------------------接Part 1------------------------ ...

  3. loadrunner 场景设计-手工场景方案(Schedule)设计 Part 1

    参考:http://blog.sina.com.cn/s/articlelist_5314188213_1_1.html loadrunner 场景设计-手工场景方案(Schedule)设计 Part ...

  4. loadrunner 场景设计-负载生成器管理

    场景设计-负载生成器管理 by:授客 QQ:1033553122 1  简介 当执行一个场景时,Controller把场景中的每个用户配到负载生成器(Load generator). 所谓的负载生成器 ...

  5. 【Loadrunner】初学Loadrunner——场景设计

    在使用Loadrunner的时候,常常需要使用到场景设计.但是怎么设计一个满意的场景?如何开展? 首先可以点击tools > Create Controller Scenario > OK ...

  6. loadrunner 场景设计-学习笔记之性能误区

    场景设计-学习笔记之性能误区 by:授客 QQ:1033553122 场景假设: 每个事务仅包含一次请求,执行10000个并发用户数 性能误区: 每秒并发用户数=每秒向服务器提交请求数 详细解答: 每 ...

  7. loadrunner 场景设计-目标场景设计

    场景设计-目标场景设计 by:授客 QQ:1033553122 A.   概述 Goals Types for Goal-Oriented Scenarios 在以目标为向导的场景中,定义你想实现的测 ...

  8. loadrunner 场景设计-手工场景设计

    场景设计-手工场景设计 by:授客 QQ:1033553122 概述 通过选择需要运行的脚本,分配运行脚本的负载生成器,在脚本中分配Vuser来建立手工场景 手工场景就是自行设置虚拟用户的变化,主要是 ...

  9. loadrunner 场景设计-手工场景设计

    概述 通过选择需要运行的脚本,分配运行脚本的负载生成器,在脚本中分配Vuser来建立手工场景 手工场景就是自行设置虚拟用户的变化,主页是通过设计用户的添加和减少过程,来模拟真实的用户请求模型,完成负载 ...

随机推荐

  1. [CocoaPods]使用Gemfile

    RubyGems + Bundler 对于许多人来说,CocoaPods是编程项目中依赖管理的第一个介绍.CocoaPods的很多想法来自类似的项目(例如RubyGems,Bundler,npm和Gr ...

  2. VRRP&HSRP

    HSRP 活跃路由器和备用路由器都会向组播地址 224.0.0.2  UDP 1985  端口发送hello消息. VRRP组中有一台主用路由器(Master),以及一台或多台备用路由器(Backup ...

  3. Java程序员如何运用所掌握的技术构建一个完整的业务架构

    1.通用架构概述 创业之初,我们往往会为了快速迭代出产品,而选择最简单的技术架构,比如LAMP架构,SSH三层架构.这些架构可以适应初期业务的快速发展,但是,随着业务变得越来越复杂,我们会发现这些架构 ...

  4. ES6中的proxy

    1 概述 Proxy 可以理解成,在目标对象之前架设一层“拦截”,外界对该对象的访问,都必须先通过这层拦截,因此提供了一种机制,可以对外界的访问进行过滤和改写. Proxy 这个词的原意是代理,用在这 ...

  5. JAVA基础 <一>

    java基础的学习要领,多写多写. 学习方法很简单,了解  到  理解  到 熟悉  到 精通 先讲变量吧: public static void main(String[] args) { int ...

  6. 【Shell实战】批量在多台服务器上执行命令

    功能说明:批量在多台服务器上执行命令 #!/bin/bash # ========================================== # 功能:批量在多台服务器上执行命令 # 方法: ...

  7. 完整的一次 HTTP 请求响应过程(一)

    因特网无疑是人类有史以来最伟大的设计,它互联了全球数亿台计算机.通讯设备,即便位于地球两端的用户也可在顷刻间完成通讯. 可以说『协议』是支撑这么一个庞大而复杂的系统有条不紊运作的核心,而所谓『协议』就 ...

  8. Spring的第三天AOP之xml版

    Spring的第三天AOP之xml版 ssm框架 spring  AOP介绍 AOP(Aspect Oriented Programming),面向切面编程.它出来的目的并不是去取代oop,而是对它的 ...

  9. Failed to convert value of type 'java.lang.String' to required type 'java.time.LocalDate';

    springboot jdbc查询使用LocalDate报:Failed to convert value of type 'java.lang.String' to required type 'j ...

  10. [TJOI 2018]智力竞赛

    Description 题库链接 给出一张 \(m\) 个点的有向图.问可重最小路径覆盖是否 \(\leq n+1\) .若不,求最多用 \(n+1\) 条路径去覆盖,最大化未覆盖点点权最小值. \( ...