# 1. 前言

基本上规范的大型项目都有自动化测试,它可以快速发现问题,提升敏捷开发的信心。

自动化测试可以检测:

  • 页面白屏,即使只写一个用例也可以检测出来,成本最低
  • 功能异常,比如对赛宝主流程的检测
  • api异常,可监控api是否报错、是否超时
  • js错误,可监控页面js是否发生错误
  • 样式异常,可监控页面元素样式

赛宝项目目前有101个页面,每次上线前都要经过功能测试、冒烟测试、开发自测等环节,花费了不少时间,为了提高效率,再次启动了自动化测试。

# 2. H5自动化测试

# 2.1. 技术选型

语言上,选择了前端熟悉的typescript,框架上,选择了Cypress(之前是Puppeteer)。Cypress相对于Puppeteer有以下优点:

  • 专业的自动化测试工具,自带断言、异步等待等特性,减少维护成本
  • 可自动重试、自动等待元素等,稳定性高
  • 采用JS注入页面,测试时间短,执行效率高

# 2.2. 项目架构

目前H5的自动化测试项目架构如下,分为项目创建、用例管理、测试计划、任务调度、结果归档与通知。

  • 项目创建,在研发平台完成,一分钟内即可完成新项目接入。
  • 用例管理,目前在 pmd-auto-test 项目中管理所有用例,每个项目单独一个目录,扁平化的放置每个用例文件,每个测试文件不超过10个用例,方便后续维护。
  • 测试计划,可分项目、分批次执行测试用例,可针对不同优先级的用例制定不同的计划,也可避免同一时间大量用例同时执行,减轻对后台服务的压力。
  • 任务调度,使用前端任务调度通用模块,依次执行测试计划。
  • 结果归档与通知,报告处理涉及三个平台,研发平台记录测试结果,COS存储录屏,失败通知发送给机器人。

# 2.3. 接入项目

新项目接入十分简单,在研发平台可以填写表单,一键创建新的自动化测试项目,然后在 pmd-auto-test 中进行测试编写即可。

目前已经接入的项目有:

  • 赛宝
  • 赛宝pro
  • HoK Club
  • 王者微社区
  • 王者商户特权
  • 和平人生

# 2.4. 支持多分支、多环境

目前自动化测试项目支持:

  • 分项目执行
  • 分批次执行
  • 多分支、多环境执行

分项目执行在项目之间解耦,方便维护。

分批次执行,可区分优先级,并减少接口请求密度。

支持多分支、多环境,可测试预发布环境,比如赛宝发布前需执行一次自动化测试,通过后才可以发布。

# 3. 小程序自动化测试

小程序自动化测试采用 Minitest 框架,语言为 python,可支持云测。

目前赛宝小程序已接入,测试用例涵盖了创建赛事、赛程管理等功能。

小程序自动化测试项目架构与H5基本一致,只是项目创建、测试计划、任务调度模块均在 Minitest 管理平台操作。这里后续在有更多需求时,会集成到研发平台处理。

# 4. 效果与展望

赛宝自动化测试用例目前有60多条,并复用到了赛宝Pro、HoK Club中。自动化测试投入以来,发现了线上的一些问题,并进行了处理,证明了其有效性。

另外,部门内的测试同学也加入进来,编写了王者微社区的一些H5用例。

由于自动化测试面向业务,需要跟随业务不断更新,希望更多开发者可以参与,使其发挥更大的作用。