1

关于 QTP 的博客上,声明如下:

“所有的软件应用程序和网站都是使用许多不同的组件或小单元(例如 vb 中的文本框控件、HTML 中的输入标签、.net 中的网络浏览器控制)开发的,它们可以称为对象。

某些属性可以在运行时更改。这些被称为 RO(运行时对象)属性。其中一些是无法更改的。它们被称为 TO(测试对象)属性。”

这个解释正确吗?

4

2 回答 2

2

要了解测试对象和运行时对象之间的区别,在计算机之外思考片刻会有所帮助。

想象一下,如果你愿意,你正坐在办公桌前,口渴了。但是你不能自己去休息室从汽水机里拿饮料。所以,你找一个实习生,给他一些硬币,然后把他送到休息室给你喝一杯。

这个实习生很新,所以你必须一步一步地向实习生解释你想让他们做什么。

您的脚本非常简单:

1) go to "the break room".
2) go to "the machine"
2) insert coins into "the coin slot"
3) press "the Coke button".
4) bring the can back to you.

所以,在你的剧本中,你已经描述了一些事情。

"the break room" is the name of the room that contains the machine.
"the machine" is the name of the machine in the break room.
"the coin slot" is the name of a hole in the front of the machine.
"the Coke button" is the name of a button on the fronf of the machine.

现在,由于这个实习生很新,他问你“当我看到这些东西时,我怎么知道它们?”

因此,您必须将“休息室”描述为“这是走廊上最后一个有绿色门的房间”。您还必须将“机器”描述为“它是右侧有很多按钮的红色机器”您还描述了“投币槽”=“这是所有按钮上方的长矩形槽”最后,您描述了“可乐按钮" = "这是一个白色的大按钮,上面有可乐标志"。

实习生将所有这些描述写在一张纸上。实习生现在有一张纸,上面有您希望他在到达休息室时看到的事物的名称和描述。

所以,接下来实习生真的走到了休息室……

他发现机器...

他找到投币口,把硬币放进去……

他在控件中搜索带有可口可乐标志的白色大按钮,但找不到。所以,他会回到你身边。

“我找不到你描述的‘可乐按钮’,”他说。事实证明,最近更改了按钮,现在所有按钮都有黑色背景。你向实习生解释这一点,他改变了他纸上的描述。你把他送回去再试一次。

于是,实习生走回休息室……

他发现机器...

他找到投币口并投入硬币......(机器之前自动将它们吐出来,他把它们拿回来)

他在控件中搜索“带有可口可乐标志的黑色大按钮”,然后他找到并按下了它。

机器分配可乐。

所以,他回来了,把你的饮料递给你。

现在,使用上面的故事,应该更容易解释测试对象和运行时对象之间的区别。

实习生就是你的测试工具——QTP。

测试对象只是您的测试工具应该寻找的真实对象的描述,就像实习生必须在机器上搜索真实对象(或“事物”)一样。

你的实习生在纸上写下的东西清单就像一个对象存储库。每个描述都有一个名称和描述。该脚本具有名称,QTP 会查找这些名称并从 OR 中获取描述。例如,您对实习生的指示可能如下所示:

Room("the break room").machine("the machine").slot("the coin slot").insert-coins-into
Room("the break room").machine("the machine").button("the Coke button").press

运行时对象是 AUT 中的实际对象,就像有一个真实的物理机器、一个真实的物理硬币槽和一个真实的物理按钮来获取可乐一样。在软件测试中,这些对象不是物理的,但它们是真实的。

您可以使用 GetTOProperty 以编程方式读取对象的描述。此外,您可以通过编辑对象存储库来更改对象的描述,或者您可以使用代码中的 .SetTOProperty() 以编程方式即时更改对象的描述。这样做是更改您要查找的对象的描述 - 例如,如果您将描述从可口可乐徽标更改为 Sprite 徽标,那么您的实习生将成功识别 Sprite 的按钮,并且您的脚本可以与其他人一起使用变化,除了你最终会让你的实习生给你带来雪碧而不是可乐。

虽然您可以更改描述,但您无法更改实际的实物,就像您的实习生无法将可乐按钮从黑色更改为白色一样。然而——一旦你的实习生找到按钮——他可以通过按下按钮、看它、摇晃它或闻它来与按钮交互。他只是不能把它换成别的东西。对象没有 SetROproperty 方法,但您可以使用 GetROProperty,这意味着一旦通过按钮的大小、颜色和徽标识别按钮,您还可以让实习生告诉您它的宽度,或者它是否有“超出库存”指示器,您可以要求实习生告诉您该灯是否亮起。

希望这完全回答了您关于 QTP 中测试对象和实时对象之间区别的问题。

于 2016-03-22T19:23:57.150 回答
0

某些属性可以在运行时更改

上述说法不正确。

测试对象是记录期间存储的对象。

运行时对象是播放脚本时在 AUT 中显示的对象。

于 2012-12-27T18:54:54.903 回答