添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

准备应用及其用于上传的测试套件的步骤因测试框架而异。 本指南介绍如何使用 Java 和 JUnit 准备 Appium 测试,以便上传到 App Center。 有关创作 Appium 测试的指导,请参阅 Appium 文档

请注意 Appium 支持的以下限制:

支持 WebView 上下文、Chrome Web 驱动程序和具有 browserName 功能的 Chrome 浏览器测试!

  • 不支持 TestNG () 仅支持 JUnit 测试。
  • 不支持 Android 4.2 或更早版本。 不支持已弃用的 UIAutomator 驱动程序。
  • 不支持 iOS 9.2.1 或更早版本。 不支持已弃用的 UIAutomation iOS 驱动程序。
  • JUnit @Category attribute 不支持 。 (可以改用 包含/排除 )
  • Maven 版本必须至少为 3.3.9。
  • 当前 Appium 版本为 1.22.0。 它定期使用新版本进行更新。
  • 支持 JUnit 4.9 - 4.12;我们不支持 JUnit 5。
  • 测试必须恰好针对一个应用。 MobileCapabilityType.FULL_RESET ) 支持 (
  • 在某些情况下,如果使用不受支持的工具或功能,则测试仍然可以在 App Center 中运行。 但是,该不支持的功能在将来的更新中不是 QA,并且可能会在没有警告的情况下中断。

    将使用 Maven Surefire 运行测试,这要求测试遵循 某些命名约定

    "**/Test*.java" - includes all of its subdirectories and all Java filenames that start with "Test".
    "**/*Test.java" - includes all of its subdirectories and all Java filenames that end with "Test".
    "**/*Tests.java" - includes all of its subdirectories and all Java filenames that end with "Tests".
    "**/*TestCase.java" - includes all of its subdirectories and all Java filenames that end with "TestCase".
    

    在尝试上传到 App Center 测试之前,请确保使用 Maven 在计算机上本地运行测试:

    ➜  AppiumTest git:(main) ✗ mvn verify
    Running MainTest
    started: SimpleTest (MainTest)
    Setting up capabilities
    failed
    finished
    Tests run: 2, Failures: 0, Errors: 2, Skipped: 0, Time elapsed: 0.728 sec <<< FAILURE!
    SimpleTest(MainTest)  Time elapsed: 0.594 sec  <<< ERROR!
    

    如果无法使用命令行在本地运行测试,则测试在 App Center Test 中也不起作用。

    1. 对生成系统的更改

    步骤 1 - 添加依赖项

    需要为 Appium 测试扩展添加依赖项:

    <dependency>
        <groupId>com.microsoft.appcenter</groupId>
        <artifactId>appium-test-extension</artifactId>
        <version>1.6</version>
    </dependency>
    

    此代码将确保增强的 Android 和 iOS 驱动程序在编译时可用。 提供增强的驱动程序主要用于启用 label 该功能。 有关该功能的更多详细信息, label 请参阅步骤 4。

    步骤 2 - 添加上传配置文件

    将此代码片段复制到 pom.xml 标记中的 <profiles> 中。 如果 pom 中没有 <profiles> 分区,请制作一个。 配置文件在激活后,会将测试类和所有依赖项打包到 target/upload 文件夹中,准备上传到 Test。

    2. 测试的更改

    步骤 1 - 添加导入

    将这些包导入测试类:

    import com.microsoft.appcenter.appium.Factory;
    import com.microsoft.appcenter.appium.EnhancedAndroidDriver;
    import org.junit.rules.TestWatcher;
    import org.junit.Rule;
    

    步骤 2 - 实例化 TestWatcher

    在每个测试类中插入此声明:

        @Rule
        public TestWatcher watcher = Factory.createWatcher();
    

    步骤 3 - 更新驱动程序声明

    声明AndroidDriver<MobileElement>替换为 EnhancedAndroidDriver<MobileElement>IOSDriver<MobileElement>EnhancedIOSDriver<MobileElement>

        private static EnhancedAndroidDriver<MobileElement> driver;
    

    步骤 4 - 更新驱动程序实例化

    替换 实例化 驱动程序的方式,使行的格式为:

        driver = new AndroidDriver<MobileElement>(url, capabilities);
    

    ...更改为:

        driver = Factory.createAndroidDriver(url, capabilities);
    

    使用这些驱动程序仍然可以在本地运行测试,而无需进行其他修改,但允许使用 driver.label("text")在测试执行中“标记”测试步骤。 来自设备的文本和屏幕截图将在 App Center 的测试报告中可见。

    建议在 方法中@After调用 driver.label ,该方法会获取应用最终状态的屏幕截图。 测试的示例 @After 方法可能类似于以下代码:

        @After
        public void TearDown(){
            driver.label("Stopping App");
            driver.quit();
    

    3. 上传到 App Center 测试

    上传测试的步骤:

  • 使用 启动测试运行时的说明生成 App Center 测试上传命令。

  • 将测试类和所有依赖项打包到 文件夹中 target/upload

    mvn -DskipTests -P prepare-for-upload package
    
  • 运行 upload 命令:

    appcenter test run appium --app "APP_ID" --devices "DEVICE_SET_ID" --app-path PATH_TO_FILE.apk  --test-series "main" --locale "en_US" --build-dir target/upload
    

    4. 性能故障排除

    在 App Center 中的设备上执行测试的速度将略慢于本地设备。 通常,由于有更多的设备可用,允许并行测试运行,因此执行速度会超过速度。

    测试运行速度较慢的有三个主要来源:重新签名、重新安装和网络任务。

    在 iOS) 上重新签名 (

    在 iOS 设备上安装之前,应用需要经历一个称为重新签名的过程。 若要使预配配置文件与云中的设备匹配,必须执行此过程。 重新签名需要一些时间,通常大约 1-2 分钟。 极少数情况下,重新签名也会降低性能,因为会缓存重新签名的应用。 每个二进制文件仅运行一次耗时的进程。

    如果持续交付设置在生成和测试之前更新 IPA 版本,则每个测试的二进制文件将有所不同,并且重新签名处罚将更频繁地发生。

    在共享设备云中,我们必须确保在每次测试之间清理设备。 使用该设备的下一个客户可能是另一个组织的人。 在 App Center 测试中,应用会在测试运行完成后自动卸载。

    可以省略 MobileCapabilityType.FULL_RESET 并将 设置为 MobileCapabilityType.NO_RESETtrue 以加快测试执行。 有关详细信息,请参阅 重置策略

    本地网络任务速度更快,因为服务器更靠近远程主机且更专用。

  •