一.
概述
当时,公司购买了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能更方便更好的实现,白花了那么多银子
分享到:
相关推荐
从xml测试套件在Google地图上映射路线的快速方法 专为读取XML测试套件案例而设计,可用于路由,并为Google地图,此处地图和沙盒地图提供了轻松访问。 供Telenav内部人员使用。 该插件将提醒用户该测试需要哪些设置,...
KivaKit扩展0.9.0-快照 该项目包含扩展KivaKit...Java文档 专案 kivakit数据 Javadoc覆盖范围 kivakit数据压缩 kivakit-数据格式-csv kivakit-数据格式库 版权所有:copyright:2011-2021 Telenav ,Inc.,根据Apache许可
由于提供的内容实际上是关于GPS导航软件TeleNav的功能介绍,它主要涉及软件如何在使用中为用户提供语音提示和导航信息,帮助用户轻松找到餐馆、银行、咖啡馆等。TeleNav GPS Navigator这一部分介绍与七年级美术教育...
全球领先的车队管理系统供应商包括Omnitracs、Trimble、Fleetmatics、Alphabet(Google旗下的Waymo等)和Telenav等,它们在技术创新和市场占有率上占据重要地位。 根据产品类型,车队管理系统可以分为三个主要类别...
压缩包内的文件名称列表,如TeleNav51_RIM_GPS-1.cod到TeleNav51_RIM_GPS.cod,可能代表软件的不同组件或者版本,这些文件是软件安装和运行所必需的部分,包含了程序代码、资源文件等。 总的来说,中国移动黑莓GPS...
另外,文件中还提到了多个与地图服务相关的公司和项目,包括DigitalGlobe、Apple Maps、Telenav、OpenStreetCam、Facebook、Microsoft Bing Map等,这些可能是在文件的上下文中讨论与地图数据、地图服务提供商、地图...
来源:Licence:MIT平台:iOS设备:iPhone / iPad作者:TeleNav_ShawnMa 自定义AlertView/LoadingView,包括背景颜色、文字等等,支持队列显示,即可以连续... Code4App编译测试,适用环境:Xcode 4.3, iOS 5.0。
来源:Licence:MIT平台:iOS设备:iPhone / iPad作者:TeleNav_ShawnMa 实现表情键盘例子。...感谢开发者@TeleNav_ShawnMa 分享代码于Code4App。 Code4App编译测试,适用环境:Xcode 4.3, iOS 5.0。
来源:Licence:MIT平台:iOS设备:iPhone / iPad作者:TeleNav_ShawnMa 一个城市选择的选择器,可以选择省份、城市。包含国内主要城市数据. Code4App编译测试,适用环境:Xcode 4.3, iOS 5.0。
- **主要竞争者**:全球范围内,主要的车队管理系统供应商包括Omnitracs、Trimble、Fleetmatics、Alphabet、Telenav等,这些企业占据了大约25%的市场份额。 - **区域分布**:北美地区占据全球市场约30%的份额,而...
要求[PostgreSQL] ( ) [PostGIS] ( ) [PGRouting] ( )安装什么都没有做!OSM 维基链接[轮椅标签] ( ) [Telenav 标签] ( )数据模型方法道路是表示路径、道路和高速公路的线性要素。必需的标签[name] ( ) - 路径的名称...
描述中提到的“作者Telenav”是指这个项目的创建者,Telenav是一家知名的位置服务和导航软件公司。他们开发的ExpandablePager可能是为了提供更灵活的界面导航和展示方式。"源码ExpandablePager"意味着我们可以通过...
compile 'com.telenav.expandablepager:expandablepager:0.2.1' Step 2 Extend desired adapter: ExpandablePagerAdapter (don't forget to override instantiateItem) public class MyAdapter extends ...
NodeFlow NodeFlow is an Android library...compile 'com.telenav.nodeflow:nodeflow:0.1.2' Step 2 Extend NodeFlowLayout class and implement abstract methods public class MyFlow extends NodeFlowLayout { ...
<groupId>com.telenav.lexakai</groupId> <artifactId>lexakai <version>0.9.4 概括 Lexakai-来自lexis(希腊语为“ word”)和kai(夏威夷语为“ ocean”)。 从每个maven或gradle项目的源代码中创建文档索引...