接口自动化测试平台开发那些事2(架构)

开发工作的第一步就是需求确认了,类似企业级开发中,一般需要给出需求说明书和原型图,这里就不做那么详细的叙述了,撸起袖子直接干。

需求

基本上按照如下图划分成几个大的模块,主要有用户项目测试环境测试用例运行器测试报告等几部分组成。具体的需求内容由于篇幅有限,不再一一介绍了。

需求使用思维导图管理,简单直观。

接口自动化测试平台开发那些事2(架构)_第1张图片
需求

技术选型


在技术选型上,基本上确定了基础编程语言,其他技术栈也基本上确定了。之前做自动化测试时候,python做过相当长的主力开发语言。这是决定用java做为开发语言,基于以下几个方面考虑:

  1. python是动态语言,需要更好的工程实践和代码规范。
  2. java静态编译特性更容易在编译期间排错。
  3. java 在web领域比python更适合

确定了编程语言,其他的框架也就好确定了,选择当前主流的即可。java后端方面spring全家桶基本上属于一统江湖的地位,就它了。

  • 编程语言:Java
  • 基础框架:Spring
  • Web框架:SpringMVC
  • 持久层:Mybatis
  • 数据存储:MySQL、MongoDB
  • 环境管理:Docker
  • 模板引擎:Thymeleaf
  • 任务调度:Quartz
  • 测试框架:Httprunner
  • 单元测试框架:Junit、TestNG
  • 前端:JQuery、Bootstrap

Spring ioc容器作为管理bean的工具,springMVC框架处理前端发来的请求;

MySQL保存项目、接口、测试用例、定时任务、测试报告等数据;MongoDB用来存储一些测试文档,例如接口文档、测试报告等。

Docker技术的引入主要是为了构建测试运行环境,和做测试数据隔离。
定时任务调度使用目前广泛使用的Quartz库,可以灵活的定义各种定时规则。

持久层选用Mybatis主要是熟悉这个框架,可以灵活的写SQL,并且有强大的SQL生成工具。(其实Hibernate也不错,不过对Mybatis更熟悉一点)

测试运行器这里之前有考虑过自己实现一套基于http协议的测试工具,后来发现业内有很多优秀的轮子,自己实现浪费精力而且不一定有别人的好,于是就采用了一套第三方的测试框架(HttpRunner),感兴趣的可以去了解一下这个接口测试框架。

前端使用JQuery+Bootstrap的经典组合,优点就是用户多第三方资源多,网上大把的模板可以套用。

系统架构

项目结构

接口测试平台,是基于业务操作流的方式来架构的,基本架构如下图:

接口自动化测试平台开发那些事2(架构)_第2张图片
项目结构图

上面的项目结构图看起来是不是一目了然。

首先测试人员创建一个项目,在项目内依次录入接口信息,每个项目的接口信息是可以导出为接口文档。然后测试人员需要创建测试集(TestSuit)用来存放测试用例,最后测试人员需要创建定时任务,按照规则定时自动运行测试,并输出测试报告。

数据流图:
接口自动化测试平台开发那些事2(架构)_第3张图片
架构
业务流:
1. 测试人员通过前端页面创建测试项目
2. 为测试项目内添加测试用例
3. 在任务界面构建定时任务
4. 选取测试用例集或者测试用例,添加进Task
5. 定时任务进入内存并持久化到数据库,等待被触发
6. 触发测试任务,进行测试环境校验(远程主机校验、镜像校验、测试容器校验)
7. 构建docker容器,装填测试数据和构建测试环境(env)。
8. 执行测试(测试运行器)
9. 生出测试报告,并导出
10. 保存测试报告,并进行邮件提醒

通过以上架构说明,接口测试平台基本需求和业务操作流已经基本明确,下一步就是搭建开发环境进行编码实现了。

你可能感兴趣的:(接口自动化测试平台开发那些事2(架构))