致力于软件自动化测试的研究和探索

浅析自动化测试框架EMOS

上一篇 / 下一篇  2008-02-20 10:48:04 / 天气: 晴朗 / 心情: 高兴 / 精华(1) / 置顶(1) / 个人分类:蓝天测试

查看( 3534 ) / 评论( 13 )
题记
V;J XD#f/G&Z'w8f0        因为我在学习EMOS时在国内找相关的资料,发现国内在这方面的资料几乎是空白,不知道是因为WR在国内用的少呢,还是怎么的。所以就把自己在学习该框架时总结的一些东西分享给大家。当然我学习它时间也不长,所以分析的还是非常浅显,如果有朋友发现有不足之处,还请指正,也欢迎大家和我交流这方面的东西,我的QQ为236835793,MSN为  lantian.wei@hotmail.com
+]?1XZ7x2gnh051Testing软件测试网XlzEf\ G#G$z"T
一 EMOS简介51Testing软件测试网C/~GUf%h Z,uD
EMOS是基于WinRunner的大型的,功能强大的自动化开源框架,是由WinRunner的TSL语言写成。该框架由德国自动化测试工程师开发而成,在全世界许多企业中被验证该框架是高效,稳定的。
6[o&~z"L:w`X0
C }+Dkl0二 使用51Testing软件测试网!]&EE%["Fre(Z
1.下载EMOS:http://emos-framework.sourceforge.net/
5@/XE/ft6T02.将下载的文件EMOS_GPL_v1_4_2解压WINRUNNER的安装目录/lib/下
e u4Q n(~}03.下载一个例子,这里我建议使用FlightDemo51Testing软件测试网Jar6B#_1|,~
4.将FlightDemo解压到任何目录51Testing软件测试网2TC9q#U#Ojp\
5.启动WINRUNNER,在TOOLS-GENERAL OPTIONS-STARTTEST UP中选择FlightDemo中scrīpt下的startup51Testing软件测试网5]{#wLAO&C0q
6.重启WINRUNNER
2Z,H h Z NJ07.打开kickoff并运行,在弹出的对话框中提示符如果后面有?的你可以输入YES或NO来表示执行还是跳过;在弹出的对话框中提示符如果后面有数字的,你可以输入数字,表示你要运行哪个用例,当然你也可以用,比如1-5这样的形式。
lTuJ1j4ZZ3bh0注意:可能你第一次在跑startup脚本时会报一个错,提示一个无效的字符串,可能是由于源代码不是英语的缘故,使其无法显示,你需要把???改成Sheet1,也就是默认读第一张表。51Testing软件测试网~E O#nG

wG;A6s:@$V0三 框架的组织结构
&Nh9FDut|0有四个核心文件:51Testing软件测试网 t vR Qd!G;AL8O Hqu
1.        FRM 是本框架的核心,核心控制代码都在这里51Testing软件测试网!|s"@ V7Xk3Q|6Y.G
2.        STD 标准代码,主要是对WINRUNNER的基础函数进行了重写和增加了一些WINRUNNER本身没有提供的功能函数
0{k {7A0N8Yd3t03.        DDT 数据驱动脚本,主要是对EXCEL的数据的读写处理51Testing软件测试网w? ^1H,Ne`4i
4.        emosinit 框架初始化脚本,负责将框架脚本加载到测试中
g"m ?7O VU&I"K051Testing软件测试网q~$R)LG$K2l
四 测试实例的组织结构
6B"VC/O Z?01.DATA 测试用例文件(测试用例集文件和测试用例文件)
2R.yw II1K j|x5g R02.scrīpt 脚本文件和对象库51Testing软件测试网 uq*XOKul _ va
        2.1 GUI 对象库文件51Testing软件测试网*I6q8{!j mf K,lN y.`q4M
           2.2 DRV 驱动文件(驱动用例集和驱动单个测试文件,其中main_lib非常重要,必须有AUT_DRV_report,AUT_DRV_load,AUT_DRV_init_steps,AUT_DRV_call_block这四个函数,他们和FRM_DRV_test_driver中的脚本是对应的,否则无法运行,所以在创建项目的时候必须编写这四个脚本51Testing软件测试网?4_a y8NxF8N
        2.3 LIB 测试脚本文件51Testing软件测试网&O~Qb Bt@vB VEV
                2.31 AUT_LIB,FRM_LIB 笔者认为这两个文件夹可以归并到一起,主要是放置对于整个测试的公用脚本
(a0k1j4Li3^0                2.32 FRM 具体业务流脚本,主要是不可复用的脚本,可以根据具体的业务功能进行划分成多个脚本51Testing软件测试网-W])t`7OR5M"G-V
3.Startup 初始化测试环境51Testing软件测试网'J9[w jP(s:{6{1Z
4.Kickoff 驱动这个测试,入口点为用例集
*U~O(f7wu|Q0e051Testing软件测试网t%h&n5j"f;un b4b
五 框架的核心思想
(vlpBFp6V9|P0通过Testsequence行中实现自动化测试用例的编写,通过Block实现测试脚本的复用(既单个业务功能点),在测试用例文件中一列对应一个测试用例(当然它也可以实现圈套)。51Testing软件测试网V,T1CxD0raL{

6B@0JD-F%JV;q&JN8@0六 总结51Testing软件测试网j M2j7aYt
不愧是高手们设计的大型框架,这是一个非常经典表驱动的框架,但还称不上是关键字驱动,因为该框架还是需要写比较多的测试脚本的,但已经非常完善,仔细品味会发现现在的QTP可以在它里面找到很多影子,比如该框架中的Block就相当于QTP中的Action,只不过QTP做的更好罢了,不知道当初QTP的设计是不是从这个框架而来,呵呵。。。该框架非常灵活,可以处理非常多的情况,但另一方面又增加了它的复杂性,它的执行流确实比较复杂!笔者觉得该框架的核心思想和出错处理是本框架最大的闪光点。
相关阅读:

TAG: 蓝天测试

dionysus的个人空间 dionysus 发布于2008-02-21 23:05:39
不错,支持一下,EMOS我很久以前试过,基本上没怎麽弄明白它的使用
frTx5d/z7fn%_7y51Testing软件测试网支持lz继续探索下去!想看到更深入的应用,让WR重新应用起来
Snail's Home FLY000 发布于2008-07-16 16:21:32
我基本上是看了都不知道是怎么回事
hnp2008发布于2008-09-25 16:16:26
花了半天时间,看了以后基本不知道它在测试中能做什么??
xiazaia发布于2008-10-06 10:28:42
简单来说就是qtp..?
lingtingcrop的个人空间 lingtingcrop 发布于2009-03-17 15:37:45
有难度   有挑战
sunhope800发布于2009-07-28 15:12:31
看来我要多学习才能看懂!
春暖花开 liujinkui 发布于2009-07-29 13:33:37
这么好的贴子怎么沉了这么久。51Testing软件测试网Lv8J2Ak        iN_
P

努力学习.
aioha发布于2009-10-28 10:33:52
回复 8# 的帖子
开始学习中。。。
aioha发布于2009-11-27 22:22:11
学习了下,有问题请教:软件测试,软件测试论坛,软件测试方法,软件测试工具,软件测试流程,软件测试培训,软件测试外包,软件质量管理 ,软件缺陷跟踪,软件配置工具 b;@k2m/@cZn
1)按照test sequence调用脚本测试时,block function好像并没有真正消除硬编码,各test primitive实现及GUI object的操作,都是硬编码。不知道我的理解对不,似乎还有优化的空间?
[lR$bhbt51Testing软件测试网2)WinRunner哪个函数可以获取某个object所在的窗口呢?
蓝天伟测试之家 lantianwei 发布于2009-11-27 22:56:01
回复 10# 的帖子
1. 确实需要写脚本 也就是你说的硬编码 所以我说它是表驱动框架而非关键字驱动
JD4n;K
N
Jwww.51testing.com
2. N年没有WR了,忘的差不多了 你看看有没有像GETPARENT这样的方法
aioha发布于2009-11-28 19:42:13
谢谢版主!4S"Ysu[C0m!b
EMOS中根据test block调用相应的脚本,不是关键字驱动吗?
-_b5JTK&TU8lQ;c:?51Testing软件测试网我现在在把block function中的硬编码部分进行修改,实现参数化。可是在对object进行操作时,无法表达对前后操作的关联,遇到难题了。。。。。
蓝天伟测试之家 lantianwei 发布于2009-11-28 21:46:46
回复 12# 的帖子
1. 看你对关键字怎么理解的 一般意义上讲 像OBJ.ACTION()这样的才算关键字 比如QTP里的那个关键字视图就是典型的关键字驱动
_ap4MHN5~软件测试 - 软件测试论坛 - 软件缺陷跟踪 - 软件配置工具 - 测试用例设计 - Web测试 -  自动化测试工具2. 把block function中的硬编码部分进行修改,实现参数化&o/V1wK;}!IKM^-G
》这是比较好的做法 可以增加脚本的复用性51Testing软件测试网%m8La9e9K8O4s
可是在对object进行操作时,无法表达对前后操作的关联
EMe B}-G0P1BGnUwww.51testing.com》不大明白你的意思 但我知道这肯定是可以实现的 你自己努力想想吧
aioha发布于2009-12-08 22:23:15
我的问题解决了。有空了再整理下。。。软件测试,软件测试论坛,软件测试方法,软件测试工具,软件测试流程,软件测试培训,软件测试外包,软件质量管理 ,软件缺陷跟踪,软件配置工具O8G(mV!Z ZP6u
有谁在实际工作中用过EMOS吗,感觉如何?
我来说两句

(可选)

Open Toolbar