5 开发测试脚本
开发测试脚本需要几个步骤,可以用下图来表示
创建用户脚本需要用到 VuGen。提示:运行VuGen 最好在1024*768 的分辨率下,否
则有些工具栏会看不到。
Testing script(测试脚本),一般指的是一个特定测试的一系列指令,这些指令可以被自动化测试工具执行。 为了提高测试脚本的可维护性和可复用性,必须在执行测试脚本之前对它们进行构建。或许会发现这样的情况,即有的操作将出现在几个测试过程中。因此,应有目的地确定这些操作的目标,这样就可以复用它们的实施。 测试脚本是自动执行测试过程(或部分测试过程)的计算机可读指令。测试脚本可以被创建(记录)或使用测试自动化工具自动生成,或用编程语言编程来完成,也可综合前三种方法来完成。
测试脚本语言(test scripting language)是脚本语言的一种,准确地讲是脚本语言在测试领域地一个分支,是自动化软件测试设计的基础。要理解测试脚本语言就不能不对脚本语言进行一些了解。
脚本语言(scripting language) 就是在执行时以解释(interpreting) 为主的编程语言,比如常见的perl,python,php,tcl,guile,ruby以及UNIX系统的各种shell都是脚本语言,它的执行效率 比不上编译后再执行的程序,如以C, C++, Java, Pascal等语言编写的程序。
脚 本语言应用到测试领域就可以称之为测试脚本语言,以上提到的脚本语言都可以作为测试脚本语言来使用,特别是tcl语言更是被业界称为事实上的测试脚本语言 标准。随着软件测
试的发展,各种测试工具也相继推出,为了保护知识产权或者说是保护商业秘密,这些商业化的软件大多使用自己的测试脚本语言,比如MI的 TSL语言等。
5.1 录制基本的用户脚本
启动 Visual User Generator 后,通过菜单
新建一个用户脚本,选择系统通讯的协议。
这里我们需要测试的是 Web 应用,所以我们需要选择Web(HTTP/HTML)协议,确定后,
进入主窗体。
通过菜单
来启动录制脚本的命令。
◆在 URL 中添入要测试的Web 站点地址,这里我们以著名的Duwamish 应用为例子
来进行录制。
◆选择要把录制的脚本放到哪一个部分,默认情况下是“Action1”。
这里简单说明一下:VuGen 中的脚本分为三部分:vuser_init、vuser_end 和Action。其
中vuser_init 和vuser_end 都只能存在一个,不能再分割,而Action 还可以分成无数多个部
分(通过点击New 按钮,新建ActionXXX)。
在录制需要登陆的系统时,我们把登陆部分放到vuser_init 中,把登陆后的操作部分放
到Action 中,把注销关闭登陆部分放到vuser_end 中。(如果需要在登陆操作设集合点,那
么登陆操作也要放到Action 中,因为vuser_init 中不能添加集合点)在其他情况下,我们只
要把操作部分放到Action 中即可。
注意:在重复执行测试脚本时,vuser_init 和vuser_end 中的内容只会执行一次,重复
执行的只是Action 中的部分。
◆“Record the application startup”默认情况下是选中的,说明应用程序一旦启动,
VuGen 就会开始录制脚本;如果没有选中,应用程序启动后,VuGen 出现以下对
话框,并且暂时不会开始录制脚本,用户操作应用程序到需要录制的地方,按下
“Record”按钮,VuGen 才开始录制。
◆点 “ Options ” 按钮,进入录制的设置窗体, 这里一般情况下不需要改动。
Recording 标签页:默认情况下选择“HTML-based Script”,说明脚本中采用
HTML 页面的形式来表示,这种方式的Script 脚本容易维护,容易理解,推荐
这种方式录制(微软在ACT 中附带的Duwamish7 例子采用的就是这种方式)。
“URL-based Script”说明脚本中的表示采用基于URL 的方式,WAS 和ACT
中的录制方式就是这种,这种方式看上去比较乱。
选择哪种方式录制,有以下参考原则:
1 基于浏览器的应用程序推荐使用HTML-based Script
2 不是基于浏览器的应用程序推荐使用 URL-based Script。
3 如果基于浏览器的应用程序中包含了 JavaScript 并且该脚本向服务器产生
了请求,比如DataGrid 的分页按钮等,也要使用URL-based 方式录制
4 基于浏览器的应用程序中使用了 HTTPS 安全协议,使用URL-based 方式
录制
Advanced 标签页:取默认情况即可。下面的图简单的说明了各项的含义。
Correlation 标签页:这里的内容比较重要,需要定制,主要是为了在录制过程
中设置自动关联。这里资料比较少,现在还没有进行深入的研究。
由于内容比较多,就不再一一介绍各项的含义了。
根据自己的需求,选择适当的设置,然后点“OK”后,VuGen 开始录制脚本。
在录制过程中,不要使用浏览器的“后退”功能,LoadRunner 支持不太好!
录制过程中,在屏幕上会有一个工具条出现。
下面我们简单介绍一下各个按钮的功能。
录制的过程和 WinRunner 有些类似,不再多介绍。
录制完成后,按下“结束录制”按钮,VuGen 自动生成用户脚本,退出录制过程。脚
本参考下页的图。
5.2 完善测试脚本
当录制完一个基本的用户脚本后,在正式使用前我们还需要完善测试脚本,增强脚本的
灵活性。一般情况下,我们通过以下方法来完善测试脚本。
5.2.1 插入事务
事务(Transaction):为了衡量服务器的性能,我们需要定义事务。比如:我们在脚本
中有一个数据查询操作,为了衡量服务器执行查询操作的性能,我们把这个操作定义为一个
事务,这样在运行测试脚本时,LoadRunner 运行到该事务的开始点时,LoadRunner 就会开
始计时,直到运行到该事务的结束点,计时结束。这个事务的运行时间在结果中会有反映。
插入事务操作可以在录制过程中进行,也可以在录制结束后进行。LoadRunner 运行在
脚本中插入不限数量的事务。
具体的操作方法如下:在需要定义事务的操作前面,通过菜单或者工具栏插入。
出现以下对话框:
输入该事务的名称。注意:事务的名称最好要有意义,能够清楚的说明该事务完成的动
作。
插入事务的开始点后,下面需要在需要定义事务的操作后面插入事务的“结束点”。同
样可以通过菜单或者工具栏插入。
出现以下对话框:
默认情况下,事务的名称列出最近的一个事务名称。一般情况下,事务名称不用修改。
事务的状态默认情况下是 LR_AUTO。一般情况下,我们也不需要修改,除非在手工编
写代码时,有可能需要手动设置事务的状态。
脚本中事务的代码如下:
5.2.2 插入集合点
插入集合点是为了衡量在加重负载的情况下服务器的性能情况。在测试计划中,可能会
要求系统能够承受1000 人同时提交数据,在LoadRunner 中可以通过在提交数据操作前面加
入集合点,这样当虚拟用户运行到提交数据的集合点时,LoadRunner 就会检查同时有多少
用户运行到集合点,如果不到1000 人,LoadRunner 就会命令已经到集合点的用户在此等待,
当在集合点等待的用户达到1000 人时,LoadRunner 命令1000 人同时去提交数据,从而达
到测试计划中的需求。
注意:集合点经常和事务结合起来使用。集合点只能插入到Action 部分,vuser_init
和vuser_end 中不能插入集合点。
具体的操作方法如下:在需要插入集合点的前面,通过菜单或者工具栏操作
出现对话框
输入该集合点的名称。注意:集合点的名称最好要有意义,能够清楚的说明该集合点完
成的动作。
脚本中集合点的代码如下:
5.2.3 插入注释
注释的作用就不多说了,不过插入注释最好是在录制过程中。
具体的操作方法如下:在需要插入注释的前面,通过菜单或者工具栏操作
出现对话框
脚本中注释的代码如下:
5.2.4 参数化输入
如果用户在录制脚本过程中,填写提交了一些数据,比如要增加数据库记录。这些操作
都被记录到了脚本中。当多个虚拟用户运行脚本时,都会提交相同的记录,这样不符合实际
的运行情况,而且有可能引起冲突。为了更加真实的模拟实际环境,需要各种各样的输入。
参数化输入是一种不错的方法。
用参数表示用户的脚本有两个优点:
① 可以使脚本的长度变短。
② 可以使用不同的数值来测试你的脚本。例如,如果你企图搜索不同名称的图书,你
仅仅需要写提交函数一次。在回放的过程中,你可以使用不同的参数值,而不只搜索一
个特定名称的值。
参数化包含以下两项任务:
① 在脚本中用参数取代常量值。
② 设置参数的属性以及数据源。
参数化仅可以用于一个函数中的参量。你不能用参数表示非函数参数的字符串。
另外,不是所有的函数都可以参数化的。
参数化输入的讲解,我们采用一个例子的方式来进行。
假如有以上的一个提交数据的窗体,我们想参数化高亮显示的部分(31)。操作方法很
简单,我们只要选中“31”,然后点鼠标右键strcmp比较数组
选择“Replace with a parameter. ”,出现以下窗口:
下面我们重点介绍一下参数的类型。
⏹DateTime:很简单,在需要输入日期/时间的地方,可以用DateTime 类型来替代。
其属性设置也很简单,选择一种格式即可。当然也可以定制格式。
⏹Group Name:暂时不知道何处能用到,但设置比较简单。在实际运行中,LoadRunner
使用该虚拟用户所在的Vuser Group 来代替。但是在VuGen 中运行时,Group Name
将会是None
⏹Load Generator Name:在实际运行中,LoadRunner 使用该虚拟用户所在Load
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论