| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 移动开发 -> 【iOS自动化测试】第一章:方案调研 -> 正文阅读 |
|
[移动开发]【iOS自动化测试】第一章:方案调研 |
背景目前Android端已完成了相应的框架搭建,并实际落地产出了,由于Android使用的是Unittest+HtmlTestRunner产出报告,需要增加新功能的话需要改动到底层框架,所以目前在负责的iOS端打算采用Pytest+Allure方式来进行,优点是更好的插件支持,报告也会更好看(装逼)点 PS:Android端自动化运行相比iOS自动化确实会稳定很多 一 iOS自动化框架及工具介绍1.UIAutomation 基于 UIAutomation 有扩展型的工具框架和驱动型的框架。扩展型框架以 JavaScript 扩展库方法提供了很多好用 js 工具,注入式的框架通常会提供一些 Lib 或者是 Framework,要求测试人员在待测应用的代码工程中导入这些内容,框架可以通过他们完成对 app 的驱动。 驱动型 UI Automation 在自动化测试底层使用了 UI Automation 库,通过 TCP 通信的方式驱动 UI Automation 来完成自动化测试,通过这种方式,编辑脚本的语言不再局限于 JavaScript。这个工具在 iOS UI 自动化测试中使用非常广泛 2.XCTest XCTest 测试编写起来非常简单,并且遵循 xUnit 风格。 Xcode 在创建工程时,会默认使用 XCTest,并且默认创建了 Unit Test(单元测试)和 UI Test(界面测试)两个 Target,其中 Unit Test 主要用于测试代码的大部分基本功能,比如绝大多数 Model 的类和方法测试,业务逻辑测试,网络接口调用测试等等。 UI Test 一般会考虑到用户的交互流程,模拟用户的交互操作,利用 XCTest 的 UI 记录特性来获取界面上的一些列视图元素和操作事件,然后在测试方法中触发事件。 所以这是一个可以提供各个层次的测试的框架,比如单元测试,自动化测试,性能测试等 3.KIF 所有测试使用 Objective-C 语言编写,对测试人员来讲,需要熟练的掌握 Objective-C 语言 , 对苹果开发者来说非常容易上手,更是一款开发者广为推荐的测试工具。 KIF 使用未公开的 Apple API(私有 API),这对于测试目的而言是安全的,基于第三方 iOS UI 的单元测试框架,所以可以做项目的单元测试,也可以做 UI 集成测试。但缺点是运行较慢。 4.Frank Frank 是 iOS 开发环境下一款实现自动测试的工具,Xcode 环境下开发完成后,通过 Frank 实现结构化的测试用例,其底层语言为 Ruby,作为一款开源的 iOS 测试工具,在国外已经有广泛的应用。 但是国内相关资料却比较少。其最大的优点是允许我们用熟悉的自然语言实现实际的操作逻辑。 它提供了针对 iOS 平台的功能测试能力,可以模拟用户的操作对应用程序进行黑盒测试,并且使用 Cucumber 编写测试用例,使测试用例如同自然语言一样描述功能需求,让测试以“可执行的文档”的形式成为业务客户与交付团队之间的桥梁。
测试场景是在 Cucumber 的帮助下,用可理解的英语句子写的,还有活跃的社区支持,以及不断扩大中的库。
对手势的支持有限,所以在设备上运行测试有点难。 5.Calabash-iOS Calabash 开源免费并支持 Cucumber 语言,Cucumber 能让你用自然的英语语言表述 app 的行为,实现 BDD(Behavior Driven Development,行为驱动开发)。 而 Calabash-iOS 就是一个基于 Calabash 的 iOS 的功能、自动化测试框架。
有大型社区支持;
测试步骤失败后,将跳过所有的后续步骤,这可能会导致错过更严重的产品问题。 除了 Ruby,对其他语言不友好 6.Appium 通过 Appium,开发者无需重新编译 app 或者做任何调整,就可以测试移动应用,可以使测试代码访问后端 API 和数据库。 它是通过驱动苹果的 UIAutomation 框架来实现的 iOS 平台支持,底层使用的是WEBDriverAgent来进行驱动 开发者可以使用 WebDriver 兼容的任何语言编写测试脚本,如 Ruby,C#,Java, JS,OC, PHP,Python,Perl 和 Clojure 语言。 7.AirTest 相比于Appium,POCOUI最大的亮点是其内部集成了自研的图像识别进行点击,代码编写的语法会更为精炼
二 Appium与Airtest的iOS自动化测试对比
对比结论: 1.关于执行效率上,Appium与Airtest相差不大,主要还是通过元素的文本方式进行定位,脱离了文本想对元素进行定位速度都比较慢 2.关于代码编写效率上,本人使用Appium会好于Airtest(由于Android项目),Airtest的Api是新的,与appium的有所不同,对Api的熟悉需要一定过程,前期可能会较慢,后期熟练了会较快,Airtest对api的封装会更多一些,初始用者需要自己对Appium的Api进行封装 3.关于稳定性,Appium-wda和iOS-tagent都是基于facebook-wda(facebook未维护了,appium团队对其进行改造有在维护,airtest目前也有在改造维护中)进行封装改造的,试用时稳定性差不多,暂未出现掉线情况,iOS-tagent据说简化了内部的一些逻辑调用,不过总体体验下来差不多,对于高版本的iOS,Airtest官方好像还是推荐Appium的wda 4.关于适用场景,Appium主要是通过元素定位来进行自动化运行,适用于原生App下没有特殊强调对某种类型的app会更好用,属于兼容性较强的场景使用性,Airtest由于背靠网易,所以在场景使用方面更受游戏公司的自动化运行,尤其是他的图像识别点击,能够更好的识别游戏自动化中的场景,不过Airtest也可以通过PocoUI进行元素点击,涉及图形多的,如游戏类的可以使用Airtest 5.对于特定场景的元素定位,部分App流下,Appium与Airtest均无法获取到其中的元素信息,从而导致无法对该部分内容进行校验,Appium每次切换页面需要手动刷新页面 6.关于后续版本维护方面,Appium目前社区维护稳定,几天一更新,Airtest目前看最新的维护时间是在3个月前,相比之下Appium的维护工作会更好 7.关于多设备并行,Appium与Airtest都可以运行多设备,目前我这都是根据Tidevice启动多个wda服务开启多个端口号进行,使用情况差不多 8.相对于其他方面的比较基本都差不多
三 Appium驱动原理驱动原理XCUITest是苹果开发的一个做IOS自动化测试的框架,需要了解些Swift等iOS编程知识
而appium是把WebDriverAgentRunner 给集成进去了,因此实现了appium的跨平台能力
Appium 自动化架构模式可以用一个抽象的架构表示,如下图所示:
关于WebDriverAgentFaceBook 出品:
Appium简介Appium原理
Appium优点
Appium理念
Appium 在 iOS 下工具的变革
下一章内容: |
|
移动开发 最新文章 |
Vue3装载axios和element-ui |
android adb cmd |
【xcode】Xcode常用快捷键与技巧 |
Android开发中的线程池使用 |
Java 和 Android 的 Base64 |
Android 测试文字编码格式 |
微信小程序支付 |
安卓权限记录 |
知乎之自动养号 |
【Android Jetpack】DataStore |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 4:28:51- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |