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

浅析自动化测试框架EMOS

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

查看( 3494 ) / 评论( 13 )
题记51Testing软件测试网/i0QN%i5]F,s7{!N~
        因为我在学习EMOS时在国内找相关的资料,发现国内在这方面的资料几乎是空白,不知道是因为WR在国内用的少呢,还是怎么的。所以就把自己在学习该框架时总结的一些东西分享给大家。当然我学习它时间也不长,所以分析的还是非常浅显,如果有朋友发现有不足之处,还请指正,也欢迎大家和我交流这方面的东西,我的QQ为236835793,MSN为  lantian.wei@hotmail.com51Testing软件测试网j7e:wh e8t
51Testing软件测试网0Ls*f!^0y~x d/e
一 EMOS简介51Testing软件测试网S ]YG Hxy3k
EMOS是基于WinRunner的大型的,功能强大的自动化开源框架,是由WinRunner的TSL语言写成。该框架由德国自动化测试工程师开发而成,在全世界许多企业中被验证该框架是高效,稳定的。51Testing软件测试网1M+A;l E H8SQ
51Testing软件测试网jJ+]%~x
二 使用
#f|R Wm^b01.下载EMOS:http://emos-framework.sourceforge.net/51Testing软件测试网!]E"^x&Q
2.将下载的文件EMOS_GPL_v1_4_2解压WINRUNNER的安装目录/lib/下
(TU`eQ7G/oj03.下载一个例子,这里我建议使用FlightDemo
w:kzv&D;G8l04.将FlightDemo解压到任何目录51Testing软件测试网};t#xr-WQw
5.启动WINRUNNER,在TOOLS-GENERAL OPTIONS-STARTTEST UP中选择FlightDemo中scrīpt下的startup
`+Gk |i+`2N06.重启WINRUNNER51Testing软件测试网ssc KV!}
7.打开kickoff并运行,在弹出的对话框中提示符如果后面有?的你可以输入YES或NO来表示执行还是跳过;在弹出的对话框中提示符如果后面有数字的,你可以输入数字,表示你要运行哪个用例,当然你也可以用,比如1-5这样的形式。
)N#Nhv}&u5x%@Q0注意:可能你第一次在跑startup脚本时会报一个错,提示一个无效的字符串,可能是由于源代码不是英语的缘故,使其无法显示,你需要把???改成Sheet1,也就是默认读第一张表。51Testing软件测试网3|d;b7\0Q.gg
51Testing软件测试网 gdo(]Ixi[
三 框架的组织结构51Testing软件测试网T V&|$ti!p
有四个核心文件:51Testing软件测试网l7l,wBt t,?!t
1.        FRM 是本框架的核心,核心控制代码都在这里
bO&u$T7~ yG02.        STD 标准代码,主要是对WINRUNNER的基础函数进行了重写和增加了一些WINRUNNER本身没有提供的功能函数51Testing软件测试网l{![ H Hl V
3.        DDT 数据驱动脚本,主要是对EXCEL的数据的读写处理
q]e.K;j9vd WL-P04.        emosinit 框架初始化脚本,负责将框架脚本加载到测试中
~3AD{iZ051Testing软件测试网5vX|R8h.rw5@*?
四 测试实例的组织结构51Testing软件测试网e_q xA/yqZ.p
1.DATA 测试用例文件(测试用例集文件和测试用例文件)
%Y-^%cfI.R s]6GG02.scrīpt 脚本文件和对象库51Testing软件测试网&g_'m#q5F6Q^
        2.1 GUI 对象库文件51Testing软件测试网8pyQNgXJ
           2.2 DRV 驱动文件(驱动用例集和驱动单个测试文件,其中main_lib非常重要,必须有AUT_DRV_report,AUT_DRV_load,AUT_DRV_init_steps,AUT_DRV_call_block这四个函数,他们和FRM_DRV_test_driver中的脚本是对应的,否则无法运行,所以在创建项目的时候必须编写这四个脚本51Testing软件测试网n9U)d7OjEX D
        2.3 LIB 测试脚本文件
G/j5mXj#T5\0                2.31 AUT_LIB,FRM_LIB 笔者认为这两个文件夹可以归并到一起,主要是放置对于整个测试的公用脚本
C r4{;X8W1m0                2.32 FRM 具体业务流脚本,主要是不可复用的脚本,可以根据具体的业务功能进行划分成多个脚本
3U0d t5v+~!P2~hnvn03.Startup 初始化测试环境51Testing软件测试网dV Z v dtc4N d
4.Kickoff 驱动这个测试,入口点为用例集
s n EQgx/^+F ]051Testing软件测试网z:H$b+u"hp&c0x7FRNk-j
五 框架的核心思想
v'zan4T3j%D7qG0通过Testsequence行中实现自动化测试用例的编写,通过Block实现测试脚本的复用(既单个业务功能点),在测试用例文件中一列对应一个测试用例(当然它也可以实现圈套)。51Testing软件测试网*O/Pwtjk$~'q2A

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

TAG: 蓝天测试

dionysus的个人空间 dionysus 发布于2008-02-21 23:05:39
不错,支持一下,EMOS我很久以前试过,基本上没怎麽弄明白它的使用
}#U[,N
b|
支持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
这么好的贴子怎么沉了这么久。
`z7V%l,n
v
努力学习.
aioha发布于2009-10-28 10:33:52
回复 8# 的帖子
开始学习中。。。
aioha发布于2009-11-27 22:22:11
学习了下,有问题请教:

q~P
t;c)y4|f
1)按照test sequence调用脚本测试时,block function好像并没有真正消除硬编码,各test primitive实现及GUI object的操作,都是硬编码。不知道我的理解对不,似乎还有优化的空间?
3v7hSb6M/|G
`软件测试,软件测试论坛,软件测试方法,软件测试工具,软件测试流程,软件测试培训,软件测试外包,软件质量管理 ,软件缺陷跟踪,软件配置工具
2)WinRunner哪个函数可以获取某个object所在的窗口呢?
蓝天伟测试之家 lantianwei 发布于2009-11-27 22:56:01
回复 10# 的帖子
1. 确实需要写脚本 也就是你说的硬编码 所以我说它是表驱动框架而非关键字驱动51Testing软件测试网vCm7\
f*Fg^

2. N年没有WR了,忘的差不多了 你看看有没有像GETPARENT这样的方法
aioha发布于2009-11-28 19:42:13
谢谢版主!软件测试 - 软件测试论坛 - 软件缺陷跟踪 - 软件配置工具 - 测试用例设计 - Web测试 -  自动化测试工具5M ~9PqG![Vp
EMOS中根据test block调用相应的脚本,不是关键字驱动吗?软件测试 - 软件测试论坛 - 软件缺陷跟踪 - 软件配置工具 - 测试用例设计 - Web测试 -  自动化测试工具-tx7G!Hr@
我现在在把block function中的硬编码部分进行修改,实现参数化。可是在对object进行操作时,无法表达对前后操作的关联,遇到难题了。。。。。
蓝天伟测试之家 lantianwei 发布于2009-11-28 21:46:46
回复 12# 的帖子
1. 看你对关键字怎么理解的 一般意义上讲 像OBJ.ACTION()这样的才算关键字 比如QTP里的那个关键字视图就是典型的关键字驱动
#mVD(]'DC
}4_0Rd*_51Testing软件测试网
2. 把block function中的硬编码部分进行修改,实现参数化中国软件测试人的精神家园,介绍先进的软件测试工具、 软件测试流程和软件测试思想,定期举办软件测试沙龙,软件测试精品 资料下载,提供专业的软件测试培训服务/rfo:b-~Y,Wa
》这是比较好的做法 可以增加脚本的复用性
5C1w}uE {*e;p可是在对object进行操作时,无法表达对前后操作的关联软件测试,软件测试论坛,软件测试方法,软件测试工具,软件测试流程,软件测试培训,软件测试外包,软件质量管理 ,软件缺陷跟踪,软件配置工具7j:DN&["A5VC4A        j
》不大明白你的意思 但我知道这肯定是可以实现的 你自己努力想想吧
aioha发布于2009-12-08 22:23:15
我的问题解决了。有空了再整理下。。。
(Zpd}5i'D&@UbfQ有谁在实际工作中用过EMOS吗,感觉如何?
我来说两句

(可选)

Open Toolbar