检查点—性能测试进阶指南 LoadRunner 11实战(第二版)

发表于:2015-1-21 12:47

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

 作者:陈霁、李锋、王臣钧    来源:51Testing软件测试网原创

(51Testing软件测试网获得作者授权连载本书部分章节。任何个人或单位未获得明确的书面许可,不得对本文内容复制、转载或进行镜像,否则将追究法律责任。)
  4.Save count
  这是文本检查点很特别的功能,它将记录查找内容的出现次数并且存放到一个参数中,这里可以填写一个参数名称来存放计数结果。
  5.Fail if
  设置在什么情况下文本检查点函数错误,提供了两个选项:Found、NotFound。如果选择Found也就是说如果在服务器返回中存在需要检查的对象,那么文本检查点函数出错;选择NotFound则相反,如果没有找到对应的内容,那么文本检查点函数出错。
  检查点函数的错误会导致整个脚本运行结果的失败,通过这个功能可以方便地定位脚本运行中的逻辑错误。
  接着来完成注册用户的脚本,实现脚本每次运行必须完成用户的注册,否则脚本运行失败。在脚本中添加检查点函数。在Search for specific Text中输入以下内容:完成注册,然后设置Search in为Body、Save count为regcheck、Fail if为Not Found,确定后得到检查点函数:
  web_reg_find("Fail=NotFound",
  "Search=Body",
  "SaveCount=regst",
  "Text=完成注册",
  LAST);
  现在再回放一下脚本看看效果,会得到以下错误信息:
  Action.c(10): Error -26366: "Text=完成注册" not found for web_reg_find   [MsgId: MERR-26366]
  Action.c(10): web_submit_data("register.php_3") highest severity level was "ERROR", 97352 body bytes, 2474 header bytes, 13 chunking overhead bytes   [MsgId: MMSG-26387]
  在服务器的返回中没有发现我们想要搜索的东西,所以脚本回放错误,整个Test Results是以FAIL结束的。接着修改一下注册的用户信息,看看检查点函数是否能查询得到相关信息,修改用户名后再次运行脚本。
  Action.c(10): Registered web_reg_find successful for "Text=完成注册" (count=1)   [MsgId: MMSG-26364]
  Action.c(10): web_submit_data("register.php_3") was successful, 344866 body bytes, 8850 header bytes, 13 chunking overhead bytes   [MsgId: MMSG-26385]
  可以看到web_reg_find()函数成功地查询到了需要的内容,并且提示count=1,说明找到了1次该内容,脚本成功运行,Test Results状态为PASS。
  如果打开了参数存取值日志选项,可以看到regcheck参数的值,如果没有查询到,那么regcheck的值为0,反之regcheck存放count对应的记录条数。检查点函数有效地对脚本运行进行了监控,确保了脚本操作的正确性。另外一方面也可以通过它来进行一些逻辑分支的判断和页面的内容检查工作。
  A.8.2  自动检查点
  有些时候我们需要确保每个请求中都包含一个检查信息,然而手动添加检查点函数非常麻烦,这个时候可以使用自动检查点规则,通过建立一个新的规则,可以在回放时对所有的返回内容进行检查工作。
  打开Run-time Settings/ContentCheck,如图A.134所示。
  
图A.134  ContentCheck设置窗口
  在这里单击New Application按钮来添加一个应用,然后在这个应用下添加对应的规则,单击New Rule按钮。这里可以在Search for Text中填写需要检查的内容,也可以在下面的Search by prefix and suffix中填写需要检查的边界,若需要区分大小写则将Match case选中,最后确定该规则在什么情况下失败。
  如果希望脚本检查每个页面是否包含phpwind这个标题,那么可以在这里添加一个检查规则。在Search for Text 中填写phpwind,设置Fail if为Not Found。
  运行脚本时,如果有页面返回的代码中没有包含phpwind时,就能看到以下错误:
  Action.c(3): Error -26370: ContentCheck Rule "Rule_1" in Application "phpwind" triggered. Text "phpwind" not matched   [MsgId: MERR-26370]
  Action.c(3): web_url("test") highest severity level was "ERROR", 20263 body bytes, 4020 header bytes   [MsgId: MMSG-26388]
  如果返回的代码中包含phpwind则不会有任何提示出现。通过自动检查点,可以轻松地对页面中固定出现的内容进行校验工作。也可以通过web_global_verification函数实现全局检查点功能,检查中途需要暂停和恢复可以使用web_global_verification_pause和web_global_verification_resume函数。
  A.8.3  图片检查点
  通过web_image_check()函数可以检查页面上的图片(图片检查点函数必须在Run-time Settings中打开Preferences下的Enable Image and text check才有效)。例如:
  web_image_check("函数标题","ALT=图片说明",LAST);
  我们在进行性能测试而不是功能测试,虽然检查点也可以很好地实现功能测试,但在大多数时候并不需要太在意功能点是否全部正确,只要确保基本业务操作正确即可(如果希望测试系统在高负载情况下的功能是否正常可以在运行场景中调用QTP实现,具体内容参考第B.4节)。
  A.9  事务
  A.9.1  响应时间
  事务是指用户在客户端做一种或多种业务所需要的操作集,通过事务函数可以标记完成该业务所需要的操作内容;另一方面事务可以用来统计用户操作的响应时间,事务响应时间是通过记录用户请求的开始时间和服务器返回内容到客户时间的差值来计算用户操作响应时间的,如图A.135所示。
  
图A.135  事务响应时间计算方式
  这里的响应时间不包含客户端GUI时间(例如,浏览器解释页面所消耗的时间),但客户端导致的请求等待时间会被计算在内。
  前面说响应时间是服务器返回和用户请求发出之间的时间差,那么得到这个时间就够了吗?
  例如:现在有一场跑步比赛。当比赛完成后,可以得到每位运动员跑完整个比赛所需要消耗的时间,现在需要分析谁的起跑好、谁的冲刺好,能分析出来吗?答案是不能,虽然得到了最重要的完成比赛的响应时间,但是这对分析和优化几乎没有作用,因为只知道了结果而不知道过程。跑步的时间是由起跑、中途、冲刺等时间组成的,如果想要进行分析优化,必须先了解各个阶段所花费的时间和速度以及各个运动员的优缺点。
  对于软件来说,通过事务得到的系统响应时间也是由非常多的部分组成的,一般来说响应时间由网络时间、服务器处理时间、网络延迟三大部分组成。先来看看当一个客户端发出请求到服务器返回需要经历哪些路径,如图A.136所示。
  
图A.136  事务响应时间组成
  1.网络时间
  客户端发出请求首先通过网络来到Web Server上(消耗时间为N1);然后Web Server将处理后的请求发送给App Server(消耗时间为N2);App Server将操作数据指令发送给Database (消耗时间为N3);Database服务器将查询结果数据发送回App Server(消耗时间为N4);App Server将处理后的页面发给Web Server(消耗时间为N5);最后Web Server将HTML转发到客户端(消耗时间为N6)。这里的Nx都是网络传输上的时间开销,没有计算业务处理所需要花费的时间。
  2.服务器处理时间
  另外一个方面还要考虑各个服务器处理所需要的时间WT、AT、DT。
  3.网络延迟
  除上面两种时间开销外,还要考虑网络延迟的问题。
  所以最终的响应时间组成为:
  响应时间 = 网络延迟时间 + WT+AT+DT +(N1+N2+N3)+(N4+N5+N6)+ WT+AT+DT
  也可以简单认为响应时间由网络开销(前端)和服务器端开销(后端)两大部分组成,如图A.137所示。

A.137  事务响应时间组成详解

本文选自《性能测试进阶指南—LoadRunner 11实战(第二版)》,本站经作者的授权。
版权声明:51Testing软件测试网获作者授权连载本书部分章节。
任何个人或单位未获得明确的书面许可,不得对本文内容复制、转载或进行镜像,否则将追究法律责任。
42/4<1234>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

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

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

沪ICP备05003035号

沪公网安备 31010102002173号