SilkTest那些事儿_第一章 ST的HelloWord_录制回放1
[size=x-small;][size=12px;]?[/size]但凡程序员学习一门新语言,他要干的就是打出一个hello world来。甚至某位程序员联系书法,展开宣纸,磨好墨,tian四声(此字不会写啊)好笔,大笔一挥,就是hello world。本人这里,就用hello world来代替入门的意思。带着大家一起快速入门silktest。[/size]
[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 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. "}?
[ ] 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?这个里面说的内容我就不细说都是什么的了,对着英文单词,应该都大致明白是什么意思了。