你是如何编写QTP考试的?

时间:2009-12-16 18:14:42

标签: testing automation automated-tests qtp

我正在尝试使用QTP进行一些webapp ui自动化测试,我想知道人们通常如何编写他们的QTP测试。您是否一起使用对象图,描述性编程,组合或其他方式?任何小代码示例都将不胜感激,谢谢

2 个答案:

答案 0 :(得分:8)

这是我的建议。

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)选择automation approach

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/

答案 1 :(得分:1)

我知道我在这里已经很晚了,你必须已经拥有了你想要的东西,但我也希望为访问这个主题的人提供我的意见。

我通常不会使用OR,除非我遇到Descriptive Programming不行的环境。就在最近,我使用的是大型机前端GUI应用程序,该应用程序绝对没有对象的命名约定。如果您选择对这样的应用程序使用描述性编程,则使用其对象的唯一方法是通过索引或位置序数标识符,这不是考虑每个窗格中100个对象的最佳操作过程。

因此,您的问题的答案实际上取决于环境以及您对OR和DP的体验。我工作过的大多数人和在线社区都喜欢在可行的情况下使用Descriptive Programming。但是,我也看到人们用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。

谢谢,

Anshoo Arora

(感谢您链接到原始文章,Motti)