对象存储库如何工作以及如何更快?

时间:2013-03-04 02:14:30

标签: qtp

在QTP中,有一个存储对象的对象存储库。这些对象可以重复使用。重用意味着什么?该对象是否保存在内存中?....对象存储库只是一个xml文件,它存储了一个对象的属性,对吧?

3 个答案:

答案 0 :(得分:2)

对象存储库可以被视为对象描述的存储库,而不是对象本身的存储库。 QTP根据您指定的特征使用对象存储库来标识运行时对象。首次记录某些操作时,仅存储默认标识特征。您可以根据需要修改这些,例如,如果在运行时无法正确识别对象。 你说明存储库实际上(“幕后”)只是一个XML结构是正确的,它可以在编辑器中查看它。 所引用的“重用”意味着从不同的测试中,您可以引用相同的对象存储库,而不必完成识别和向测试存储库添加对象的工作。一个示例可以是两个在W​​eb应用程序中使用数据表的测试。您可以只创建一个共享存储库,并使用其中包含的数据表描述来驱动与此表的测试交互,而不是创建两个特定于测试的存储库。 还有第二种方法可用于在运行时标识对象:正则表达式。在设计大型测试或测试集时,这些可能不太灵活,因为可维护性确实成为一个问题;然而 - 他们往往是,恕我直言,比使用对象存储库快一点。 代码示例:

If Browser(“hwnd:=“ & browserTitle).Page(“url:=“ & pageUrl).Exist(0) then
   'Do something...
End If

您可以将浏览器对象添加到存储库,或者使用上面的代码识别它。描述性编程是一种替代方案,但应谨慎使用,主要是在检查点周围。实际上,您实际上可以在存储库中的对象标识属性中使用正则表达式,但这是一个不同的故事。如果您需要更多相关信息,请与我们联系。

希望这有助于为您提供概述。

答案 1 :(得分:1)

可以重用对象意味着您可以在一个或多个测试中使用存储在对象存储库中的对象,并在同一测试中使用一次或多次。

例如:假设您有一个由2个应用程序共享的登录页面(并且您为这两个应用程序维护了2个不同的测试脚本)。 此页面包含用户名,密码和应用程​​序名称字段。

因此,对象库中的对象(Login_Page(父对象)和Username,Password和Application_Name(子对象))可以由2个不同应用程序的脚本共享。

对象存储为测试的一部分(以 .mtr 格式 - 仅适用于包含的脚本)和共享对象存储库( .tsr 格式 - 可用于任何脚本它与...相关联。因此实际上它存储在本地系统或Quality Center或共享网络路径上。

对象存储库以专有格式(.mtr或.tsr)存储,可以导出为xml格式。

与许多网站提到的相反,对象访问速度形成对象存储库与其他方法(如使用Set方法,描述性编程等)相当。访问对象所花费的时间取决于存储库中对象的“深度”。

说层次结构是浏览器>页面>框架> Field1,Field2 ......

无论有多少浏览器对象,访问* n * th浏览器对象所需的时间几乎保持平稳( 0级深'。页面为' 1级深')。同样适用于其子对象。

我发现使用描述性编程和对象存储库设置值(比如WebEdit框)的时间差在100次迭代中大约为2秒(描述性编程更快)。

此外,QTP的官方文档都没有提及脚本执行脚本随着存储库大小的增长而受到影响。 (我已经使用大小为194KB和38.5MB的存储库大小对此进行了测试)。

答案 2 :(得分:0)

使用术语regular expressions是错误的,他的意思是descriptive programming,在这个选项中,您正在以极快的速度交换测试执行速度,以便进行相当慢的维护。