Appium Mobile Extensions 包中的工具可以帮助您为 Android 和 iOS 应用程序(本地、web 和混合)执行 Junit 格式的 Appium 移动测试。章节目录:

关于工具

包中包含了以下工具。

Appium Mobile Executor 工具

Appium Mobile Executor 工具能够结合使用 SOAtest 运行的各种其他类型的测试来执行 Junit 格式的 Appium 测试。它支持针对 Android 和 iOS 应用程序(原生、web 和混合)的 Junit 功能测试。测试可以在 Android 仿真器、iOS 模拟器或本地设备(iOS 或 Android)上执行。对于要测试的特定 OS 版本的支持取决于 Appium 服务器。更多信息,请参阅 Appium 文档

您可以设计并执行一个单一的、整体的测试场景,该场景将移动测试编排为更广泛的事件序列的一部分。例如,您可以使用最直观的 SOAtest 界面:

  • 运行一个执行多个操作的场景来设置测试环境或测试数据,
  • 运行单元和服务级别测试,
  • 执行移动测试

您可以从测试中提取值,用于验证和/或填充端到端测试场景中涉及的其他工具。

Start Appium Server 工具

该工具使用所需的配置自动启动 Node.js 服务器上的 Appium 应用程序。

Stop Appium Server 工具

此工具自动关闭使用 Start Appium Server 工具打开的所有服务器实例。

要求

  • 9.10.X 或更高版本的 SOAtest 运行带 Java 8 或更高版本的 Eclipse。
  • 1.6.5 或更高版本的 Appium Server。您可以安装 Desktop App,也可以将 Appium 安装在 Node.js 服务器上
  • 针对您计划运行的测试类型,Appium 要求的先决条件和配置。详情请参阅 Appium 文档,尤其是 Setting up the Appium Client 部分。
  • 如果您计划与仿真器连接,则 Junit 必须按照 Appium Concepts 或Desired Capabilities 文档中的说明设置所需功能。例如:

    DesiredCapabilities capabilities = new DesiredCapabilities();
    capabilities.setCapability("platformName", "Android");
    capabilities.setCapability("deviceName", "testDevice");
    capabilities.setCapability("platformVersion", "4.4.2");
    capabilities.setCapability("app", "C:\path\to\application.apk");

    “设备名称”必须始终在工具 UI 和 JUnit 中设置

    这是 Appium 需求。其他设置必须在 JUnit 测试本身或工具 UI 中设置。在工具 UI 中指定的设置将覆盖 JUnit 中设置的值。

  • 支持用 3.8.x 和 4 格式的 JUnit 编写 Appium Selenium WebDriver 测试。测试应该根据 Appium 需求编写和配置,如 Running tests 帮助主题所述。

安装

工具集可以从 UI 或命令行安装。

UI 安装

  1. 选择 Parasoft> 首选项
  2. 在系统属性首选项页面,点击添加 JARs
  3. 导航到 appiumextensions.jar 文件。
  4. 重启 SOAtest/Virtualize。

命令行安装

将 appiumextensions.jar 文件添加到设置属性文件中的 system.properties.classpath 属性。例如:

system.properties.classpath=<path to jar>/ appiumextensions.jar

基本配置

需要为要运行测试的特定移动平台设置环境。详情请参阅 Appium 文档,尤其是 requirementssetup 部分。

Start Appium Server 工具的使用说明

您可以使用添加测试向导将 Start Appium Server 工具添加为独立版工具(请参阅添加项目、.tst 文件和测试套件。将 Start Appium Server 工具放在测试套件中的 Appium Mobile Executor 工具之前。

Start Appium Server 工具的输出将保存 <temp>/parasoft/xtest/AppiumServerLog-< timestamp>.txt 的一个临时目录中。

Start Appium Server 工具配置

在运行 Appium 之前,必须将该工具配置为在设备或仿真器上启动 Appium。

环境设置

Node.js 安装目录指定安装 Node.js 的目录。目录应该包含 node.exe(Windows)或 bin/node (Linux 或 Mac)。在 Windows 中,目录通常为“C:\Program Files\nodejs”。只需要在 Node.js 不在该路径上时配置此设置。
Appium 安装目录

指定安装 Appium 服务器的目录(不是 Appium 桌面端)。

如果您将 Appium 安装到 Node.js 中,则以下目录通常包含服务器:

<APPIUM_DESKTOP_INSTALL>/resources/app/node_modules/appium.

如果您通过安装 Node.js 获得 Appium Server,则以下目录通常包含该服务器:

%APPDATA%\npm\node_modules\appium(Windows)或 /usr/local/lib/node_modules/appium(Linux 或 Mac)。

如果 APPIUM_HOME 未定义并指向有效的 Appium 安装程序,则不需要此设置。

如果使用 HomeBrew(如 Appium 文档中所述)在 Mac 上安装 Appium,则不需要指定 APPIUM_HOME 或在该字段中输入值。

端口

(Appium flag: --port)

运行 Appium Server 的端口。默认为 4713
额外的服务器标识(可选)

指定要使用的任何可选服务器标志

–log server 标志不适用,因为日志会自动重定向到以下文件:

<temp>/parasoft/xtest/AppiumServerLog-< timestamp>.txt

设备设置

平台名称

(Appium flag: --platform-name)

设备平台的名称。可能的值有 iOSAndroid。必须按照指定的方式输入平台名称(例如,iOS 而不是 I OS)。

平台版本

(Appium flag: --platform-version)

指定平台的版本(例如,7.14.4)。

设置名称

(Appium flag: --device-name)

对于 iOS,指定模拟设备或物理设备的名称。

对于 Android 物理设备,指定物理设备的名称。如果想要启动模拟的 Android 设备,请使用 Android 虚拟设备名称字段代替。输入设备名或 Android 虚拟设备名,而不是两者都输入。

安卓虚拟设备名称

(Appium flag: --avd)

指定要启动的 Android 虚拟设备的名称。输入设备名或 Android 虚拟设备名,而不是两者都输入。

App 设置

应用程序位置

(Appium flag: --app)

为要启动的应用程序指定可执行文件的位置。

Android 的特定配置

如果计划启动 Android 设备,则必须定义 ANDROID_HOME。例如,这个变量可以在 Windows 上设置为 %LOCALAPPDATA%\Android\Sdk"。 

如果您正在使用插入机器的物理 Android 设备,请指定 Device Name 设置,并保留 Android Virtual Device Name 设置为空。

如果您正在使用模拟的 Android 设备,请指定 Android Virtual Device Name 设置,并保留 Device Name 设置为空。在下面的例子中,Start Appium Server 设置是为运行在仿真器上的 Android 测试配置的:

iOS 的特定配置

下面的示例 ~/.bash_profile 将 Node.js 添加到 PATH 中,并基于 OSX 的 Appium 桌面应用程序设置 APPIUM_HOME 变量:

如果 Appium 是与 Appium Homebrew 包管理器一起安装的,并且在路径 /usr/local/bin/appium 上有一个符号链接,则不需要在Environment Settings页面中完成 Node.js 安装和 Appium 安装字段。使用 which appium 命令来验证:

在下面的例子中,Start Appium Server 设置是基于 Appium 桌面应用程序为 iOS 应用程序配置的:

您可以使用模拟器和物理设备的 Device Name 设置。始终保留 Android Virtual Device Name 设置为空。

Stop Appium Server Tool 工具的使用说明

您可以使用添加测试向导将 Start Appium Server 工具添加为独立版工具(请参阅添加项目、.tst 文件和测试套件)。将 Stop Appium Server 工具放在 Appium Mobile Executor 之后,Start Appium Server 工具放在测试套件中。

如果您想确保即使套件中的任何工具失败也能运行该工具,那么您可以将该工具添加为 teardown 测试。

此工具不需要配置。它已预先配置为关闭使用 Start Appium Server 工具打开的所有服务器实例。本工具不会关闭以下组件:

  • Android 仿真器或 iPhone 模拟器(因为 Appium 不处理这些操作)。
  • 未使用 Start Appium Server 工具启动的服务器。

Appium Mobile Executor 的使用说明

您可以使用添加测试向导将 Appium Mobile Executor 工具添加为独立的工具(请参阅添加项目、.tst 文件和测试套件)。

测试的类文件夹或 .jar 文件必须包含您希望执行的 JUnit。其他依赖项可以包含在 jar/folder 中,添加到系统属性中,或者两者都包含。该工具首先查看 jar/folder,然后查看系统属性(如果需要的话)。Appium 服务器需要在 Appium 执行器能够运行任何 Junit 测试之前运行。服务器不会自动启动。

运行单个 JUnit 测试方法

  1. 指定测试的类文件夹或 jar 文件,以及要运行的测试类和测试方法。
  2. (可选)如果要从该工具动态更改 Junit 值,请在数据字段中输入以分号分隔的键值对。

您可以使用 Java 的系统属性对象从 Junit 源代码中访问变量。例如:

String lastName = System.getProperty("lastName")

运行类中所有测试方法

  1. 指定测试的类文件夹或 jar 文件,以及测试类。保留方法字段为空。
  2. (可选)如果要从该工具动态更改 Junit 值,请在数据字段中输入以分号分隔的键值对。

您可以使用 Java 的系统属性对象从 Junit 源代码中访问变量。例如: 

String lastName = System.getProperty("lastName")

审查执行详情

当测试开始时,您的应用程序将在相关的模拟器、仿真器或设备中启动。当测试执行时,您可以观察模拟器/仿真器/设备,以了解测试操作如何影响应用程序。与 Appium 相关的执行细节将在 Appium Server 窗口中报告。

查看结果

执行细节和结果将在控制台视图中报告。此外,任何检测到的测试失败都将在质量任务视图中报告:

将 JUnit 测试中的消息报告到控制台

将 JUnit 测试中的消息报告到控制台(例如,用于调试或深入了解执行细节):

Application.showMessage("this displays in the console");

若要访问应用程序上下文,JUnit 需要导入 com.parasoft.api 包。确保将 [install dir]/plugins/com.parasoft.ptest.libs.web_[version]/root/com.parasoft.api.jar 添加到 Java 项目 classpath 中,以启用该导入。

从 JUnit 测试中检索数据

SOAtest/Virtualize 可以从 Junit 测试和其他 SOAtest/Virtualize 工具中检索数据。您需要配置 Junit,以指示希望存储哪些值,并将适当的工具附加到执行器工具的 Junit 输出。数据将以 XML 格式传递到附加的工具。例如,您可以将数据发送到比较工具XML 断言器XML 数据库工具。

配置 Junit 输出

在使用 JUnit 输出类型之前,您的 Junit 必须访问应用程序上下文,并在“custom_tool_junit_output”键下的标准 Java 映射中存储所需的值。Appium Mobile Executor 工具将检查存储映射的应用程序上下文,将其转换为 XML,并传递给该工具的“JUnit 输出”。映射的键和值必须是字符串。如果希望 Junit 返回一个页面源字符串,请将整个源放到映射中的一个值中(如下面的示例所示)。

若要访问应用程序上下文,JUnit 需要导入 com.parasoft.api 包。确保将 [install dir]/plugins/com.parasoft.ptest.libs.web_[version]/root/com.parasoft.api.jar 添加到 Java 项目 classpath 中,以启用该导入。

将数据发送到其他工具

  1. 右键点击 Appium Mobile Executor 工具,并从快捷菜单中选择添加输出
  2. 选择JUnit 输出(左侧)以及要接收该输出的工具(右侧)。
  3. 点击完成

示例

假设您希望获得一个 XML 格式的应用程序布局源,然后将其发送到一个 XML 数据库,这样您就可以从移动应用程序中提取一个值,以便在随后的测试中使用。

首先,您需要创建一个 Junit,该 Junit 1) 构造一个包含应该发送到 XML 数据库的值的映射,2) 将该映射放入应用程序上下文中。映射中的值将被转换成 XML 文档,并传递给任何附加到 Junit 输出的工具:

@org.junit.Test
public void testAccessibilityPage() throws Exception {
  WebElement element = driver.findElement(By.xpath("//android.widget.TextView[1]"));
  element.click();
  // Create map representing name-value pairs for XML
  Map<String, String> map = new HashMap<String, String>();
  // Get App's layout source in XML
  String source = driver.getPageSource();
  // Place source in map with key "source"
  map.put("source", source);
  // Get the Parasoft Scripting Context
  ScriptingContext context = Application.getContext();
  // Place the map in the context with the custom_tool_junit_output
  context.put("custom_tool_junit_output", map);
}

添加一个 Appium Mobile Executor 工具,该工具配置为接下来运行此测试。给该工具一个 Junit 输出,它将该数据发送到 XML 数据库工具。

从这一步开始,您可以指定要提取哪些值,然后在其他工具中使用这些值。注意,映射的内容出现在 XML 文档(传递给附加到 Junit 输出的工具)的 <root> 元素下面。

第三方内容

此工具集包括来自第三方的资源项,如下:

更多许可证详情可在该插件的 licenses 文件夹中获得。

  • No labels