loadrunner 场景设计-设计与实践
场景设计-设计与实践
by:授客 QQ:1033553122
以lr 11.0 自带Web Tours为例,进行以下测试
说明:以下测试仅供演示,学习设计思路
A、确定系统组件
简单B/S架构:Client Browser ---> WebServer
B、系统配置
服务器配置
内存:8.00G
CPU:3.20 GHZ
操作系统:Win7 64未
负载生成器及Controller所在主机配置:
内存:8.00G
CPU:3.20 GHZ
操作系统:Win7 64未
浏览器:IE8
C、分析使用场景
场景一:登录
场景二:订票
D、任务分布
略
说明:任务分布主要是基于时间的考虑,当然也可能是地区之类的,如果是基于时间即高峰期,则,可以通过场景中的持续时间设置,选择运行一段时间来模拟
E、目标
1.测试响应时间
2.测试系统容量
F、量化测试目标
1.保证响应时间正常(8秒)的情况下,并发登录的最大用户数
2.不保证响应时间正常,保证系统能继续处理的并发登录最大用户数
3.保证响应时间正常的情况下(各操作页面的平均响应时间8秒),并发订票的最大用户数
4.保证响应时间正常(8秒)的情况下,一部分人在查看home首页,一部分人在浏览航班,比例为2:7,最大并发数
附:关于响应时间的2-5-8原则说明
2-5-8原则,简单说:当用户能够在2秒以内得到响应时,会感觉系统的响应很快;当用户在2-5秒之间得到响应时,会赶紧系统的响应速度还可以;当用户在5-8秒以内得到响应时,会赶紧系统的速度很慢,但是还可以接受;而当用户在超过8秒后仍然无法得到响应时,会感觉系统糟糕透了,或者认为系统已经失去响应。
G、Action和事务设计
设计思想:代码结构化,测试对象独立化、最小化,以下抛砖引玉~~
action设计
1、
关于登录
登录的前提是先打开网站首页,所以,对于我这类菜鸟来说,会有个问题:打开首页这个过程要放到哪里呢?
解答:
1)
和登录分开,为其单独创建一个action
好处:灵活--要运行它的时候,通过运行时设置,把action添加进来即可,反之,去除即可。同时还以为它设置集合点,单独测试它的并发访问
不足:如果要进行多次迭代,比如测试持续登录,那么如果添加了访问站点首页的action,那么该action也会进行多次迭代,如果去掉访问首页的action,则没意义,因为登录前肯定要访问首页
2)
和登录分开,放到vuser_init
action
好处:解决了第一点中的“不足”
不足:不灵活,不管脚本迭代运行多少次,仅运行一次,而且不能设置集合点,试想,假如我要测试对首页的持续访问,或者是对首页的并发访问,那岂不是还得把代码拷出来,再折腾?
3)
和登录一起,放到自己创建的Login
action
好处:似乎可以减少函数切换带来的消耗?
不足:不灵活,同第2点一样,假如要单独对它进行持续访问测试,那也要单独把代码拷贝出来,再折腾
所以,综合,得根据具体情况在方案1和方案2之间选择
2、
关于订票
订票,要完成订票这个过程,必须要执行一系列的操作:
步骤1.点击Flights,打开搜索航班页面(open_search_fIights_page)
步骤2.填写搜索条件,点击continue,显示搜索结果(show_search_results)
步骤3.选择航班,点击continue,打开支付页面(open_payment_page)
步骤4.输入金额信息,点击cotinue,显示支付结果页面(pay_for_reservation)
对于我这类菜鸟来说,会有个问题:这些步骤要放在同一个action中,还是为每个步骤单独设置一个action?
很遗憾,关于这个问题似乎没有统一的标准,对于这类前后联系比较紧密,为执行一次完整业务必须执行的一组操作,个人比较赞成把它们都放在同一个action里面。
以下为最终的action设计
3、
事务设计
1)
把访问首页,登录,订票分别成一个事务
2)
把订票中的每个操作步骤分别做成一个子事务
备注:事务可以添加在录制时,单击工具条上的添加按钮进行添加,也可以在录制完成后添加,问题:录制完后都是代码,要是不知道哪些代码对应哪个步骤的咋办??
方法1.tree视图,可以查看单个操作步骤(url)对应的缩略图
方法2.选择Tasks视图
->Enhancements ->Transactions,可以显示不同步骤的缩略图
可将光标定位在缩略图上,点击插入前后插入事务,如下图,还可拖动“缩放”事务包含步骤
方法3.针对某个action中的单一步骤,也可以在录制时,操作之前添加注释
=================================华丽分割线=================================
1.脚本录制->优化
~略
2.实施负载
1)选择手工场景下进行的测试
测试1.
保证响应时间正常的情况下,并发登录的最大用户数
不保证响应时间正常,保证系统能继续处理的并发登录最大用户数
运行时设置-运行逻辑设置
其它设置~略
方案设置
脚本中的设置集合点
运行脚本
当设置的并发用户数为140时,并发登录平均事务响应时间为3.034秒,远远小8秒
但是开始出现事务错误,如下
也就是说,这里仅得到了保证平均响应时间正常情况下能容纳的最大用户数(估计是被测试主机和服务器在同一个局域网中,网络急速,所以无法不保证响应时间正常情况下的最大用户数,这里仅为演示如何进行场景测试,不要纠结这些
测试2.
保证响应时间正常的情况下,并发订票的最大用户数
运行时设置-运行逻辑设置
其它设置~略
集合点设置,如下,同时注释掉登录代码中的添加的集合点、或者禁用
运行脚本
当设置的并发用户数为85时,平均“订票”事务平均响应时间为8.007s,其中子事务,打开搜索页面为4.994秒
这里做了个对比实验,把集合点设置在第二个子事务即show_search_results之前,其它设置不变,运行脚本,结果如下
结论:根据实际情况,或者性能调优,合理的设置集合点,集合点位置不一样,看到的数据就不一样,因为代码是顺序运行的,vuser仅在集合点那边达到最大并发值,好比赛跑,起点(集合点)都一样,起点过后就有跑得快,跑得慢的,并不是一直都向开始那样,所有用户每时每刻都在同一条条线上。
测试3.
保证响应时间正常的情况下,部分人在浏览航班,部分在查看home首页
这里做这个测试主要是演示如何模拟这种并发的业务的测试
做法:
1.场景中添加两份相同的脚本(复制已经录制好的脚本来实现相同的两份),为其设置不同的用户数,好比下图
2.为每个脚本中要实行并发操作的事务前添加名字相同的集合点,并设置所有用户到达集合点才释放用户
脚本2中
脚本1中
3.为每个脚本进行运行时设置
第一个脚本的运行时设置
第二个脚本的运行时设置
注意:如图,每次在场景中通过下拉按钮重新添加脚本都会导致脚本的运行时设置失效
运行脚本
如图,当用户数为81时,平均事务响应时间如下,于可以接受范围
但是当用户数达到90的时候,服务器直接奔溃了
是否真的可以这样跨脚本并发运行vuser?
结果分析-Running Vusers->右键->选则Down Drill,如图,选择Group Name名分组
点击确定出现如下图,
如上图,两个脚本都同一个点开始运行
2)选择目标场景下进行的测试
略~感觉和手工场景差不多
loadrunner 场景设计-设计与实践的更多相关文章
- loadrunner 场景设计-手工场景方案(Schedule)设计 Part 2
loadrunner 场景设计-手工场景方案(Schedule)设计 Part 2 ---------------------------接Part 1------------------------ ...
- loadrunner 场景设计-手工场景方案(Schedule)设计 Part 1
参考:http://blog.sina.com.cn/s/articlelist_5314188213_1_1.html loadrunner 场景设计-手工场景方案(Schedule)设计 Part ...
- RESTful接口设计原则/最佳实践(学习笔记)
RESTful接口设计原则/最佳实践(学习笔记) 原文地址:http://www.vinaysahni.com/best-practices-for-a-pragmatic-restful-api 1 ...
- Vue项目架构设计与工程化实践
摘自Berwin<Vue项目架构设计与工程化实践>github.com/berwin/Blog/issues/14 1.Vue依赖套件 vuex:项目复杂后,用vuex来管理状态 elem ...
- 微观SOA:服务设计原则及其实践方式
大 量互联网公司都在拥抱SOA和服务化,但业界对SOA的很多讨论都比较偏向高大上.本文试图从稍微不同的角度,以相对接地气的方式来讨论SOA, 集中讨论SOA在微观实践层面中的缘起.本质和具体操作方式, ...
- Prometheus Metrics 设计的最佳实践和应用实例,看这篇够了!
Prometheus 是一个开源的监控解决方案,部署简单易使用,难点在于如何设计符合特定需求的 Metrics 去全面高效地反映系统实时状态,以助力故障问题的发现与定位.本文即基于最佳实践的 Metr ...
- Pipeline流水线设计的最佳实践
谈到到DevOps,持续交付流水线是绕不开的一个话题,相对于其他实践,通过流水线来实现快速高质量的交付价值是相对能快速见效的,特别对于开发测试人员,能够获得实实在在的收益.很多文章介绍流水线,不管是j ...
- 基于 Angularjs&Node.js 云编辑器架构设计及开发实践
基于 Angularjs&Node.js 云编辑器架构设计及开发实践 一.产品背景 二.总体架构 1. 前端架构 a.前端层次 b.核心基础模块设计 c.业务模块设计 2. Node.js端设 ...
- atitit. 日志系统的原则and设计and最佳实践(1)-----原理理论总结.
atitit. 日志系统的原则and设计and最佳实践总结. 1. 日志系统是一种不可或缺的单元测试,跟踪调试工具 1 2. 日志系统框架通常应当包括如下基本特性 1 1. 所输出的日志拥有自己的分类 ...
随机推荐
- Linux下安装mysql5.7
Linux下安装mysql5.7 首先准备好mysql5.7.17的安装包,安装包放在 /data/software 目录下 进入到 /usr/local 目录下,解压mysql安装包 命令: ...
- 关于No mapping found for HTTP request with URI...
当你看到这篇博客,说明你已经像我一样快疯了!但是还好..找到了!!! 网上的那些东西真心看了更闹心,因为还没解决... 原因一.访问路径确实错了,导致Dispatcher找不到给你传达的地方,修改下领 ...
- [视频]K8飞刀 Google黑客功能教程
[视频]K8飞刀 Google黑客功能教程 链接:https://pan.baidu.com/s/1kbK5jNH8ZaddUEeQ9IwTaw 提取码:lwl6
- oracle无法启动asm实例记录
首先查看asm进程ps aux|grep asmasm进程没起进行下面操作su - gridsrvctl start asmexit查看ora进程ps aux|grep oraora进程没起进行下面操 ...
- RC1015 cannot open include file 'atlres.h'
fatal error RC1015: cannot open include file 'atlres.h' 问题:此问题是由于rc文件没有找到 atlres.h导致的 (原因不详) 解决:工程 ...
- Django+JWT实现Token认证
对外提供API不用django rest framework(DRF)就是旁门左道吗? 基于Token的鉴权机制越来越多的用在了项目中,尤其是对于纯后端只对外提供API没有web页面的项目,例如我们通 ...
- python3爬虫——下载unsplash美图到本地
最近发现一个网站www.unsplash.com ( 没有广告费哈,纯粹觉得不错 ),网页做得很美观,上面也都是一些免费的摄影照片,觉得很好看,就决定利用蹩脚的技能写个爬虫下载图片. 先随意感受一下这 ...
- 实现text-detection-ctpn一路的坎坎坷坷
小编在学习文字检测,因为作者提供的caffe实现没有训练代码(不过训练代码可以参考faster-rcnn的训练代码),所以我打算先使用tensorflow实现,主要是复现前辈的代码,主要是对文字检测模 ...
- 从前端角度看ajax如何保护接口的安全性
一.前言 在web中,使用Ajax调用API,撇开跨域不讲,怎么做安全验证,防止别的网站调用呢?假设没有做安全保障,任何用户都可以直接访问接口,这回暴露出极大的安全隐患. 二.后端怎么做? 1.一些接 ...
- js-ES6学习笔记-const命令
1.const声明一个只读的常量.一旦声明,常量的值就不能改变. 2.const声明的变量不得改变值,这意味着,const一旦声明变量,就必须立即初始化,不能留到以后赋值. 3.const的作用域与l ...