UIAutomation开源证券么

ios automation
研究iOS的自动化测试也有些日子了,刚开始的时候,一直苦于找不到什么好的资料,只能从Apple的官网查阅相关的API文档,只可惜,Apple对开发者来说实在是不怎么友好,文档写得相当的粗略,对于初学者来说有一定的难度。
本来是打算自己动手写一篇关于iOS的UI自动化测试的入门级别的介绍性文档的,但想起来后面在具体解决一些问题的时候,收藏一篇很好的Blog,很全面地介绍了如何使用UIAutomation的做iOS程序的自动化测试。如果作者早点看到这篇文章,应该要少走一些弯路,这里没有创意性的它他翻译成中文,希望对你们有一些帮助。
原文地址:
翻译正文:
自动化测试代码可以“在你的睡着的时候”很好地帮你测试你的应用程序。它可以让你能够快速地跟踪你程序中的回归和性能方面的问题,这样你就不用担心你新增的功能会影响到你之前已经完成开发的程序了。
随着iOS4.0的发布,苹果公司同时发布了一个名为UIAutomation的测试框架,它可以用来在真实设备和iPhone模拟器上执行自动化测试。但官方关于UIAutomation的文档相当的有限,在网络上也没有太多的资源可以查找的。本文将向你展示你如何将UIAutomation整合到你的工作流程当中去。
作为基础知识的准备,你可以先看一下苹果公司,另外还有一篇快速入门的介绍也值得看看,当然,如果你有一个免费的Apple开发者账号的话,你可以看一下的幻灯片或者视频。
除此之外,包括在Xcode中的OCUnit测试框架也可以用来为你的应用程序编写单元测试。
1. 第一个UIAutomation测试脚本
使用iOS 模拟器使用iOS设备
2. 处理UIAElement和元素可访问性(Accessibility)
UIAElement层次结构模拟用户操作
3. 经验分享(让你的生活变得更简单)
类库Tune-up介绍导入外部脚本使用强大的命令行使用录制交互功能当遇到问题时,加上“UIATarget.delay(1);”
4. 高级交互
处理非预期和预期的提示框(alerts)多任务屏幕方向
有用的链接一个视频
1.&你的第一个UIAutomation测试脚本
UIAutomation的功能测试代码是用Javascript编写的。UIAutomation和Accessibility有着直接的关系,你将用到通过标签和值的访问性来获得UI元素,同时完成相应的交互操作。
下面让我们来编写我们的第一段测试代码。
使用iOS模拟器
1. 下载示例应用程序TestAutomation.xcodeproj,并打开它。这个项目是一个很简单的包含2个tab的tabbar应用程序。
2. 确保选中如下图所示的“TestAutomation & iPhone 5.0 Simulator”模式(或许你已经切换成5.1了,因此它可能是iPhone5.1模拟器)。
3. 启动Instruments(Product & Profile),或者通过?I。
4. 选择左边的iOS Simulator,然后再选择Automation模板,然后点击“Profile”。
5. Instruments就已经启动好后,然后直接开始录制了。这里先停止录制,(红包按钮或者?R)。
6. 在左边的Scripts窗口,点击“Add & Create”创建新的脚本。
7. 在脚本编辑器里,输入下面的代码
var target = UIATarget.localTarget();
var app = target.frontMostApp();
var window = app.mainWindow();
target.logElementTree();
8. 重新运行这段脚本?R(不需要保存)。脚本跑起来后,你可以在日志打完后停止它。
赞一个!我们就这样完成了我们的第一个UIAutomation测试用例。
使用iOS设备
你除了将你的测试用例运行模拟器上,也可以将它运行在一个真实的设备上。不过,自动化测试用例只能运行在支持多任务的:iPhone 3GS,iPad,iOS & 4.0等设备上。遗憾的是不管iPhone 3G的系统版本是什么,都不支持。
下面是如何操作:
1. 通过USB接口连接上你的iPhone。
2. 选择 “TestAutomation & iOS Device”模式。
3. 确保Developper profile设置成Release模式(而不是Ad-Hoc Distribution profile)。默认情况下,profiling是设置成Release模式的(因为没有必要将profile设置成Debug模式)。
5. 后面的步骤请参考前面模拟器部分。
2.&处理UIAElement和元素可访问性(Accessibility)
UIAElement层次结构
Accessibility和UIAutomation有密切的联系:如果一个控件的Accessibility是可以被访问的,你就可以设置和读取它的值,作相关的操作,而当一个控件的Accessibility不可见时,你就没有办法通过automation访问它。
你可以通过Interface Builder,或者通过在程序里设置isAccessibilityElement属性的方式来设置一个控件的Accessibility或者可被自动化。当你设置container view(即:一个视图包含其它的UIKit元素)的accessibility时,你必须注意。你设置了整个View的accessibility将会“隐藏”它的子视图的accessibility,例如:在示例项目中,你不能将outlet视图设置成可访问的,否则它所有的子控件将都不可以访问了。在任何时候,logElementTree都是你忠实的朋友:它将当前界面的所有可被访问的元素都打印在日志里。
每一个可以被访问的UIKit控件都可以用一个Javascript对象来描述,它就是一个UIAElement。UIAElement有几个属性:name, value, elements, parent。你的主窗口包含很多的控件,它们是以UIKit层次的方式定义的,这些UIKit层次结构对应的是UIAElement的层次树。例如:前面的测试代码中,通过调用logElementTree,我们可以得到如下面所示的树结构:
+- UIATarget: name:iPhone Simulator rect:{{0,0},{320,480}}
| +- UIAApplication: name:TestAutomation rect:{{0,20},{320,460}}
| | +- UIAWindow: rect:{{0,0},{320,480}}
| | | +- UIAStaticText: name:First View value:First View rect:{{54,52},{212,43}}
| | | +- UIATextField: name:User Text value:Tap Some Text Here ! rect:{{20,179},{280,31}}
| | | +- UIAStaticText: name:The text is: value:The text is: rect:{{20,231},{112,21}}
| | | +- UIAStaticText: value: rect:{{145,231},{155,21}}
| | | +- UIATabBar: rect:{{0,431},{320,49}}
| | | | +- UIAImage: rect:{{0,431},{320,49}}
| | | | +- UIAButton: name:First value:1 rect:{{2,432},{156,48}}
| | | | +- UIAButton: name:Second rect:{{162,432},{156,48}}
你可以通过下面的代码来访问文本框:
var textField =
UIATarget.localTarget().frontMostApp().mainWindow().textFields()[0];
你可以选择通过从0开始的索引或者这个元素的名称来访问这个元素,例如:你也可以通过下面的代码来访问文本控件。
var textField =
UIATarget.localTarget().frontMostApp().mainWindow().textFields()[&User Text&];
后一种方式更加清晰明了,应该多使用。你可以通过Interface Builder设置UIAElement的name属性,
或者通过编写代码的方式:
myTextField.accessibilityEnabled = YES;
myTextField.accessibilityLabel = @&User Text&;
你现在可以看到,通过accessibility属性可以被UIAutomation用来找到不同的控件。这非常的清晰,因为,第一,你只要学习一个测试框架;第二,通过编写自动化测试代码,你同时还可以保证你的程序是可以被访问的。因此,每一个UIAElement对象的子控件可以通过下面的方法进行访问:
buttons(), images(), scrollViews(),textFields(), webViews(), segmentedControls(), sliders(), staticTexts(), switches(), tabBar(),tableViews(), textViews(), toolbar(), toolbars() 等等……
你可以通过如下代码在tabbar上访问第一个tab:
var tabBar = UIATarget.localTarget().frontMostApp().tabBar();
var tabButton = tabBar.buttons()[&First&];
UIAElement结构层次非常的重要,你以后会常常用到它。而且你还要记住,你可以在随时通过调用UIAAplication的logElementTree来获得它的结构。
UIATarget.localTarget().frontMostApp().logElementTree();
在模拟器上,你还可以激活Accessibility 的检测器。启动模拟器,找到“Settings & General & Accessibility & Accessibility Inspector”,然后将它设为“打开”状态。
这个彩色的小框框就是Accessibility 检测器了。当它收起来的时候,Accessibility就被关闭了,当它展开的时候,Accessibility就是打开的。你只要点击上面的箭头按钮就可以激活或者屏蔽Accessibility。现在,打开我们的示例程序,激活检测器。
然后,点击文本框,检查UIAElement的name和value属性(其实就是accessibilityLabel和accessibilityValue对应的NSObject类型的值)。这个检测器可以帮助你调试和编写你的测试代码。
模拟用户操作
让我们更进一步,模拟一些用户的交互操作。你可以简单地调用按钮的tap()来作一个点击操作:
var tabBar = UIATarget.localTarget().frontMostApp().tabBar();
var tabButton = tabBar.buttons()[&First&];
// Tap the tab bar !
tabButton.tap();
你还可以调用UIAButtons的doubleTap(), twoFingerTap()。如果你不想操作具体的某个元素,你也可以直接根据屏幕上指定的坐标点进行操作,你可以这么用:
UIATarget.localTarget().tap({x:100, y:200});
UIATarget.localTarget().doubleTap({x:100, y:200});
UIATarget.localTarget().twoFingerTap({x:100, y:200});
UIATarget.localTarget().pinchOpenFromToForDuration({x:20, y:200},{x:300, y:200},2);
UIATarget.localTarget().pinchCloseFromToForDuration({x:20, y:200}, {x:300, y:200},2);
拖拽与划动:
UIATarget.localTarget().dragFromToForDuration({x:160, y:200},{x:160,y:400},1);
UIATarget.localTarget().flickFromTo({x:160, y:200},{x:160, y:400});
注意,当你指定操作的时间间隔的时候,它是有特定的范围的,即:拖拽操作的时间间隔必须大于或者等于0.5秒,小于60秒。
现在,让我们来练习一下:
停止Instruments (?R)在Scripts窗口里, 移除当前的脚本点击“Add & Import”然后选择TestAutomation/TestUI/Test-1.js(将下面的代码保存到这个路径)点击录制按钮 (?R) 然后看看将会发生什么…
下面是Test-1.js代码:
var testName = &Test 1&;
var target = UIATarget.localTarget();
var app = target.frontMostApp();
var window = app.mainWindow();
UIALogger.logStart( testName );
app.logElementTree();
//-- select the elements
UIALogger.logMessage( &Select the first tab& );
var tabBar = app.tabBar();
var selectedTabName = tabBar.selectedButton().name();
if (selectedTabName != &First&) {
tabBar.buttons()[&First&].tap();
//-- tap on the text fiels
UIALogger.logMessage( &Tap on the text field now& );
var recipeName = &Unusually Long Name for a Recipe&;
window.textFields()[0].setValue(recipeName);
target.delay( 2 );
//-- tap on the text fiels
UIALogger.logMessage( &Dismiss the keyboard& );
app.logElementTree();
app.keyboard().buttons()[&return&].tap();
var textValue = window.staticTexts()[&RecipeName&].value();
if (textValue === recipeName){
UIALogger.logPass( testName );
UIALogger.logFail( testName );
这段脚本先启动待测程序,然后,如果第一个tab没有被选的话就切换到第一个tab,并将上面的文本框的值设成“Unusually Long Name for a Recipe”,接着收起虚拟键盘。这里有一些新的方法值得注意的:UIATarget的delay(Number timeInterval) 方法允许你在两个操作之间做一些等待,UIALogger的logMessage( String message) 方法用来将你想打印的信息输出到日志上去,UIALogger的logPass(String message)方法指明你的测试脚本已经成功的完成测试了。
你还知道了如何访问键盘上的按钮,然后作点击操作:
app.keyboard().buttons()[&return&].tap();
由于时间有限且原文太长,先只能翻译到这里,我会尽快的将剩下的部分翻译补上。另外,时间仓促,如有翻译得不准确的地方,也敬请担待。谢谢。
本文由的Dawson Liu翻译,转载请注明出处。
致力于移动平台自动化测试技术的研究,我们希望通过向社区贡献知识和开源项目,来促进行业和自身的发展。
var isLogined = var cb_blogId = 123488; var cb_entryId = 2631949; var cb_blogApp = currentBlogA var cb_blogUserGuid = &4c20a564-9fd4-e111-aa3f-842b2b196315&; var cb_entryCreatedDate = ' 15:47:00'; var enableGoogleAd = var googletag
= googletag || {}; googletag.cmd = googletag.cmd || [];
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:155388次
积分:1902
积分:1902
排名:第18759名
转载:223篇
评论:18条
(2)(1)(5)(7)(27)(5)(2)(1)(2)(1)(1)(3)(1)(5)(5)(7)(2)(2)(3)(5)(4)(2)(1)(1)(2)(1)(5)(2)(22)(9)(7)(10)(21)(56)金钱鳘又称黄唇鱼,目前已经接近濒危灭绝的状态。
赴日游客越来越多,国内游客成为黑心商家的肥肉。
声明:本文由入驻搜狐公众平台的作者撰写,除搜狐官方账号外,观点仅代表作者本人,不代表搜狐立场。
  不知道上次看完文章的小伙伴,有没有点感悟;
  说完UITest,让我们再了解这个自动化框架;
  Appium
  Appium作为一个开源的、跨平台的自动化测试工具,适用于测试原生或混合型移动App。 Appium的核心是一个web服务器,他使用WebDriver json wire协议,来驱动系统的UIAutomation(UIAutomation后续会详细介绍)库。 WebDriver Json wire协议的Server端采用node.js封装了iOS UI Automation的接口,提供提供出一套RESTFul web service的接口,这样Client端以HTTP请求获得操纵UI的能力。 说到底,真正执行测试的还是 UIAutomation,Appium只是封装或解释了UIAutomation的执行脚本,作为UIAutomation和被测试APP的中间层传递消息。
  让我们分析一下appium的优缺点:
  优点:
  (1) 跨平台 - appium可以很好的融合在addroid和iOS系统之间
  (2) 支持多种语言 - 支持各种语言对appium的脚本编写,但是好像oc的支持不太好
  (3) 不依赖源代码 - 不用依赖于源码的支持,这是一个很突出的亮点
  (4) 开源 - 这个说主要也不算主要,因为appium是给予UIAutomaiton之上的,而UIAutomation不是开源的
  缺点:
  (1) 环境配置较繁琐 - 配置及其繁琐,而且问题较多,需要你耐心的就一点点解决,iOS版本更为严重
  (2) 不支持自定义控件
  (3) UIWebView的状态不可访问
  (4) 无法脱机跑,需要连着Mac机器 - 这是iOS自动化框架共有的硬伤
  (5) 支持系统效率慢 - 这是我认为这个框架比较严重的伤,由于不是苹果公司自有的框架,在支持上总慢一两个月,所以很多人在适配新系统的时候比较头疼
  适用场景:
  多平台的应用测试或是web应用测试。
  测试脚本:
  Appium是由client和server组成,client提供多种语言的API,这些API是对WebDriver的扩展和封装,利用这些API就可以快速编写测试用例;client和server间通过符合Mobile JSON Wire Protocol的http请求进行交互。下面是Appium在iOS上的一个架构图:
  1.上图左边为Appium client端,除手机外的部分为server端,client和server的通信是通过http进行的, 所以不管用什么语言实现,只要client能发出符合协议的http请求就可以,这就是Appium支持多种语言的原因。 2.又由于WebDriver已经够好的了,为了避免重复造轮子,Appium对WebDriver的API进行了扩展,WebDriver 已经binding的语言都可以拿来用,省去了为每种语言开发一个client的工作量。 3.Appium的server部分主要功能是监听一个端口,接收由client发送来的http请求后进行翻译,调用苹果官方 提供的UIAutomation库来进行模拟点击等操作,操作后移动设备把执行结果返回给server,server再把结果 返回给client。 4.图中的Instruments command server维护了一个command队列,Instruments command client从中取走命令并在iOS的instruments环境中的bootstrap.js中执行。
  框架的原理相对简单,大家可以熟悉一下,在github上也有源码,大家可以去看一下。/testerhome/appium-chinese-tutorial
  安装及配置
  我简单的介绍一下安装过程,可能在安装过程中,会遇到一下问题,这里就不一一举例了,我们后续讨论
  brew安装。brew之于OS X如同apt之于Ubuntu。 Node安装 brew install node 安装Appium server l install globally npm install -g appium npm install wd 安装Appium Client 安装 selenium python-client 下载 https://pypi.python.org/packages/source/s/selenium/selenium-2.42.1.tar.gz python setup.py install 安装 appium python-client 下载 /appium/python-client/archive/master.zip python setup.py install 启动Appium server ~ appium info: Welcome to Appium v1.1.0 (REV e433bbcdb2bcb32117) info: Appium REST http interface listener started on 0.0.0.0:4723 info: LogLevel: debug
  获取控件
  根据”class”定位 el = self.driver.find_elements_by_class_name(‘UIAButton’) 根据”xpath”定位 el = self.driver.find_element_by_xpath(‘//UIAMapView[1]’) iOS uiautomation sum = self.driver.find_element_by_ios_uiautomation(‘elements()[3]’).text 一个递归地、使用本地Accessibility的Name进行元素搜索的字符串 element = self.driver.find_element_by_name(“Test Gesture”)
  同时,Appuim还提供一个第三文的工具Appium Inspector,以方便定位控件:
  执行操作 滑动屏幕 self.driver.execute_(“mobile: swipe”, {“touchCount”: 1 , “startX”: x1, “startY”: y1, “endX”: x2, “endY”: y2, “duration”: 2}) 点击 self.driver.execute_(“mobile: tap”, {“tapCount”: 1, “touchCount”: 1, “duration”: during_time, “x”: x1, “y”: y1 } 获取元素内容 element = self.driver.find_element_by_xpath(r”%s” % elementinfo) Element.txt 截图 screenshot = self.driver.get_screenshot_as_()
  执行测试
  在启动服务器后,执行测试脚本即可。但是测试脚本里要包含以下内容,作为Appium的初始化,告诉Appium要测试哪台机器上的哪个app,以及其他信息。
  怎么样你的app是不是也跑起来了??
欢迎举报抄袭、转载、暴力色情及含有欺诈和虚假信息的不良文章。
请先登录再操作
请先登录再操作
微信扫一扫分享至朋友圈
搜狐公众平台官方账号
生活时尚&搭配博主 /生活时尚自媒体 /时尚类书籍作者
搜狐网教育频道官方账号
全球最大华文占星网站-专业研究星座命理及测算服务机构
主演:黄晓明/陈乔恩/乔任梁/谢君豪/吕佳容/戚迹
主演:陈晓/陈妍希/张馨予/杨明娜/毛晓彤/孙耀琦
主演:陈键锋/李依晓/张迪/郑亦桐/张明明/何彦霓
主演:尚格?云顿/乔?弗拉尼甘/Bianca Bree
主演:艾斯?库珀/ 查宁?塔图姆/ 乔纳?希尔
baby14岁写真曝光
李冰冰向成龙撒娇争宠
李湘遭闺蜜曝光旧爱
美女模特教老板走秀
曝搬砖男神奇葩择偶观
柳岩被迫成赚钱工具
大屁小P虐心恋
匆匆那年大结局
乔杉遭粉丝骚扰
男闺蜜的尴尬初夜
客服热线:86-10-
客服邮箱:五个iOS和Android最佳的开源自动化工具(优缺点详细分析)-51CTO-微转化
来自新浪微博认证资料:51cto官方微博 @&br& 51CTO官方微博&br&
“一带一路”期间,北京这些道路进行戒严封路,请提前绕行
[广告]●●●●●●●●●●●
热门公众号Accounts
精彩内容热门推荐
关注我,每晚给你发劲爆精彩小视频
传递有价值的信息!
燕郊人的网上家园.
致力于打造?宁乡?本土方言娱乐节目
?每天?搜寻各个角落的热门,情感.健康.家庭.两性的话题,多一点惊喜与感动!
baoxiaoduanpian100
热门爆笑视频,爽嗨小电影,宅男腐女必备神器!开心爽透每一天!
搜锣最新时事动态
thepapernews
澎湃新闻的用户进行沟通与互动的平台
参与、沟通、记录时代.
&京鹰旅游&是为中国及海外各国旅游服务战线上的导游、出境领队及所有旅游相关服务人员提供的公共交流平台,以方便大家在此进行公益信息交流咨询服务.24H客服:/70
sydiyiming
做人就要做?第一名?,加入沭阳?第一名?,做各行各业的第一,用冠军的心态,走人生的道路!看第一的风采,做最棒的自己!
五个iOS和Android最佳的开源自动化工具(优缺点详细分析)
阅读&58805&发表& 17:48:06
自动化测试在产品测试上有着非常重要的作用。实现测试自动化有多种积极的方式,包括最大限度地减少测试执行时间;在关键的发布阶段,用更少的时间确保更大的覆盖范围;在产品开发阶段,可靠又重复性地运行以确保没有引进回归问题。最大限度地减少重复性回归测试循环时的人为错误和疏忽的风险。在市场上有很多可用的工具,开源的或要付费的。虽然付费和开源工具各有利弊,但是后者在自动化测试社区得到了广泛的应用。根据项目需求来选择合适的自动化工具是非常棘手的。下面介绍5个最佳的iOS和Android开源自动化工具。1. Calabash(适用于Android和iOS)Calabash是一个开源的验收测试框架,支持Android和iOS自动化。Calabash为Android和iOS自动化测试提供了一个单独的库。这是一个跨平台的框架,支持 Cucumber,Cucumber能让你用自然的英语语言表述app的行为,实现BDD(Behavior Driven Development,行为驱动开发)。Calabash提供了一个桥梁,允许Cucumber测试对iOS和Android运行和验证。Cucumber测试使用一列语句写入,这些语句会形成很多测试场景。Cucumber中的所有语句使用Ruby定义。在Calabash,Cucumber语句只能被定义一次,但可以在Cucumber脚本的不同场景中重复使用。实际测试是用Gherkin写的,依靠Ruby代码的支持,并在Cucumber框架的上下文中运行。优点:◆大型社区支持。◆简单,类似英语表述的测试语句。◆支持在屏幕上的所有动作,如滑动,缩放,旋转,敲击等。◆大型且热心的社区。◆跨平台开发支持(同样的代码在Android和iOS设备中都适用)。缺点:◆测试步骤失败后,将跳过所有的后续步骤。这可能会导致错过更严重的产品问题。◆需要时间来进行测试,因为它首先总是默认安装app。但是,这种设置可以通过在代码中配置一个钩子(hook)覆盖掉。◆需要Calabash框架安装在ios的ipa文件中。◆我们必须要有iOS的app代码。◆除了Ruby,对其他语言不友好。2.Appium(Android和iOS)Appium是Sauce Labs出品的一个开源的自动化测试框架,用于原生、混合和移动的web app。框架内的Appium库函数调用Appium服务器是在操作连接设备的后台运行的。它在内部使用JSONWireProtocol,来与使用 Selenium的WebDriver的iOS和Android app进行互动。不像Calabash只支持Ruby开发,在框架中使用Appium时,你可以从Java、Python和Ruby,以及所有其他Selenium WebDriver支持的语言中选择。Appium服务器被托管在Node服务器上。你可以通过触发一组Node命令来启动Appium服务器。使用Appium Standalone Application作为服务器(从Appium网站下载),Inspector工具可对app的所有定位器提供查找/识别/操作的能力。优点:◆支持多种语言。◆不需要访问源代码。◆跨平台脚本开发。◆大型社区支持。◆支持Mac上的脚本记录。◆使用Appium Server应用程序的Inspector工具提取标识符。◆通过Appium Server的桌面应用程序对Selendroid内置支持。◆它还使用供应商提供的框架:适用于iOS的UIAutomation ,分别适用于Android 4.2+和 2.3+的UIAutomator和Selendroid。◆支持物理设备与仿真器。◆支持原生,混合和移动的web自动化应用程序。缺点:◆Appium Server桌面应用程序的发布常常不稳定。◆脚本记录不适用于Application服务器对于Windows OS的桌面应用程序。3.Robotium(Android )Robotium是一个开源的测试框架,用于开发功能性,系统,和验收测试场景。它与Selenium非常相似,除了Robotium只适用于Android。它注册在Apache License 2.0下。因为它不但简单,而且又具有创建强大又可靠的自动化场景的能力,因而它在自动化测试社区广泛流行。它采用运行时绑定到GUI组件。它安装了一个测试用例套件作为在Android设备或仿真器上的应用程序,并提供用于执行测试的真实环境。优点:◆容易在最短的时间内编写测试脚本。◆预装自动化app是可能的。◆自动跟随当前activity。◆由于运行时绑定到GUI组件,所以相比Appium,它的测试执行更快,更强大。◆不访问代码或不知道app实现,也可以工作。◆支持Activities、Dialogs、Toasts、Menus、Context Menus和其他Android SDK控件。缺点:◆不能处理flash和web组件。◆支持Java开发。◆在旧设备上会变得很慢。◆由于不支持iOS设备,当自动化测试同时覆盖 android与iOS的情况时,测试会被中断。◆没有内置的记录和回放功能. 使用记录功能需要 TestDroid 和 Robotium Recorder 这样收费工具。4.Frank(iOS)Frank是一个iOS app的自动化框架,允许使用Cucumber编写结构化英语句子的测试场景。Frank要求测试时在应用程序内部编译,这意味着对源代码的改变是强制性的。这是一个使用Cucumber和JSON组合命令的工具,命令发送到在本地应用程序内部运行的服务器上,并利用UISpec运行命令。优点:◆测试场景是在Cucumber的帮助下,用可理解的英语句子写的。◆Symbiote——包含实时检查工具。◆如果团队有关于web selenium和cucumber自动化框架的经验,也有效。◆活跃的社区支持。◆不断扩大中的库。缺点:◆对手势的支持有限。◆在设备上运行测试有点难。◆修改配置文件需要在实际设备上运行。◆记录功能不可用。5.UIAutomator(Android)UIAutomator是由谷歌提供的测试框架,它提供了原生Android app和游戏的高级UI测试。这是一个包含API的Java库,用来创建功能性UI测试,还有运行测试的执行引擎。该库自带Android SDK。有很多教程可供初学者上手。优点是它在运行访问不同的进程时,会给JUnit测试案例特权。虽然这对本地自动化app既好又更简单,但是它对 web自动化视图非常有限或几乎没有任何支持。它仅支持使用API level 16及以上的设备,不过这也不算什么很大的因素,因为现在大多数的app支持API level 19及以上。优点:◆简单易学的教程。◆库由谷歌社区支持和维护。◆第三方支付集成了基于云计算的测试管理。缺点:◆仅支持android 4.1及以上。◆不支持脚本记录。◆支持的重点是Java。◆你不能获得当前活动或仪表化。◆目前不支持web视图,因此是混合app。◆库支持使用Java,因此如果有人想和使用Ruby的cucumber混合,会很困难。不过Java有它自己的BDD框架,虽然在实践中用到的也不多。翻译作者:码农网 – 小峰
声明:以上内容转载自微信公众号《51CTO》,并不代表本站观点及立场,且版权归属微信公众号《51CTO》。
微信公众号

我要回帖

更多关于 开源证券 的文章

 

随机推荐