热门标签 | 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);  


推荐阅读
  • t-io 2.0.0发布-法网天眼第一版的回顾和更新说明
    本文回顾了t-io 1.x版本的工程结构和性能数据,并介绍了t-io在码云上的成绩和用户反馈。同时,还提到了@openSeLi同学发布的t-io 30W长连接并发压力测试报告。最后,详细介绍了t-io 2.0.0版本的更新内容,包括更简洁的使用方式和内置的httpsession功能。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了软件测试知识点之数据库压力测试方法小结相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 上图是InnoDB存储引擎的结构。1、缓冲池InnoDB存储引擎是基于磁盘存储的,并将其中的记录按照页的方式进行管理。因此可以看作是基于磁盘的数据库系统。在数据库系统中,由于CPU速度 ... [详细]
  • MySQL数据库锁机制及其应用(数据库锁的概念)
    本文介绍了MySQL数据库锁机制及其应用。数据库锁是计算机协调多个进程或线程并发访问某一资源的机制,在数据库中,数据是一种供许多用户共享的资源,如何保证数据并发访问的一致性和有效性是数据库必须解决的问题。MySQL的锁机制相对简单,不同的存储引擎支持不同的锁机制,主要包括表级锁、行级锁和页面锁。本文详细介绍了MySQL表级锁的锁模式和特点,以及行级锁和页面锁的特点和应用场景。同时还讨论了锁冲突对数据库并发访问性能的影响。 ... [详细]
  • TiDB | TiDB在5A级物流企业核心系统的应用与实践
    TiDB在5A级物流企业核心系统的应用与实践前言一、业务背景科捷物流概况神州金库简介二、现状与挑战神州金库现有技术体系业务挑战应对方案三、TiDB解决方案测试迁移收益问题四、说在最 ... [详细]
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • 后台获取视图对应的字符串
    1.帮助类后台获取视图对应的字符串publicclassViewHelper{将View输出为字符串(注:不会执行对应的ac ... [详细]
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
  • ASP.NET2.0数据教程之十四:使用FormView的模板
    本文介绍了在ASP.NET 2.0中使用FormView控件来实现自定义的显示外观,与GridView和DetailsView不同,FormView使用模板来呈现,可以实现不规则的外观呈现。同时还介绍了TemplateField的用法和FormView与DetailsView的区别。 ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • MySQL语句大全:创建、授权、查询、修改等【MySQL】的使用方法详解
    本文详细介绍了MySQL语句的使用方法,包括创建用户、授权、查询、修改等操作。通过连接MySQL数据库,可以使用命令创建用户,并指定该用户在哪个主机上可以登录。同时,还可以设置用户的登录密码。通过本文,您可以全面了解MySQL语句的使用方法。 ... [详细]
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社区 版权所有