我正在尝试使用 QTP 进行一些 webapp ui 自动化测试,我想知道人们通常如何编写他们的 QTP 测试。您是否同时使用对象映射、描述性编程、组合或其他方式?任何小代码示例将不胜感激,谢谢
2 回答
这是我的建议。
1) 建立您的测试自动化需求矩阵。您可以使用我博客中的示例
http://automation-beyond.com/2009/06/06/qa-test-automation-requirements-usability/
http://automation-beyond.com/2009/06/07/qa-test-automation-requirements-usability-2/
http://automation-beyond.com/2009/06/10/qa-test-automation-requirements-5-maintainability/
http://automation-beyond.com/2009/06/08/qa-test-automation-requirements-robustness/
http://automation-beyond.com/2009/06/09/qa-test-automation-requirements-scalability/
2) 选择您的自动化方法
3)根据您选择的方法编写测试脚本
笔记。QTP Repository方式或Descriptive Programming属于前端功能测试自动化的GUI识别部分。它们在稳健性和维护方面很重要。从技术上讲,它几乎是一样的。在这两种情况下,您都应该很好地理解 GUI 识别概念,否则无论采用哪种方法都会遇到问题。
- 您可以将 GUI 对象识别属性存储在类似 XML 的数据结构中,并将记录映射到类似英文的名称。每当原始对象的属性发生变化时,您都会更新存储库中的记录,而代码仍然引用映射的名称。
- 或者,您可以通过将相同的识别属性直接放入函数调用来处理 GUI 对象。每当原始对象的属性发生变化时,您都必须更改代码。但是您不必与脚本一起维护额外的文件。
一个好的框架应该通过在对象引用级别上操作来支持 GUI 映射和描述性编程符号。即,您应该将对象识别和对象交互任务分开。
请注意,根据上下文,描述性编程符号可能会降低脚本的性能,并且总是需要额外的维护工作,而在其他情况下,仅使用对象存储库可能会导致对象描述的不必要重复,或者可能会限制对动态变化的 GUI 的识别。
我在下面的文章中说明了上面提出的一些观点:
A little QTP performance test: Object Repository vs. Descriptive Programming
直接的代码示例(对于实际的自动化,我推荐GUI Function Wrapping)。
描述性编程 - 通过物理描述属性寻址对象。
Dim sProfile
sProfile = "Guest"
Set objWebParent = Browser("title:=Select Profile").Page("title:=Select Profile")
Set objWebObject = objWebParent.Link("text:="&sProfile)
boolRC = objWebObject.Exist(0)
If Not boolRC Then
'error-handling
End If
objWebObject.Click
通过映射的 GUI 名称寻址对象
Browser("Select Profile").Page("Select Profile").Link("Guest").Click
谢谢你,
Albert Gareev
http://automation-beyond.com/
我知道我来晚了,你一定已经有了你要找的东西,但我也想为任何访问这个主题的人提供我的意见。
我通常从不使用 OR,除非我遇到无法使用描述性编程的环境。就在最近,我使用了一个完全没有对象命名约定的大型机前端 GUI 应用程序。如果您选择对此类应用程序使用描述性编程,则处理其对象的唯一方法是通过索引或位置序号标识符,考虑到每个窗格中的 100 个对象,这不是最佳操作过程。
因此,您的问题的答案实际上取决于环境以及您在 OR 和 DP 方面的经验。我在工作中和在线社区共事过的大多数人都喜欢在可行的情况下使用描述性编程。然而,我也看到人们用 OR 创造奇迹。
我有一些代码示例,但不幸的是,它们处理的是描述性编程。例如,以下文章讨论了创建模块化 VBScript 类以将应用程序的功能划分为可管理的小组件:
http://relevantcodes.com/qtp-using-classes-as-test-modules-i/
同样,本文展示了如何使用描述性编程通过单个代码块来验证目标对象的多个属性:
http://relevantcodes.com/qtp-verify-multiple-object-properties-an-elegant-approach/
此外,您还可以在此处查看演示框架:
http://relevantcodes.com/relevantcodes1one-qtp-automation-framework/
该框架完全建立在描述性编程的原则之上,但在下一个版本中,将添加一些功能,使用户也可以使用 OR。
谢谢,
安舒阿罗拉
(感谢链接到原始文章,莫蒂)