LoadRunner性能测试系统学习教程:脚本编写之Block(块)技术与参数化(3)

上期讲到LoadRunner性能测试脚本编写检查函数,这期我们来讲讲Block(块)技术和参数化。

Block(块)技术

在使用LoadRunner时经常遇到这样一个问题,如果对不同的事务进行不同次数的循环该怎么处理?默认情况下LoadRunner对所有的事务都是统一执行的,即虽然有多个事务,但它们被执行的循环次数都是一样的,那么LoadRunner如何在一个脚本中实现不同事务不同次数的循环或不同百分比的循环呢?  

案例:假设在一个脚本中,想实现注册执行3次,登录执行1次,查询执行2次,怎么办?录3个脚本?每个事务分别在脚本中复制N次?这样是可以解决问题,但不是最好的解决办法,LoadRunner提供了对业务流程的处理方法,即Block(块)技术。  

首先,借用LoadRunner自带的订票系统,录制好这三个脚本,录制结束后,脚本如图所示,包含三个业务:注册,登录和查询。接着,对脚本中的三个业务的迭代次数进行设置,这里使用到的是Block(块)技术。

1.进入菜单Vuser→Run-timeSettings,弹出Run-timeSettings对话框,选择General→RunLogic选项卡.

2.选择Run,插入一个Block块,如图所示。  

3.选择Block0,点击InsertAction按钮,弹出SelectActions对话框,如图所示,选中要添加的Action,点击OK按钮即可。

4.重复以上操作,再新建两个Block块,分别为Block1和Block2,并为这两个块插入对应的Action。

5.将Block外面的Action删除,最后得到如图所示的Block块。

6.设置Block properties。这里有两种选择:Sequential和Random。如果选择Sequential,则可以在下面的Iterations中直接填入数值,那么Block中的Action都会按输入的次数执行。如果选择Random,下面还可以设置Block内各Action执行的百分比。

按照前面的案例,只需要设置3个Block,每个Block中分别插入一个Action,设置执行次数分别为3、1、2即可,设置完成后。

整修Block(块)的设置完成,脚本将按期望的业务模型运行。

值得注意的一点就是业务迭代的总次数=该Block迭代次数×Number of Iterations,如图中Block2中的Search迭代次数为2×1=2次,最终Search这个业务只迭代了2次。

参数化技术

所谓脚本参数化,就是针对脚本中的某些常量,使用参数来取代。参数中包含很多数据源,数据源可以是一个文本文件也可以是数据库。当不同的Vuser在执行相同的脚本时,分别调用参数文件中的数据代替这些常量,从而达到模拟多用户真实使用的目的。

参数化的过程体现了数据驱动的思想,即将测试脚本与测试数据进行分离的思想。脚本体现测试流程,数据体现测试案例。

哪些情况参数化

工作中为什么要进行参数化呢?  

1.借助参数化可以减小脚本的数量,如果不进行参数化为了达到目标可能需要拷贝并修改很多个脚本。  

2.使业务更接近真实的客户业务,每个虚拟用户使用不同参数值来模拟,这样可以更好地接近客户的实际情况。


在实际工作中一般以下情况需要进行参数化:  

日期时间 

如这类业务,需要订一张机票,那么订票的日期一定是当前日期之后,不可能是当前时间之前的日期,如当前系统时间为2012年8月20日,那么订票时一定需要使用20日后期的日期(如订25日的机票),但是如果到25日之后再来回放该脚本时,还是发现脚本无法正常使用,所以对于这类情况需要参数化。  

唯一性约束  

唯一性约束是指在数据库中对于主键必须是唯一的,如果一直使用相同数据提交业务,那么业务将无法完成。如注册业务,就不能使用相同的数据就行注册,因为数据库中会把注册用户的ID做为主键,这样在测试过程中就必须进行参数化,否则业务无法成功。  

数据约束  

数据约束是指在测试过程中要求提交的业务数据必须是每次都不同,如果提交业务中的数据一致,那么业务将失败。例如银行业务,一些银行业务是以报文的方式发送的,在发送报头时,后面一般会接一个6位的动态码,那么这个动态码就必须每次都不一样,如果写成一样,那么银行交易业务将会失败,所以对于这类数据必须进行参数化。  

缓存数据约束

在谈缓存数据约束之前,必须先了解数据库查询的过程,数据库在查询时首先使用查询条件在数据库进行查询,查询结束后,系统需要将查询到的结果显示在页面中,那么显示时需要先将查询到的结果从硬盘中读取之出,读取后将数据从硬盘读到内存,再从内存读到缓存,最后将缓存中的数据发送到处理器中进行处理。


但是有一种特殊情况,如果每次使用的查询条件一致时,数据库中查询到的结果就是一致的,那么需要处理的数据直接已经存储在缓存中,这样系统就不需要从硬盘将数据读到缓存,而直接将缓存中的数据传输到处理器中进行处理,这样就节约了从硬盘读到数据到缓存中的时间,而整个查询过程中时间消耗最多的恰好是从硬盘到缓存的时间,所以这样测试出来的时间不是真实的时间,这些就出现缓存数据约束,所以这种情况也需要进行参数化。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 200,527评论 5 470
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,314评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 147,535评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,006评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,961评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,220评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,664评论 3 392
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,351评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,481评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,397评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,443评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,123评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,713评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,801评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,010评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,494评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,075评论 2 341