移动自动化战略
Android 或 iOS 上的智能手机应用程序可以构建为混合应用程序、本机应用程序或 Web 应用程序。无论被测应用程序的类型如何,自动化框架的选择策略都没有很大的变化。
选择自动化框架
这里的挑战是找出框架,该框架要么是付费的,要么有能力操作并到达应用程序的每个 UI 部分。此外,它应该有不同的库,可以与正在测试的应用程序的后端块进行通信,例如数据库或 Web 服务。
考虑到市场上所有可用的应用程序类型,以下框架非常有希望提供可靠的输出:
测试运行的测试台
另一个挑战是决定自动化是否应该在真实设备或模拟器上运行。有不同的第三方模拟器软件(Genymotion 是一个著名的例子),它有望实现应用程序约 90% 的功能,不包括一些硬件和网络相关的测试用例。选择真实设备取决于 AUT 所使用的 Android 版本和硬件功能。
机器人框架:Appium 库
Robot 框架是一个开源框架,它可以理解文本和 HTML 格式的测试用例脚本,并具有关键字驱动的方法。它是在测试库的帮助下在许多框架上编写的包装器。这些测试库是根据我们选择的框架来选择的,以自动化不同类型的应用程序。
要使用 Appium 框架驱动应用程序,首选 Robot 框架的 Appium 库。这里,Appium 的大部分功能都以关键字的形式构建,想要阅读脚本并了解特定测试中到底执行什么的测试人员很容易理解这些功能。
Appium 是用于所有三种类型应用程序的基于 UI 的自动化的著名框架之一。要使用 Appium 编写强大的自动化框架,建议使用 Appium 的 Robot 框架库。
案例分析
我将引导您完成一个在简单本机应用程序上完成的小型案例研究,其中至少有两个使用混合框架自动化的测试用例,并使用带有 Appium 库和 Python 编写的实用程序的 Robot 框架。
注意:以下方法也可用于混合应用程序和 Web 应用程序。
测试中的应用程序 (AUT)
现在我要以一个简单的混合应用程序为例,它是Android平台的默认电子邮件应用程序,涉及以下情况:
启动默认电子邮件应用程序并检查是否正确启动。
正确切换到更正收件箱
验证邮件是否正确发送
涉及的软件/硬件
真实设备或模拟器(Genymotion)(最好是Android 4.2.2或更高版本)
机器人框架
Robot框架的Appium库
Python 2.7.5 或更高版本
Appium 1.2.4.1 或更高版本
机器人框架的关键组件
詹金斯:持续集成
Jenkins 是一种持续监控工具,负责作为端到端自动化运行的一部分运行所需的所有活动。上图中,Jenkins的作用是监控已触发运行pybot测试的作业。
注意:源代码控制存储库也可以用作 Jenkins 作业的源来获取自动化代码存储库。
下图显示了 Jenkins 作业之一,该作业触发名为 Launch_email_app.txt 的测试脚本文件。
测试套件:Launch_email_app.txt
这是一个测试脚本文件,在“Testcase”标签下有三个测试用例。该标签下的标签被 Robot 框架视为测试方法。它们以自上而下的方式按顺序执行。
图片标题
皮博特
这是一个Robot框架模块,用于触发以Robot框架格式编写的测试脚本。这里,pybot 读取不同的框架文件,并通过在应用程序的 UI 上执行不同的操作来执行测试。
机器人框架代码库
该文件夹结构包含使用 Appium 库在应用程序的 UI 上进行通信和操作的所有脚本。它根据需要包含不同的外部库。
Appium服务器
Appium 是在 Node.js 上运行的开源引擎,是一个解释器,用于驱动 Appium 库命令在应用程序的 UI 上执行操作。它需要在与应用程序的 UI 交互期间启动并运行。要访问虚拟设备的 shell 功能,带有不同参数的 <adb> 命令可能会很有用。
真实设备或模拟器
需要运行的自动化测试脚本大多在虚拟设备上执行。Genymotion软件托管不同Android版本的设备并以虚拟方式运行。如果测试特定于真实设备,那么无需对框架进行任何更改,只要 UI 具有与代码中预期的元素相同的所有元素,就可以执行它们。
报告/日志
使用 Robot 框架的好处是它在测试用例执行中具有出色的功能日志记录和报告功能。报告以标准方式生成,也可以自定义。请在下面找到这些报告的一些剧照。
测试报告
这是测试运行后自动创建的 Report.html 页面。此页面总结了不同的测试套件及其使用 pybot 触发的命令的运行。这些报告是交互式的,可以深入分析测试脚本中的步骤如何进行。