对人们来说,鸦片多少钱

在本文中,我们将介绍Appium工具。本文是对移动应用程序自动测试的介绍。它将显示使用此工具时可能要面对的困难。

考虑一个以“计算器”为例的小任务,尝试编写自动化测试来对其进行测试,然后……从头开始:)

内容


  • 什么是阿皮?
  • 必要的最低限度。
  • 问题陈述和解决方案。
  • 融合:)

什么是阿皮?


关于移动测试的几句话。您不能在家中拥有计算机,笔记本电脑,但没有移动设备,我们就无法感知我们的生活。测试移动应用程序在...测试...嗯...黄油是黄油,但这是黄油。这种利基相当复杂。

有如此多的设备及其操作系统,图形界面,屏幕分辨率等。我认为这个清单是无止境的。因此,由于移动设备种类繁多,最好对我们的应用程序进行自动化测试,以减少测试人员的痛苦,而不是将数百种设备上的一项功能的测试变成“真实的地狱”(请参见下图)。

图片

有许多工具可以为移动设备编写自动测试。为了解决摆在我面前的任务,我选择了Appium,因为它同时适用于Android和iOS,并且您可以使用“每个人都喜欢的” Java编写自测。

Appium是一个免费的开源跨平台工具,可帮助自动执行适用于Android和iOS的应用程序。Appium采用与Selenium WebDriver相同的方法,后者从客户端接收JSON HTTP请求,并根据其运行的平台对其进行转换。

图片

最低要求


那么,我们需要与Appium合作吗?

要为Android创建测试,提出了以下要求:

  • Java(版本> = 7)
  • Android SDK API(版本> = 17)
  • Android虚拟设备(AVD)/真实设备
  • 英特尔硬件加速执行管理器

为了使Android设备仿真器以接近真实设备的速度运行,您需要安装Intel Hardware Accelerated Execution Manager。这将有助于减少启动和调试应用程序所需的时间。

对于iOS:

  • Mac OS X(版本> = 10.7)
  • Xcode(版本> = 5.1)
  • Java(版本> = 7)
  • 家酿
  • 节点JS
  • npm

我还建议安装appium-doctor,以便在两个平台上安装和配置必要的组件时诊断可能的问题。

图片

问题陈述和解决方案


因此,让我们想象一下,我们需要为Android设备的计算器应用程序编写自动化测试。为此,我们需要从官方网站下载Appium并将其安装在我们的“计算机”上。

图片

启动Appium。

图片

默认情况下,Appium可以通过端口4723监听本地主机。在这里,我们将一切保持不变并启动服务器。

图片

现在,Appium已准备就绪,可以处理我们的请求。

我们将来的自动测试必须在仿真器或真实设备上运行。为了使本文具有多功能性,请考虑在模拟器上进行测试的工作。为此,我们需要Android Studio。自己下载并安装。然后打开并转到工具-AVD管理器。

图片

图片

图片

图片

图片

图片

现在打开终端并运行adb devices命令。她将显示已连接设备的列表。

图片

我们看到设备列表为空,因为没有仿真器在运行,所以没有真正的设备连接到我们的“机器”。

运行我们拥有的所有模拟器。就我而言,这是两个模拟器。再次运行adb devices命令。

图片

现在,我们有了一个非空列表,其中包含连接的设备(模拟器和设备,如果有)的ID。

整理好模拟器后,让我们开始编写代码。如上所述,在我的测试中,我使用Java。

首先,创建一个AndroidDriver实例。此类的构造函数要求输入两个参数:

图片

所需功能-客户端发送到服务器的JSON对象(一组键值对)。

所需功能描述了创建的会话的功能(设备/仿真器的名称,操作系统(OS),操作系统版本,启动的应用程序等)。 功能

示例:

图片

我们描述我们的功能并创建AndroidDriver。

图片

deviceName是必填参数,但对于Android则未选中。如果我们谈论iOS,那么在指定名称时,必须使用保留名称之一(代码注释中给出了此类名称的示例)。代码中给出了其他参数的描述(参见上图),但我们将重点介绍其中的一些。

udid是设备的唯一标识符。我们可以使用adb devices命令获取此设备标识符。

图片

appPackage是我们要运行的Android应用程序的Java软件包的名称。

appActivities是我们打开的活动的名称。

appPackage和appActivities可以通过多种方式获得,但最简单的方法是从Google Play安装“ APK Info”应用程序。

打开此程序后,您将看到所有已安装应用程序的列表。我们对计算器感兴趣。从列表中选择它。

图片

这就是我们需要的所有信息。

图片

图片

充满了他们。接下来,创建一个AndroidDriver实例:注册Appium URL并将功能对象作为第二个参数传递。

图片

此代码将仅在模拟器上运行计算器。我们需要学习如何以某种方式管理计算器的元素,以便编写简单的测试。此处的原理与Selenium Web Driver中的相似。我们需要通过任何定位器访问元素。 Appium Inspector将帮助我们获取它们。打开Appium。

图片

图片

现在,必须将代码中描述的所有功能转移到“所需功能”选项卡中的检查器中。

图片

开始会话。

图片

检查器会翻译设备上显示的内容,其中右侧是当前活动所有元素的树。要获取元素的属性,只需选择我们需要的元素。

图片

选择后,将显示该元素可用的所有属性,在这种情况下,对于我们而言,如何访问该元素并不重要:通过ID或xPath。但是在大型和复杂的应用程序中,最好使用ID,因为xPath大大降低了测试的通过速度。另外,在测试混合应用程序时,该ID对于Android和iOS将是一个,而xPath将有所不同。我们学习了如何获取必要的属性。现在,类似于Selenium Web Driver,我们在代码中获得了必要的元素。

图片

要获取该项目,我使用findElementById方法。您可以创建MobileElement类的实例并使用它,也可以不创建实例。在这里,我们定义数字2,+和3的元素。最后,我希望结果为5。最后,得出以下结果:

图片

我进行了测试,并努力将会话创建为单独的方法。现在,我将尝试证明我们所做的。


融合:)


图片

在本文中,我展示了如何快速开始使用Appium以及为此需要什么。您可能已经注意到,开始编写简单的测试并不是那么困难。然后,您可以将报表固定在项目上,例如“魅力”。但这是一个完全不同的故事:)

安装与Appium一起使用所需的各种工具时,也许您会遇到个别问题。但是所有这些问题都可以通过Google搜索轻松解决:)

iOS的测试主题尚未公开,但我想“说”,或者只写几句话。

为了在iOS上通过Appium运行该应用程序,我花了很多时间来设置环境(xCode,Appium,开发人员证书等)。必须通过xCode打开Appium项目,指定开发人员证书和其他设置,组装项目,然后才可以在iOS设备上通过Appium执行命令。每次更新Appium之后,必须执行此过程。也许一切都会对您来说变得容易得多,您应该相信它。到目前为止,我还没有找到其他解决方案,也许是,但是到目前为止,它很适合我。

我想再次指出,与xPath相比,在访问元素时使用ID更好。即使该元素不包含ID,也请询问/强制开发人员指定ID。这将使您的生活更轻松,并提高测试执行速度。

但是,您拥有的设备越真实,在最终用户找到错误之前,找到错误的可能性就越大。原则上,您可以创建自己的设备工厂。但是在我看来,更明智的选择是云解决方案,例如Br​​owserStack,SauceLabs等。

这就是我想说的!GitHub上的

PS 项目

PPS 我的团队的一小部分

现在就这些!

All Articles