在TeleNav做测试之silktest

一. 概述
当时,公司购买了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能更方便更好的实现,白花了那么多银子

你可能感兴趣的:(数据结构,Web,脚本,IE,firefox)