[size=x-small;]一般将自动化测试工具入门必从录制回放开始,一般还都选择计算器,咱也别找那个例外了,来个痛快的,速速开始。[/size]
[size=x-small;]<br>[/size]
[size=x-small;]录制回放计算器[/size]
<span style="font-family: verdana, sans-serif; line-height: 21px;">[size=x-small;]1. 新建测试项目<br>首先打开你的silktest软件,然后从菜单里选择“file->new project”,这时会弹出一个“new project”的对话框,里面有两项“create project”和"auto generate project",我们选择“create project”然后点击"ok"按钮。这时又出现了一个对话框,要求你输入project的名字,请在"project name"里面输入calculator,然后选择你要保存project的路径,例如:“d:\program files\borland\silktest\projects\calculator”,点击确定。这个时候你的新项目calculator就建好了。[/size]</span>
一连串枯燥的说明,照着做吧。
2.录制脚本
在真正的开始录制之前,先介绍一些定义,以便后面出现这些古古怪怪的东西的时候,大家能认得。aut(application under test)俗称的被测系统,比方说我们马上要录制计算器了,计算器就是被测系统。gui(graphical user interface)图形用户界面,打开计算器看到的东东就是gui,一个可以看到可以操作的界面,所谓的录制就是录制在gui上的操作。“抓取gui”这个一般是简称,说的简单点就是获取aui的gui定义。怎么理解呢?我们知道进行自动化测试,就是就是用程序或者工具模拟人工的操作,才测试系统。人是知道这个按钮是提交,那个按钮是取消,这个是用户名输入框,一看就知道了。机器不行,搞图像识别这个成本太高了。机器怎么搞啊,机器通过“抓取gui",将gui的控件进行了自己定义,比方说他发现这个提交按钮在开发的时候起了一个名字叫submit,这个界面中没显示,是这个控件的属性,虽然人看不到但是机器能读到,于是他记住了有个叫submit的按钮控件。当录制操作的时候,你点了这个按钮,机器是发现你点了一个叫submit的按钮,它就记录下来,下次回放的时候,他还点这个按钮。有意思把,根据aut的类型不同具体的识别原理略有不同,今后碰到了,我会详述一下。现在大家只要知道是机器记住了gui上控件的某些属性来识别控件的,而抓取gui就是一个识别记录的过程就行了。
[size=x-small;]现在就进行抓取gui,抓取gui之前我们先建立一个test frame文件,咱就用这个文件来放置gui的定义。首先打开程序>附件>计算器;然后选择在st中<span style="font-family: verdana, sans-serif; line-height: 21px;">选择菜单"file->new",这样你就能弹出的对话框中选择"test frame"文件类型了,然后在"new test frame"对话框中选择"application"为计算器,其他的默认好了,点击ok按钮,silktest就帮你自动在include/frame目录下生成了frame.inc文件。文件里的代码如下:[/size]</span>
[ ] const wmainwindow = 计算器[ ] [+] window mainwin 计算器 [+] multitag "计算器" [ ] "$c:\windows\system32\calc.exe" [ ] [ ] // the working directory of the application when it is invoked [ ] const sdir = "c:\windows\system32" [ ] [ ] // the command line used to invoke the application [ ] const scmdline = "c:\windows\system32\calc.exe " [ ] [ ] // the first window to appear when the application is invoked [ ] // const wstartup = ? [ ] [ ] // the list of windows the recovery system is to leave open [ ] // const lwleaveopen = {?} [ ] [+] menu 编辑e [+] multitag "编辑(e)" [ ] "#1" [+] menuitem 复制c [+] multitag "复制(c)" [ ] "#1" [ ] "$300" [+] menuitem 粘贴p [+] multitag "粘贴(p)" [ ] "#2" [ ] "$301" [+] menu 查看v [+] multitag "查看(v)" [ ] "#2" [+] menuitem 标准型t [+] multitag "标准型(t)" [ ] "#1" [ ] "$305" [+] menuitem 科学型s [+] multitag "科学型(s)" [ ] "#2" [ ] "$304" [+] menuitem 数字分组i [+] multitag "数字分组(i)" [ ] "#3" [ ] "$303" [+] menu 帮助h [+] multitag "帮助(h)" [ ] "#3" [+] menuitem 帮助主题h [+] multitag "帮助主题(h)" [ ] "#1" [ ] "$317" [+] menuitem 关于计算器a [+] multitag "关于计算器(a)" [ ] "#2" [ ] "$302" [+] textfield textfield1 [+] multitag "#1" [ ] "$403" [+] pushbutton mc [+] multitag "mc" [ ] "#4" [ ] "$113" [+] pushbutton mr [+] multitag "mr" [ ] "#10" [ ] "$114" [+] pushbutton ms [+] multitag "ms" [ ] "#16" [ ] "$115" [+] pushbutton m [+] multitag "m+" [ ] "#22" [ ] "$116" [+] pushbutton n7 [+] multitag "7" [ ] "#5" [ ] "$131" [+] pushbutton n4 [+] multitag "4" [ ] "#11" [ ] "$128" [+] pushbutton n1 [+] multitag "1" [ ] "#17" [ ] "$125" [+] pushbutton n0 [+] multitag "0" [ ] "#23" [ ] "$124" [+] pushbutton n8 [+] multitag "8" [ ] "#6" [ ] "$132" [+] pushbutton n51 [+] multitag "5" [ ] "#12" [ ] "$129" [+] pushbutton n2 [+] multitag "2" [ ] "#18" [ ] "$126" [+] pushbutton pushbutton24 [+] multitag "+?-" [ ] "#24" [ ] "$80" [+] pushbutton n91 [+] multitag "9" [ ] "#7" [ ] "$133" [+] pushbutton n6 [+] multitag "6" [ ] "#13" [ ] "$130" [+] pushbutton n3 [+] multitag "3" [ ] "#19" [ ] "$127" [+] pushbutton n16 [+] multitag "?[16]" [ ] "#25" [ ] "$85" [+] pushbutton n52 [+] multitag "?[5]" [ ] "#8" [ ] "$90" [+] pushbutton n92 [+] multitag "?[9]" [ ] "#14" [ ] "$91" [+] pushbutton pushbutton20 [+] multitag "-" [ ] "#20" [ ] "$93" [+] pushbutton pushbutton26 [+] multitag "+" [ ] "#26" [ ] "$92" [+] pushbutton pushbutton27 [+] multitag "=" [ ] "#27" [ ] "$112" [+] pushbutton backspace [+] multitag "backspace" [ ] "#1" [ ] "$83" [+] pushbutton ce [+] multitag "ce" [ ] "#2" [ ] "$82" [+] pushbutton c [+] multitag "c" [ ] "#3" [ ] "$81" [+] statictext statictext1 [+] multitag "#1" [ ] "$401" [+] pushbutton n1x [+] multitag "1?x" [ ] "#21" [ ] "$107" [+] pushbutton sqt [+] multitag "sqt" [ ] "#9" [ ] "$103" [+] pushbutton pushbutton15 [+] multitag "%" [ ] "#15" [ ] "$109" [+] statictext statictext2 [+] multitag "#2" [ ] "$1000"[+] window messageboxclass messagebox [ ] tag "~activeapp/[dialogbox]$messagebox" [+] pushbutton ok [ ] tag "ok" [+] pushbutton cancel [ ] tag "cancel" [+] pushbutton yes [ ] tag "yes" [+] pushbutton no [ ] tag "no" [+] statictext message [ ] motif tag "#2" [ ] tag "#1"[ ]
好了,你迈出了录制的坚实的一步,恭喜你下一步就要开始建立一个testcase,录制[size=x-small;]相关的操作了。<span style="font-family: verdana, sans-serif; line-height: 21px;">选择菜单的"record -> testcase...",在弹出的"record testcase"对话框中,你可以看到默认的testcase name是test1,初始状态是defaultbasestate,然后你点击startrecording按钮就可以开始录制测试用例了。[/size]</span>
<br><img src="http://dl.iteye.com/upload/attachment/492449/5d0db648-fd2d-3aff-a02e-f133b6762c9e.bmp" alt="">
看到右下角的录制窗口了,两个很重要的按钮一个pause用来暂停录制,一个done代表录制完成。
<br><img src="http://dl.iteye.com/upload/attachment/492451/df442459-cb0e-3ffe-803c-ce210b125bb5.bmp" alt="">
我们还没开始动手呢,这个窗口先不用管他,打开亲爱的计算器,弄点操作,加加减减的,尽管整。整的差不多了,按<ctrl+alt>键,别点刚才那个窗口的done按钮,不然你就看不到下一个verify window了。
<br><img src="http://dl.iteye.com/upload/attachment/492447/6f82a90a-add5-3114-b64c-dc83d35b9257.bmp" alt="">
又是一个窗口,verifywindow.这个[size=x-small;]窗口我会弄个贴图放到附件中的。不然到这里都不知道走到哪儿了,一头雾水了吧。好了这个窗口是用来设置校验的。我们应该校验什么呢,这里有很多校验比方说空间存在不存在啊,能不能用啊。我们这里校验一下结果是不是我们希望结果吧,先uncheck all,然后找到结果控件的定义,在左侧的一堆控件中找到textfield1,我抓取是这个名字,然后只选择text,果断点ok。然后这个时候又看到录制窗口,这个时候你可以勇敢地点done了。[/size]
[size=x-small;]呃,怎么还是一个窗口,没办法你需要把信息给够够的,人家才能知道你要干什么啊,recordwindow窗口,你看看你录制的代码在上面了,录制的testcase name,也该改个好听的名字吧,然后点<span style="font-family: verdana, sans-serif; line-height: 21px;">点击paste to editor。呃,还要输入文件名字,别烦马上就要到西天取到真经了,<ctrl>+s保存传统组合件,然后起一个响亮的名字,"c.t",问你加入不加入工程,必须的yes,哈哈,好了录制完成了。[/size]</span>
[-] testcase cal () [-] recording [ ] 计算器.setactive () [ ] 计算器.n1.click () [ ] 计算器.pushbutton26.click () [ ] 计算器.n2.click () [ ] 计算器.pushbutton27.click () [ ] 计算器.pushbutton26.click () [ ] 计算器.n3.click () [ ] 计算器.pushbutton27.click () [ ] 计算器.pushbutton26.click () [ ] 计算器.n6.click () [ ] 计算器.pushbutton27.click () [-] 计算器.verifyproperties ({...}) [ ] "" [ ] {} [-] {...} [-] {"textfield1", {...}} [ ] {"text", "12. "}
搞了半天就这点东西?嗯,就这点东西,这个就是录制的结果。当然我整的不够厉害,你录制的时候可能一通乱整,比我的代码就会多不少,没关系代码不一样,效果差不多。
3.回放录制的脚本
激动人心的时刻到了,被折腾了那么时间现在你要做的就是按下<f9>来执行测试脚本了,另外个人觉得用<f9>作为执行的快捷键算是比较另类的,当然各大ide一个比一个另类,也没什么好说的了。
看到飞快的执行了吧,爽吧。o(∩_∩)o哈哈~,飞快的有木有,(*^__^*) 嘻嘻……。
然后st会给你一个报告,报告的格式如下
[ ] script c.t - passed[ ] machine: (local)[ ] started: 11:07:23pm on 02-jun-2011[ ] elapsed: 0:00:03[ ] passed: 1 test (100%)[ ] failed: 0 tests (0%)[ ] totals: 1 test, 0 errors, 0 warnings[ ] [-] testcase cal - passed [ ] *** defaultbasestate is setting 计算器 active, no window was active这个里面说的内容我就不细说都是什么的了,对着英文单词,应该都大致明白是什么意思了。
总之passed 1 failed 0 ,说明咱们的脚本都通过了。
好了,恭喜恭喜,录制回放就这样说完了,简单吧。这个是一个很好的开始,其实使用自动化测试工具,录制回放是大家最爱使用的。出台频率略高。但是要做好自动化测试,录制回放只是一个进入这个殿堂的敲门砖,一切刚刚开始。那亲爱的同志们,就敬请期待我后面的博文,我会一步一步带大家走入st这条不归路的,o(∩_∩)o~。好了,今天就到这里。
<div><br>