51Testing软件测试论坛

标题: Data Table 和测试架构的问题 [打印本页]

作者: vaguely    时间: 2007-8-28 13:05
标题: Data Table 和测试架构的问题
假设我有三个test script: Test_Main, Test_Create, Test_Modify, Test_Delete

其中Test Main是主控程序,用它来调用Test_Create, Test_Modify, Test_Delete
我想在Test Main中存放Test_Create, Test_Modify, Test_Delete用到的所有参数,比如定单号码OrderNo。

我的问题是:
1)Test_Main中除了Globle 和local 的Data sheet外,还可以再加自己想加的表么
2)假如我在Test_Main的Locat table中定义了这个Test_Create, Test_Modify, Test_Delete中都需要用到的订单号码
   怎么应用它呢?比如说在Test_Create中?

谢谢

[ 本帖最后由 vaguely 于 2007-8-31 18:26 编辑 ]
作者: rivermen    时间: 2007-8-28 13:16
kk=datatable.addsheet("sheet_name").addparameter("column_name","value").name
'添加一个表“sheet_name”,并为该表添加一个列“column_name”,同时为其赋值“value”
msgbox kk

'调用指定Action的指定para
DataTable("列名","Test_Create")
作者: vaguely    时间: 2007-8-28 13:55
谢谢回答。

可是怎么在Test_Create中调用Test_Main的Data table呢?
作者: rivermen    时间: 2007-8-28 14:10
同理
DataTable("列名","Test_Main")
作者: Banditu    时间: 2007-8-28 14:22
LZ的应该希望可以调用不同脚本的变量。。。
这个我不清楚,这样的脚本个人觉得没啥用,没谁会希望在一个脚本去调用另外一个脚本的数据吧。。。
作者: Banditu    时间: 2007-8-28 14:24
在QTP里面,对子模块的封装采用Action就可以了,这样参数的传递方便。
脚本在调用的时候也只是提供了对外部脚本的Action的调用吧?有支持直接调用另外一个脚本的么?
作者: vaguely    时间: 2007-8-28 14:37
Hi Bantitu,

我的希望是想在一个test script(脚本)去调用另一个test script(脚本)中的变量。
因为我想把所有的变量都放在一个test script中,这样test_create,test_modify, test_delete的订单号码
可以在一个data table中维护。谢谢

rivermen,  
如果我在test_create中采用下面的方法
DataTable("列名","Test_Main")
我必须要把test_main 首先变成resuable,
然后再test_create中insert "call to copy of action=test_main" ot  "call to existing action=test_main"

但是这样,在我执行test_create的时候,也一定要执行一遍test_main,可是其实我并不像执行test_main。
我只是想调用test_main 中存放变量的data table.有什么好的办法么?

或者大家告诉我有没有其他的思路呢?多谢了!
作者: 木卫十二    时间: 2007-8-28 14:53
把Test_main里的变量导出到外面的Excel表中,然后要引用这个变量时就将这个表导入。

我不喜欢用QTP自身的DataTable,共用的变量都是放在外面的Excel表里的。sdlkfj6
作者: bobile    时间: 2007-8-28 15:10
呵呵,不错这个帖子可以
作者: vaguely    时间: 2007-8-28 15:15
谢谢楼上各位的回答。

我觉得用QTP的DATA TABLE, 比较的方便,因为它提供了
Select DataTable("***", dtLocalSheet) 这样的方法。

如果从外部的EXCEL中调用DATA,要自己写这样的函数,是不是麻烦一些呢?
大家觉得呢
作者: rivermen    时间: 2007-8-28 15:46
我觉得用环境变量有时候更加方便
Environment() 无论什么地方都能无所顾忌的调用
作者: walker1020    时间: 2007-8-28 22:38
不知道楼主的Test_Create, Test_Modify, Test_Delete的数据是存放在 Local Sheet还是在 Global Sheet中。根据楼主的描述,我想应该是后者吧,那么 在Test_Main的  Global Sheet里面也要有Test_Create, Test_Modify, Test_Delete中要使用的数据 才可以呀。
作者: vaguely    时间: 2007-8-29 11:35
谢谢斑竹的回答。但是我不是这样设计的。

我的设想是,在test_main中
Globle Sheet存放需要调用的test script的名字


然后加入其他的sheet比如
order sheet,为了test_create, test_modify, test_delete调用
use sheet,为了test_login, test_logout调用
......


我不知道大家是怎么管理你们的test script,和test data的。
如果用envirerment变量的话, 需要用到array么?
不然如果不是一对一的变量和值的话怎么办呢?

大家继续讨论一下,或者告诉我你是怎么做得好么?
因为我刚刚学习QTP,马上就要应用到工作中了。
可是我们公司就我一个QAsdlkfj9
作者: Banditu    时间: 2007-8-29 12:58
我的希望是想在一个test script(脚本)去调用另一个test script(脚本)中的变量。
因为我想把所有的变量都放在一个test script中,这样test_create,test_modify, test_delete的订单号码
可以在一个data table中维护。谢谢

如果是这样的目的,8楼的方法挺好的。用的时候导入,导入了你可以随便想怎么用就怎么用嘛。不过我没试过sdlkfj5 我是菜鸟。。才玩没几天
作者: yabest    时间: 2007-8-29 14:37
干嘛用Action/DataTable啊,这么麻烦! 用Function/Library多简单,就不会有这个问题了!
作者: vaguely    时间: 2007-8-29 15:47
请问yabest怎么用Function/Library呢?
能否给我一个具体的简单的例子呢? 多谢!sdlkfj5
作者: jiangdanyang    时间: 2007-8-30 09:04
呵呵,学习......
作者: loho1968    时间: 2007-8-30 09:16
原帖由 vaguely 于 2007-8-29 15:47 发表
请问yabest怎么用Function/Library呢?
能否给我一个具体的简单的例子呢? 多谢!sdlkfj5


如果你想“共享”的参数数量不多,完全可以在Test main中编写函数来实现

Test Main
   Call MyLib(Para1,Para2,Para3)

Function MyLib(para1,para2,para3)
    Action可以完成的事,这里都可以完成
End Function
作者: vaguely    时间: 2007-8-30 11:02
有点明白了,是不是把test_create,test_modify, test_delete中的变量都放到
test_main的函数中?

运行的时候,首先是test_main, 然后调用函数得到这些变量,再把它们传递到
test_create,test_modify, test_delete。

可是如果变量很多,还有例如用到了array这样的话,怎么办呢?谢谢
作者: vaguely    时间: 2007-8-30 17:12
没人回答么?sdlkfj1
作者: vaguely    时间: 2007-8-31 18:25
再顶一下

高手们可能都用QTP从事测试很长时间,有了很多心得了。
但是像我们这些刚刚学习的小虾米,搭建测试的构架的时候还是有很多的顾虑的。

所以非常想得到大家的指点:
你们是怎么控制你们那么多的TEST CASES的?从MAIN TEST的MAIN ACTION调用?
Test cases list放在data table中?

还是写成了FUNCTION还控制TEST CASES?
每个TEST CASES是QTP TEST还是vbs function?

大家可不可以在继续谈谈亚? 谢谢
作者: yabest    时间: 2007-9-1 02:20
呵呵,我们的框架里,脚本都写在函数里面,函数分层,包括Case函数层、业务函数层、基本函数层。

参数都是由Case函数来读取,并通过函数参数传给各个业务函数和基本函数。

参数都是存储在一个外部Excel文件里,这个Excel文件里包括整个模块的Case列表信息和各个Case的参数信息。
用户在里面选择要运行的Case和这些Case的参数。

运行时用ImportSheet将这外部Excel文件导入QTP里,然后Case函数通过一个Get_Param函数来搜索这个参数sheet,得到各个参数的值。
作者: walker1020    时间: 2007-9-1 22:33
标题: To vaguely
不要有什么顾虑。既然是搞测试的,那么你可以大胆地去尝试、去测试呀,即使是错了,你也可以去改呀。这样你就知道此方法不能用,换一种方法就可以了。
作者: walker1020    时间: 2007-9-1 22:34
目前我们的自动化测试框架和 yabest  说的差不多。我想楼主可以借鉴一下yabest 的做法,根据你的实际情况,搭建合适的框架。
作者: vaguely    时间: 2007-9-3 11:19
非常感谢yabest 和walker1020 !!!
作者: vaguely    时间: 2007-9-3 20:16
不好意思,还想继续请教yabest 和walker1020


"呵呵,我们的框架里,脚本都写在函数里面"
这样的话,除非是全部用DP, 否则和各个具体TEST CASE关联的OBJECT DEPOSITORY怎么包含进去呢?
我很困惑。

谢谢
作者: walker1020    时间: 2007-9-3 22:54
标题: To vaguely
1, 没有必要把所有的脚本都写在函数里面,特别是那些只会运行一次的脚本。我们目前的主要做法是: 与Object Repository有关联的内容都放在了脚本里面,否则就写在Function里面放在了 公共的VBS文件里面。
2,在Action里面也可以写Function。既然在 Action里面可以使用Object Repository相关联的对象及其操作,那么从理论上来说,在ExpertView里写的 Function 也可以使用Object Repository里的对象及其操作。 这一点尚待验证。
3,考虑到GUI的变化,有些Test Case全部是用描述性编程的语句来写的,因此 它们就都是由函数来组成的了。

[ 本帖最后由 walker1020 于 2007-9-3 22:56 编辑 ]
作者: jackymail    时间: 2007-9-3 23:02
有经验的人往往不愿意分享他们全部的东西,比如firefox在qtp中如何被支持,我问了好几天都没有人回答,回答了也只是说:能用。


关于你的问题我没有太看明白,给你个建议:
可以声明数组:
dim action1(3)
dim action2(5)
dim action3(2)
action1(0)="liang"
action1(1)="guo"
action....
action3(1)="finish"
把这个段保存到一个vbs里面,也就是qtp的library里面,然后在需要使用的地方通过option->test settings->resouces关联一下就可以直接使用了。
他们所说的object repository是所有action用到的对象的汇总。汇总的文件tsr需要关联到各个使用的action里面。

原帖由 vaguely 于 2007-9-3 20:16 发表
不好意思,还想继续请教yabest 和walker1020


"呵呵,我们的框架里,脚本都写在函数里面"
这样的话,除非是全部用DP, 否则和各个具体TEST CASE关联的OBJECT DEPOSITORY怎么包含进去呢?
我很困惑。

谢谢

[ 本帖最后由 jackymail 于 2007-9-3 23:09 编辑 ]
作者: vaguely    时间: 2007-9-3 23:45
TO walker1020 (walker)
"没有必要把所有的脚本都写在函数里面,特别是那些只会运行一次的脚本。我们目前的主要做法是: 与Object Repository有关联的内容都放在了脚本里面,否则就写在Function里面放在了 公共的VBS文件里"
谢谢您的回答,不过我觉得这样做有点不统一:)

To yabest :
还没有看到您的回答,但我印象中,您是尽量不用DP的。所以很想知道您是怎么处理函数和OR的关系的

To jackymail :
谢谢回答。但是我也没看看懂。请问
每个action数组中的值是什么意思呢?是代表不同的功能么?

我也准备用Firefox做测试,如果可以,请您给我一个msn,我们可以讨论。谢谢
作者: yabest    时间: 2007-9-4 00:41
原帖由 vaguely 于 2007-9-3 23:45 发表
TO walker1020 (walker)

"没有必要把所有的脚本都写在函数里面,特别是那些只会运行一次的脚本。我们目前的主要做法是: 与Object Repository有关联的内容都放在了脚本里面,否则就写在Function里面放在了 公共的VBS文件里"
谢谢您的回答,不过我觉得这样做有点不统一:)

To yabest :
还没有看到您的回答,但我印象中,您是尽量不用DP的。所以很想知道您是怎么处理函数和OR的关系的



测试脚本不管是写在Action里还是写在Function里,都可以一样的使用OR的,不是说写在函数里就不能使用OR了。
我们的OR是Shared模式的,整个Test里的全部Action都使用同一个Shared模式OR。不是使用Per-Action模式OR。
OR是被测软件的映像,每个OR文件对应每个被测软件的每个版本,比如 NMS_V1.0.tsr, OSS_V2.0.tsr
你要测试哪个系统,就把对应的OR文件载入,然后所有Action和Function里的脚本,都可以使用这个OR文件,来操作被测软件了。

[ 本帖最后由 yabest 于 2007-9-4 00:44 编辑 ]
作者: jackymail    时间: 2007-9-4 00:49
虚心向你学习。分享点资料啥的给我看看阿。。。。发邮件,即时消息,来电来函均可。。。期待·!!
楼主关于数组的问题你要是有疑问我不知道该怎么解释了。数组就是excel和数据库的鼻祖。。。我觉得。呵呵。我只是提供一种存储数据的方法。


原帖由 yabest 于 2007-9-4 00:41 发表


测试脚本不管是写在Action里还是写在Function里,都可以一样的使用OR的,不是说写在函数里就不能使用OR了。
我们的OR是Shared模式的,整个Test里的全部Action都使用同一个Shared模式OR。不是使用Per-Actio ...

[ 本帖最后由 jackymail 于 2010-4-27 15:26 编辑 ]
作者: wtucel    时间: 2007-9-4 09:08
方法多种多样,不一定别人说的就一定是最适合你的,上面几个高手说的方法我基本都实践过,最后我的大量脚本还是使用的最原始的方法,就是8楼的兄弟说的使用外部EXCEL。原因就是我的脚本有时并不是我自己来跑,别人也要用,自己搞复杂了,人家难理解。具体情况具体分析,别太死。
作者: walker1020    时间: 2007-9-4 09:46
不同的项目,有不同的要求,因此有自动化测试框架是合理的,也是必然的。我说的方法只是根据我的实践和理解给你提供的建议,
至于具体适合你,只有靠你去实践了。就像我的签名说的那样:“实践是检验真理的唯一标准”。我不了解你的具体情况,所以还是靠你在
实践中去检验哪种方法最适合你,找到合适的方法。

另外,内容相对于形式来说,内容是最重要的,千万不要为了形式而全部使用 Action或 Function。个人建议,仅供参考。
作者: vaguely    时间: 2007-9-4 11:18
谢谢楼上各位的热心回答,现在我要去实践拉sdlkfj6




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2