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

浅析自动化测试框架EMOS

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

查看( 3498 ) / 评论( 13 )
题记
(\E`!Kas0        因为我在学习EMOS时在国内找相关的资料,发现国内在这方面的资料几乎是空白,不知道是因为WR在国内用的少呢,还是怎么的。所以就把自己在学习该框架时总结的一些东西分享给大家。当然我学习它时间也不长,所以分析的还是非常浅显,如果有朋友发现有不足之处,还请指正,也欢迎大家和我交流这方面的东西,我的QQ为236835793,MSN为  lantian.wei@hotmail.com
(P7{L.r C!r~J051Testing软件测试网{#pfD'~ Q:N
一 EMOS简介
4_rY4Z.zXupk0EMOS是基于WinRunner的大型的,功能强大的自动化开源框架,是由WinRunner的TSL语言写成。该框架由德国自动化测试工程师开发而成,在全世界许多企业中被验证该框架是高效,稳定的。
,v3_Gw*@'bz^|051Testing软件测试网4QO4p)XK,\.Ko7C1Ep
二 使用
8WG8gkm#]t[$_01.下载EMOS:http://emos-framework.sourceforge.net/
k].h\|h02.将下载的文件EMOS_GPL_v1_4_2解压WINRUNNER的安装目录/lib/下
9Hd O:hd4vz03.下载一个例子,这里我建议使用FlightDemo51Testing软件测试网[ }$q&U ^|7LS
4.将FlightDemo解压到任何目录
V9dpE f05.启动WINRUNNER,在TOOLS-GENERAL OPTIONS-STARTTEST UP中选择FlightDemo中scrīpt下的startup51Testing软件测试网 Ix UWmLNhOl6o|
6.重启WINRUNNER
:|JB`NjR07.打开kickoff并运行,在弹出的对话框中提示符如果后面有?的你可以输入YES或NO来表示执行还是跳过;在弹出的对话框中提示符如果后面有数字的,你可以输入数字,表示你要运行哪个用例,当然你也可以用,比如1-5这样的形式。51Testing软件测试网;cy:U1h/v9JT'j
注意:可能你第一次在跑startup脚本时会报一个错,提示一个无效的字符串,可能是由于源代码不是英语的缘故,使其无法显示,你需要把???改成Sheet1,也就是默认读第一张表。51Testing软件测试网0^yv'ro[ th7p

HjM+S9q_5@4r%sT`0三 框架的组织结构
@:V;X-w j/j0有四个核心文件:
Gz(uy$O7r8|V01.        FRM 是本框架的核心,核心控制代码都在这里51Testing软件测试网MP7}2f+L%@
2.        STD 标准代码,主要是对WINRUNNER的基础函数进行了重写和增加了一些WINRUNNER本身没有提供的功能函数
S#S yk ra03.        DDT 数据驱动脚本,主要是对EXCEL的数据的读写处理51Testing软件测试网A\[Gfa7b
4.        emosinit 框架初始化脚本,负责将框架脚本加载到测试中
Di}%Nt2h5z051Testing软件测试网V-? c*oUa8_W
四 测试实例的组织结构
C sp)js ml01.DATA 测试用例文件(测试用例集文件和测试用例文件)51Testing软件测试网g8MI#MaG X
2.scrīpt 脚本文件和对象库
h\2`%^$WXH0        2.1 GUI 对象库文件51Testing软件测试网sF2_(`|/[j Q
           2.2 DRV 驱动文件(驱动用例集和驱动单个测试文件,其中main_lib非常重要,必须有AUT_DRV_report,AUT_DRV_load,AUT_DRV_init_steps,AUT_DRV_call_block这四个函数,他们和FRM_DRV_test_driver中的脚本是对应的,否则无法运行,所以在创建项目的时候必须编写这四个脚本51Testing软件测试网| p|~%I
        2.3 LIB 测试脚本文件
(Ix @*ll:w/F e0                2.31 AUT_LIB,FRM_LIB 笔者认为这两个文件夹可以归并到一起,主要是放置对于整个测试的公用脚本51Testing软件测试网c x8h aDE$vftA9{&j]
                2.32 FRM 具体业务流脚本,主要是不可复用的脚本,可以根据具体的业务功能进行划分成多个脚本51Testing软件测试网!m:`)Q&i\eV{ f.Rg
3.Startup 初始化测试环境51Testing软件测试网;lV;B)}gW
4.Kickoff 驱动这个测试,入口点为用例集51Testing软件测试网9j2{%l2a,t{7|Y/k

WT7p-B[X0五 框架的核心思想
]qbu1]{&U-u0通过Testsequence行中实现自动化测试用例的编写,通过Block实现测试脚本的复用(既单个业务功能点),在测试用例文件中一列对应一个测试用例(当然它也可以实现圈套)。51Testing软件测试网]%`#p3e*_0g8PW

-X!gB/v:c0六 总结
7Ze'J+s|-a0M-P0不愧是高手们设计的大型框架,这是一个非常经典表驱动的框架,但还称不上是关键字驱动,因为该框架还是需要写比较多的测试脚本的,但已经非常完善,仔细品味会发现现在的QTP可以在它里面找到很多影子,比如该框架中的Block就相当于QTP中的Action,只不过QTP做的更好罢了,不知道当初QTP的设计是不是从这个框架而来,呵呵。。。该框架非常灵活,可以处理非常多的情况,但另一方面又增加了它的复杂性,它的执行流确实比较复杂!笔者觉得该框架的核心思想和出错处理是本框架最大的闪光点。
相关阅读:

TAG: 蓝天测试

dionysus的个人空间 dionysus 发布于2008-02-21 23:05:39
不错,支持一下,EMOS我很久以前试过,基本上没怎麽弄明白它的使用qCb2` yn3}e
支持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
这么好的贴子怎么沉了这么久。W7k9O_bv;@L
努力学习.
aioha发布于2009-10-28 10:33:52
回复 8# 的帖子
开始学习中。。。
aioha发布于2009-11-27 22:22:11
学习了下,有问题请教:www.51testing.com2y&B+\9EjT
1)按照test sequence调用脚本测试时,block function好像并没有真正消除硬编码,各test primitive实现及GUI object的操作,都是硬编码。不知道我的理解对不,似乎还有优化的空间?
&l
n D.F"_;D Jk中国软件测试人的精神家园,介绍先进的软件测试工具、 软件测试流程和软件测试思想,定期举办软件测试沙龙,软件测试精品 资料下载,提供专业的软件测试培训服务
2)WinRunner哪个函数可以获取某个object所在的窗口呢?
蓝天伟测试之家 lantianwei 发布于2009-11-27 22:56:01
回复 10# 的帖子
1. 确实需要写脚本 也就是你说的硬编码 所以我说它是表驱动框架而非关键字驱动
b"rwgBSjv$|www.51testing.com2. N年没有WR了,忘的差不多了 你看看有没有像GETPARENT这样的方法
aioha发布于2009-11-28 19:42:13
谢谢版主!软件测试 - 软件测试论坛 - 软件缺陷跟踪 - 软件配置工具 - 测试用例设计 - Web测试 -  自动化测试工具/p7|7A:f*tj)Z
EMOS中根据test block调用相应的脚本,不是关键字驱动吗?软件测试,软件测试论坛,软件测试方法,软件测试工具,软件测试流程,软件测试培训,软件测试外包,软件质量管理 ,软件缺陷跟踪,软件配置工具Tdt r/T!Y RA
D;e

我现在在把block function中的硬编码部分进行修改,实现参数化。可是在对object进行操作时,无法表达对前后操作的关联,遇到难题了。。。。。
蓝天伟测试之家 lantianwei 发布于2009-11-28 21:46:46
回复 12# 的帖子
1. 看你对关键字怎么理解的 一般意义上讲 像OBJ.ACTION()这样的才算关键字 比如QTP里的那个关键字视图就是典型的关键字驱动www.51testing.com/N;~d~2?v@%q
2. 把block function中的硬编码部分进行修改,实现参数化
"`m!K@ W,Jwww.51testing.com》这是比较好的做法 可以增加脚本的复用性*q1m@P,j6i(sA_
l2a`1I

可是在对object进行操作时,无法表达对前后操作的关联www.51testing.comv`&hT;a
》不大明白你的意思 但我知道这肯定是可以实现的 你自己努力想想吧
aioha发布于2009-12-08 22:23:15
我的问题解决了。有空了再整理下。。。
Rh6qt XA6A
\        f51Testing软件测试网
有谁在实际工作中用过EMOS吗,感觉如何?
我来说两句

(可选)

Open Toolbar