腾讯实习项目复盘——基于Cypress的H5自动化测试平台
一、业务背景和需求分析概况
公司目前的产品投放主要依托于H5页面 以及微信小程序,线上产品页出现过组件失效和崩溃等情况。目前的promethus + grafana的集成监控系统能在转化率异常时反映出问题,但是会有一定滞后性,难以在第一时间发现并修复问题。因此需要一款检测H5页面可用性的自动化测试平台,用于定时检测H5页面,并在问题出现时第一时间给出警告。
核心功能:
- 上传脚本到gitlab做版本控制
- 可以获取最新脚本列表
- 执行机上可以按需调起Cypress执行对应脚本,并获取相应的结果通过企业微信机器人预警和在前端给出测试报告,同时结果也添加到promethus的监控采集中
- 前端拥有友好的交互界面,能够展示结果和报告和管理启动的任务
二、架构设计
在后端调起Cypress完成脚本执行退出后,浏览器会存在残留,长时间执行后会产生任务假死的情况,为解决这个问题,采用了docker容器执行的方式,将Cypress和浏览器,启动脚本等相关依赖封装成进行,docker执行完成后退出,每次启动一个新的docker容器都是一个新的环境,不存在进程残留的问题。项目最后采用后端启动容器的方式执行,非常稳定。
三、项目展示
前端采用Vue框架设计
- 任务管理页面,可在此查看到任务执行的配置参数,可以动态修改任务的负责人联系方式和微信群机器人对应key
- 工作台页面,可在此选择脚本,设置相关参数启动定时任务
- 脚本上传页面,可在此上传脚本并传至gitlab
- 任务结果页面,可以再此查看到脚本执行的相关结果
- 点击查看可以查看测试报告,测试未通过用例有相关截图可以快速定位到页面问题
- 测试用例未通过的同时会根据启动任务时的设定,在企业微信中通知相关负责人进行处理
后端采用Python3 Flask框架 完成所有接口的开发。
在此不做可视化展示
四、存在问题和优化思路
1.项目目前只部署在一台服务器中,目前存在当多任务并发执行时服务器负载跑满而可能导致浏览器中性能不佳页面卡顿引起的误报情况。
优化思路为:改成分布式的应用,将后端调起Docker的部分拆分成微服务客户端,统一受中央后端服务器管理调用,而客户端可以部署在任何有剩余资源的服务器中。
2.任务启动后但为执行完毕时给予反馈不足,换言之就是启动任务之后由于docker是异步执行的,后端不做等待,因此前端展示欠缺反馈,不知道任务什么时候能够执行完毕。
优化思路:在docker中的执行脚本中打上断点,将每一阶段的执行情况统一推送至状态池中(可以是数据库,也可以是后端服务中的全局变量),再由后端服务器去访问获得任务的执行状态,由此展示至前端即可有一个对任务执行状态较好的了解。
五、项目效果
目前平台已经在公司上线使用,共计分为三个任务检测12个产品页面。在页面改版时、组件异常时能正常给出警告,反应时间上比Promethus监控缩短5分钟以上,已经达到预期效果,日均能够执行8000+的用例。
发表评论