如何使用 Appium 在多个设备上运行相同的脚本

移动应用的自动化测试已经存在有一段时间了。早期,拥有一个自动化测试套件被认为是一种奢侈。但现在,它已经成为DevOps的一个重要组成部分。

自动化测试有很多好处,但以下三点最为重要:

  • 增加测试覆盖率:自动化测试让你可以在更短的时间内测试更多的功能。这意味着你可以在不增加测试预算的情况下提高测试覆盖率。
  • 减少人为错误的风险:自动化测试在手动测试应用时不太可能遗漏边缘情况或出现其他错误。
  • 更快的反馈:自动化测试的运行速度远快于手动测试。这意味着你可以更快地获得应用的反馈,从而在问题变成严重问题之前解决它们。

移动应用自动化测试是一个有价值的过程,可以帮助你在更短的时间内发布更高质量的应用。

但是这里出现了一个问题,你是否覆盖了足够的设备来测试你的应用程序,并使其达到顶级质量。在单个设备或多个设备上测试你的应用程序可能会导致设备特定问题、不同分辨率下的UI问题以及不同操作系统版本的功能问题。

为什么在多个设备上运行相同的脚本很重要?

QA过程中,在多个设备上测试应用程序是一个重要的步骤。我们需要确保我们的应用程序能够适应不同的设备、操作系统版本和屏幕尺寸。

有许多原因使得在多个设备上测试应用程序变得很重要。其中一个最重要的原因是,用户可能会使用不同类型的设备来访问同一个应用程序。我们无法预测用户会用哪种设备来访问应用程序,所以我们需要确保它能够正常工作。为了确保我们能够在多个设备上轻松运行我们的自动化脚本。

如何使用Appium在多个设备上运行相同的脚本?

当我们运行我们的Appium脚本时,我们需要传递Appium期望能力,其中包括平台名称、平台版本以及我们的设备名称

{
"platformName": "iOS",
"platformVersion": "11.0",
"deviceName": "iPhone 9",
"automationName": "XCUITest",
"app": "/path/to/my.app"
}

Copied

要在另一台设备上运行您的测试脚本,我们需要更改测试脚本的所需功能,这样它将会在特定设备上运行测试脚本。我们不需要更改测试脚本就能在不同设备上运行。然而,在Android和iOS设备上执行测试脚本可能会有所不同,因为元素定位器在Android和iOS设备上可能会有所不同。但是,为任何Android或iOS设备编写的脚本可以通过更改所需功能在所有具有相同操作系统的设备上运行。

管理多设备的挑战

在您的自动化测试过程中,在多个设备上运行脚本是相对容易的事情,但管理这些设备以及拥有多个设备是最困难和最昂贵的一部分。如果我们只谈论iPhone,从iPhone6到iPhone13都有用户使用,并且iOS版本从iOS11到iOS16不等。而对于Android来说,这些数量大幅增加。没有任何团队可以管理或拥有市场上所有流行的不同操作系统版本的设备。

模拟器/仿真器作为替代方案

首先,我们想到解决这个问题的方法是使用不同的设备模拟器和仿真器。但在模拟器/仿真器上进行测试并不能与在真实设备上进行测试相提并论。虽然模拟器和仿真器可以接近模仿,但它们无法像真实设备那样表现。这是因为模拟器无法考虑到真实设备上的每一个环境因素、特性或用户操作。真实设备的好处在于其名称本身。在真实的物理设备上进行测试意味着你是在以用户操作设备相同的方式进行测试。

真实设备测试的优势

在这里,BrowserStack 成为了解决设备混乱的救星。BrowserStack 应用自动化提供了所有流行的设备以及不同的操作系统版本,以便使用Appium自动测试你的应用程序。你可以轻松地将 BrowserStack 集成到你的框架中,以便在多个设备上测试你的脚本。

使用BrowserStack运行Appium脚本多设备上

使用App Automate在BrowserStack上为多个设备运行测试脚本是相当方便的。你只需要按照几个步骤更改你的配置,它就可以将你的现有测试自动化与BrowserStack集成。

第二步:在BrowserStack上传你的.apk或.ipa文件。你可以通过在仪表板上使用“上传你的应用”来完成此操作,或者你也可以使用BrowserStack API来自动上传。上传你的应用程序后,你会得到一个应用URL。

{
"app_url":"bs://f7c874f21852ba57957a3fdc33f47514288c4ba4"
}

Copied

步骤 3:使用app功能指定被测试的应用程序。使用app_url在应用上传(步骤 2)时返回的值来设置此功能。

  • 使用device功能指定你想测试的真实 Android 或 iOS 设备。
  • 要初始化一个 Appium 驱动程序,请使用远程 BrowserStack URL 以及你的 BrowserStack 访问凭证(在步骤 1 中提到)如下所示:

https://YOUR_USERNAME:[email protected]/wd/hub

它看起来像这样:

userName = "YOUR_USERNAME"
accessKey = "YOUR_ACCESS_KEY"
desired_caps = { "build": "Android",
"device": "Samsung Galaxy S8 Plus",
platformVersion": "11.0",
"app": "<app_url>"
}
driver = webdriver.Remote("https://" + userName + ":" + accessKey +
"@hub-cloud.browserstack.com/wd/hub", desired_caps)

Copied

通过这样做,你的 Appium 脚本将开始在 BrowserStack 云上的真实设备上运行。

你可以通过更改期望的设备名称和平台版本来轻松更换设备。在 BrowserStack 上,你还可以并行运行测试以更快完成自动化。BrowserStack 提供视频、设备日志、网络日志和 Appium 日志用于调试,你可以在仪表板上查看你的测试运行情况。BrowserStack 可以帮助你在多个设备上运行测试脚本,而你不必自己管理这些设备。

总而言之,

BrowserStack 的 App Automate 使在多个真实设备上进行测试变得容易。只需更改 Desired Capabilities,用户就可以轻松地在数千台设备上运行测试,并系统地确定您的应用程序是否准备好发布。QA 团队会发现使用结果仪表板查找和调试问题非常容易。

免费运行 Appium 测试

Source:
https://www.browserstack.com/guide/how-to-run-same-script-in-multiple-devices-using-appium