loadrunner笔记(二):飞机订票系统--客户信息注册

(一)  几个重要概念说明

  1. 集合点:同步虚拟用户,以便同一时间执行任务。
  2. 事务:事务是指服务器响应用户请求所用的时间,当然它可以衡量某个操作,如登录所需要的时间,也可以衡量一系列的操作所用的时间,如从登录开始到完成一张完整的订单。一个完整的事务是由事务开始、一个或多个业务操作/任务、事务结束三部分构成。
  3. 检查点:检查点是在回放脚本期间检查特定的文本字符串或者图片等内容,从而验证服务器响应内容的正确性。检查点可以理解为检查实际结果是否与预期结果一致。(其实就是简单的检查下功能的正确性,因为得考虑高负载情况下功能不稳定的问题)
  4. 思考时间:用户在执行2个连续操作期间等待的时间称为思考时间。loandrunner 在录制脚本时,虚拟用户产生器(VuGen)将录制实际的停留等待时间并将该时间插入到脚本,脚本中的lr_think_time()函数就是思考时间。

(二)  飞机订票系统安装

loadrunner 12.55不会自动安装飞机订票系统,要自己手动安装。

https://marketplace.microfocus.com/appdelivery/content/web-tours-sample-application

上面这个地址下载:(没账号的话要先注册一个账号)

https://pan.baidu.com/s/1lG7SyP9mwEKNfbZqC61WQA 百度网盘下载地址

下载并解压后,可以看到这2个文件

1、 运行上面的strawberry-perl-5.10.1.0.msi 文件(我是安装这个之前先解压了WebTours.zip文件,这个文件解压与否应该是不影响安装的,影响的话就先解压WebTours.zip文件再去安装)

2、 解压WebTours.zip文件,然后执行下面的文件启动服务(StartServer.bat)

3、 在浏览器输入http://127.0.0.1:1080/WebTours/就可以访问了

(三)  飞机订票系统---客户信息注册(正式录制、修改脚本前的一些说明)

1、      创建一个新的脚本。(文件--新建脚本和解决方案)

vuser_int   Action   vuser_end,这三个文件应该依次是初始化(vuser_int)、测试(Action)、结束(vuser_end),例如:打开网页(初始化部分)、注册功能测试(测试部分)、关闭网页(结束部分),当然,我们也可以将脚本全部写在Action中。(但是有多个Action情况下,我们可以只写一遍初始化和结束部分的代码)

2、      录制脚本

3、      这边貌似不管怎么配置都会弹出一个无Internet的提示(一般来说确定有网,浏览器却打不开网页,可能的原因之一是代理服务器设置的问题,这边不太了解loadrunner录制时是直接用本地的网络,还是自己有个代理服务器(运行时设置有个代理服务器的选项,不过设置成不用代理也没什么用)),暂时的想法是只要网页能正常打开、脚本能正常录制就行了,所以我直接选择不再检查Internet访问了。

4、      (帮助文档是这么说明,不过暂时看不出什么区别)如果应用程序使用SSL连接(即协议是https的),需要在录制选项的“网络-映射和筛选”的端口映射中配置正确的SSL版本。这部分先略过了,以后在研究,先用HP的飞机订票软件学习下(这个是HPPT协议的,暂时用不到这个)。

(三)  飞机订票系统---客户信息注册(开始录制脚本、修改脚本)

(已经点击第二步的【开始录制】)开始录制客户信息注册的脚本

            注册成功后

录制完成的初始脚本:(注释部分是我加上的,这里说下录制的时候录制选项有2种模式,一种是下面这种简略的,还有一种是比较详细的(录制选项中可以设置))

 1 Action()
 2 {
 3     /*加载指定url*/
 4     web_url("WebTours", 
 5         "URL=http://127.0.0.1:1080/WebTours/", 
 6         "Resource=0", 
 7         "RecContentType=text/html", 
 8         "Referer=", 
 9         "Snapshot=t8.inf", 
10         "Mode=HTML", 
11         LAST);
12     /*点击相应的链接*,C语言中 ; 表示语句的结束,就像我们用句号。来表示结束一样/
13     web_link("sign up now", 
14         "Text=sign up now", 
15         "Snapshot=t9.inf", 
16         LAST);
17     /*思考时间(停留时间),这次注册过程中,这个没什么用,可以去掉*/
18     lr_think_time(44);
19     
20     /*提交表单*/
21     web_submit_form("login.pl", 
22         "Snapshot=t10.inf", 
23         ITEMDATA, 
24         "Name=username", "Value=lai", ENDITEM, 
25         "Name=password", "Value=123", ENDITEM, 
26         "Name=passwordConfirm", "Value=123", ENDITEM, 
27         "Name=firstName", "Value=lai", ENDITEM, 
28         "Name=lastName", "Value=quanhua", ENDITEM, 
29         "Name=address1", "Value=贝贝村", ENDITEM, 
30         "Name=address2", "Value=51000", ENDITEM, 
31         "Name=register.x", "Value=43", ENDITEM, 
32         "Name=register.y", "Value=9", ENDITEM, 
33         LAST);
34 
35     return 0;
36 }

接下来,需要在脚本中

1、设置集合点(同时打开注册页面进行注册)

2、插入事务开始、事务结束

3、设置检查点(检查注册是否成功)

4、参数化注册信息

集合和事务,用工具插入,也可以直接在需要的地方敲上相应的代码。(或者直接鼠标右键-插入)

参数化

插入检查点的方式,按之前的版本,录制过程或快照 --- HTTP数据页/页面视图都可以插入检查点才对,不过目前这个选项是灰色的(不能点击)。看了下帮助文档,12.55的版本中,web_find()函数已经弃用,不知道是不是这个原因导致了添加文本检查点选项是灰色的

我们的目的只是简单的检查下功能的正确性,这里改用web_reg_find()函数了:web_reg_find(Text="",Search="",LAST),简单的说下这2个参数的意思,text指要搜索的文本字符串,search指搜索范围(默认body,HTML代码的BODY 部分),详细可以看帮助文档。在编辑器里输入 web_reg_find(),然后按F1就行了。(这个函数要放到操作的前面,例如我们注册一个账户,这个函数要放到注册操作前,而不是注册操作后面)

参数添加完后,代码中要使用参数的地方,使用这种格式就行了{username} 

 修改后的代码

 1 Action()
 2 {
 3     /*集合点*/
 4     lr_rendezvous("同时打开网页进行注册");
 5     
 6     /*事务开始*/
 7     lr_start_transaction("同时注册事务");
 8 
 9     /*加载指定url*/
10     web_url("WebTours", 
11         "URL=http://127.0.0.1:1080/WebTours/", 
12         "Resource=0", 
13         "RecContentType=text/html", 
14         "Referer=", 
15         "Snapshot=t8.inf", 
16         "Mode=HTML", 
17         LAST);
18     
19     /*点击相应的链接*/
20     web_link("sign up now", 
21         "Text=sign up now", 
22         "Snapshot=t9.inf", 
23         LAST);
24    /*检查表单提交后,是否出现指定的text 值*/
25     web_reg_find("Text={username}",LAST);
26     /*提交表单*/
27     web_submit_form("login.pl",
28         "Snapshot=t10.inf",
29         ITEMDATA,
30         "Name=username", "Value={username}", ENDITEM,
31         "Name=password", "Value={password}", ENDITEM,
32         "Name=passwordConfirm", "Value={passwordCofirm}", ENDITEM,
33         "Name=firstName", "Value={firstname}", ENDITEM,
34         "Name=lastName", "Value={lastname}", ENDITEM,
35         "Name=address1", "Value={address1}", ENDITEM,
36         "Name=address2", "Value={address2}", ENDITEM,
37         "Name=register.x", "Value=43", ENDITEM,
38         "Name=register.y", "Value=9", ENDITEM,
39         LAST);
40    
41         
42     /*事务结束*/
43     lr_end_transaction("同时注册事务", LR_AUTO);
44     
45 
46     return 0;
47 }

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏云计算教程系列

如何在Debian 8上安装Linux,Apache,MySQL,PHP(LAMP)堆栈

LAMP软件堆栈由Linux操作系统,Apache Web服务器,MySQL数据库和PHP脚本语言组成,是Web或应用程序开发的良好基础。这个软件堆栈安装在一起...

3723
来自专栏决胜机器学习

《高性能MySQL》读书笔记(一) ——MySQL架构及重要属性概述

《高性能MySQL》读书笔记(一)——MySQL架构及重要属性概述 (原创内容,转载请注明来源,谢谢) 一、MySQL逻辑架构 1、三层架构 ...

4519
来自专栏信安之路

bWAPP 玩法总结

bWAPP(buggy web Application)是一个集成了了常见漏洞的 web 应用程序,目的是作为漏洞测试的演练场(靶机),为 web 安全爱好者和...

6.7K1
来自专栏小怪聊职场

爬虫课程(三)|Python2和Python3的比较及安装

3096
来自专栏软件测试经验与教训

看图说话:文件包含(File Inclusion)漏洞示例

作为测试人员,我们常常听到“安全测试”这个词,但鲜有人真正做过安全测试。从我们的职责“保障质量”角度来说,说是一种“失职”也不为过。那么安全测试是什么,究竟怎么...

2191
来自专栏武军超python专栏

2018年8月1日学习linux中的vi编辑器和多python环境的管理软件Anaconda,miniconda的使用

********************** 今天遇到的新单词: fail  n/v失败 file  n文件 extract v提取 verify...

2482
来自专栏分享达人秀

简单几步带你飞,运行Android Studio工程

之前讲过Eclipse环境下的Android虚拟设备的创建和使用,现在既然升级了Android Studio开发工具,那么对应的Android虚拟设备也该...

1906
来自专栏小白课代表

我就是要在Win10中运行Win7!!!

很多时候我们使用的软件很“矫情”,有的只支持Windows10,有的对Windows7兼容性最好,尤其是课代表这种喜欢折腾,经常和各种软件打交道的人来说,只有一...

1762
来自专栏技术墨客

React由0到1

    本文记录了本人以及目前团队从无到有使用React的过程,我们将从webpack开始说起,一步一步展现React最基本的开发生态。在这里并不会介绍任何js...

1173
来自专栏Sorrower的专栏

内核必须懂(二): 文件系统初探

1203

扫码关注云+社区

领取腾讯云代金券