Tag: DevOps

播客访谈:在Apple Bubble中自动化iOS应用

原始 博客文章 : http : //shashikantjagtap.net/podcast-interview-automating-ios-apps-in-the-apple-bubble/ 最近,我接受了Joe Colantonio的播客采访,主题为“在Apple Bubble中自动化iOS应用程序”,讨论了iOS测试自动化和iOS DevOps空间的当前趋势。 Joe运行了TestTalks播客,所有有关测试自动化最佳实践的内容,到目前为止,他有199集。 他已经采访了许多行业专家,我很高兴也有机会与他进行了采访,分享了我在iOS自动化和DevOps方面的经验。 我的采访是TestTalks播客系列的第199集。 在iTunes上可以找到它,也可以在TestTalks网站上找到播客片段的详细信息。 在此播客采访中,我们涉及了iOS测试自动化和DevOps的各个主题,包括 这些天公司如何测试iOS应用程序? 如何为iOS测试自动化XCUITest Vs Appium选择工具? iOS中有哪些“行为驱动开发”选项? 如何使iOS Tests CI或DevOps友好? 如何在iOS应用程序中测试REST API? AI / ML可以测试iOS应用程序吗? 如果您要使用iOS Automation或iOS DevOps,则一定要查看此剧集。 在手机上喜欢的播客客户端中搜索“ TestTalks”第199集。 希望您会发现此情节有用。 让我知道你的想法? 我在Twitter @ Shashikant86 像XCBlog的 XCTEQ 发布的帖子一样 ? 您可能还喜欢我们的一些服务,例如访客博客或Mobile DevOps(CI / CD)或测试自动化。 在 Github 上 搜索我们的 服务 ,开源项目, 或者在 Twitter , […]

了解使用iOS,Xcode 9和Swift的UI测试

Xcode提供了功能齐全的可编写脚本的UI测试框架。 使用该框架的关键是了解其架构以及如何最好地利用其功能。 了解Xcode UI测试 在Xcode中创建新项目时,新项目向导会询问您是否要包含单元测试 ,以及是否要包含UI测试 。 一个人可能会怀疑-UI测试不是单元测试吗? 如果没有,那是什么? 实际上,这些复选框及其结果主要是用来通知Xcode在项目中创建哪些目标的。 选中每个复选框都会在项目中生成不同类型的测试目标。 Xcode 单元测试和Xcode UI测试之间的根本区别: 单元测试用于测试源代码是否产生预期的结果。 例如:确保函数在传递特定参数时会生成某些预期结果。 UI测试测试用户界面是否按预期方式运行。 例如:UI测试可能会以编程方式点击一个按钮,该按钮会自动切换到新屏幕,然后以编程方式检查预期的屏幕是否确实加载并包含预期的内容。 单元测试和UI测试都支持完全自动化,并支持在应用程序生命周期内进行回归测试。 一般而言,Xcode 单元测试将练习并评估您的Swift代码 ,但不检查对用户界面的影响,而Xcode UI测试则评估响应操作的UI行为 ,但不检查您的代码。 与往常一样,这些是带有例外的通用语句。 当然,可以从(代码)单元测试中了解UI,并可以从UI测试中了解代码对象的状态。 但是,这些工具旨在根据此概括性说明使用。 UI测试示例 在检查UI测试的体系结构和实现之前,让我们看一下已完成的操作测试。 此测试的用户故事如下: 在第一个屏幕上,用户可以在表格视图中选择一个单元格,这将打开第二个表格,在标签中显示所选值。 然后,用户可以在原始标签下方的文本框中键入新值。 当用户随后返回第一个表单时,新值将显示在“表视图”中。 如果质量检查测试人员要手动检查此过程,则会执行以下顺序: 启动应用 连续点击 加载时观察表格视图行文本在第二个窗体上 在文本字段中输入新值 按下后退按钮 观察他们键入的值已替换表格视图中的原始文本 手动测试过程如下所示(这是一个动画的.gif-如果使用Medium应用程序,则可能需要在浏览器中打开此页面才能查看动画)。 如果我们可以自动化该过程,这样我们的QA测试人员就不必在每个版本之前都手动重复此过程,那不是很好吗? 这正是UI测试的目的所在-我们将逐步介绍如何使该测试过程自动化! UI测试架构 在深入研究代码之前,了解Xcode UI Test框架的工作方式非常重要。 通过了解UI测试如何访问和操纵UI组件,您将能够使您的UI易于构建测试。 与单元测试 (使用源代码的单元测试一样),XCode使用XCTest来运行UI测试。 但是XCTest代码如何知道如何检查和操作在Storyboard和/或Swift代码中设计的UI? 为了在运行时访问您的UI,XCTest使用iOS Accessibility公开的元数据。 例如,这与使iOS能够向盲人和弱视用户读取屏幕的技术相同。 在运行时,XCTest遍历您的UI控件,查找可访问性属性(例如accessibilityIdentifier和accessibilityLabel以查找您希望XCTest在UI测试中进行点击,更改或检查的UI组件。 […]

管理XCTest的iOS构建配置和方案

最初在 这里 发布在XCBlog上 在将iOS应用发布到Apple App Store之前,通常有一个针对内部受众的构建,即质量检查工程师,仅在特定配置的设备上运行的产品所有者。 在此过程中,您可能会听到诸如DEBUG或RELEASE配置之类的信息。 当我们使用Xcode创建新的iOS项目时,Apple为我们提供了两个项目级别的构建配置,即调试和发布。 调试配置通常用于开发和内部项目设置,例如将应用程序指向测试环境,然后使用发行版将应用程序提交到App Store。 但是,在许多情况下,可能会触发对更多内部设置或其他构建配置的需求。 作为一名优秀的iOS开发人员,您必须使用XCTest框架编写单元和UI测试。 通常,开发人员使用调试构建配置或运行单元和UI测试,但是为XCTest创建单独的构建配置会使测试更加独立,可靠和确定性。 在本文中,我们将看到如何为XCTest创建单独的构建配置。 构建配置 在进入创建新的构建配置之前,让我们看看什么是iOS中的构建配置以及为什么使用正确的配置构建应用很重要。 想象一下,我们已经在Xcode中创建了全新的iOS应用。 它将有两个构建配置,分别在iOS项目的“构建设置”中进行调试和发布。 在编译和构建iOS应用程序时,幕后发生了很多事情,例如编译,链接,复制包资源,运行构建脚本等。我们始终可以在xcodebuild日志中看到这些事情。 构建配置定义了我们希望如何在特定设置下构建应用程序,例如,当我们使用模拟器开发应用程序时,“调试信息格式”构建设置不需要生成dSYM文件,因此我们可以使用DWARF进行调试构建。 但是,我们需要发布版本的信息,以便我们可以将DWARF与dSYM文件设置一起使用。 如上图所示,您可以在Xcode的所有构建设置中看到这一点。 简而言之,构建配置定义了一种机制,该机制应如何使用不同的条件或设置构建应用。 在运行使用XCTest框架编写的单元或UI测试时,仍然可以使用调试配置,但是,添加其他配置可以使我们对测试过程进行大量控制。 XCTest的构建配置 现在,我们将添加另一个仅可用于XCTest单元或UITests的构建配置。 通常,单元测试需要较少的配置,因为我们可以直接在应用程序内部访问数据和API。 但是,UITests或XCUITests完全是黑盒子,因此我们需要在那里进行更多配置,以便通过UI测试的特定设置。 让我们从Xcode为示例iOS应用添加另一个构建配置开始。 在Xcode项目级别设置中,选择“信息”选项卡,我们将看到可用配置的列表以及添加更多配置的选项 注意,我们必须进行项目级别的配置才能获得此选项,而不是目标级别的配置。 单击配置中的+按钮。 我们可以通过复制调试或发布配置来添加其他配置。 通常,为了测试目的,我们需要重复调​​试配置,因此我们将其称为xctest在“ 配置”部分下,按+按钮。 选择“ 重复调试配置” 。 命名您的新配置xctest 现在,我们有了全新的构建配置,可用于单元测试或UI测试。 我们可以将用户定义的设置分配给新配置,以便我们可以设置测试特定的配置。 在项目构建设置中,向下滚动到构建设置的最底部,有一个名为User-Defined的部分。 这是将添加和设置配置变量的位置。 预处理器宏 现在,我们添加了新的构建配置,是时候更改预处理器宏了,以便我们可以设置源代码有条件地执行一些代码 现在,我们可以使用调用测试代码的主应用程序中的代码来唤醒此配置。 #if XCTEST //仅测试代码版本代码 #其他 //仅应用程式程式码 #万一 同样,我们可以使用相同的方法来更改不同的环境,例如阶段,测试,但是某些文章已经介绍了该方法。 一些受欢迎的文章是 Xcode项目中的多个构建配置 […]

WWDC18:运行中的Xcode 10

最初在这里发布在XCBlog上 苹果的世界开发者大会(WWDC)2018已于本周开始。 按照承诺,随着WWDC内容的宣布,我将撰写一系列博客文章。 关于iOS12,watchOS5等新软件的公告很多。但是,还有另一场平台联盟国会议,这是致力于Apple平台开发人员的主题演讲。 Apple宣布了Xcode 10,其中包含了许多新功能,并且在会议中进行了演示。 在本文中,我们将使用macOS高级版Sierra快速探索Xcode 10的新功能,因为macOS Mojave尚未公开,因此我们不会看到Xcode的暗模式。 Xcode 10具有许多功能,这些功能已在WWDC的平台状态国会议上宣布。 在这篇文章中,我们将仅介绍以下功能。 并行测试:XCTest和XCUITest XCODEBUILD 代码段 方案编辑 多行编辑 新建系统 源代码控制 我们将简要研究Xcode的那些功能。 并行测试:XCTest和XCUITest 苹果实际上在去年WWDC17上宣布了并行测试功能,我们可以在其中指定多个目标,并且测试将相应地在不同的模拟器或设备上触发。 您可以在这里阅读有关去年宣布的XCTest功能的更多信息。 但是,今年它通过创建仿真器的克隆扩展到在单个仿真器中并行化测试套件。 Xcode在后台创建了不同的运行程序流程,每个流程都分配了特定的测试。 这大大减少了测试执行。 我们可以通过更新方案来启用并行测试,并且在“测试”操作中,可以针对测试包选择“选项”以选择并行化选项。 我们也可以选择位置。 还有其他一些选项可以使测试随机化,并可以在方案中添加新测试。 让我们首先关注并行化。 选中此复选框后,我们都准备针对该方案并行执行测试。 默认情况下,只分配了两个运行器进程,但是从命令行运行时,我们可以增加数量。 在Xcode测试报告中,哪个模拟器克隆运行哪些测试。 测试报告分组在一起。 实际上,这是对测试执行速度的极大改进。 使用并行测试技术,我们可以大大加快单元测试和UI测试的速度。 使用这种技术,我们仍然应该能够在多个模拟器目标位置执行测试。 并行运行XCTest的各种选项已添加到xcodebuild工具中,我们将在本文的以下部分中进行探讨。 XCODEBUILD Xcode 10附带了各种命令行工具,这些工具可以帮助从命令行或脚本中实现各种功能。 这是为各种目的添加到xcodebuild中的一些新选项。 平行测试 可以使用xcodebuild工具从命令行运行XCTest。 使用Xcode 10,我们还有其他一些选项可以启用并行测试,这些是 -maximum-concurrent-test-device-destinations NUMBER:要同时测试的最大设备目标数 -maximum-concurrent-test-simulator-destinations NUMBER:要同时测试的模拟器目标的最大数量 -parallel-testing-enabled YES | NO:覆盖方案中的每个目标设置 -parallel-testing-worker-count […]

CoreData持久性代码的灵活轻松的单元测试

现代和高质量的iOS应用程序有望完美运行。 确保完美无瑕,耐回归的代码的重要输入是在开发过程中添加全面的单元和集成测试。 本文逐步介绍了使用CoreData作为其持久层为iOS应用程序构建可重复的自动化数据库单元测试的方法。 目标受众 本文假定您了解在iOS应用程序中使用CoreData的基础知识,并且可能已在自己的工作中使用它。 但是,本文的重点是体系结构,即使您不知道如何使用CoreData进行编码,但如果您了解iOS中的数据持久性和单元测试的基础,此处的概念仍然有意义。 代码样例 本文中的代码和概念是使用Xcode 10(测试版)和Swift 4.2开发的。 本文包括用于说明概念的代码摘录,但并未在本文的正文中嵌入此解决方案的所有代码,而是在本文结尾处提供了指向我的GitHub存储库中的示例应用程序的链接。 CoreData是iOS(和macOS)应用程序的默认本地持久性选择。 核心数据从根本上讲是持久化数据存储上的对象关系映射(ORM)层。 虽然CoreData对象的物理存储是从开发人员抽象出来的,但CoreData几乎总是与SQLite一起使用。 如果您是CoreData的新手,或者只是需要复习,那么这里有很多很棒的资源,例如Apple自己的Core Data编程指南和RayWenderlich.com上的Core Data入门指南。 以下是典型应用程序如何访问CoreData的高度简化图。 我将在下面讨论架构的每个元素。 AppDelegate。 该对象表示iOS应用程序的入口点,并且所有iOS开发人员都应该熟悉。 如果使用 Xcode 10中的“ 使用CoreData”选项创建项目,则Xcode将为您创建基本的CoreData堆栈。 在AppDelegate对象中,您会发现以下属性爆炸了。 本质上,此属性是您的应用程序用来访问CoreData管理的数据的挂钩。 类 AppDelegate:UIResponder,UIApplicationDelegate { 。 。 惰性 varpersistentContainer:NSPersistentContainer = {…} 。 。 } NSPersistentContainer属性中具有一个设置,该设置指定是将其数据保存到SQLite磁盘文件(NSSQLiteStoreType) ,内存(NSInMemoryStoreType)还是其他位置(NSBinaryStoreType) 。 后一种情况很少见,在本文中我将不再讨论。 如果未指定任何设置(默认设置), CoreData将使用NSSQLiteStoreType来配置容器。 .xcdatamodel。 当创建具有CoreData支持的项目时,Xcode将自动创建一个数据模型文件 ,其根名称与新项目名称和扩展名xcdatamodel相匹配。 Xcode数据模型编辑器将您不断发展的设计存储在此文件中,并使用此元数据文件为您生成低级CoreData实体模型类。 在Xcode 10中,生成的模型类将自动提供给您的XCTest目标(在某些旧版本的Xcode中不是这种情况,是的!)。 存储管理器。 虽然直接在整个应用程序中访问CoreData和自动生成的实体模型类当然是可能的并且可以接受的,但是将数据操作封装在服务类中是很常见的。 在这种架构中,我已经做到了。 这种方法简化了其余应用程序的数据访问代码,并提供了某种程度的封装,以防基础数据库物理层将来发生变化。 […]

使用工具链在Xcode中切换Swift版本

原始文章发布在XCBlog上 毫无疑问,Swift是开发iOS应用程序的出色编程语言。 但是,由于Apple已将Swift开源,因此它正在经历重大的重大变化。 Swift每天都在发展,但我们必须确保我们的应用程序或库仍可在不断变化的Swift中工作。 苹果一直都在用新版本的Swift发行新的Xcode版本,这通常要求iOS开发人员切换Xcode版本或同时保留多个版本的Xcode。 在本文中,我们将看到如何在多个Swift版本之间切换而不更改Xcode版本。 Xcode和Swift 在进入更改Swift版本之前,让我们先谈谈Xcode和Swift版本是如何相互关联的。 Xcode的新版本始终具有Swift的最新稳定版本,例如Swift 4.1随附的Xcode 9.3。 我们总是可以在发行说明中找到带有Xcode的Swift版本。 默认情况下,位于/Applications/Xcode.app/Contents/Developer/的Xcode开发人员目录。 但是,如果安装了多个Xcode版本,则可以使用xcode-select实用工具切换Xcode开发人员目录。 例如,对于beta版本,我们可以使用切换到beta Xcode $ sudo xcode-select —切换/Applications/Xcode-beta.app/ $ export TOOLCHAINS = swift 检查当前使用哪个Swift版本也很重要。 我们可以检查Swift版本,只需运行以下命令即可。 $ swift-版本 Apple Swift版本4.1(swiftlang-902.0.48 clang-902.0.37.1) 目标:x86_64-apple-darwin17.5.0 这将打印最近Xcode版本正在使用的Swift的现有版本。 我们可以使用以下命令检查Swift二进制文件的位置。 $ xcrun -f swift /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift 如果我们还有其他Swift版本可用,则Xcode可以通过Xcode目标的build设置选项卡中的build设置$ SWIFT_VERSION使用不同版本的Swift。 我们可以从终端使用以下命令快速扫描构建设置。 $ xcodebuild -showBuildSettings | grep SWIFT_VERSION 这将打印当前Xcode项目中正在使用的当前版本。 请注意,此命令必须从iOS项目的根目录运行。 获取新的Swift工具链 由于Swift是开源的,因此所有更新的活动开发都发布在swift.org网站上。 Swift的最新快照始终可以从此处的网站下载。 我们必须从那里在本地macOS机器上下载Swift快照,然后才能使用它。 […]

新的Fastlane插件可使用altool上传iOS二进制文件

最初在XCBlog上发布 。 阅读原始文章以获得更好的图形 苹果不希望我们出于任何原因启用连续部署。 没有用于处理iTunes Connects的API,Apple仍然希望批准您的应用程序。 苹果自己的持续集成服务器(又称Xcode服务器)不允许我们将IPA文件上传到iTunes Connect。 存档过程会创建一个ipa文件,但会在那里停止。 我们仍然需要依靠Fastlane或手动过程将内部版本上传到iTunes connect。 在上一篇博客文章中,我们已经看到了将iOS二进制文件上传到iTunes Connect的五种方法。 在本文中,我们将介绍我编写的Fastlane插件altool,以使用altool将iOS二进制文件上传到iTunes Connect。 您可以在Github上找到该插件的详细信息。 为什么我写了这个插件 Fastlane解决了使用传递和试用之类的工具将iOS二进制文件上传到iTunes Connect的问题,以便我们可以编写与iTunes Connect交互的脚本。 但是,Fastlane使用iTMSTrasporter工具上传二进制文件并处理iTunes Connect,这是一个棘手且漫长的过程。 GitHub上有一个问题来讨论在iTMSTransporter上使用altool的问题,但是作者决定使用iTMSTrasporter来交付工具。 altool是Application Loader的命令行界面,似乎比iTMSTrasporter更为流畅。 我们不需要显式安装此实用程序,它附带了最新的Xcode。 苹果在这里有altool的简要文档。 使用Fastlane,无需使用此工具,因此我认为编写插件很容易,这样我们就可以将二进制文件上传到iTunes connect。 如何使用altool插件 使用altool插件与使用其他插件一样容易。 首先,通过运行以下命令将其添加到您的项目中: fastlane add_plugin altool 此插件的唯一先决条件是必须安装Fastlane,此插件具有可配置的Apple ID和密码,但您可能不想在配置中编写该值。 您需要使用FASTLANE_USER和FASTLANE_PASSWORD环境变量设置进行Fastlane设置。 当您运行fastlane init时,Fastlane会询问它,但如果没有,则必须设置这些变量。 您可以轻松地为bash shell设置它 $ export FASTLANE_USER =“ your_apple_id@yourcompany.com”; $ export FASTLANE_PASSWORD =“ your_super_xecret_password”; 如果您不使用bash,也可以对外壳进行选择。此插件可用于使用Gym将生成的ipa文件上传到iTunes Connect。 安装后,我们可以使用以下配置参数轻松配置插件 […]

Xcode用于快速Swift构建的新构建系统

注意:这篇文章最初是在XCBlog上发布的,请阅读原始文章以获得更好的图形,并且 这里 不会遗漏任何内容 Apple通过Xcode 9在WWDC 2017上宣布了新的构建系统。新的Xcode构建系统是完全从头开始编写的,完全是用Swift编写的。 但是,由于某些原因,默认情况下未启用它,并且可以将其用作预览。 苹果表示,他们将使其在更高版本的Xcode中成为默认设置。 这意味着我们将来必须毫无疑问地接受此构建系统。 在这篇简短的文章中,我们将看到如何使用Xcode New构建系统来加快iOS应用的Swift构建时间。 是。 他们称之为“ Xcode新构建系统”,他们想不出该构建系统的正确名称。 为了了解有关Xcode新构建系统的更多信息,请不要观看WWDC 2017会议“ Swift的新功能”,新发布的版本将在该会议上宣布。 这个人实际上只花了40秒钟来谈论新的构建系统,所以在那里没有什么可学的,相反,谷歌搜索它或继续阅读这篇文章。 Xcode 9+中提供了新的Xcode构建系统。 作为iOS工程师,您可能白天要按CMD + B或CMD + R数百次,并且长时间观看Xcode编译这些内容。 当前,Xcode默认使用“标准构建系统”,这在编译Swift项目时有点慢。 为了改善Swift项目的编译和构建时间,苹果推出了这种全新的“新构建系统”,有望在性能和依赖管理等领域取得进步。 根据Apple关于Xcode 9新增功能的文档,新的构建系统应该能够 提供更高的可靠性 捕获项目配置错误 提高整体构建性能 我们可以通过多种方式为iOS项目启用新的构建系统。 从Xcode本身启用新的构建系统是一个好主意,以便我们在开发应用程序时可以使用所有功能。 使用Xcode 9,启用新的构建设置非常容易。 您可能有Xcode项目或项目的Xcode工作区,在Xcode中, 选择File-> Project / Workspace Setting。 您将看到一个“构建系统”选项以选择新的构建系统,如下所示 启用此功能后,您应该会看到蓝色的锤子。 如果要使用xcodebuild从命令行构建iOS项目,那么我们必须传递附加参数-UseNewBuildSystem = YES还将强制使用新的构建系统。 如果您正在使用Fastlane Gym构建项目,那么我不确定该附加标记是否已在Gym中实现。 按照这种令人困惑的推文,苹果公司的工程经理负责管理新的构建系统项目。 我们还可以使用Xcode 9.2+中的标志启用新的构建系统 $默认写入com.apple.dt.Xcode BuildSystemScheduleInherentlyParallelCommandsExclusively -bool否 […]

为iPhone和iPad构造iOS XCUITests

Apple的XCUITest框架是iOS应用程序UI自动化的热门且新兴框架,自从WWDC 2015推出以来,受到了广泛关注。 XCUITest允许我们在Swift中为iOS应用编写UI测试,这使iOS开发人员可以轻松为iPhone和iPad的iOS应用添加UI测试。 必须同时考虑XCUITests的iPhone和iPad,因为使用iPad上的应用程序的用户不能被忽略。 使用XCUITest,由于使用相同的框架(即XCTest)编写了单元和UI测试,因此持续集成和持续交付变得轻而易举。 在XCUITest之前,Appium,Calabash等工具允许使用其他语言(如Ruby或Java)编写UI测试,这成为CI / CD和iOS开发流程的难题。 XCUITest可以为iOS应用编写,但是iOS设备具有不同的变体,例如具有不同屏幕尺寸的iPad和具有不同屏幕尺寸的iPhone。 我们必须确保XCUITests可以在所有变体上完美运行,而不会引起很多重复。 如果XCUITest的架构正确,那么我们可以避免重复代码,并且仍然能够在不同版本上运行所有XCUITest。 在本文中,我们将介绍如何为iPhone和iPad构建XCUITest。 XCUI测试 XCUITest新手肯定应该观看WWDC视频,以了解XCUITest框架的基本功能。 XCUITest允许我们使用Apple自己的编程语言Swift为iOS应用编写测试。 它与其他第三方框架(如Appium,Calabash等)有很大不同。如果您想将XCUITest与Appium进行比较,请阅读这篇文章,以更好地了解每个框架。 如果您想了解所有新XCUITest功能的动手探索,请参考我以前的博客文章“使用Xcode 9的新XCUITest功能”,其中我已详细介绍了几乎所有功能。 您可以按照DZone上这篇博文中提到的为XCUITests设置面向协议的体系结构,第二部分可以在这里获得。 我们可以使用WWDC 2017演讲中有关可测试性工程的演讲中提到的一些技术来使XCUITest可扩展bu,重点是可测试代码。 UIDevice和XCUIDevice 苹果提供了UIDevice类来获取当前设备的表示,并提供了XCUIDevice类来模拟物理按钮和设备方向。 如果我们正确地组织了XCUIElement,那么在iPhone和iPad上进行架构测试就变得如此容易。 使用UIDevice API,我们可以使用以下代码获取当前运行测试的设备 如果UIDevice.current.userInterfaceIdiom == .pad { //做iPad的东西 } 使用XCUIDevice,我们可以使用以下代码将设备方向设置为横向或纵向 XCUIDevice.shared()。orientation = .landscapeRight 这两个API对在iPhone和iPad上设置XCUITests极为有用。 避免两个套房 在许多项目中,我看到人们为iPhone和iPad创建了两个单独的测试套件。 在iPad和iPhone中,有两种单独的Xcode方案可以执行测试。 在整个测试中也有条件执行,这对于管理测试套件很困难。 我们不需要像使用本文中提到的方法那样进行操作。 稍后,我们将尝试找到解决这些问题的方法。 组织XCUIElement 在iPad和iPhone上构建XCUITests时,以适当的格式组织XCUIElement非常重要。 我强烈建议使用Swift枚举来组织屏幕上的元素。 请将此帖子参考XCUITest的面向协议的体系结构。 在我最近的有关使用Swift枚举组织XCUIElement的文章中,我解释了如何按照屏幕组织元素。 假设我们的iOS应用程序有一个主屏幕,其中包含三个按钮和两个静态文本。 我们可以这样写枚举 导入XCTest 枚举HomeScreen:字符串{ case guestButton =“你好” […]

宣布iOS DevOps Book的预告片

很高兴宣布我在iOS DevOps上写书的新冒险,该书涵盖了将优质应用交付给AppStore的几乎所有内容。 本书旨在通过应用实用的Mobile DevOps和Continuous Delivery技术解决iOS开发方面的挑战。 本书将帮助您的iOS团队自动化iOS应用程序的整个发行过程,包括分析,构建,测试,实现并分发到App Store。 您还将了解如何处理复杂的iOS开发任务,例如Apple开发证书,供应配置文件,代码签名和分发到AppStore Connect。 本书还介绍了iOS中流行的软件包管理器,以及如何为iOS应用选择合适的软件包管理器。 我们还将介绍iOS持续集成(又名CI)的详细过程,以及如何为iOS应用设置持续集成。 这本书将包含六个主要部分 连续交付和移动DevOps的基础 iOS套件管理员 iOS部署管道 iOS持续整合 iOS代码签名和AppStore Connect Xcode UI测试(XCUITest) 这将是本书的暂定结构,并可能随着我们写作的进行而改变。 如果我们错过了本书要涵盖的内容,请告诉我们,我们很乐意在本书中涵盖有关DevOps,CI / CD或Test Automation的所有内容。 如果您对此书感兴趣,请在此推文。 阅读本书的全部内容,请点击此处 如果您对iOS DevOps,CI / CD和Test Automation感兴趣,请发推文。 像XCBlog的 XCTEQ 发布的帖子一样 ? 您可能还喜欢我们的一些服务,例如访客博客或Mobile DevOps(CI / CD)或测试自动化。 在 Github 上 搜索我们的 服务 ,开源项目, 或者在 Twitter , Facebook , Youtube 和 LinkedIn 上关注我们 […]