自动化工具 Python+flask+bootstrap+macaca 搭建 web/ Android 自动化测试管理平台

Jerry li · 2017年12月12日 · 最后由 terrychow 回复于 2017年12月13日 · 6536 次阅读

前言

使用Python+selenium、python+appium分别编写web、Android自动化测试用例一段时间了,先后经历了以下几个改造阶段:

  1. 按照官方例子,在unittest case中存储用例,用Excel记录测试结果。初步搭起了能跑的框架。
  2. 用例通过关键字驱动提取到Excel中管理,添加报告输出。 用例从脚本中剥离之后,按照业务流程快速编写了一批增删改查的用例,快速提升了覆盖率; 但用例数量、执行频率逐渐增加后,也很快凸显出用例管理、结果查看的不便。
  3. 用例、执行结果改为在数据库中存储和维护。 增加了用例管理、报告查看的可操作性。
  4. 采用分布式部署的方式进行用例执行:1个服务器节点,多个driver 执行节点。
  5. 用例存储在数据库中后,有了搭建一个用例管理平台的想法。彻底脱离在本地进行用例维护的限制,统一在服务器端进行维护。

新平台架构

代码结构:

  1. 管理平台:使用Python+flask+boostrap搭建。 包括test case 的增删改查页面、test suite的新增、修改、用例关联、结果汇总查看、截图查看等功能。
  2. 用例执行核心服务:使用Python+macaca client搭建。从数据库中读取待执行的用例批次列表,将用例从预定义的关键字自然语言格式,转换为对应的macaca命令,发送到对应的macaca driver节点进行执行,并记录执行结果。

用例批次执行流程:

单条用例执行流程:

自动化测试用例分为3个表进行管理:
(1)测试用例表:test_case,保存测试用例的相关信息
(2)测试批次表:test_suite,保存测试批次的相关信息
(3)测试用例执行记录表:test_batch,上面两个表的关联表,保存每个测试用例每一次执行的结果。

  1. macaca driver 节点:在不同的PC 上安装macaca chrome、Android等不同的driver,用以执行服务端调度发来的用例。

服务端和分布式节点结构图:

用例格式:

步骤定义模板:

用例执行批次记录:

执行结果查看:

测试截图查看:

#自我总结的设计要点:

  1. 用例以关键字进行驱动,并采用关键字模板的方式,映射到对应的macaca 执行语句。
  2. 用例分为test_case \ test_batch 两个表存储,分别是用例的初始信息,和每一次执行的历史记录。
  3. 由于macaca 同时兼容chrome、Android、iOS等不同平台驱动,所以这些平台的用例都可以按同样的方式在这个系统中管理和执行。
  4. 节点端macaca 服务启动时,向服务端发起注册,这样可以灵活、动态获取可用节点,从而调整用例的分布执行。

#关于关键字驱动
对于关键字驱动是否值得大范围使用,见仁见智吧。

从我的实践经历来看,推广的几个web 项目和Android项目,可以覆盖大部分的用例,执行效率和执行稳定性都不错; 而且如果遇到新的控件识别或操作问题,也可以通过关键字模板,或少量的定制化修改解决。

共收到 4 条回复 时间 点赞

开源么

回复

暂时还在内部试用,部分功能还在完善,待整理完成再共享出来

思路不错,持续关注

再加上测试结果统计的话会更完善,加油

Jerry li 接口自动化测试框架搭建思路 中提及了此贴 01月12日 18:01
Jerry li 接口自动化测试框架搭建思路 中提及了此贴 01月15日 09:56
Jerry li docker+selenium 搭建和踩坑记录 中提及了此贴 05月08日 16:06
simple 专栏文章:[精华帖] 社区历年精华帖分类归总 中提及了此贴 12月13日 14:44
simple [精彩盘点] TesterHome 社区 2018年 度精华帖 中提及了此贴 01月07日 12:08
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册