一.
概述
当时,公司购买了Silk Test做为web自动化测试的工具,主要用来对已经成型的产品,做自动化回归测试之用.以现在的经验来看,这万把美金花得有点不值得.开源工具如selenium完全可以取代.
二.
程序主要结构
1.页面元素的存储
把所有的页面的元素存放在一个名字类似AllPages.inc的文件里,每个页面是一个父节点,页面中的元素做为子节点,代码如下:
window BrowserChild PrintPage
[ ] tag "ATT Navigator"
[ ] parent Browser
[+] HtmlImage Http17216100181TNcomGe
[ ] tag "$http:??172.16.100.181?TNcom?getMapImage.do?lat=&lon=&scale=3&wi"
[+] HtmlText TheMapDatabaseUsedForThe
[ ] tag "The map database used for the TeleNav service may not always reflect reality, due to, among other things, road closures, const*"
[+] HtmlImage Print2
[+] multitag "Print[2]"
[ ] "$http:??172.16.100.181?TNcom?images?menu?print.png[2]"
[+] HtmlLink Personal
[+] multitag "Personal"
[ ] "$http:??www.wireless.att.com?cell-phone-service?welcome"
[+] HtmlTextField StartAddress
[ ] tag "$first1"
总之就是个树形结构,元素可能处于树的各种层次,tag显示的是元素的属性
2.将常用的功能封装成函数到一个文件中
新建一个AllFunctions.inc,将常用的功能比如SignIn(), SignOut()等封装.
SingOut代码如下:
[+] Boolean SignOut()
[-] do
[ ] BrowserPage.SetActive()
[ ]
[-] if (BrowserPage.HtmlList("$sub-nav").HtmlLink("Log out").Exists(5))
[ ] BrowserPage.HtmlList("$sub-nav").HtmlLink("Log out").Click()
[ ]
[ ] return true
[ ]
[-] except
[ ] LogError("****Error:Error happens when sign out ATT web****")
[ ] ExceptLog()
[ ] return false
[ ]
3.编写测试用例
新建一个AllTestCases.t文件,用来编写test case,写成的test case大概是这样的:
[+] testcase SignIn_ValidPTN()
[-] do
[-] if (gsATTPTN==NULL || len(gsATTPTN)==0)
[ ] InitialAllConfItems()
[ ]
[ ] Verify(SignIn(gsATTPTN,gsATTPTN_PIN,False),True)
[ ]
[-] if (MyAddresses.MyAccount.WelcomeToATTNavigator.Exists(5))
[ ] writeTestResultsToFile(GetTestCaseName()+":PASSED:ATT active user can login successfully:ATT active user can login successfully")
[-] else
[ ] writeTestResultsToFile(GetTestCaseName()+":FAILED:ATT active user can login successfully:ATT active user can't login successfully")
[ ]
[ ] SignOut()
[ ]
[-] except
[ ] writeTestResultsToFile(GetTestCaseName()+":ERROR:ATT active user can login successfully:Encounter error when ATT active user login")
[ ] ExceptLog()
[ ]
一个.t文件中可以写很多个test case.整个程序结构就是这三部分.
三.
几点说明
1.所有的测试数据会放在外部文件中
2.每个test执行之前,系统自动会调用TestCaseEnter()方法,执行完后,自动调用TestCaseExit()方法.会做一些诸如杀浏览器进程,清除缓存之类的事情,根据需要自己决定.
3.可以设置在IE或者FireFox下运行
四.
一些看法
1.由于元素是存储在树形结构中,当层次较多时,引用一个元素很不方便,而且当UI位置发生改变时候,需要修改脚本,否则元素将找不到,这个或许silk Test本身的不足.
2.每次运行脚本,都需要自己手工寻找或者创建数据,运行完之后,这些数据大部分不能重复实用.下次运行,还要再次创建,或许应该将创建销毁数据的操作也加入脚本当中.
3.Silk Test能做的Selenium能更方便更好的实现,白花了那么多银子