在 QTP 中,有一个存储对象的对象存储库。并且这些对象可以重复使用。重用在这里意味着什么?该对象是否保存在内存中?....对象存储库只是一个 xml 文件,它存储对象的属性,对吗?
3 回答
对象存储库可以被认为是对象描述的存储库,而不是对象本身的存储库。QTP 使用对象存储库根据您指定的特征来识别运行时对象。当您第一次记录一些动作时,只存储默认的标识特征。您可以根据需要修改这些,例如,如果在运行时无法正确识别对象。您正确地说存储库实际上(“幕后”)只是一个 XML 结构,可以在编辑器中查看它。所指的“重用”意味着从不同的测试中,您可以引用同一个对象存储库,而您不必完成识别对象并将对象添加到测试存储库的工作。一个示例可能是两个使用 Web 应用程序中的数据表的测试。您可以只创建一个共享存储库并使用其中包含的数据表描述来驱动与该表的两个测试交互,而不是创建两个特定于测试的存储库。您可以使用第二种方法在运行时识别对象:正则表达式。在设计大型测试或测试集时,这些可能不太灵活,因为可维护性确实成为一个问题;但是 - 恕我直言,它们往往比使用对象存储库快一点。代码示例:您可以使用第二种方法在运行时识别对象:正则表达式。在设计大型测试或测试集时,这些可能不太灵活,因为可维护性确实成为一个问题;但是 - 恕我直言,它们往往比使用对象存储库快一点。代码示例:您可以使用第二种方法在运行时识别对象:正则表达式。在设计大型测试或测试集时,这些可能不太灵活,因为可维护性确实成为一个问题;但是 - 恕我直言,它们往往比使用对象存储库快一点。代码示例:
If Browser(“hwnd:=“ & browserTitle).Page(“url:=“ & pageUrl).Exist(0) then
'Do something...
End If
您可以将浏览器对象添加到存储库,或者只是使用上面的代码识别它。描述性编程是一种替代方案,但应谨慎使用,并且主要围绕检查点使用。事实上,您实际上可以在存储库的对象标识属性中使用正则表达式,但那是另一回事。如果您需要更多信息,请告诉我。
希望这有助于为您提供概述。
对象可以重复使用意味着您可以在一个或多个测试中使用存储在对象存储库中的对象,并在同一测试中使用一次或多次。
例如:假设您有一个由 2 个应用程序共享的登录页面(并且您正在为这两个应用程序维护 2 个不同的测试脚本)。此页面包含用户名、密码和应用程序名称字段。
因此,对象存储库中的对象(Login_Page(父对象)和 Username、Password 和 Application_Name(子对象))可以由 2 个不同应用程序的脚本共享。
对象存储为测试的一部分(以.mtr格式 - 仅适用于包含脚本)和共享对象存储库(.tsr格式 - 可用于与其关联的任何脚本)。所以实际上它存储在本地系统或质量中心或共享网络路径上。
对象存储库以专有格式(.mtr 或 .tsr)存储,并且可以导出为 xml 格式。
与许多网站提到的相反,对象存储库的对象访问速度与其他方法(如使用 Set 方法、描述性编程等)相当。访问对象所花费的时间取决于存储库中对象的“深度”。
假设层次结构是 Browser > Page > Frame > Field1, Field2 ... 。
无论有多少浏览器对象,访问第 n 个浏览器对象所花费的时间几乎保持不变(它是“ 0 级深度”。页面是“ 1 级深度”)。同样适用于它的子对象。
我发现使用描述性编程和对象存储库设置值(例如 WebEdit 框)的时间差在 100 次迭代中约为 2 秒(描述性编程更快)。
此外,没有任何可用于 QTP 的官方文档提到脚本执行脚本会随着存储库大小的增长而受到影响。(我已经使用 194KB 和 38.5MB 的存储库大小对此进行了测试)。
该术语的使用regular expressions
是错误的,他的意思是descriptive programming
,在此选项中,您正在用异常快的测试执行换取相当慢和更困难的维护。