25

58 招聘 App 自动化实践

 5 years ago
source link: https://mp.weixin.qq.com/s/ciTP6xq7HuvhZ6FWC5itSQ?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

mIjAjmE.gif

前言

随着招聘业务线无线端流量逐年增长,越来越多主业务迁入58APP,发版过程中的APP回归工作也随之增长。怎样低成本、高效率的产出自动化用例,减轻日常重复工作以及保证测试场景的覆盖是App端自动化在团队开展的初衷。自动化框架的高稳定性,扩展性,易用性是一个基础,报告数据的综合参考性以及问题排查定位的辅助功能是自动化效果最终的一个体现。 

底层框架为什么选择Appium

Appium具有运行稳定,支持多语言,跨平台的特点,应用广泛,社区资源分享多,易于学习。为了后续IOS部分的扩展,选择了Appium。

Appium自动化原理

Appium是使用Node.js平台编写的“HTTP服务器” ,使用Webdriver JSON有线协议驱动iOS和Android会话。因此,在初始化Appium Server之前,必须在系统上预安装Node.js。启动Appium时, 会在我们的目标机器上设置一个公开REST API的服务器。它从客户端接收连接和命令请求,并在移动设备(Android / iOS)上执行该命令。它响应HTTP响应。同样,为了执行此请求,它使用移动测试自动化框架来驱动应用程序的用户界面。框架如下:

jEFRv2e.jpg!web

App自动化框架结构

招聘测试的自动化框架主要采用 Junit + Appium + Maven ,使用团队内部原有的测试框架,在其基础上扩展基于Appium的自动化测试部分,继承原有测试框架中配置,日志和报告部分。节省开发时间。

扩展部分:Case运行时加入性能监控

日常App测试中,除了功能测试外,最重要的还有App性能测试,内存溢出,滑动卡顿,ANR等在App中属于常见问题,影响用户体验。所以我们在框架中加入性能模块部分,在业务Case执行过程中加入了性能监控,ANR日志监控等功能。更多维度的获取测试过程中可能出现的问题。性能监控Android部分主要使用adb命令方式获取相关数据。在性能模块中分析并生成结果数据。

框架包结构如下:

Qnmq6rB.png!web

框架中App相关的主要处理流程在AppTestListener中,AppTestListener是执行App测试的拦截器,负责整个case执行时的初始化操作。包括生成Appium启动脚本、启动Appium、启动Appium Driver, 启动App日志收集等。并在整个case执行后释放资源。PerformanceMonitorListener包括性能测试相关操作。包括开始启动性能监控,生成结果数据等。此外还有执行日志,异常截图等功能。

框架结构图:

MZvQ32n.jpg!web

Case运行日常化

日常使用Jenkins定时任务调用,或精准测试手动启动,自动运行case库中的自动化case。每次发版集成阶段都可以执行回归测试。日常定时执行可以即时发现问题并处理。

Case书写规范及注意事项

在招聘测试平台上填写信息后,会自动生成case工程路径,结构如下:

uQjm2uu.png!web

各业务线同学在写case时,首先需要搭建本地环境,修改相关配置文件信息,引用框架jar包后即可开始case编写和调试,配置信息如下:

6zq2Avy.png!web

根据业务场景配置case信息,便于在测试报告中查看

JBBfemZ.png!web

执行后结果展示:

  1. 统计信息;Case执行时间;运行机型。

  2. 对于失败用例报告中可以点击链接查看截图,结合case steps方便分析定位失败原因

  3. Case steps会给出case的每部执行操作,如有异常会在对应step后附加展示异常信息。

  4. 性能数据:手机case执行过程中的性能指标变化。

jmmYRzi.jpg!web

性能结果展示

e2imeeN.jpg!web

错误信息展示

veAB3mq.jpg!web

vyE32eF.jpg!web


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK