loho1968 2007-8-14 14:21
对 Checkpoint 的深入讨论
检查点:将指定属性的当前值与该属性的期望值进行比较的验证点。
从技术层面来看,检查点能够完成的事,使用代码都能够完成(Bitmap的实现难度大一些)。如此是否使用检查点功能,与是否使用对象库是否是同样的道理呢?
[[i] 本帖最后由 walker1020 于 2007-8-15 00:47 编辑 [/i]]
Jimmyshao 2007-8-14 14:26
当然不同了,使用检查点,可以在最后的result中清楚的列出脚本中有多少check point
Pass了多少,fail了多少......
loho1968 2007-8-14 14:35
[quote]原帖由 [i]Jimmyshao[/i] 于 2007-8-14 14:26 发表 [url=http://bbs.51testing.com/redirect.php?goto=findpost&pid=659293&ptid=86742][img]http://bbs.51testing.com/images/common/back.gif[/img][/url]
当然不同了,使用检查点,可以在最后的result中清楚的列出脚本中有多少check point
Pass了多少,fail了多少...... [/quote]
我也可以使用统一的函数来处理自己编写的“检查点”,一样也可以在result记录和看到执行结果。
yabest 2007-8-14 14:39
检查点的设置是封闭的,脚本里看不到明文内容(如下),不知道存储在哪里,反正不好检查也不好管理!
尤其是我们的脚本都是写成函数放在函数库里,这种非明文的设置我们无法使用!
另外我们有自己写日志文件,QTP的Result只有排错时才用,否则一般都看自己的日志文件。
Browser("Browser").Page("Welcome").Frame("main").WebEdit("QueryValue").Check CheckPoint("QueryValue")
loho1968 2007-8-14 14:45
[quote]原帖由 [i]yabest[/i] 于 2007-8-14 14:39 发表 [url=http://bbs.51testing.com/redirect.php?goto=findpost&pid=659349&ptid=86742][img]http://bbs.51testing.com/images/common/back.gif[/img][/url]
检查点的设置是封闭的,脚本里看不到明文内容(如下),不知道存储在哪里,反正不好检查也不好管理!
尤其是我们的脚本都是写成函数放在函数库里,这种非明文的设置我们无法使用!
另外我们有自己写日志文件, ... [/quote]
我也有同感,如果QTP的result记录不屏蔽pass的结果话,数据量太大了。如果不使用Pass的话,又不好记录哪些测试步骤已经完成了。
limengyun326 2007-8-14 16:13
我觉得检查点看起来不方便,而且灵活性也不够好...
在比较期望值和实际值时,可以根据实际情况,
有时不适合用检查点时,可以自己写代码判断,
然后,用REPORTER对象,同样可以输出到结果RESULT的报告中
zhangj8826 2007-8-14 23:16
关注
walker1020 2007-8-14 23:39
个人有个人的喜好和习惯,只要能完成测试任务就可以了。从广义上来说,“检查点”有两大类:Pre-defined checkpoint and user-defined checkpoint.
前者是在Active Sceen里面就可以增加的检查点,如 Text checkpoint 和 Table checkpoint。它的优点是 操作简单方便,缺点是 QTP默认的检查的属性有时不符合自己的要求,如希望得到检查的属性没有在里面, 而默认的属性不需要检查等。
后者是自己通过Reporter对象的ReportEvent 方法和其它判断条件来自己写代码实现的。它的优点是:非常灵活,前者实现的所有检查都可以用此方法来实现;缺点是:代码量大,对测试人员的要求高。
个人的经验是: 如果有 Active Sceen和简单的情况,使用QTP已有的checkpoint 类型(这可以满足大多数情况);对于复杂的情况,就可以使用后者了。
[[i] 本帖最后由 walker1020 于 2007-8-15 00:04 编辑 [/i]]
walker1020 2007-8-15 00:12
pre-defined checkpoint
The type of pre-defined checkpoint is listed in the attached graph
walker1020 2007-8-15 00:17
在17Testing论坛上有一个 深入讨论 checkpoint 的帖子 [url]http://www.17testing.com/bbs/viewthread.php?tid=169&extra=page%3D1[/url] ,不知道为什么,现在无法打开。我只好以前记录的那个帖子的内容复制过来。
walker1020 2007-8-15 00:18
在使用check方法时,必须先在Keyword View或者Active Screen中新建CheckPoint。否则无法对该对象进行check,系统报错说无法在对象仓库中找到此对象。
如果插入检查点,系统会自动把相关的对象添加到对象库中。
我认为检查点并不是一个实实在在的对象。因为你可以对同一个对象设置不同的检查点,可以把它的某个属性既设定成True,也可以设定为False。而对象库中的对象的属性值是必须依赖于对象的实际属性值的。如果随意更改有可能无法识别。还有就是可以针对同一个对象设定多个检查点。在测试窗口中可以看到这两个检查点的名称是区分开来的。所以我认为检查点并不是实际存在的对象,而是一些类似映射的东西。
walker1020 2007-8-15 00:19
在QTP里面的检查点是为了怕大家不能理解上面的深刻道理,伪装成一个对象。实际上这个对象不存在。我个人喜欢用编程来实现检查点,而不是使用QTP里面内置的检查点功能。
尽管检查点并不是对象库中的实在的对象,但是它必须对应到对象库中的某个实实在在的对象,好像它的一个映像一样,而且在实际的操作过程中,QTP还是把它作为一个对象来处理的。
因为我们无法像其他对象一样把“检查点对象”添加到对象库中,而QTP又认为它是个对象,所以我们无法在专家视图中直接添加检查点脚本。但是我们可以采用编成描述的方式来实现检查点的功能。
walker1020 2007-8-15 00:19
我的理解是:CheckPoint 是一个依赖于Object Repository(对象库)中的某个对象的“虚拟对象”。其具体含义是:如果它所依赖的QTP 对象库中的对象没有了,那么此CheckPoint 也就不存在了;这个“虚拟对象”的属性是从它所依赖的对象的属性中“抽取”出来的,它具有它所依赖的对象的一个或几个属性,但不能增加它所依赖的对象没有的任何属性。
walker1020 2007-8-15 00:22
CheckPoint 是一个“虚拟对象”的重要原因是:每个Object都能在Object Repository找到它的Name、Class Properties,而CheckPoint 在Object Repository中就根本不存在。
选择脚本中的某个对象后,在Object Property 的对话框里面有个Respository按钮,点击它后,你会看到此对象在Object Respository 的Name、Class 和 Properties。请看下面的图示:
walker1020 2007-8-15 00:22
Compared with Object Property Dialogue:
walker1020 2007-8-15 00:23
选择一个CheckPoint后,在CheckPoint Properties 的对话框里没有 Respository 按钮,在Object Respository中也找不到此CheckPoint的Name、Class 和 Properties(因为它在对象库中根本就不存在!)。
walker1020 2007-8-15 00:27
#14、#15和#16是我在17Testing论坛上的回复。#11 、#12和 #13的内容,是 17Testing论坛上的某位QTP高手的回复。我是直接复制过来了,尽管不知道那位高手的姓名,但我在这里也要向他(她?)表示感谢。如果哪位朋友能打开#10 中的那个链接,也告诉我一下打开的方式或新的URL,非常感谢!
walker1020 2007-8-15 00:31
希望我的回复能加深大家对CheckPoint 的理解和认识。
walker1020 2007-8-15 00:33
[quote]原帖由 [i]loho1968[/i] 于 2007-8-14 14:21 发表 [url=http://bbs.51testing.com/redirect.php?goto=findpost&pid=659286&ptid=86742][img]http://bbs.51testing.com/images/common/back.gif[/img][/url]
检查点:将指定属性的当前值与该属性的期望值进行比较的验证点。
从技术层面来看,检查点能够完成的事,使用代码都能够完成(Bitmap的实现难度大一些)。如此是否使用检查点功能,与是否使用对象库是否是同样的 ... [/quote]
对象库的地位、内容和作用等比检查点更多、更重要,已经有帖子讨论过了。
walker1020 2007-8-15 00:40
可以参考 [url]http://bbs.51testing.com/viewthread.php?tid=85084[/url]
walker1020 2007-8-15 00:45
另外 请参考[url]http://bbs.51testing.com/viewthread.php?tid=86453[/url]
loho1968 2007-8-15 08:54
版主就是好,为大家服务
Jimmyshao 2007-8-15 13:50
[quote]原帖由 [i]loho1968[/i] 于 2007-8-14 14:35 发表 [url=http://bbs.51testing.com/redirect.php?goto=findpost&pid=659333&ptid=86742][img]http://bbs.51testing.com/images/common/back.gif[/img][/url]
我也可以使用统一的函数来处理自己编写的“检查点”,一样也可以在result记录和看到执行结果。 [/quote]
我的意思是如果QTP能够提供方法来做的,当然用QTP自带的来做了,解决不了或者无法全部满足的,可以用自己的方法。
那说到最后,自己开发工具才是最能满足的..那就干脆不用QTP算了。。。
qiubole 2007-8-15 13:54
本身的checkpoint确实做起来方便,改起来郁闷,习惯了在专家视图里面看代码,
更麻烦的是,目前还不知道如何访问 checkpoint里的具体内容,比如一个数据库的checkpoint。
现在一般是用代码写,用reporter对象输出结果,有时候还自己写log文件。
lyscu 2007-8-24 12:48
使用检查点,可以在最后的result中清楚看到检查点的信息。
walker1020 2007-9-29 13:49
我的帖子怎么没有反应?是我的回复有问题还是我没有说明白、大家没有明白我的意思?
qicyt1812 2008-2-21 11:09
:P
TEST_HUAN 2008-11-27 18:59
mark,好文要研究
红尾鱼鱼 2008-12-3 20:10
最近在编测试框架,被这个问题困扰很久了,总在想着有没有什么地方存放好了检查点。刚刚想到解决办法就是就编写类似于检查点功能的检查,不用QTP的检查点,果然高人们也是这样做的,我可以去试试了,哈哈哈……
页:
[1]