前端性能测试自动化—精通软件性能测试与LoadRunner最佳实战(15)

发表于:2013-7-17 11:00

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:于涌 王磊等    来源:51Testing软件测试网采编

  14.3  前端性能测试自动化介绍

  随着功能测试的发展与壮大,功能自动化测试已经越来越广泛地应用于现行软件系统的测试,那么性能测试方面是否能给实现自动化的控制呢?答案是肯定的,随着行业的发展,性能测试的研究也日趋深入,前面我们向大家介绍了如何自动化控制场景的运行,当然这只是性能测试自动化的冰山一角,其目的也是拓展大家性能测试方面的思路。

  本节作者将向大家介绍前端性能测试的自动化控制,据我所知有一些单位已经针对自己公司的业务开发了一些适用其自身的性能测试工具,鉴于其针对行业的特殊性,这里我们不予探讨。我们谨以通用的、被大家认可的前端性能工具为例,讲解前端性能自动化控制的相关内容,在此我们挑选的工具就是HttpWatch,在前面的章节相信大家已经看到了HttpWatch在前端性能测试分析方面是如此强大,肯定也很关心其更深层次的应用,这里我向大家介绍该工具自动化前端性能测试的实现方法,您可以通过访问“http://apihelp.httpwatch.com/”了解更多关于httpwatch自动化方面的内容。

  图14-21描述了Controller、Log、Entry和Plugin这4个主要类与浏览器之间的关系,下面我们来看一下这4个主要类都是用来做什么的。

  1.控制类(Controller Class)

  HttpWatch控制类用来创建一个HttpWatch插件实例,或者是打开一个已经存在的实例文件。可以通过这个控制类的一个“OpenLog”方法打开一个日志文件,并且返回这个日志文件的相应的说明信息,这个说明信息包括的就是录制过中的请求和响应文件信息。

  2.插件类(Plugin Class)

  HttpWatch分别为IE和Firefox提供了插件类,它主要是针对Http协议交互提供启动和停止方法去控制HttpWatch的录制和停止录制功能,对应的方法名称为“Record”和“Stop”,并且还提供了一些方法和属性去管理和配置自动化录制方式。其中插件类中的“GotoURL”方法可以用于重定向浏览任何指定的URL地址。

  3.日志类(Log Class)

  HttpWatch日志类用于获取日志信息,这些日志信息就是HttpWatch录制过程记录的请求和响应信息。日志类提供了许多属性和方法,并且允许对这些录制的数据信息进行检索和保存,或者以多种格式导出(支持:HWL、CSV、XML、HAR格式)等。

  4.属性类(Entry Class)

  HttpWatch属性类的每个日志文件都包含一个属性列表,且这个属性列表中包括详细的HTTP交互信息。这些内容具体包括请求的资源信息和一些返回的信息。这个请求和响应属性信息提供了访问头文件和Cookies文件,这些信息都是在与服务器发生交互过程中产生的。同时最后产生的结果信息也通过该类属性进行输出,如:BytesReceived属性是接收的总字节数。

  14.4  HttpWatch前端性能测试自动化脚本

  HttpWatch提供了一些脚本示例代码供大家参考,在HttpWatch安装目录下的“api_examples”文件夹下,您会看到2个子文件夹:“ie”和“Firefox”,这里我们希望看到基于IE浏览器的相关API调用方法,所以选择“ie”文件夹,再进入到“page_check”,在该文件夹下还有4个子文件夹,分别是“csharp”、“javascript”、“ruby”、“VBScript”,下面就让我们一起来看一下这4个文件夹下主要的脚本实现代码。

  Ruby脚本代码(page_check.rb和page_check_watir.rb文件内容):

#page_check.rb文件

# Page Check Ruby Example

# For more information about this example please refer to the readme.txt file in the

# same directory

#

require 'win32ole'

puts "Enter the URL of the page to check (press enter for www.httpwatch.com):\n";  $stdout. flush

url = gets.chomp!

if  url.empty? 

url = "www.httpwatch.com"

end

puts  "\nChecking " + url + "...\r\n\r\n";  $stdout.flush

# Create a new instance of HttpWatch in IE

control = WIN32OLE.new('HttpWatch.Controller')

plugin = control.IE.New()

# Start Recording HTTP traffic

plugin.Log.EnableFilter(false)

plugin.Record()

# Goto to the URL and wait for the page to be loaded

plugin.GotoURL(url)

control.Wait(plugin, -1)

# Stop recording HTTP

plugin.Stop()

if plugin.Log.Pages.Count != 0

printf "\nPage Title: '%s'\n", plugin.Log.Pages(0).Title

# Display summary statistics for page

summary = plugin.Log.Pages(0).Entries.Summary

printf "Total time to load page (secs):      %.3f\n", summary.Time

printf "Number of bytes received on network: %d\n", summary.BytesReceived

printf "HTTP compression saving (bytes):     %d\n", summary.CompressionSavedBytes

printf "Number of round trips:               %d\n",  summary.RoundTrips

printf "Number of errors:                    %d\n", summary.Errors.Count

end

41/41234>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号