一、背景介绍
- 项目名称:OB-制品项目
- 项目简介:OceanBase中效能组的一个项目,主要功能就是OB团队各类制品的生产、管理、发布的一个平台。
二、业务介绍
模块:
- 创建项目;
- 创建计划;
- 执行构建;
- 产物转测试;
- 产物转上线;
OB数据库有不同的组件:server、agent、procy、等等;这些组件不同团队的人负责,需要发版本、管理、等需求。针对这些组件去创建项目,每个组件有不同的版本,和不同的要求,对应的去创建计划;执行构建,就是去做打包操作。完成打包后,转测试去给测试拿去测试、转上线,直接发布上线。
三、架构介绍
项目整体架构非常简单,没有那么多的服务,因为该项目只是去,提高其他项目效能的一个平台。
后端:python语言编写,调用jenkins的api,去执行构建操作。
前端:bigfish3.0 + TechUI +ant design +中台最佳实践(很优雅的一个组合)
环境部署:
-
测试环境,linux环境,拉取代码后,构建前端镜像和后端镜像;完成景象后执行docker-compose命令拉起服务;完成测试环境的搭建。
后面会优化,利用k8s的namespace,分给测试一些资源,在k8s上搞一套测试环境。 - 生产环境,k8s。
四、测试方案
其实来说,项目特别简单,没有性能上特别的需求(给到了jenkins的job节点压力)、兼容性几乎也不需要(chrome)、安全性(更不需要,蚂蚁网关直接杜绝任何后患~)。所以基本只进行和保障项目的功能即可。
- 痛点1
基于docker的测试环境部署;
幸运的是在此阶段,没有那么多的测试需求,挤时间给敲过了一遍docker。并还写了笔记。
学习视频地址:9、Swarm集群搭建_哔哩哔哩_bilibili
个人笔记:我的docker笔记
笔记中记录了docker课程阶段的一些面试题。
- 解决方案,就是学。docker学了3个星期、k8s也算过了一遍,大致知道了是什么。
-
痛点2
缺少完成的项目流程(需求文档、概要设计文档)
文档管理混乱 -
解决方案:输出标准的项目流程,并要求项目组按流程执行项目流程通过。
方案地址:研发提测的项目流程规范
五、测试过程产出
- 接口用例
- 接口自动化用例
- 功能用例
- ui自动化用例(主流程)
- 测试报告
这边由于管控比较严重,任何文档形式的东西,都不让外传。所以接口自动化代码只能截图方式,去介绍怎么去完成的。
5.1 接口用例设计模板
在测试中,无论什么需求,对于测试来说,就是思考:我要怎么去测试它!
在此基础上,去完成测试的归档,等要求。根据当前的项目与进度,便写了这样的一个接口用例模板。
5.2 开发的接口文档展示
接口测试需要开发提供什么最重要?除了需求必不可少,其次就是接口文档了,一个好而全的文档,能够省去很多无用的沟通。但是作为测试一定先耐心去看它,然后在提出自己的一些想法。
5.3 接口自动化设计
由于项目属于很正常的项目,也比较简单;在用例中也没有遇到技术上的难点,接口用例设计直接像课程中教的,去直接“拿来”就可以了。但是自己去做的这第一步,真的非常重要,只有真正的去搞过,才能算是一个自动化测试工程师。也会沉淀下自己的一些见解,非常重要。
5.3.1 整体架构介绍
这里是大致介绍了下,整体接口自动化框架的组成。
api层;
数据层;
用例层;
通用功能层;
认真上过接口自动化实战课程的,都非常清楚;项目太大了,就可以分模块;我当前的项目,一般,不到50多个接口,但是我认为这个框架,支撑150个接口,没有丝毫臃肿。再多就得问老师了。
5.3.2 base_api.py介绍
比较基础的base_api;基本就是封装request、多环境的配置、获取唯一id、json_path校验的功能。
5.3.3 wework.py介绍
这里属于是“权限”层,我自己命名的,大的项目,每个业务都是需要不同的权限的,类似于企业微信;返回各个业务的访问权限。当前的我这个小项目,理论上用不到,但是依旧保存了。
5.3.4 业务层介绍
业务层,我的理解就是,系统有多个模块;那么我就给分多个业务;如果涉及到跨系统的,当我没说。。但是也可以通过命名,保留跨系统的模块。一个模块怎么也得20以上的接口数量。将这些接口,全部写到业务层里;保证接口它本身所有的属性“都有”,并且“可配置”即可。更好的优化,可以问下老师。
5.3.5 来个稍微复杂的业务
复杂的业务,其实就是通过调用多个接口,完成一个接口的测试,或者一个业务的测试。看着很多,其实每个接口理顺之后,也就那样。可能我还没遇到更复杂场景的业务有关。可以让老师举例下。
5.4异常场景用例
异常场景,有接口的正向测试;那么就肯定有接口的异常测试;除了接口本身的“功能性”参数之外的异常测试,可能也会有“非功能性”测试:测试方案模板
我把它前三个叫做接口的“功能性”测试,后三个叫做“非功能性测试”。
post或者put类型的接口,用到了json体,这里可以根据自己的需要,去链接数据库或者直接读取,都行。
也可以让老师,谈下自己的方式。
5.5 文件读取的封装
由于文件的不同格式,和所需的返回结果不一样,就干脆每个类型写了一个方法;也可以使用if、else方式,看自己;也可以看下老师的看法。
六、问题汇总
- 目前500多用例,执行需要13分钟左右;有什么方法去优化的,最好在10分钟之内。(内部有一个8000用例,执行8分钟的例子,有点恐怖)
- 异常场景的用例设计,不知道是否合理,有更好的建议吗?
- 接口测试的流程,不知道是否合理,不确定。第一次做,确实没啥信心。