Tag: 软件测试

与杜鹃和代码生成保持一致

请注意 ,由于README为该库提供了很好的介绍,因此本文不会涉及Cuckoo的基础知识。 您是否编写单元测试? 你应该。 在Objective-C中为我的测试编写模拟程序似乎要容易得多。 OCMock充分利用了Objective-C的动态特性,使模拟变得轻而易举。 但是,OCMock网站上有这样的说法: 令人失望。 准确。 好吧,出发寻找替代方案。 我能找到的最好的东西是SwiftMock,但这带来了更加尖锐的失望: Swift似乎缺乏反射性,这意味着我们注定要手动做事并一次又一次地重写相同类型的代码。 因此,我采取了自己的模拟游戏。 它没有那么坏。 真。 我基于Mock协议并使用Swift的基本反射构建了自己的Mock框架,在TDD的世界中,所有人都感到很高兴。 当您编写大量代码以及应附带的所有测试时,为模拟编写样板的所有时间都很累。 我渴望更高效的东西。 然后,我被介绍给杜鹃。 Cuckoo是Swift的一个模拟框架,它使用代码生成来创建您自己编写的样板。 它具有很多功能,我认为这些功能过于繁琐和重复,无法自己完成。 它还可以确保一致性,这是我在手工模拟世界中非常缺乏的东西。 代码生成与反思 大多数编程语言使用反射来动态执行某些事情,否则我们将不得不为其编写重复的样板。 OCMock使用反射来创建模拟对象。 实际上,它不会为您要模拟的每种类型创建一个新类。 反射允许像Objective-C这样的语言来动态创建模拟,检查是否相等以及执行JSON序列化。 到目前为止,在Swift中这并不是一件容易的事。 Swift语言避免了动态行为,并鼓励使用更安全的方法。 另一方面,代码生成非常适合Swift的类型安全性。 您拥有可以被人类阅读并可以由编译器验证的代码。 起初我觉得很奇怪。 我可能没有写样板,但它仍然存在。 由工具编写并隐藏在后台。 但这似乎是像Swift这样的语言的前进方向。 诸如Sourcery和SwiftGen之类的框架使您可以为这些任务采用代码生成,否则可以通过反射来完成。 缺乏反射和强大的类型安全性意味着在减少您花在单调任务上的时间和更多时间在应用程序重要部分上的工作时,代码生成是新的入门方法。 布谷鸟使用代码生成比反射方法具有许多优势,例如类型检查,优化以及逐步调试生成的代码的能力。 不用发疯地使用杜鹃 布谷鸟已经变得更加易于使用,并且需要反复尝试。 这是到目前为止我已经学到的一些见解。 熟悉ParameterMatchers 看这个例子: stub(mock) { stub in when(stub.greetWithMessage(“Hello world”)).thenDoNothing() } 当传递字符串“ Hello World”时,我们将greetWithMessage对greetWithMessage函数的调用行为。 重要的是在此处注意,代码实际上并不期望使用String对象。 它期望一个Matchable […]

使用AcceptanceMark自动生成Xcode测试

自动生成测试? 是的,请。 这篇文章展示了如何使用Markdown表为您的软件/应用程序编写业务逻辑 ,以及如何使用名为AcceptanceMark的命令行工具为Xcode 自动生成测试 。 但是首先,一些背景 。 您的代码可能具有以下测试形式: 单元测试 整合测试 验收测试 UI测试 阅读此处 可以很好地了解它们之间的区别。 此外,您可能有一个专门的质量检查小组,并定期手动运行您的应用程序以验证其正确性。 虽然编写好的测试对于构建高质量的软件是必不可少的,但这也需要花费很多时间。 我将向您展示如何更快地测试代码 ,以便您可以将时间花在更重要的事情上! 测试,Xcode方式 在Xcode中,可以通过子类XCTestCase编写单元测试或UI测试 。 假设您的被测系统(SUT)是一种日期格式化程序,需要使用各种可能的语言/输入日期才能正常工作。 测试类可能如下所示: 并将其自动转换为Xcode测试类吗? 好吧, 我已经编写了一个名为AcceptanceMark的工具来 完成该任务 。 只需在终端上运行此命令: amtool -i DateFormattingSimple.md 该工具将生成如下所示的Swift测试文件: 一些观察: 年 , 月 , 日 , 小时 , 分钟 , 第二列被注释为Int 。 AcceptanceMark还不支持将日期作为内置类型使用,但是可以在此处使用单独的组件,以便日期输入与格式无关。 语言列是语言环境标识符字符串。 dateStyle列是一个字符串。 dateStyle和localizedDate之间有一个空列。 这称为分隔符列 。 AcceptanceMark将其前面的所有列均视为输入,并将其之后的所有列均视为输出。 AcceptanceMark始终需要分隔符列 […]

了解使用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组件。 […]

测试UITableViews数据源(第1部分)

在移动开发中,测试应用程序是一项非常重要的任务,特别是当您的产品需要经常发货并且您不是一个人的团队时。 但是,即使自第一天起就不应该将持续集成作为目标,但我们都知道,在现实世界中,我们大多数人都会跳入已经由其他人启动并且具有许多未经测试的代码的项目。 考虑到这一点,这将是我的第一篇有关代码测试及其有关在Swift中测试UITableView组件的文章。 更具体地说,有关如何测试UITableViewDataSource。 我选择该主题的主要原因是我花了大部分工作时间在Swift中进行开发,并且UITableViews是所有iOS应用程序中使用的最基本的组件之一。 代码结构 有关此项目的代码可在此处找到,并且由一个包含UITableView的单屏应用程序组成。 由于UITableViews是非常复杂的组件,并且我们可以使用许多不同的方式,因此本示例重点介绍如何测试所需的UITableViewDataSource方法,这些方法是: 如果下载并运行代码,您将看到一个空行的屏幕,该屏幕可滚动,但没有太多显示。 我曾经认为我需要查看自己所做的所有事情才能正确测试它。 一段时间后,我意识到可以分离逻辑和UI并分别对其进行测试。 这听起来像是显而易见的推理,但有时实践并不像理论那么容易。 TL; DR如果您对测试部分比对项目本身更感兴趣,请参考“ 测试”部分 。 AppDelegate.swift 这是我们应用程序的起点。 它有很多样板,通常我们不需要触摸它就可以开始开发任何东西。 但是,在这种情况下,我想将UIViewController与情节提要隔离,因此我插入了一个函数来手动设置RootViewController : 和功能: 该函数的作用是创建一个TodoListViewController实例并将其设置为我们的窗口rootViewController 。 通过这样做,我们将应用程序直接加载到我们要测试的UIViewController中 。 作为本文的补充,我们还将看到如何使用UI Test来测试是否正确加载了初始视图控制器。 TodoListAdapter.swift 由于我们要正确测试UITableViewDataSource ,因此最好将其与UIViewController分离。 为此,我们创建一个单独的类来实现数据源协议。 该适配器类也可以用于实现UITableView的委托,但这超出了本文的范围。 现在,让我们集中讨论如何实现数据源。 由于我们的适配器的主要目标是实现UITableViewDataSource协议,因此我们需要将该接口添加到适配器的声明中。 我们还需要添加一个NSObject 接口,因为UITableViewDataSource 需要符合NSObjectProtocol 太: 常数 为了能够利用iOS内存优化的优势,我们应该为UITableViewCells分配一个标识符,该标识符将使它们在需要时出队并再次使用,而不是每次都进行新分配。 由于我们的适配器将负责管理UITableView内容,因此让我们在其中添加一个常量,使我们可以在具有相同标识符的代码库之间保持一致。 变数 由于我们想将数据与UIViewController分离,所以我们创建一个变量以将我们的数据存储在适配器中,并创建一个适当的初始化器来接收该数据: 这样,每次创建适配器时,我们都可以为其分配用于呈现UITableView的数据 。 另外,这对于测试非常有用,因为我们可以根据需要在适配器内部直接模拟数据。 为简单起见,我们的数据将为Strings数组。 在以后的文章中,我将更好地解释如何在适配器内处理不同的数据类型,但是现在使用Strings就足够了。 UITableViewDataSource 从根本上说,在测试UITableViewDataSource时,我们希望能够检查数据是否正确加载。 就像我之前说过的那样,有两种方法需要实现: tableView(UITableView,numberOfRowsInSection:Int) 此方法负责定义UITableView具有的数据的行数。 由于我们要在表视图中显示所有数据,因此我们将使其返回数据数组计数。 […]

使用Appium Mobile测试自动化管理质量检查难题

随着无数移动应用程序,操作系统,设备平台,网络的兴起,对质量测试的需求变得至关重要。 自动化的移动测试在质量保证行业中仍然是一个独创的概念。 在Appium成为用于测试Android和iOS应用程序的最可靠的开源移动测试自动化工具之前,移动应用程序测试人员面临着严峻的挑战。 它减少了测试人员面临的许多挑战,并成为自动化移动应用程序测试的测试人员友好工具。 根据《 2017-18年世界质量报告》,质量检查团队面临的最常见挑战是缺乏内部测试环境的时间,测试专业知识以及缺少测试移动应用程序的正确工具和方法,集成测试的难度大为了克服这些问题,必须在更深层次上改变策略和方法,以改善客户体验。 以下是根据自动移动应用程序测试中移动应用程序测试人员面临的经验指出的一些挑战: 在多个设备上执行测试:很难在不同的设备环境上部署和运行测试。 在较少数量的设备上购买和运行测试很容易,但是当数量更多时,在所有设备上运行自动化测试会变得困难且耗时。 在测试大量设备时,最好考虑使用诸如pCloudy之类的云服务。 pCloudy Appium集成体系结构使开发人员的工作变得更简单,代码更改更少。 您只需要提及一些所需的功能即可,而不是调用API或更改代码以运行Appium脚本。 您可以在500多个设备上并行运行测试。 想知道是什么! 它使您节省了50%的应用测试时间。 a) 设备连接性:设备具有不同的功能。 某些设备在安全性,可访问性和驱动程序方面具有某些限制。 一台设备上运行的应用程序某些功能可能无法在另一台设备上运行。 因此,用于测试的设备在功能上会有很大差异,因此可能会在此级别出现问题。 b) 测试性能:在真实设备上进行测试是最有效的,因为所有内容均已在实际情况下得到验证,尤其是在不同网络条件下测试性能和测试应用程序的情况下。 GPS,接近传感器,生活传感器等许多手势无法在模拟器上进行测试。 在模拟器上测试的应用程序在实际设备上可能无法始终正常运行。 同一操作系统在不同设备上可能会不一致,更不用说其他操作系统了。 在需要进行大规模设备测试的情况下,也可以考虑进行设备云测试。 c) 访问网络:为了使功能更流畅,必须易于访问网络,数据库和Web服务。 如果使用远程服务,则需要配置设备隧道和VPN连接以轻松访问资源。 pcloudy的设备隧道为开发人员提供了对云上设备的完全控制。 这样,可以通过计算机中安装的Android Studio或Eclipse IDE访问云设备。 这已帮助开发人员和测试人员输入托管在云中的任何类型的设备,以运行快速评估和应用程序调试会话。 以上是移动应用程序测试自动化的一些挑战,但是Appium如何解决这些问题? Appium支持大多数测试人员都熟悉的Selenium Webdriver API 2.无需修改正在测试的应用程序的代码。 3. Appium支持主要的编程语言,例如JAVA,RUBY,PYTHON,C#等。 4. Appium支持IOS和Android移动平台 5. Appium具有庞大的用户社区,并且是一个开放源代码工具。 但是,它的某些版本确实存在其自身的挑战。 像这样的挑战不支持图像识别,并非所有功能都同时在Android和IOS上可用,某些API没有实现,等等。尽管有这些缺点,Appium仍然是测试人员的最佳选择。 真实设备和云上的APP的性能。 哪种环境最适合Appium性能? 是在真实设备上还是在云上? 1. 在Real Devices上 –在提供实时用户体验方面, […]

XCode UI测试指南

苹果公司的UITest套件使一些开发人员感到兴奋,而其他人则对失去的功能感到失望。 UITest的工作方式不同于开发人员所依赖的功能测试解决方案,例如KIF。 UITest无需授予您对元素本身的访问权限,而是提供了具有最少交互参数的代理元素的访问权限。 学会将单元测试和基于单元的ui测试与功能测试区分开可能是一件令人沮丧的经历,尤其是在使用仍需要解决的新框架时。 我希望以下指南可以帮助开发人员对使用UITest时所需的方法有所了解。 *本文写于2015年12月中。那时,UITest仍遇到一些错误。 很多次我的测试都失败了,第二天没有任何变化就会通过。 建议您经常清理和删除派生数据,以及不时重新启动XCode。 您可能还必须找到一些创造性的解决方法。 更多信息请参见下面的“ Gotchas”部分。 在查看文档集时,请记住,UITest同时用于iOS和OSX测试,因此可能提到了OSX特定项(例如,单击与点击)。 怎么运行的 UITest的独特之处在于它不使用项目代码进行测试,而是存在于应用程序外部 。 UITest而是查看模拟器中可用的内容,并根据发现的内容返回给我们XCUIElement的实例, XCUIElement和XCUIApplication是用于此的代理。 例如,按钮是XCUIElement类型的XCUIElementTypeButton (或者仅仅是.Button )。 这意味着您将无法访问ObjC或Swift类/对象或它们的关联属性。 您只能访问XCUIElement属性。 这也意味着@testable中没有@testable或其他类似的导入。 UITest包含一项新的“记录”功能,可用于记录操作并帮助加快测试的编写速度。 UITests可以在没有Record功能帮助的情况下编写,因此可以成为测试驱动开发的一部分,但是,在编写要测试的代码后编写测试时,最好先使用Record,然后修改结果。 这是因为在您更加熟悉某个元素之前,有时很难预测该元素将如何暴露于UITest。 它还有助于识别您可能尚未意识到的问题,例如具有相同标识符的多个项目。 XCUIApplication是用于测试的代理。 它将为每个测试启动该应用程序的新实例,从而为您提供运行测试的基础。 与XCTest一样,它具有设置和拆卸方法,您可以封装一些常用功能,例如在测试文件中编写一个函数以清除文本字段,然后可以在所需的每个后续测试中调用该文本字段。 您还可以在XCUIElement进行扩展,以在测试套件的任何部分中重用代码。 XCUIApplication启动和终止应用程序(分别启动和终止)。 您还可以使用launchEnvironment在启动时将参数传递给应用程序,并使用launchEnvironment传递环境。 在头文件/ docset中:“与NSTask不同,在启动应用程序之后修改环境[和启动参数]是合法的。这些更改不会影响当前的启动会话,但是将在下次应用程序生效时生效。发射。” UITest建立在XCTest框架的基础上,并包括对该API的新添加: 没有任何官方文档,但是Joe Masilotti根据框架标头编译了文档。 上面的项目直接链接到那些文档。 如果作者将网站关闭,我们将在Github上分发该文档集的副本(截至2015年12月8日)。 该文档集还包括XCTest框架的其余部分,而不仅仅是UITest。 标识元素-> XCUIElementQuery 元素是使用查询来标识的,最常见的是使用标识符和类型的组合。 元素是唯一的,为了使用元素,查询必须返回一个元素。 Apple提供了一些快捷查询( app.tables返回所有表的XCUIElementQuery ,而app.table[“table identifier”]将返回类型为.Table的XCUIElement ,具有指定的标识符,而长格式为app.containingType(.Table, identifier: “table identifier”) ),并且可以根据喜好和需要使用长格式或短格式。 查询链接在一起,并且变量名可以在整个链中替换: […]

如何从Git存储库构建iOS应用程序(FOR QA STAFF)

这是给质量检查人员或测试人员的说明,说明如何从Git(GitHub)存储库在设备上构建iOS应用程序。 在本文中,我假设以下内容: 该读者(以下称“您”)不是iOS应用程序开发人员 您应该在Apple设备上检查团队申请 您有您的Apple帐户 您可以要求团队管理员邀请您加入团队项目 您可以访问并将Git(GitHub)存储库克隆到您的计算机中 您的项目进度非常紧张,您没有时间采取其他理想的方式(例如,由TestFlight或DeployGate提供) 除上述内容外,这些经验或知识还可以帮助您: 通过ADB命令在设备上安装Android apk 使用任何IDE 脚步 将您的Apple帐户注册到开发者帐户 要求您的团队管理员邀请您成为会员 安装Xcode 使用Xcode克隆您的团队存储库 在Xcode上设置您的Apple帐户 将Apple设备连接到计算机并构建项目 1.将您的Apple帐户注册到开发者帐户 首先,您应该获得您的Apple Developer帐户。 您可以将Apple帐户注册为Apple Developer帐户。 2.要求您的团队管理员邀请您成为会员 接下来,您应该要求团队开发人员邀请您成为Apple开发人员[人员]的成员。 在他(她)将您的(苹果)开发人员电子邮件地址添加到项目中之后,您将收到邀请电子邮件。 3.安装Xcode 下载并安装Xcode。 如果您不需要使用Xcode Beta,则可以从App Store获取(正常)Xcode。 4.使用Xcode克隆您的团队资源库 首次启动Xcode时,Xcode将显示如下视图。 单击“克隆现有项目”后 ,Xcode将打开新窗口。 键入Git存储库的URL后,您可以获得源文件并打开项目。 5.在Xcode上设置您的Apple帐户 现在,您可以使用Xcode打开您的团队项目,但可能会有一些警报。 通过单击左窗格顶部的左文件夹图标,打开项目目录。 您可以通过单击“添加帐户…”打开“帐户”视图,然后键入您的Apple(开发人员)ID。 然后,警报将被删除。 6.将Apple设备连接到计算机并构建您的项目 现在,您可以在预设的模拟器或真实的Apple设备上运行项目。 将设备连接到计算机并选择它,然后单击三角形(播放?运行?)图标。 (您可以知道在中心框上构建的进度。) 之后,您可以通过git-pull构建并尝试最新的源代码。 (就我而言,我使用GitHub Desktop控制存储库。尝试您熟悉的方式。) 例如 获取运行日志 您可以使用Xcode读取设备上运行的应用程序的日志文件。 打开工具栏上的“ 窗口”>“设备 ”,然后单击“ […]

iOS 11:它如何影响您的移动应用测试

在iOS 11公开发布的两周内,它已被38.5%的iOS设备采用。 尽管采用率没有iOS 10快(同一时间为48.6%),但这些数字仍然足以说服任何尚未开始在iOS11上进行测试的团队。 在iOS 11中,我们获得了许多重要的更新,例如改进了控制中心,更智能的Siri和iPad上的多任务处理功能。在本博客中,我将仅讨论那些最有可能影响移动应用程序测试的更新。 删除Facebook和Twitter集成: 随着iOS 11更新,Apple删除了对Facebook和Twitter的第一方支持,这些支持先前已在系统级别集成。 以前,添加这些帐户将作为其他应用程序的单点登录。 但是该支持现在已删除。 因此,如果您的移动应用程序具有Facebook / Twitter登录功能,则建议对其进行测试,并确保用户仍然能够通过网络视图或本机应用程序(如果已安装)登录。 2. 位置权限更新 iOS 11在向用户呈现位置权限的方式方面进行了重大更改。 在以前的iOS版本中,开发人员可以选择他们想要显示的位置权限。 大多数用于请求“始终允许”许可的应用程序。 但是,在iOS 11中,这三个选项都会自动出现。 现在,用户还可以选择“仅在使用应用程序时”而不是“始终允许”。 虽然这对于所有应用程序可能并不重要,但如果用户选择意外选项,则肯定会影响GPS和健身跟踪应用程序的功能。 除上述内容外,如果任何应用程序在后台过度使用GPS,则会通知iOS 11用户。 因此,最好确保App仅在需要时才使用GPS。 3.位置权限的应用说明 除了上面讨论的用于权限对话的三个选项外,还将为用户显示所有不同位置权限选项的App Explanation (始终与使用中)。 因此,重要的是要确保开发人员为这两个选项都添加了正确的“应用说明”。 在“权限对话”中添加的任何虚拟数据看起来都很难看! 4.拖放支持 苹果对用户界面进行了几处更改。 最重要的是拖放功能,该功能使用户可以同时执行多个任务。 如果被测应用是基于本机技术开发的,那应该没问题。 但是,如果该应用程序基于HTML5或任何其他非本机平台,则可能存在问题,应进行全面测试。 5.终止对32位产品和应用程序的支持 这意味着具有32位体系结构的设备和Apps根本无法在iOS 11上运行。但是,好消息是Apple自2015年以来一直在倡导这种迁移。因此,预计受此影响的Apps数量将很少。 如果2015年2月之后发布了任何版本的应用,则无需检查该应用。 最初于 2017年10月9日 发布在 www.testerlogic.com 上。

Xcode专业提示:再次运行上一个测试

不想埋葬书架,所以这里是: ⌘G 控制选项命令G 这将再次执行您上一次执行的测试操作-这可能正在运行一个或多个测试套件或案例。 如果您要进行迭代更改,并且不想回到测试方法范围或“测试导航器”中,以便每次手动运行特定测试,这将非常方便。 也可以从Xcode的“ 产品”菜单中访问它,如下所示: 还众所周知,我会进入我的计划并切换我想要的测试套件,但是如果您要更改要频繁运行的测试集,这也很艰巨。 但是,如果您想一遍又一遍地运行测试的子集,则上述方法可能会很有用,但这是另一天的工作。

15个适用于Android和iOS应用程序2018的顶级自动化测试工具[信息图]

适用于Android和iOS应用程序2018的顶级自动化测试工具[信息图] 软件开发的状态会随着时间而变化,所使用的技术和工具也会随之变化。 2017年是更加专注于开源和持续测试工具的一年,在接下来的几年中,随着其他技术趋势可能以好的和坏的方式影响测试工具,这将继续成为突出的一年。 随着2018年即将到来,预计Android和iOS应用程序测试领域将发生很多事情,例如某些工具可能会融合,更多的AI将嵌入自动化技术中,商业市场所有者可能会引入新工具方面,企业将开始意识到Selenium并不是软件测试公司工具箱中应有的唯一工具。 移动应用程序开发的变化及其即将推出的新策略旨在实现以下目标:提高质量,生产力,客户满意度,产品按时交付,最小化资源使用,减少重复测试周期中的人为错误,最重要的是开发出最佳产品和根据客户需求为您提供服务。 在此移动应用程序自动化测试环境中,工具无疑占据了中心位置,此INFOGRAPHIC列出了2018年适用于Android和iOS应用程序的顶级自动化测试工具。此列表是我们之前博客的更新版本,如果您认为此列表不完整,您可以在下面的评论部分中发表您的意见。