如何设置 Appium UI 测试 maven 项目与 Gitlab CI 一起测试 Android App?

bla*_*eng 6 maven android-testing appium gitlab-ci

我现在是一名实习生,刚接触自动化测试。我的目标是帮助我的公司为客户端设置 CI。

现在我有一个 maven 项目,其中包含几个使用 Appium java-client lib 的测试,在 Eclipse IDE 下,它可以在本地运行 UI 测试。我下一步的目标是将我的测试与 gitlab 存储库(已经存在,由 android 开发人员创建)挂钩,但我被困在这里。有人可以帮我吗?请尽量具体:

  1. 我应该如何设置 .gitlab.yaml?
    • 我们可以在 yaml 中使用脚本来下载 Appium 和 maven 吗?
    • 或者我们可以只下载 Appium,但将所有 Appium java-client jars 导入到 main 中的 libs 中?
  2. 如果以上任何一个是真的,怎么办?如果两者都没有,我应该怎么做?
  3. 我应该把我的测试放在那个 repo 的 gitlab 中吗?或者我不必将我的测试放在现有的 repo 中。相反,我可以有另一个并告诉 yaml 去哪里?又如何?
  4. 如果您能帮助我完成工作流程,将会很有帮助。就像,当我开发人员签入代码时,gitlab 读取 yaml,然后构建,然后在 where(Q3) 中找到我的测试套件,然后执行等等。

提前谢谢了!

bla*_*eng 5

终于有人对这个问题感兴趣了,我来分享一下我的解决方案。

\n\n

因此,如果您正在查看这个问题,我假设您已经拥有测试套件,并且可以在计算机上本地测试它,或者将应用程序安装在模拟器或真实设备中。现在您需要阅读有关 gitlab pipeline 和 gitlab CI 的更多信息:

\n\n\n\n

您应该已经注意到,Appium 的优点之一是您不需要更改正在测试的应用程序的任何内容,您正在测试即将投入生产的完全相同的应用程序。要了解有关 Appium 的更多信息:

\n\n\n\n

现在,要运行自动化测试,您需要测试套件、应用程序和 Appium 服务器。我们需要做的是在 .gitlab-ci.yml 中添加另一个阶段,告诉它

\n\n
    \n
  • 使用新编译的应用程序,编译您的测试套件

  • \n
  • 在模拟器/真机中安装应用程序

  • \n
  • 编译您的测试套件并运行它。

  • \n
\n\n

为了让事情更容易理解,我们从问题 4,工作流程开始:

\n\n

因此,当代码签入到 gitlab 时,gitlab 运行器会运行您的 .gitlab-ci.yml 中每个阶段的作业,当它运行到您的阶段时,它会进行自动化测试,并注意它是在您的阶段上运行的。服务器,因此这意味着您需要在服务器上安装 Appium,并在尝试运行自动化测试套件时启动并运行它。现在的问题是,你的服务器有能力这样做吗?如果你想在你的服务器上进行自动化测试,你需要在上面安装Appium,可能还需要安装模拟器(并且可能需要你的服务器配备GPU)等,这些都是维护服务器的问题。另一种方法是使用第三方服务,这就是我所做的。事实证明我们(当我在那家公司时)服务器无法运行自动化 UI 测试,因此我们转向 AWS-ADF(Amazon Device Farm),还有许多其他服务提供商可以选择,请参阅链接参考:

\n\n

https://adtmag.com/blogs/dev-watch/2017/05/device-clouds.aspx

\n\n

因此,我在功能测试阶段基本上有一个 python 脚本,它将获取新编译的应用程序、自动化测试套件,将它们上传到 AWS ADF,然后安排运行,在运行完成时生成结果。

\n\n

所以,回答问题1:

\n\n
    \n
  • 我们需要在 .gitlab.yaml 中为我们的功能测试创建一个阶段,在我的例子中,我在编译 Android 应用程序的阶段之后有一个功能测试_项目阶段。然后您在阶段中编写必要的cmd,或者如果它太长,则将脚本放在另一个文件中(将其放入您的存储库中),然后执行它。就我而言,我将脚本放入 python_ci.py 中,然后在阶段中使用 \xe2\x80\x9cpython python_ci.py\xe2\x80\x9d 执行它。(这里您需要一个具有这些要求的 docker,请参见下文也)

  • \n
  • 您不\xe2\x80\x99t下载Appium,您在您的计算机上设置Appium,或者如果您使用云服务,该服务应该为您设置Appium。

  • \n
  • 我所做的是,我使用 maven 在本地构建并打包测试套件,然后将其推送到 gitlab 存储库,现在我相信更好的方法是在 .gitlab.yml 中的功能测试阶段编译并打包它。现在回到问题1的第一点,如何获取maven,我的理解是它是服务器的依赖项,就像python一样,所以它们都可以通过告诉gitlab使用具有python和的docker执行脚本来获取Maven 依赖。

  • \n
\n\n

回答问题3:

\n\n
    \n
  • 将其放在同一个存储库中,但不在 Android 项目中(即它们位于同一目录下)。

  • \n
  • 如何告诉 yml 到达测试套件?请记住它们位于同一服务器中,因此您可以使用 yml 脚本中的相对路径来告诉 yml 从哪里获取测试套件。

  • \n
\n\n

希望这可以帮助!

\n