2024史上最全的 iOS 各种测试工具集锦!

news2024/11/25 9:38:30

引言:

随着移动互联网的兴起,APP 测试的越来越被重视!Android 系统因为自己的开源性,测试工具和测试方法比较广为流传,但是 iOS 系统的私密性,导致很多测试的执行都有点麻烦。

为了帮助大家更好的执行 iOS APP 的测试,本文为大家收集了非常全面的 iOS 测试工具,涵盖各大领域,相信对大家会有所帮助!

01、自动化测试

1、UIAutomation

UIAutomation 是苹果提供的 UI 自动化测试框架,使用 JavaScript 编写。

基于 UIAutomation 有扩展型的工具框架和驱动型的框架。扩展型框架以 JavaScript 扩展库方法提供了很多好用 js 工具,注入式的框架通常会提供一些 Lib 或者是 Framework,要求测试人员在待测应用的代码工程中导入这些内容,框架可以通过他们完成对 app 的驱动。

驱动型 UI Automation 在自动化测试底层使用了 UI Automation 库,通过 TCP 通信的方式驱动 UI Automation 来完成自动化测试,通过这种方式,编辑脚本的语言不再局限于 JavaScript。

这个工具在 iOS UI 自动化测试中使用非常广泛。

2、XCTest

XCTest 是苹果在 iOS 7 和 Xcode5 引入的一个简单而强大的测试框架,集成在 Xcode 中,用来编写测试代码。它提供了各个层次的测试。

XCTest 测试编写起来非常简单,并且遵循 xUnit 风格。Xcode 在创建工程时,会默认使用 XCTest,并且默认创建了 Unit Test(单元测试)和 UI Test(界面测试)两个 Target;

  • 其中 Unit Test 主要用于测试代码的大部分基本功能,比如绝大多数 Model 的类和方法测试,业务逻辑测试,网络接口调用测试等等。

  • UI Test 一般会考虑到用户的交互流程,模拟用户的交互操作,利用 XCTest 的 UI 记录特性来获取界面上的一些列视图元素和操作事件,然后在测试方法中触发事件。

所以这是一个可以提供各个层次的测试的框架,比如单元测试,自动化测试,性能测试等。

现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:691998057【暗号:csdn999】

3、KIF

KIF 是 Keep It Functional 项目的缩写,是一款 iOS app 功能性测试框架,来自 Square,该测试框架只支持 iOS。

另外,所有测试使用 Objective-C 语言编写,对苹果开发者来说非常容易上手,更是一款开发者广为推荐的测试工具。

KIF 使用未公开的 Apple API(私有 API),这对于测试目的而言是安全的,基于第三方 iOS UI 的单元测试框架,所以可以做项目的单元测试,也可以做 UI 集成测试。但缺点是运行较慢。

4、Frank

Frank 是 iOS 开发环境下一款实现自动测试的工具,Xcode 环境下开发完成后,通过 Frank 实现结构化的测试用例,其底层语言为 Ruby,作为一款开源的 iOS 测试工具,在国外已经有广泛的应用。但是国内相关资料却比较少。其最大的优点是允许我们用熟悉的自然语言实现实际的操作逻辑。

提供了针对 iOS 平台的功能测试能力,可以模拟用户的操作对应用程序进行黑盒测试,并且使用 Cucumber 编写测试用例,使测试用例如同自然语言一样描述功能需求,让测试以“可执行的文档”的形式成为业务客户与交付团队之间的桥梁。

  • 优点: 测试场景是在 Cucumber 的帮助下,用可理解的英语句子写的,还有活跃的社区支持,以及不断扩大中的库

  • 缺点:对手势的支持有限,所以在设备上运行测试有点难

5、Calabash-iOS

Calabash 是一个适用于 iOS 和 Android 开发者的跨平台 app 测试框架,可用来测试屏幕截图、手势和实际功能代码。Calabash 开源免费并支持 Cucumber 语言,Cucumber 能让你用自然的英语语言表述 app 的行为,实现 BDD(Behavior Driven Development,行为驱动开发)。

而 Calabash-iOS 就是一个基于 Calabash 的 iOS 的功能、自动化测试框架。

优点:

  • 有大型社区支持;

  • 列表项简单,类似英语表述的测试语句支持在屏幕上的所有动作,如滑动,缩放,旋转,敲击等

缺点:

  • 测试步骤失败后,将跳过所有的后续步骤,这可能会导致错过更严重的产品问题

  • 测试耗费时间,因为它总是默认先安装 app,需要 Calabash 框架安装在 iOS 的 ipa 文件中, 因此测试人员必须要有 iOS 的 app 源码

  • 除了 Ruby,对其他语言不友好

6、Subliminal

Subliminal 是另一款与 XCTest 集成的框架,也是个不错 iOS 集成测试框架。与 KIF 不同的是,它基于 UIAutomation 编写,对开发者隐藏 UIAutomation 中一些复杂的细节。可惜近几年没有更新了,若能支持 swift 就好了。

7、Kiwi

Kiwi 是对 XCTest 的一个完整替代,使用 xSpec 风格编写测试。Kiwi 带有自己的一套工具集,包括 expectations、mocks、stubs,甚至还支持异步测试。

它是一个适用于 iOS 开发的 Behavior Driven Development(BDD)库,有着非常漂亮的语法,优点在于其简洁的接口和可用性,易于设置和使用,可以写出结构性强易读测试,非常适合新手开发者。Kiwi 也是使用 Objective-C 语言编写,易于 iOS 开发人员上手。

8、Appium

Appium 是一个开源的、跨平台的自动化测试工具,支持 iOS、Android 和 FirefoxOS 平台。通过 Appium,开发者无需重新编译 app 或者做任何调整,就可以测试移动应用,可以使测试代码访问后端 API 和数据库。

图片

它是通过驱动苹果的 UIAutomation 框架来实现的 iOS 平台支持。开发者可以使用 WebDriver 兼容的任何语言编写测试脚本,如 Ruby,C#,Java, JS,OC, PHP,Python,Perl 和 Clojure 语言。

02、iOS 性能测试

1、Instruments

Instruments 是 Xcode 自带的,用来动态跟踪和分析 MacOS 和 iOS 代码的实用工具,以独立 APP 形式存在的工具集,包含了很多强大的检测功能:其中包括在真机和模拟器上的 APP 进行性能测试。

主要功能有:

  • 分析程序进程行为

  • 分析内存分配及释放细节

  • 查找 CPU 问题

  • 查找程序性能瓶颈

  • 检查设备相关的功能

    比如:Wi-Fi、蓝牙等

  • 查找 App 中的内存问题

    比如内存泄露(Leaked memory)、废弃内存(Abandoned memory)、僵尸(zombies)等

2、第三方 SDK

很多第三方的专门用于性能检测和用户行为、属性分析的 SDK,比如 Bugly,OneAPM,听云,Firebase Analytics,把它们接入项目可以短期内达成性能检测目标。

这些第三方的工具原理都是类似的,利用 swizzle 的方法进行 AOP(面向切面编程)处理,在关键函数之前和之后自动埋点记录上报。有的平台也支持上传符号表文件精确定位代码执行位置以及以埋点的方式手工添加日志记录。使用起来还是比较方便的,基本上引入 SDK 和相关库,在程序入口处启动检测即可。

然而使用第三方 SDK 的缺点也是非常明显的:

  • 首先是缺乏定制性,我们需要的一些指标的统计 SDK 没有,SDK 有的我们又不完全需要

  • 存在安全性问题,这些 SDK 涉及的统计数据都是 APP 的商业机密信息,对于有一定市场影响力的 APP 会有顾忌

  • 这类产品是收费的,平时自己开发个 demo 练手也不适合连这种 SDK

03、iOS 调试工具

  • Xcode

Xcode 是运行在操作系统 Mac OS X 上的集成开发工具(IDE),由 Apple Inc 开发。它是开发 macOS 和 iOS 应用程序的最快捷的方式。Xcode 具有统一的用户界面设计,编码、调试、测试,都在一个简单的窗口内完成。

另外,Xcode 也可以用来测试 APP 的时候获取 APP 的日志,分析 bug 和问题。

  • iTunes

iTunes 是苹果官方提供的一款工具,它在做 APP 测试的时候也可以提供手机 APP 日志的方法。

  • ITools

iTools 这个工具是一个第三方的 iOS 测试工具,它跟 iTune 功能类似,但是比 iTunes 工具简单一些,简单易用的界面,可以从 iTunes 的繁琐中解放。也可以提供安装、卸载、备份、获取日志等各种功能。

03、内测发布平台

  • fir.im

为开发者提供测试应用极速发布,应用崩溃实时分析、用户反馈收集等一系列开发测试效率工具服务,帮助开发者将更多精力放在产品的开发与应用的优化上。

  • 蒲公英

『蒲公英』是专为 iOS、Android 开发者提供的免费用应用内测、托管的平台,旨在解决开发者将应用分发给内测用户时的繁杂、低效的问题。

  • TestFlight

TestFlight 是苹果提供的应用测试工具,允许开发者邀请用户对应用的预发布版本进行测试,从而在应用正式发布至 App Store 前收集用户反馈。

END今天的分享就到此结束了!点赞关注不迷路!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1350151.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Sectigo和Certum的区别

为了保护用户在互联网的隐私,网站使用SSL数字证书为http明文传输协议加上安全套接层,对网站传输数据加密。Sectigo和Certum是正规的CA认证机构,它们颁发的SSL证书经过市场认证,已经兼容大多数浏览器以及终端,今天就随S…

【MATLAB】【数字信号处理】线性卷积和抽样定理

已知有限长序列:xk1,2,1,1,0,-3, hk[1,-1,1] , 计算离散卷积和ykxk*h(k) 。 程序如下: function [t,x] My_conv(x1,x2,t1,t2,dt) %文件名与函数名对应 %自写的卷积函数 x conv(x1,x2)*dt; t0 t1(1) t2(1); L length(x1) length(x2)-2; t t0:dt…

提取ROS bag文件中LiDAR点云数据为pcd格式

这段代码是用于从ROS bag文件中提取LiDAR点云数据并保存为PCD格式的。 1. 命令行 rosrun pcl_ros bag_to_pcd 2022-04-21-21-02-29.bag /rslidar_points_32 lidar_points_80_lines 详细解释如下: 1. rosrun pcl_ros bag_to_pcd 这是运行一个ROS节点bag_to_pcd,它来自pcl_r…

使用selenium定位csdn主页的收藏夹文章(含完整Python代码)

目录 前提:准备好流程 第一步 导包 代码 第三方库的下载流程 第二步 设置谷歌浏览器及要打开的网页 第三步 定位元素 代码 元素定位方法 前提:准备好流程 第一步 导包 这里需要提前下载好第三方库:selenium,time。代码及…

python多线程同步:Event对象

1.python事件Event相关函数介绍 set() — 全局内置标志Flag,将标志Flag 设置为 True,通知在等待状态(wait)的线程恢复运行 isSet() — 获取标志Flag当前状态,返回True 或者 False wait() — 一旦调用,线程将会处于阻塞状态,直到…

【Leetcode 80】删除排序数组中的重复项 II ——双指针

80. 删除排序数组中的重复项 II 给你一个有序数组nums,请你原地删除重复出现的元素,使得出现次数超过两次的元素只出现两次,返回删除后数组的新长度。 不要使用额外的数组空间,你必须在原地 修改输入数组并在使用 O(1) 额外空间…

VC++ ado 实现单表CURD

继续修改前文的资产管理源码; 新建一个数据库sds;把代码中的数据库连接改为连接此库; 新建下图一个表; 把之前的资产类别管理对话框改为下图所示;对话框ID也改为下图; 资产类别管理菜单和ID改为下图; 直接修改资产类别管理对话框类不太方便,新建一个对话框类,没有关联…

vue3基础知识一,安装及使用

一、安装vue3 需要安装node,然后在项目所在目录命令行执行以下代码。 npm create vuelatest 回车后需要配置以下内容。 二、安装所需的依赖包并运行 cd到项目目录,执行以下代码安装依赖包 npm i 运行项目 npm run dev 打开浏览器查看结果 ok&#…

携手罗振宇,泸州老窖用“眼前一亮”的方式开启全新700年

执笔 | 洪大大 编辑 | 萧 萧 又一段故事拉开帷幕,又一个品牌扣人心弦。 2023年12月31日跨年夜,由深圳卫视、得到APP联合出品的“时间的朋友”跨年演讲在深圳春茧体育馆正式开讲,现场,罗振宇用一段段睿智的话语与一个个鲜明的故…

系统架构设计面试指南(02)-MQ和文件存储

点击下方“JavaEdge”,选择“设为星标” 第一时间关注技术干货! 免责声明~ 任何文章不要过度深思! 万事万物都经不起审视,因为世上没有同样的成长环境,也没有同样的认知水平,更「没有适用于所有人的解决方案…

Go语言module,依赖管理方法

Go语言module,依赖管理方法 1.为什么需要依赖管理2.module管理配置流程打开go module配置一个国内的代理创建go.modGo Modules下的go get行为 3.GO env的其他配置GOSUMDBGONOPROXY/GONOSUMDB/GOPRIVATE 4.go.mod和go.sum概述5.Go Modules的语义化版本控制6.Go Modul…

Vue3-27-路由-路径参数的简单使用

什么是路径参数 在路由配置中,可以将【参数】放在【路由路径】中, 从而实现,同一个 路由,同一个组件,因路径参数不同,可以渲染出不同的内容。特点 : 1、当携带不同路径参数的路由相互跳转时&am…

Jupyter Notebook的10个常用扩展介绍

Jupyter Notebook(前身为IPython Notebook)是一种开源的交互式计算和数据可视化的工具,广泛用于数据科学、机器学习、科学研究和教育等领域。它提供了一个基于Web的界面,允许用户创建和共享文档,这些文档包含实时代码、…

关于解决引用第三方依赖突然失效的问题解决办法

目录 背景回顾解决办法结果 背景 出现该问题的背景是这样的。在项目中需要支持加载pdf文档的功能。所以采取了使用第三方PDF库的方法来实现加载pdf文档。集成完后,功能是正常的。后来过了一段时间,发现加载pdf的功能不能正常使用了,加载不出…

2023年的年度总结:不设边界、积极探索

23年的年度总结用一句话来说: 不设边界、积极探索 工作 从阿里来字节工作快3年了,这是一家年轻且充满活力的公司,伙食很棒,(跟刚毕业去网易那会伙食不相上下)。 作为一名应用层开发更多的时间都是和业务在…

Single-Image Crowd Counting via Multi-Column Convolutional Neural Network

Single-Image Crowd Counting via Multi-Column Convolutional Neural Network 论文背景人群密度方法过去的发展历史早期方法基于轨迹聚类的方法基于特征回归的方法基于图像的方法 Multi-column CNN用于人群计数基于密度图的人群计数通过几何自适应核生成密度图密度图估计的多列…

回溯法解决01背包问题

输入(共n1行):物品数量、背包体积 下面n行依次输入物品价值和体积 需要注意的点: ①输入的顺序 ②存储价值和体积的数组下标从1开始 ③每一轮符合条件时,及时更新VALUE(价值总和) 从前面做的回溯法可以总结出一些…

bootstrap5开发房地产代理公司Hamilton前端页面

一、需求分析 房地产代理网站是指专门为房地产行业提供服务的在线平台。这些网站的主要功能是连接房地产中介机构、房产开发商和潜在的买家或租户,以促成买卖或租赁房产的交易。以下是一些常见的房地产代理网站的功能: 房源发布:房地产代理网…

009、引用

1. 引用与借用 下面的示例重新定义了一个新的 calculate_length 函数。与之前不同的是,新的函数签名使用了 String 的引用作为参数而没有直接转移值的所有权: fn main() { let s1 String::from("hello"); let len calculate_length(&s1…

病情聊天机器人,利用Neo4j图数据库和Elasticsearch全文搜索引擎相结合

项目设计目的: 本项目旨在开发一个病情聊天机器人,利用Neo4j图数据库和Elasticsearch全文搜索引擎相结合,实现对病情相关数据的存储、查询和自动回答。通过与用户的交互,机器人可以根据用户提供的症状描述,给出初步的可…