热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

测试脚本的录制和修正

一、录制脚本测试脚本的录制过程可以参考下面这位仁兄的博客,写的很是详细:http:www.cnblogs.comchengtchp5965656.html二、修正脚本使用

一、录制脚本

  测试脚本的录制过程可以参考下面这位仁兄的博客,写的很是详细:

  http://www.cnblogs.com/chengtch/p/5965656.html

二、修正脚本

  使用VUGen录制好脚本后,还需要对脚本进行调试和修改才能保证脚本的正确性。另外,为了方便Analysis对测试结果得分析,还需要在录制好的脚本中修正一些内容。

  一般来说,对脚本的修正包括:参数化处理,关联,插入事务,增加检查点等。前两者后面学习过程中再做补充,先说后面两点。

1、插入事务

  在LoadRunner中,Analysis应用会针对事务(Transaction)对Response Time进行统计。例如,脚本中有个“查询”操作,为了明确知道“查询”这一操作的响应时间,我们就可以把“查询”这一操作当做一个事务来处理,在开始查询之前和查询结束后插入事务标记,这样LR在运行脚本到开始点时就会计时,直到终止点时结束计时,该事务的运行时间就会在Analysis的结果中体现出来。

  插入事务可通过菜单栏和工具条来插入,也可以直接在脚本中增加代码来实现。LR中标识事务开始和结束的函数是:

lr_start_transaction("写信");
lr_end_transaction("写信");

  需要注意的是事务的名称最好有意义,能够清楚地说明该事务完成的动作。

  通过脚菜单栏和工具条标识事务的操作如下:

   

2、插入集合点

  插入集合点是为了衡量在加重负载的情况下服务器的性能情况。在测试计划中可能要求测试系统能够同时承受1000个人同时提交数据,在LR中,可以在提交数据操作前加入集合点,这样当虚拟用户运行到提交数据的集合点时,LR会检查同时有多少个用户运行到了集合点,如果不到1000人,LR就会命令已经到达集合点的用户等待,直到达到1000人时,LR会命令1000人同时去提交数据。

  可以直接在脚本中插入代码:lr_rendezvous("提交");也可以点击菜单栏的Insert选择插入:

  

3、插入函数

  VuGen中可以使用C语言中比较标准的函数和数据类型,语法和C语言相同。比如控制脚本流程:if(){}else{},for(),while{}......,也会用到一些字符串函数,像:比较两个字符串的strcmp(),拼接两个字符串的strcat()函数,复制字符串的strcpy()函数等。

4、插入Text/Image检查点

  在进行压力测试时,为了验证Web服务器返回的网页是否正确,VuGen允许插入Text/Image检查点,这些检查点验证网页上是否存在指定的Text或Image,还可以测试在比较大的压力测试环境中,被测网站的功能是否保持正确。

  录制过程中,添加检查点的方法是:

  (1)选中需要检查的文本内容;

  (2)单击录制工具条上的“插入文本检查点”的按钮。

  

  

  

如果是在录制完成后添加,首先要切换到TreeView视图,然后从树型菜单中选中需要插入检查的一项,然后单击鼠标右键,选中将检查点插入到该操作的执行前或执行后。

  插入成功后脚本中会出现下面代码:web_find("web_find","What=恭喜",LAST);

5、设置Think-time

  Think Time,一般被称为是思考时间,也可以称作休眠时间,从业务的角度来说,该时间指的是用户在进行操作时,每个请求之前的间隔时间。从自动化测试实现的角度来说,要真实的模拟用户操作,就必须在测试脚本中让各个操作之间等待一段时间。体现在脚本上,就是在脚本的操作之间放置一个Think的函数,使得脚本在执行两操作之间等待一段时间。

  但是,如何才能给定一个合适的Think Time呢?

  其实,思考时间和迭代次数,并发用户数和吞吐量之间存在着一定的关系。这里先给出个计算思考时间的一般方法:

  (1)首先计算出系统的并发用户数;

  (2)统计出系统的平均吞吐量;

  (3)统计出平均每用户发出的请求数量;

  (4)根据公式计算出思考时间。

  这里给出两个公式:

  (1)吞吐量的计算公式:F=VU * R / T,其中F为吞吐量,VU表示虚拟用户个数,R表示每个虚拟用户发出的请求数,T表示性能测试所用的时间;这是在没有遇到性能瓶颈的时候,由于吞吐量与虚拟用户数之间存在一定的联系,所以可以使用该公式来计算系统的吞吐量。

  (2)思考时间的计算公式:R = T / TS

  上面两个公式变形后可以看出,F和VU成正比,和TS成反比。

  最后,设置思考时间只需要在脚本中相应的位置插入代码:lr_think_time(s);  


推荐阅读
  • ASP.NET2.0数据教程之十四:使用FormView的模板
    本文介绍了在ASP.NET 2.0中使用FormView控件来实现自定义的显示外观,与GridView和DetailsView不同,FormView使用模板来呈现,可以实现不规则的外观呈现。同时还介绍了TemplateField的用法和FormView与DetailsView的区别。 ... [详细]
  • 判断编码是否可立即解码的程序及电话号码一致性判断程序
    本文介绍了两个编程题目,一个是判断编码是否可立即解码的程序,另一个是判断电话号码一致性的程序。对于第一个题目,给出一组二进制编码,判断是否存在一个编码是另一个编码的前缀,如果不存在则称为可立即解码的编码。对于第二个题目,给出一些电话号码,判断是否存在一个号码是另一个号码的前缀,如果不存在则说明这些号码是一致的。两个题目的解法类似,都使用了树的数据结构来实现。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 本文介绍了使用PHP实现断点续传乱序合并文件的方法和源码。由于网络原因,文件需要分割成多个部分发送,因此无法按顺序接收。文章中提供了merge2.php的源码,通过使用shuffle函数打乱文件读取顺序,实现了乱序合并文件的功能。同时,还介绍了filesize、glob、unlink、fopen等相关函数的使用。阅读本文可以了解如何使用PHP实现断点续传乱序合并文件的具体步骤。 ... [详细]
  • 后台获取视图对应的字符串
    1.帮助类后台获取视图对应的字符串publicclassViewHelper{将View输出为字符串(注:不会执行对应的ac ... [详细]
  • Day2列表、字典、集合操作详解
    本文详细介绍了列表、字典、集合的操作方法,包括定义列表、访问列表元素、字符串操作、字典操作、集合操作、文件操作、字符编码与转码等内容。内容详实,适合初学者参考。 ... [详细]
  • EzPP 0.2发布,新增YAML布局渲染功能
    EzPP发布了0.2.1版本,新增了YAML布局渲染功能,可以将YAML文件渲染为图片,并且可以复用YAML作为模版,通过传递不同参数生成不同的图片。这个功能可以用于绘制Logo、封面或其他图片,让用户不需要安装或卸载Photoshop。文章还提供了一个入门例子,介绍了使用ezpp的基本渲染方法,以及如何使用canvas、text类元素、自定义字体等。 ... [详细]
  • 全面介绍Windows内存管理机制及C++内存分配实例(四):内存映射文件
    本文旨在全面介绍Windows内存管理机制及C++内存分配实例中的内存映射文件。通过对内存映射文件的使用场合和与虚拟内存的区别进行解析,帮助读者更好地理解操作系统的内存管理机制。同时,本文还提供了相关章节的链接,方便读者深入学习Windows内存管理及C++内存分配实例的其他内容。 ... [详细]
  • Flutter 布局(四) Baseline、FractionallySizedBox、IntrinsicHeight、IntrinsicWidth详解
    本文主要介绍Flutter布局中的Baseline、FractionallySizedBox、IntrinsicHeight、IntrinsicWidth四种控件,详细介绍了其布局 ... [详细]
  • https:github.comdarcyclarkeFront-end-Developer-Interview-QuestionstreemasterChinese#refere ... [详细]
  • javascript二叉树基本功能实现
    都是常用的功能。删除是最复杂的。。test ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • 解决VS写C#项目导入MySQL数据源报错“You have a usable connection already”问题的正确方法
    本文介绍了在VS写C#项目导入MySQL数据源时出现报错“You have a usable connection already”的问题,并给出了正确的解决方法。详细描述了问题的出现情况和报错信息,并提供了解决该问题的步骤和注意事项。 ... [详细]
  • C语言常量与变量的深入理解及其影响
    本文深入讲解了C语言中常量与变量的概念及其深入实质,强调了对常量和变量的理解对于学习指针等后续内容的重要性。详细介绍了常量的分类和特点,以及变量的定义和分类。同时指出了常量和变量在程序中的作用及其对内存空间的影响,类似于const关键字的只读属性。此外,还提及了常量和变量在实际应用中可能出现的问题,如段错误和野指针。 ... [详细]
author-avatar
为徐嘉伟丷默哀
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有