谈谈最近做的一个自动化平台

发布于 2022年 01月 12日 09:21

微信搜索【大奇测试开】,关注这个坚持分享测试开发干货的家伙。

来到新的公司有半年多了,由于业务和人员的极速扩张,整个局面处于百废待兴阶段,有太多方方面面的事情要做,前五个月基本上都是在给各式各样的需求进行支援,最近的两个月多月才比较固定做技术域的事情。

所在组主要是做一些平台和工具开发,以及一些专项测试,基本好多公司在做的我们也都在搭建,比如用例、造数、覆盖率等等平台&工具,以及移动、服务专项等,我是负责从0开始搭建的一个接口自动化平台需求,要得急第一个版本上线要求一周(摊手)。

 

上图给出了目前平台的整体功能的架构,最初的想法和搭建平台的目的在这里总结下,大概有以下几个方面:

背景原因: 质量部门按照业务域划分,一般都有来自原有团队现有框架,亦或新团队从以前公司带过来的框架,无法短时间再造迁移,也不太可能统一一种框架;

业务痛点: 测试结果没有数据库持久化,都是利用现有的工具包生成的静态文件报告,无法做统计相关分析和历史数据查询;

效率问题:自动化本身想要想要起作用,除了框架和代码的稳定高质量,还要做持续集成,分散在各小组基本只能做到jenkins定时调度,而且这部分都是一些重复性的工作。

主要是这三点,其实还有包括如运营推广、与其他平台打通等不利的多方面因素,基于上边这些,就诞生了这个自动化平台,其实严格来说算是一个主打报告功能,辅助执行等功能的这么一个平台。然后对于平台功能直接参考上图,短期内规划如此,暂不展开讲了。

接着来看下一个技术相关的图,它主要简单清晰的展示了已实现部分和未来涉及到技术内容,结果上报的部分最开始是通过提供一个开放API上报接口,让各个团队的自动化话框架自行改造,将每次本地或者Jenkins运行的测试结果上传给平台。

随着业务对接和功能的迭代,其实各团队虽然各框架结构实现方法各不相同,但运行方式总体就是JAVA TestNG 和 Python pytest 两种,个别使用了JUnit,而在JAVA自动化项目持续集成的方式都是maven命令行,Python项目就是py文件执行。所以在汇集结果上报数据的处理无外乎两种方式:

  • TestNG:使用自定义监听器,如继承ITestListener 和 IReporter

  • Pytest:使用Hook,比如利用pytest_runtest_makereport

这两个框架在自定义报告有很多可研究的地方,后边会搞个系列讲讲,这里仅做个抛砖引玉,既然各测试组都用相同的东西做相同的事情,并且有的组技术能力也有一定的壁垒,因此就有了为了解决这个痛点而出现的JAVA上报工具包和Pytest上报插件,通过简单的引用配置就能最小成本快速的上报。

再有另外一个核心的功能是平台支持了Jenkins无感知的配置和Pipeline调度,给出几张截图来看看初步成果。

图1: 操作新建绑定代码项目,后端会自动配置好Jenkins服务

图2: 进入绑定的项目配置对应的执行计划,TestNG为XML,Pytest为py文件。同时支持定时配置,飞书通知基本配置,另外在新建测试后就会自动进行调度执行,然后通过技术架构的三种方式把结果上报到平台,平台进行汇总统计。

 

图3: 调度执行完成后,从项目测试报告tab或者收到的通知简报上可以跳转到报告详情页,主要展示测试报告的详细信息,并且把错误的case优先分类展示,让其第一时间进行确认和处理。

 

平台还会持续迭代,从文章开始的产品架构图和技术架构已经展示了未来迭代的更多功能,当然规划还是在实际的落地和后续的使用反馈中不断调整变化,很应景我司的一个文化“拥抱变化”。

,之前一直想找个点,做个开源的项目,并且希望能有一定的使用价值,而不是为了开源而做再做一个类似接口web工具,这个报告平台和插件也许就是个不错的方向,可以在积累一段时间,踩过一些坑后对其重新梳理,把功能更通用需求方面整理,将平台和工具包一并分享出来。正好之前的《提测平台》系列也快接近尾声,要有新的系列继续,做个小调研,同时也希望大家可以加我微信入群或私信一同探讨,也可以未来参与共建。

坚持原创,坚持实践,坚持干货,如果你觉得有用,请点击推荐,也欢迎关注我博客园和微信公众号。

推荐文章