当应用程序域经常改变时使用该方法

  然而,该自动化测试脚本开发模型还解决了另一个方面的问题。

  在自动化测试中,接受测试的应用程序常常会从一个域转变到另一个域。以下是一个示例场景:

  ● 您在一个 HTML、基于 Web 的应用程序上开始自动化。在这种情况下,顶层测试对象是:HTML.Browser。

  ● 在脚本中,某个操作启动了一个 HTML 对话框。从 Rational Functional Tester 的透视图可看到,顶层测试对象现在已经转移到 HTML Dialog。

  ● 在更多导航之后,这个基于浏览器的应用程序会启动了一个 Java Swing 对话,其中顶层测试对象已转换为 javax.swing.JDialog。

  在所有这些情况中,如果有一个通用的操作将文本设置到各自顶层测试对象下面的子对象,这种使函数与域无关的方法将会有很大的帮助。您需要做的只是传递与该操作相关的域。是说,您首先传递一个 HTML.Browser、HTML.Dialog,然后再传递 javax.swing.JDialog。代码清单 4 说明了这一点。

  清单 4. 顶层应用程序域经常改变的情况

 TestObject myDomainName;
String myDomainName = "";

/*
 * Step 1 - Set value to the text box in Html.Browser
 */
myDomainName = "Html.HtmlBrowser";
if (myDomainName.equalsIgnoreCase("Html.HtmlBrowser")) {
 myDomain = (BrowserTestObject)returnTO(".class", "Html.HtmlBrowser");
}
setTextGuiTestObject(myDomain, ".id", "hostname", "StoreServer");


/*
 * Step 2 - Set value to the text box in Html.Dialog
 */
myDomainName = "Html.Dialog";
if (myDomainName.equalsIgnoreCase("Html.Dialog")) {
 myDomain = (TopLevelTestObject)returnTO(".class", "Html.Dialog");
}
setTextGuiTestObject(myDomain, ".id", "searchIP", "9.124.45.43");


/*
 * Step 3 - Set value to the text box in javax.swing.JDialog
 */
myDomainName = "javax.swing.JDialog";
if (myDomainName.equalsIgnoreCase("javax.swing.JDialog ")) {
 myDomain = (TopLevelTestObject)returnTO(".class", "javax.swing.JDialog");
}
setTextGuiTestObject(myDomain, ".id", "searchPort", "9443");

  在一个频繁改变的应用程序域场景中,该方法非常有效。自动化脚本和函数变成可重用,因而减少了冗余。

  该方法的价值的总结

  您可以在商用或开源的任何自动化工具中有效地使用本文中所描述的方法。使您的脚本与域无关并不只是实现脚本的可重用性。当在某个域(如 HTML)中构建的应用程序功能被转移到另一个域(如 Java)时,它还可以使脚本运行稳定。但无论如何,在您编写测试脚本之后,它都可以在相同产品生命周期的多个版本中使用。

  此外,由于这些通用函数的可重用性是使用跨域方法的结果,这些脚本和函数不会被绑定到特定产品或应用程序域。