中兴通讯终端事业部软件测试工程师王岭 - 类自然语言进行Android自动化测试

目前,针对Android自动化测试的框架比较丰富,但不一定适合每个公司。在中兴,我们从2013年起通过自研的小框架,使用类自然语言进行测试用例的编写,使得黑盒UI自动化在功能、压力等测试工作中发挥了重要的作用。通过这样的简单框架吸引了一批同事入门自动化测试并逐渐走得更远。 本次分享,减少自研框架的主要特点,希望一些点能对同行们有一些启发

1. 类自然语言 Android自动化测试
2. 目录 我们的故事 举个例子 特点和经验
3. 我们的故事 录制 + 图像对比 + C# • 速度慢、准确性差 • 入门者只会录制,进阶到 熟练C#难度很大 Espresso + Java • 入了自动化的门 • 愿学 UiAutomator + 类自然 语言 • 入门易,吸引了一批新人 • 不从录制开始 • 了解基础,逐步提升 • python + UiAutomator
4. 我们的故事 • 封装了一个自己的简易框架,用自然语言 和类自然语言写脚本,大大降低了入门难 度 • 考虑实际的使用场景:整机测试、定制多。 针对性考虑脚本的通用性 • 支持通过python进行扩展,使不同人各尽其 能
5. 用例基础 对照UI Automator Viewer无困难编写/阅读用例
6. Show me the code
7. 用例运行
8. 特点:对比成熟BDD框架 • 同为自然语言 • 不需要先掌握一门编程语言 • 能用类自然语言完成绝大多数的工作 • 劣势:规范较松,没有用严格的 given/when/then
9. 特点:对比录制优先的工具 • 需要明白ui布局、控件标识这些适当的细节 • 需要写最简单的控制语句 • 有助于脚本调试和逐步建立自动化脚本编 写的概念 • 实践中,很多同事通过这些初步的脚本编 写转而学习python,具备了更多的编程能力
10. 特点:语法迭代 • 脚本关键字、脚本描写形式根据实际使用 需求不断迭代 • onView(withText("World")) .perform(click()); • 易于阅读,但前提是英文够好 • 我们提供了这样的:click ui:text=World • 最后大家最喜欢这样的:c@tt:World
11. 特点 – 项目兼容处理 • 小差异:或操作 • 中型差异:if 操作 • 大差异:用例filter
12. 特点 – 简单的录制回放 • 不同于dump/截图式的录制方法。这里的录制 基于真机操作时的events解析,实时无延迟 • 部分操作未做支持,仅作为脚本编写的辅组手 段
13. 特点 – python脚本接口 • 通过与python函数的无缝结合,扩展框架的 能力 定义一个python函数,用于设置AP的加密方式: 在用例中直接使用该函数,和使用其他动作一 样:
14. 特点 – 与其他框架结合 • 作为一个功能库和Behave, Robot Framework 等框架结合使用 • 以python behave为例: 构建feature文件 配合一个通用的step文件
15. 特点 – 与其他框架结合 • 运行
16. 特点 – 用例自适应 • 用例Tag:自定义用例标签,如等级(p1, p2…)、模块(Camera, Music)等 • 用例Filter:类对Junit的Assume机制的一种 实现 对每条用例按其真实的适配情况来进行配置, 如有些用例适合某个Android平台,有些用例适 合某些运营商,有些用例只适合某个项目 执行时通过对测试机的属性查询(getprop),让 每条用例自己决定自己是否需要运行
17. 特点 – 用例自适应 • 例: • 在不同项目运行时可以用相同命令启动 (如:--tag smoke 运行所有smoke用例), 用例的选择会动态调整,在不同项目上会 执行不同的用例
18. 实现方式简介 PC侧 • Python脚本实现 • 负责测试启动、文件解析、 用例管理 • 负责python自定义功能、PC 侧命令的执行,将手机侧命 令按标准格式传递到手机端 • 负责log获取,测试报告输 出 手机侧 • UiAutomator编写,负责解 析手机侧的动作并执行 • 支持Loop/If操作,可以减少 与PC的交互,缩短用例运行 时间