第5章 脚本创建——性能测试学习笔记之 LoadRunner实战(1)
软件安装完成后,我们将和Lucy一起学习Virtual User Generator(以下简称VuGen)的使用。作为LoadRunner的三大组件之一,VuGen主要用于创建和优化Vuser脚本,涉及Vuser协议的理解和检查点、参数化、关联、事务、集合点等测试技术的学习。
本章主要包括以下内容:
●脚本录制与回放;
●脚本优化之参数化;
●脚本优化之关联;
●脚本优化之事务+检查点;
●脚本优化之集合点+思考时间;
●本章小结。
5.1 脚本录制与回放
5.1.1 启用WebTours示例程序
LoadRunner提供了示例程序供练习使用,Lucy将带着我们以示例程序完成LoadRunner脚本学习。
步骤1:我们需要找到示例程序的位置,启动菜单“开始”-> HP Software -> HP LoadRunner -> Samples -> Web,如图5-1所示。
图5-1 示例程序
步骤2:在Web文件夹下有两个选项,我们首先要启动Web Tours的Web服务,选择Start HP Web Tours Server,系统将启动Apache服务,如图5-2所示。
图5-2 Web Tours Server启动界面
步骤3:启动 HP Web Tours Application,打开Web Tours 欢迎页面,如图5-3所示。
图5-3 Web Tours欢迎页面
启动完成后我们可以尝试注册一个账号,验证系统的可用性。例如,单击页面链接“sign up now”注册一个tester的用户,如图5-4所示。
图5-4 Web Tours注册页面
最后我们尝试用tester用户登录系统,成功登录后会出现如图5-5所示的页面。
图5-5 成功登录页面
【特别说明】:请设置IE为默认浏览器,推荐使用IE10或IE11,本次项目中使用的浏览器版本为IE11。
学习笔记
对于初学者,HP自带的Web Tours飞机订票系统示例是最好的学习教程,可以覆盖脚本后续要用到的各种技术手段。如果随便找一个系统来练习,一旦出错,需要排查是系统的问题还是个人脚本的问题。
5.1.2 原来这就是协议
上述操作完成后,Lucy开始进一步了解Web Tours所使用的HTTP协议。在3.3章节中我们了解到,性能测试是基于协议的测试,这里需要用到计算机网络方面的知识,现在就让我们同Lucy走进HTTP协议的世界。
1.HTTP协议简介
HTTP协议全称为Hyper Text Transfer Protocol(超文本传输协议)。属于TCP/IP模型中应用层的协议,用于客户端和服务器之间的通信。
HTTP协议的请求从客户端发出,最后到服务器端响应该请求并返回。下面我们来看一下Web Tours向服务器端发起请求的示例。
(1)客户端(IE11)向服务器发起Web Tours首页http://127.0.0.1:1080/WebTours/index.htm的访问请求,请求内容如下所示。
① GET /WebTours/index.htm HTTP/1.1
② Accept: text/html, application/xhtml+xml, */*
③ Accept-Language: zh-CN
④ User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko
⑤ Accept-Encoding: gzip, deflate
⑥ Host: 127.0.0.1:1080
⑦ DNT: 1
⑧ Connection: Keep-Alive
第1行:开头的GET表示请求访问服务器的类型,称为请求方法。随后的字符串WebTours/index.htm指明了请求访问的资源对象,也叫作请求URL。最后的HTTP/1.1,即HTTP的版本号,用了提示客户端使用的HTTP协议功能。
第2行:Accept,表示可以接受的数据类型,*/* 任何类型的数据都可以接受。
第3行:Accept-Language,指明接受的语言为中文。
第4行:User-Agent,客户端本地支持的浏览器渲染引擎。
第5行:Accept-Encoding,是否允许服务器发送压缩,gzip、deflate为支持的压缩类型。
第6行:Host,要访问的服务器的地址和端口。
第7行:DNT=1表示禁止追踪。
第8行:Connection,连接方式(1.1独有的),Keep-Alive为长连接。
综合来看,这段请求内容的意思是,当前客户端请求127.0.0.1所在服务器的WebTours/index.htm页面资源。
【特别说明】:第1行请求方法除了GET外还有很多种,表5-1为HTTP请求方法,其中常用的主要是GET和POST。
【特别说明】:第7行DNT是IE10及之后版本自动默认开启的功能,可以考虑关闭此功能,因为这只能算是浏览器的单方面申明,服务器是否真的发起跟踪请求是无法阻止的。IE11具体关闭办法在浏览器右上角“设置”->“安全”->“关闭Do Not Track请求”,如图5-6所示。
图5-6 关闭跟踪请求
(2)接收到请求的服务器,会将请求的处理结果以响应的形式返回客户端,请求内容如下所示。
① HTTP/1.1 200 OK
② Date: Mon, 18 Jul 2016 14:58:39 GMT
③ Server: Apache/2.2.21 (Win32)
④ Last-Modified: Mon, 27 May 2013 06:20:22 GMT
⑤ ETag:“10000000332d2-16e-4ddad24b89580”
⑥ Accept-Ranges: bytes
⑦ Content-Length: 366
⑧ Keep-Alive: timeout=5, max=100
⑨ Connection: Keep-Alive
⑩ Content-Type: text/html
第1行:HTTP/1.1表示协议的类型和版本,200为协议的状态码,OK属于状态码的原因短语,用于解释状态码的具体意义;
第2行:Date,服务器响应请求的时间;
第3行:Server,表示服务器类型为Apache,版本为2.2.21;
第4行:Last-Modified,服务器最后一次修改的时间;
第5行:ETag,请求变量的实体标签的当前值;
第6行:Accept-Ranges,表明服务器支持bytes(字节)的分段请求;
第7行:Content-Length,表示内容长度为366字节;
第8行:Keep-Alive: 表示长连接要求过期时间为5秒,大于100秒则强制断开连接;
第9行:Connection,连接方式(1.1独有的),Keep-Alive为长连接;
第10行:Content-Type返回内容为html文本类型。
【特别说明】:第1行中的状态码是当客户端向服务器发送请求时,描述返回的请求结果。借助状态码,用户可以知道服务器端是正常处理了请求,还是出现了错误,状态码由3位数字组成,第一个数字定义了响应的类别,且有五种可能取值。如表5-2所示。
HTTP的状态码种类繁多,常见的状态如表5-3所示。
值得注意的是状态码4××未必是客户端存在问题,例如403状态码有可能是找不到请求的服务器资源,需要确定服务器地址是否正确。
【特别说明】:第5行中ETag在服务器上生成后,客户端通过If-Match或者说If-None-Match(常使用If-None-Match)这个条件判断请求来验证资源是否修改。请求一个文件的流程可能如下:
(1)客户端发起HTTP GET请求一个文件(css、image、js);
(2)服务器处理请求,返回文件内容和Header(包括Etag),HTTP状态码为200;
(3)当客户端再次发起HTTP GET请求同一个文件,这时候客户端同时发送了一个If-None-Match头,这个头中会包括上次这个文件的Etag;
(4)服务器判断发送过来的Etag和自己计算出来的Etag,如果If-None-Match为False,则不返回200,而是返回304,客户端使用本地缓存,以减少服务器开销。
对于性能测试来讲,我们向服务器发送请求的目的是验证服务器在大量开销下的性能表现,因此我们会在脚本中排除访问服务器请求产生的缓存。
2.HTTP协议的主要特点
(1)简单快速。客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、POST,每种方法规定了客户与服务器联系的类型。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
(2)灵活性强。HTTP允许传输任意类型的数据对象,正在传输的类型由Content-Type加以标记。
(3)持久连接。持久连接使得多数请求以管线化方式发送成为可能。这样就能够同时并行发送多个请求,大大提高了请求传输的效率。
(4)无状态。HTTP协议是无状态协议。也就是说HTTP协议对于发送过的请求或响应不做保存。这是为了更快地处理大量事务,确保协议的可伸缩性。
【特别说明】:HTTP/1.1虽然是无状态协议,但为了实现期望的保持状态功能,可以利用Cookies技术实现状态的管理。
学习笔记
笔记一:在互联网的时代背景下,我们经常提到“协议”一词,学习性能测试我们需要理解各类协议,其中最具有代表性的协议有IP协议、TCP协议、HTTP协议等,虽然没有人能完全了解互联网中的数据传递情况,但协议传递的入口和出口是完全可以把控的。
笔记二:如果你是初学者,建议先从HTTP相关协议入门,再不断学习你们公司用到的其他协议。
本书读者交流QQ群:425860640,欢迎加入~~
本文选自《性能测试学习笔记之 LoadRunner实战》第五章,本站经人民邮电出版社和作者的授权。
版权声明:51Testing软件测试网获人民邮电出版社和作者授权连载本书部分章节。
任何个人或单位未获得明确的书面许可,不得对本文内容复制、转载或进行镜像,否则将追究法律责任。