• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

AJAX 技术下软件测试自动化的实现方法

发布: 2009-4-17 15:20 | 作者: James McCaffrey | 来源: 测试时代采编 | 查看: 98次 | 进入软件测试论坛讨论

领测软件测试网

ant: normal; text-transform: none; padding-bottom: 7px; line-height: 16px; color: rgb(51, 51, 51); ">我检索具有 ID“comments”的 <文本区> 元素的当前内容,将换行字符和新注释文本附加到当前内容中,然后使用更新的注释集替换 <文本区> 内容。这不是一种高效的方法,但在小型测试自动化软件中,简洁往往要比效率更重要。
step1 函数开始处理待测试的 AJAX Web 应用程序:
function step1()
{
  logRemark("单击“北”,等待“2”");
  asyncCall(clickNorth, checkImageSrc, "2", step2, polling);
}
记录注释后,我调用 asyncCall 函数,该函数是测试自动化的关键所在。该调用在这里表示:调用函数 clickNorth,然后进行 delay 循环直到 checkImgSrc("2") 返回 true 为止,在两次检查之间暂停 200 毫秒,然后将控制权转至函数 step2。如果调用 delay 循环的次数超过 10 (maxTries) 次,则会将控制权转至 finish 函数。
clickNorth 函数非常简单:
function clickNorth()
{
  var btnNorth = parent.rightFrame.document.all["Button1"];
  if (!btnNorth) throw "未找到 btnNorth";
  btnNorth.click();
}
我使用 Internet Explorer DOM 来获得对 Button1 控件的引用,然后调用该控件的 click 方法。请注意,由于自动化软件位于一个框架中,而 AJAX 应用程序位于另一个框架中,为了从测试脚本访问应用程序上的控件,因而我必须使用 parent 关键字来“上升”一个级别,然后使用应用程序容器的框架 ID。我喜欢使用 document.all 集合来获得对网页控件的引用,而我的一些同事则更喜欢使用 getElementById 方法,如下所示:
var btnNorth = parent.rightFrame.document.getElementById("Button1");
checkImageSrc 函数可告知自动化软件有关异步响应更新待测试 AJAX 应用程序上的 Image1 控件的时间:
function checkImageSrc(target)
{
  try
  {
    var s = parent.rightFrame.document.all["Image1"].src;
    return s.indexOf(target) >= 0;
  }
    // 尚未装载 Image1 的陷阱案例
    // logRemark("CheckImageSrc() 中存在错误: " + ex);
  catch(ex) { return false; }
}
通常,我只检查 Image1 控件的 src 属性,以此来确定该属性是否包含目标字符串。例如,如果图像的 src 属性包含“2”(如在 map 2 的文件名“~/2.jpg”中),则当调用 checkImageSrc("2") 时将返回 true。在编写您自己的 AJAX 自动化软件时,您必须创建适当的 check 函数。例如,假设 Web 应用程序要更新具有 ID“TextBox1”的 TextBox 控件。一个可能的 check 函数为:
function checkTextBoxValue(target)
{
  try
  {
    var s = parent.rightFrame.document.all["TextBox1"].value;
    return s.indexOf(target) >= 0;
  }
    // 尚未装载 TextBox1 的陷阱案例
    // logRemark("checkTextBoxValue() 中存在错误: " + ex);
  catch(ex) { return false; }
}
请注意 checkImageSrc 函数中的 try/catch 块。与大多数情况下将 try/catch 用来捕获异常错误条件不同,在这里我将 try/catch 用作标准函数逻辑的一部分。其间的思路是在重新绘制网页期间,用户无法获得对 Image1 控件的引用,而任何尝试获得对 Image1 控件的引用的操作都将引发异常。这并不一定意味着 Web 应用程序的状态不正确,而仅表明该应用程序处于未完成状态,因而我希望系统捕获异常并返回 false。通过取消对 logRemark 调用的注释并将轮询时间设置得非常短(如 10 毫秒)可观察该行为。

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/

65/6<123456>

关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网