Object QTP中的测试对象和运行时对象之间有什么区别?给出的解释正确吗?

Object QTP中的测试对象和运行时对象之间有什么区别?给出的解释正确吗?,object,qtp,Object,Qtp,在一份声明中,声明如下: “所有软件应用程序和网站都是使用许多不同的组件或小单元(例如vb中的文本框控件、HTML中的输入标记、.net中的webbrowser控件)开发的,这些组件或小单元可以称为对象 某些属性可以在运行时更改。这些属性称为RO(运行时对象)属性。有些属性不能更改。它们称为TO(测试对象)属性。“ 这个解释正确吗 某些属性可以在运行时更改 上述说法不正确 测试对象是记录期间存储的对象 运行时对象是在播放脚本时显示在AUT中的对象。要理解测试对象和运行时对象之间的区别,请在计算机

在一份声明中,声明如下:

“所有软件应用程序和网站都是使用许多不同的组件或小单元(例如vb中的文本框控件、HTML中的输入标记、.net中的webbrowser控件)开发的,这些组件或小单元可以称为对象

某些属性可以在运行时更改。这些属性称为RO(运行时对象)属性。有些属性不能更改。它们称为TO(测试对象)属性。“

这个解释正确吗

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

上述说法不正确

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


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

要理解测试对象和运行时对象之间的区别,请在计算机之外思考一会儿

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

这个实习生非常新,所以你必须一步一步地向实习生解释你希望他们做什么

您的脚本非常简单:

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以编程方式读取对象的描述。此外,您可以通过编辑对象存储库来更改对象的描述,也可以在代码中使用.setTopProperty()以编程方式动态更改对象的描述。这样做的目的是更改您要查找的对象的描述-例如,如果您将描述从Coke徽标更改为Sprite徽标,那么实习生将成功识别Sprite的按钮,并且您的脚本可以在没有其他更改的情况下工作,除了你的实习生给你带来的是雪碧而不是可乐

虽然你可以改变描述,但你不能改变真实的物体,就像你的实习生不能把可乐按钮从黑色改为白色一样。然而,一旦你的实习生找到了按钮,他可以通过按下按钮、看着按钮、晃动按钮或闻按钮来与之互动。他就是不能把它换成别的东西。对象没有SetROproperty方法,但您可以获取SetROproperty,这意味着一旦通过按钮的大小、颜色和徽标识别出按钮,您还可以让实习生告诉您按钮的宽度,或者如果按钮有“缺货”指示器,您可以让实习生告诉您该指示灯是否亮起


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

此解释不正确。请参阅我的答案,非常感谢莫蒂的澄清。:)实际上,上面的陈述是正确的-TopProperty可以在运行时更改。但是,RoProperty不能。