【易测试201604】 用Robot Framework构建全端UI自动化测试框架

达芬奇密码2018-07-03 09:41

项目背景


大网易最近很火,各爆款产品频频发布。 全猿参与的网易互联网+的战场,离不开产品、项目、设计、开发的勤恳付出,同样也离不开QA团队的尽职恪守。
对于杭研QA部门来说,如何迎合快速多变的版本发布,是我们必须面对的课题。 怎么把话题拉回自动化测试呢?不论是移动互联网业界、还是网易杭研,各QA团队对于自动化测试和持续集成历来重视,但具体实践各有故事。
我所在的易信公众平台QA小组也面临过那些年理想丰满、现实骨感的经历。下面,我们将易信公众平台在自动化测试/持续集成上的心路历程,向大家做个汇报。 顺带介绍一下我们基于Robot Framework搭建的全端UI自动化框架,供大家参考,交流,指正。


UI自动化的痛点


UI自动化测试项目,通常在移动互联产品测试项目的开始之初热火朝天,接着变成热锅上的蚂蚁,然后会是烫手的大山芋。 易信公众平台在之前的UI自动化,采用了TestNG+Dagger+Selenium的框架组合,曾经也输出了一定量的用例,最后因为类似的原因无以为继。 梳理过往经验,UI自动化主要的痛点、难点在于: 

  1. 用例编写较复杂,稳定性不高;
  2. 用例维护成本高,可读性/可维护性低; 

对于QA团队的测试人员来说,其强项是精通业务逻辑、其弱项是缺少编程经验和测试框架全栈知识。 如果能有一个通用框架,可以让测试人员快速、方便构建与自己业务逻辑一致的自动化测试用例集并持续集成,那真真是极好的。


框架选型的考量


UI自动化测试框架有几十个(商用的,开源的),我们在选择之前,梳理我们自己的主要诉求: 

  1. 提供统一UI自动化 接口/API - 降低tester学习难度;
  2. 具备清晰分层概念,便于业务抽象 - 增加脚本 可读,可维护性;
  3. 提供用例脚本模板 - 使各基础tester可写出可维护性高的脚本;
  4. 具备高可扩展性 - 便于扩展各端UI新需求和混合场景。 

选型具体过程,在此不详细展开。 综合各种因素,我们最后选择了基于关键字技术的Robot Framework框架, 通过定制化封装的,支持多端的UI自动化框。


RFUI框架雏形


RFUI 是:一个基于Robot Framework(关键字驱动+分层抽象)、跨平台(Web/Android/iOS/Desktop)的UI自动化框架。 RFUI 具备如下特性: 

  1. 提供一层统一的 UI基础关键字、支持多端用例编写
    面向人机交互 多端/工具’基础关键字: Web_xxxaction / Mobile_xxxaction / Desk_xxxaction;
    支持多种元素定位: Object-Based,Text-Based,Imaged-Based;
    提供内置的UI响应延时,自动截图,GIF录屏 等智能处理。
  2. 提供分层设计模板(POM + Template)(如图1,图2所示)
    使用 “用户关键字技”,将用例抽象与封装成多层,确保用例脚本可读性和可维护性;
    提供 环境抽象、UI抽象、业务抽象分层的示范用例 。
    图1 用户关键字示范

    图2 RFUI分层设计模板
  3. 提供完善的report/log支持 & 持续集成脚本支持(如图3所示)
    图3 RF报告
  4. 框架可扩展性性强(如图4所示)
    图4 RFUI框架示意(standalone部署方式)


RFUI的应用现状


目前我们易信公众平台QA小组,在三个平台产品中,使用RFUI框架进行 Web,Android 端的UI自动化脚本应用。
测试成员反馈: 用例编写简洁、明了, 可读性、可维护性强, 在项目持续集成中稳定性好。


小结与展望


当前的RFUI 仅支持 Standalone 部署方式,在环境部署方面仍旧较繁琐;我们正在进行RFUI2.0(见图5)开发。 目的是支持C/S部署方式,提供公用的基础业务服务器,精简客户端部署步骤。


图5 RFUI2.0框架图示


同时,我们也在尝试往平台化尝试,也期望与STF/TC等平台对接,因为技术积累问题,还处于预研阶段,希望各产品高手多多指点。


题外话


移动互联网测试领域在过去5、6年已经完成了基本技术积累,当下&未来移动测试要求从业人员朝着全栈方向发展;让我们从功能测试出发,利用自动化测试腾出宝贵精力,向专项测试、安全测试纵深挺进。Fighting! Fighting!

本文来自网易实践者社区,经作者汪洋旦授权发布。