button_search().click();
httpWwwLotusCom_textVP().performTest();
}
Java语言的脚本有很好的可读性,稍有Java知识的人便能看懂这些操作的具体含义。
接下来我们试着回放这段脚本(注意:此时搜索结果页面尚未关闭)。点击工具栏上的按钮"运行Functional Tester脚本",开始回放。
整个回放过程大约需要1分钟,但回放日志中有2条警告信息:"对象识别较困难(在警告阈值以上)",并给出了识别分数和警告阈值。这是由于Rational Functional Tester所使用的ScriptAssure? 技术认为这两次识别是弱识别,可能存在问题。下面我们来看看具体原因:
ScriptAssure技术给各个界面元素赋予了一定的权重,再综合目标对象的各个属性得出一个量化的特征值,便于在对象之间进行比较,因此可以大大提高脚本对频繁变更的应用程序界面的弹性适应能力,ScriptAssure技术的原理并不难懂。打开脚本资源管理器中的对象"document_htmlDocument",可以看到这个对象在识别时,使用到3个属性:".class",".title"和".url",权重各有不同。
权重用来标识这个属性在识别过程中的重要程度,权重为100,表明这个属性非常关键,必须和原值完全一致;权重为0,表明这个属性是无关紧要的。识别分数就是在这些权重的基础上进行一定的运算而得到的。识别对象时,如果有一个权重100的属性值与原值不符,识别分数就要加上"权重×100",即10000分。在这个例子中,录制时使用的是空白的IE页面,而回放时使用的是录制遗留下的搜索结果页面,导致".title"和".url"这两项属性值不符,因此它的识别分数就是".title权重×100"再加上".url权重×100",一共是9000分+4000分=13000分,这就是警告信息里识别分数的由来。
至于警告信息里提到的"警告阈值",可以在Rational Functional Tester "首选项"的ScriptAssure高级选项里修改。缺省值是10000,表明有一个阈值为100的重要属性不匹配。"警告阈值"越小,则意味着识别过程越严格。
对于这一例子而言,使用空白页面和非空页面对结果都没有影响,只要操作对象是浏览器即可,因此我们可以把".title"和".url"这两项属性的权重设为0。修改之后,保存,再回放一次。同样使用刚才的结果页面,但在回放日志里不再有警告信息,而且回放过程也仅仅用了13秒,快速合格地完成了测试。
在录制脚本中,除了有录制时浏览器页面的限制,还有一处隐藏的限制:脚本中没有打开浏览器的操作。如果没有在回放前打开一个浏览器页面,回放操作肯定会失败。幸好Rational Functional Tester的API提供了这样的功能,在所有Java脚本的公共父类com.rational.test.ft.script.RationalTestScript里,有一个方法startBrowser(java.lang.String url),可以用来启动浏览器,并打开某个URL。因此需要在脚本的第一行前加上"startBrowser("");"用来打开一个空白页面,然后再执行其他操作。
通过修改页面对象的识别属性和添加必要的Java代码,我们完成了对脚本内容和录制环境的解耦工作。
二 摆脱时间的束缚
回放时,Java脚本是由Java虚拟机解释执行,进行速度很快;而浏览器的打开,页面的装入则往往由于机器性能、网络带宽、服务器负载而速度缓慢。如果被测程序的运行和脚本执行的时间差过大,极有可能导致测试的失败,因此等待时间是我们应该妥当设置的一个要素。可以在工具级和程序级这两个层次上进行设置。
1) 工具级设置
在Rational Functional Tester "首选项"的"回放"选项里,可以看到四项时间有关的回放设置。缺省的"尝试查找测试对象的最长时间"值为20秒。由于此处设置比较简单,而且是一个对所有项目和脚本都有效的全局设置,因此很难设定一个能满足所有脚本的值。建议接受默认设置,不在这一层上做时间定制,而是去程序级进行更为灵活的控制。
2) 程序级设置
我们可以在程序级上,对脚本做适量的加工。在某些关键操作后加上适当的等待,直到该操作完全执行完毕,再继续之后的操作。"步步为营"地执行脚本,确保每一步的前提都是正确的。
文章来源于领测软件测试网 https://www.ltesting.net/