魅力Android。 有关移动自动化的信息报告

该文章代表Andrey Ivanov和Ekaterina Bateevaneifmetus)发表

移动应用程序的自动化是一个相对年轻的领域:有许多框架,许多项目都面临着选择最“快速,稳定,易于使用”的问题。 大约两年前,我们还面临着用于测试Android应用程序的新自动化工具的选择。
所有流行的工具都以某种方式基于UIAutomator和Espresso,因此我们决定以纯格式对其进行测试,并与相同的Appium(最受欢迎)和seeTest (之前使用过的,当时付费产品中最好的)进行比较。

在Appium的优势中,可以区分通常的WebDriver API,即使用大多数流行语言和库的能力。 此外,它已在许多公司中广泛使用,并允许您直接为iOS和Android平台编写测试。 最后,这是一个免费的盒装解决方案-有什么更好的选择?

因此,我们认为,直到发现以下缺点:
  • Appium服务器的稳定性低
  • 您无法与Activity的公共方法进行交互(在2018年,来自Badoo的Nikolai Abalov在他的文章中谈到了在Appium中创建后门,您可以在此处阅读)
  • 浓缩咖啡测试的速度大大低于

对我们而言,这些时刻至关重要,因此决定围绕Espresso整合我们自己的工具集,以构建用于测试移动应用程序的生态系统。

因此,选择了框架,剩下的就是查找其余组件:
  1. 亚军 -应该允许并行运行测试并配置设备池
  2. 记者 -必须提供可读的报告,任何团队成员均可使用


工具


跑步者一切都很好,在github上翻了翻 ,选择了shazam / fork
它使您可以方便地配置设备池,易于修改,生成简单的html报告。 在堆栈跟踪测试和视频崩溃的情况下,Logcat将应用于每个报告。 视频录制无法正常工作,所有视频均为1分钟长,有时会在视频上记录一些测试。

图片

分支报告远非理想,最终用户仅凭其名称就无法理解测试中正在发生的事情,而没有手头的测试用例。 我想使用带有文件附件的步骤,使我能够构建报告。 寻找记者进行仪器测试,得到了汤匙和黄瓜的2种变体。 放弃这两个选项是因为一堆关于黄瓜的汤匙和bdd的屏幕截图无法完全解决问题...

魅力似乎是该问题的最佳解决方案:
  • 步骤的嵌套,使您可以构建报告
  • 记录定制测试数据(屏幕截图,视频,任务编号,测试参数)的能力
  • 报告的简要视图

但有一个警告,Allure根本无法在Android上启动。

魅力安卓


结合以上内容,决定编写一个库,该库结合了Kotlin的简洁和优雅,Allure框架的优点,并且可以在Android手机上使用。 为了连接该库,请将依赖项添加到仪器测试所在的模块中:
dependencies { androidTestImplementation "ru.tinkoff.allure:allure-android:$allureVersion@aar" androidTestImplementation "ru.tinkoff.allure:allure-common:$allureVersion" androidTestImplementation "ru.tinkoff.allure:allure-model:$allureVersion" } 


设置依赖关系后,我们需要将AllureRunListener注册到负责运行android测试的类。

有三种方法可以做到这一点:
  1. 添加到build.gradle
     testInstrumentationRunner "ru.tinkoff.allure.android.AllureAndroidRunner" 
  2. 侦听器添加到Runner onCreate中的参数(参数:捆绑)
     arguments.putCharSequence("listener", AllureAndroidListener::class.java.name) 
  3. 直接从AllureAndroidRunner继承


魅力报告基于步骤-步骤,即在测试过程中执行的基本操作。 引人入胜的StepParameter框架注释已替换为对step()函数的直接调用。
 inline fun <T : Any?> step(description: String, vararg params: Parameter, block: () -> T): T 

此函数不仅可以一次替换两个注释,还可以接受一个lambda,您应该在其中包装测试逻辑。 例如:
图片

开始测试后,为Allure2准备的json格式的报告将显示在电话的/ sdcard / allure-results文件夹中。 通过拉出结果
 adb pull /sdcard/allure-results 

我们可以生成报告
 allure generate 


在其他功能中,我们可以区分:
  • 相互投资的能力
  • 您可以在任何地方调用deviceScreenshot(标签:String)获取屏幕截图,该屏幕截图将在当前步骤中自动附加到报告中
  • FailshotRule()-junit4 Rule,将在坠落前拍摄屏幕截图


这是在Android平台上使用Allure的概述。 GitHub上提供了allure-android解决方案,您可以详细了解并参与开发。

Source: https://habr.com/ru/post/zh-CN433756/


All Articles