Loadrunner进行Web(HTTP/HTML)协议录制时有两种录制模式,HTML-basescript和URL-base script,两种模式在录制的脚本和统计数据上具有较大的差异,具体分析如下:
HTML(超文本标记语言):一种用于制作超文本文档资料的简单标记语言,用HTML编写的超文本文档能够独立于各种操作系统平台。从诞生开始,HTML语言就一直被用于描述web页面格式设计,使用HTML语言描述的文件需要通过WWW浏览器显示效果。
HTTP(超文本传输协议)::HTTP是一个属于应用层的面向对象的协议,用于传送WWW方式的数据,采用请求\响应模型,客户端向服务器发送一个请求,请求头包含请求的方法、URI、协议版本,以及包含请求修饰符、客户信息和内容的类似于HTML的消息结构。服务器以一个状态行作为响应,响应的内容包括消息协议的版本,成功或者错误编码加上包含服务器信息,实体元信息以及可能的实体内容。
2.脚本录制方式:
HTML-based 方式对每个页面录制形成一条语句,对LoadRunner来说,在该模式下,访问一个页面,首先会与服务器之间建立一个连接获取页面的内容,然后从页面中分解得到其他的元素(component),然后建立几个连接分别获取相应的元素。是LR的默认录制协议,特点是可以为每个用户请求生成单独的函数,使用HTML-based script录制的脚本直观,易于理解和维护。
URL-based 方式将每条客户端发出的请求录制成一条语句,对LoadRunner来说,在该模式下,一条语句只建立一个到服务器的连接,LoadRunner提供了web_concurrent_start和web_concurrent_end函数模拟HTML-based的工作方式。基于URL-based script模式录制生成的脚本内容看起来会比较多,好象将HTML方式中的一个函数拆分成了很多独立的函数一样,但是这种脚本的可伸缩性更强,记录了更详细的用户操作信息。
HTML-mode录制的特点:
1.资源从内存中取出且在回放时下载。因此,脚本比其他的录制方式更小且更容易阅读。
2.由于只有较少的硬编码脚本,因此只有较少的动态数值需要关联。
3.可以插入图片检查之类的语句以检查结果是否正确。
4.因为HTML模式回放时需要积极地解析返回的信息,因此它可能会比其他录制模式更加占用资源。
HTTP-mode录制的特点:
URL-based script即通常所说的低层次录制模式,这种模式录制的脚本相对长,不利于阅读,但脚本更直观,它把客户端向服务器端发送的每一个请求都放在一个单独的Web_URL中,即一个请求对应一个Web_URL,页面和图片分别生成对应的Web_URL,相对HTML-basedscript模式把类属一个页面的请求放在一个Web_URL中的方式,URL-based script模式的脚本更直观。
HTML-based script模式的脚本回放时需要更多的内存和CPU。URL-based script模式录制的脚本更灵活,更易控制程序通讯,但需要更多关联。
基于浏览器的应用程序推荐使用HTML-based script录制方式
不是基于浏览器的应用程序推荐使用URL-based script录制方式
如果基于浏览器的应用程序中包含了JavaScript并且该脚本向服务器产生了请求,比如DataGrid的分页按钮等,也要使用URL-based script方式录制。
基于浏览器的应用程序中使用了HTTPS安全协议,使用URL-based script方式录制。
对于初学者来说,如果HTML方式录制不成功,可以换成URL录制。
对于有检查点的脚本来讲,两种协议的统计时间差异会很大,URL-base script协议的脚本在寻找检查点的时候,统计的是页面DOMConten Loaded请求的响应时间,不会统计下载其他资源文件(CSS文件等)的时间。而HTML-base script协议的脚本在寻找检查点时,会把该页面请求其他资源文件的时间也统计进去,统计的是触发onLoad事件的时间。一般来讲,(注:DOMContentLoaded事件W3C推荐的标准事件,它发生在页面的DOM树建成时,而onload则发生在页面所有的资源(图片文件、CSS文件、js文件等)都被下载完成后)
实际执行过程中,要根据压测的目的进行选择,如果是想测试页面完整的响应时间(后端性能+前端性能),建议使用HTML-base script协议,。如果想测试服务器的性能,测试服务器的最大服务能力,一般选用URL-base script 协议,这样得到的压力会更大。
既然两种模式都可以录制Web脚本,而且统计的结果差异还很大,那么究竟哪种模式更加贴近用户感受到的页面响应时间呢?
很遗憾,两种结果都不能作为用户感受到的响应时间!因为web性能一部分取决于web服务器和应用服务器(建立连接,下载连接),别一部分取决于浏览器的实现机制、web页面上的js的执行等。取决于web服务器和应用服务器的响应时间与服务器的负载、压力等相关;而取决于浏览器实现机制与js文件执行所需要的时间则几乎与服务器端的负载和压力无关。
前端性能关注单个用户的感受。后端性能关注是更多用户访问系统时,服务器能更稳定、更快的处理用户发来的请求。一个强大的后台是前台的基础。