bla*_*eng 6 maven android-testing appium gitlab-ci
我现在是一名实习生,刚接触自动化测试。我的目标是帮助我的公司为客户端设置 CI。
现在我有一个 maven 项目,其中包含几个使用 Appium java-client lib 的测试,在 Eclipse IDE 下,它可以在本地运行 UI 测试。我下一步的目标是将我的测试与 gitlab 存储库(已经存在,由 android 开发人员创建)挂钩,但我被困在这里。有人可以帮我吗?请尽量具体:
提前谢谢了!
终于有人对这个问题感兴趣了,我来分享一下我的解决方案。
\n\n因此,如果您正在查看这个问题,我假设您已经拥有测试套件,并且可以在计算机上本地测试它,或者将应用程序安装在模拟器或真实设备中。现在您需要阅读有关 gitlab pipeline 和 gitlab CI 的更多信息:
\n\n管道: https: //docs.gitlab.com/ee/ci/pipelines.html
gitlab CI: https: //docs.gitlab.com/ee/ci/quick_start/
您应该已经注意到,Appium 的优点之一是您不需要更改正在测试的应用程序的任何内容,您正在测试即将投入生产的完全相同的应用程序。要了解有关 Appium 的更多信息:
\n\n\n\n现在,要运行自动化测试,您需要测试套件、应用程序和 Appium 服务器。我们需要做的是在 .gitlab-ci.yml 中添加另一个阶段,告诉它
\n\n使用新编译的应用程序,编译您的测试套件
在模拟器/真机中安装应用程序
编译您的测试套件并运行它。
为了让事情更容易理解,我们从问题 4,工作流程开始:
\n\n因此,当代码签入到 gitlab 时,gitlab 运行器会运行您的 .gitlab-ci.yml 中每个阶段的作业,当它运行到您的阶段时,它会进行自动化测试,并注意它是在您的阶段上运行的。服务器,因此这意味着您需要在服务器上安装 Appium,并在尝试运行自动化测试套件时启动并运行它。现在的问题是,你的服务器有能力这样做吗?如果你想在你的服务器上进行自动化测试,你需要在上面安装Appium,可能还需要安装模拟器(并且可能需要你的服务器配备GPU)等,这些都是维护服务器的问题。另一种方法是使用第三方服务,这就是我所做的。事实证明我们(当我在那家公司时)服务器无法运行自动化 UI 测试,因此我们转向 AWS-ADF(Amazon Device Farm),还有许多其他服务提供商可以选择,请参阅链接参考:
\n\nhttps://adtmag.com/blogs/dev-watch/2017/05/device-clouds.aspx
\n\n因此,我在功能测试阶段基本上有一个 python 脚本,它将获取新编译的应用程序、自动化测试套件,将它们上传到 AWS ADF,然后安排运行,在运行完成时生成结果。
\n\n所以,回答问题1:
\n\n我们需要在 .gitlab.yaml 中为我们的功能测试创建一个阶段,在我的例子中,我在编译 Android 应用程序的阶段之后有一个功能测试_项目阶段。然后您在阶段中编写必要的cmd,或者如果它太长,则将脚本放在另一个文件中(将其放入您的存储库中),然后执行它。就我而言,我将脚本放入 python_ci.py 中,然后在阶段中使用 \xe2\x80\x9cpython python_ci.py\xe2\x80\x9d 执行它。(这里您需要一个具有这些要求的 docker,请参见下文也)
您不\xe2\x80\x99t下载Appium,您在您的计算机上设置Appium,或者如果您使用云服务,该服务应该为您设置Appium。
我所做的是,我使用 maven 在本地构建并打包测试套件,然后将其推送到 gitlab 存储库,现在我相信更好的方法是在 .gitlab.yml 中的功能测试阶段编译并打包它。现在回到问题1的第一点,如何获取maven,我的理解是它是服务器的依赖项,就像python一样,所以它们都可以通过告诉gitlab使用具有python和的docker执行脚本来获取Maven 依赖。
回答问题3:
\n\n将其放在同一个存储库中,但不在 Android 项目中(即它们位于同一目录下)。
如何告诉 yml 到达测试套件?请记住它们位于同一服务器中,因此您可以使用 yml 脚本中的相对路径来告诉 yml 从哪里获取测试套件。
希望这可以帮助!
\n| 归档时间: |
|
| 查看次数: |
2395 次 |
| 最近记录: |