前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >走进Java接口测试之从0到1搭建数据驱动框架(设计篇)

走进Java接口测试之从0到1搭建数据驱动框架(设计篇)

作者头像
高楼Zee
发布2019-12-05 17:33:39
1.4K0
发布2019-12-05 17:33:39
举报
文章被收录于专栏:7DGroup7DGroup

前言

在上文 走进Java接口测试之从0到1搭建数据驱动框架(需求篇) 中我们介绍了数据驱动框架中的需求,本文我们将根据需求进入设计阶段,废话不多说,直接进入主题。

技术架构

主要特点

  • 使用目前的主流 SpringBoot2.2.0 作为项目的主体框架;
  • 使用 Maven 作为构建项目,方便管理依赖的 JAR 包;
  • 使用 MySQL 集中式管理测试用例,结构化数据;
  • 使用 TestNG 作为测试框架,强大的参数化功能,方便执行测试脚本;
  • MySQL 数据库管理测试用例,SQL 参数化驱动用例运行,实现测试脚本和数据的解耦;
  • 基于 MybatisGenerator 或者 MybatisGeneratorGUI 自动化生成持久层代码,节省大量重复开发工作;
  • 使用 TypeHandler 解决自定义类型预处理;
  • 实现注解式动态数据源,满足 N 个业务数据源测试需求;
  • 丰富的日志管理功能,支持异常调试,慢SQL监控;
  • 友好的代码结构及注释,便于阅读及二次开发。

技术选型

  • 核心框架:SpringBoot 2.2.0
  • 构建工具:Maven 3.5.4
  • 测试用例管理:MySQL 5.7
  • 测试用例参数:SQL
  • 测试框架:TestNg 6.14.3
  • 脚本参数化: @DataProvider & Testng.xml
  • 日志框架:Logback
  • 持久层框架:Mybatis 3
  • 自定义类型处理器:TypeHandler
  • 代码生成工具: mybatis-generatormybatis-generator-gui
  • 连接池:阿里 druid
  • SQL拦截工具:P6Spy
  • 多数据源启动器: dynamic-datasource-spring-boot-starter
  • 开发插件:Lombok

工具简介

SpringBoot

SpringBoot 它使用“习惯优于配置”(项目中存在大量的配置,此外还内置一个习惯性的配置,让你无须手动进行配置)的理念让 Java 项目快速运行起来。使用 SpringBoot 很容易创建一个独立运行(运行 Jar ,内嵌 Servlet 容器)、准生产级别的基于 Spring 的框架项目,使用 SpringBoot 你可以不用或者只需要很少的 Spring 配置。 用白话来理解,就是 SpringBoot 其实不是什么新框架,它默认配置了很多框架的使用方式,就像 Maven 整合了所有的 Jar 包,SpringBoot 整合了几乎所有的框架。

官网:https://spring.io/projects/spring-boot

Maven

Maven 作为一个构建工具,不仅能帮我们自动化构建,还能够抽象构建过程,提供构建任务实现;它跨平台,对外提供了一致的操作接口,这一切足以使它成为优秀的、流行的构建工具。 Maven 不仅是构建工具,还是一个依赖管理工具和项目管理工具,它提供了中央仓库,能帮助我们自动下载构件。

官网:https://maven.apache.org/

MySQL

MySQL是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。 MySQL是一种关系数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。 MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库。 ----- 摘抄自百度百科

官网:https://www.mysql.com/

TestNg

TestNG 是一个受 JUnit 和 NUnit 启发的测试框架,旨在简化广泛的测试需求,从单元测试到接口测试。 但引入了一些新功能,使其更强大,更易于使用,例如:

  • 注释。
  • 在线程池中运行测试,并提供各种可用策略(单线程,多线程等等)
  • 测试的代码是多线程安全的
  • 灵活的测试配置
  • 支持数据驱动的测试(使用 @DataProvider)
  • 支持参数化
  • 强大的执行模型(不再是 TestSuite)
  • 由各种工具和插件(Eclipse,IDEA,Maven 等)支持。
  • 嵌入 BeanShell 脚本以获得更大的灵活性
  • 用于运行时和日志记录的缺省 JDK 函数(无依赖项)
  • 应用服务器测试的依赖方法
  • TestNG旨在涵盖所有类别的测试:单元,接口,端到端,集成等......

官网:https://testng.org/

Logback

LogBack 是 Log4j 的改良版本,比 Log4j 拥有更多的特性,同时也带来很大性能提升,同时天然支持SLF4J。 LogBack 官方建议配合 Slf4j 使用,这样可以灵活地替换底层日志框架。

官网:http://logback.qos.ch/

Mybatis

MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生类型、接口和 Java 的 POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。

mybatis-generator

MyBatisGenerator是 MyBatis 的代码生成器,支持为 MyBatis 的所有版本生成代码。非常容易及快速生成 Mybatis 的Java POJO文件及数据库 Mapping 文件。

官网:http://mybatis.org/generator/

mybatis-generator-gui

mybatis-generator-gui是基于 mybatis generator开发一款界面工具, 本工具可以使你非常容易及快速生成Mybatis的Java POJO文件及数据库Mapping文件。

官网:https://github.com/zouzg/mybatis-generator-gui

Druid

Druid 是一个关系型数据库连接池,它是阿里巴巴的一个开源项目。Druid 支持所有 JDBC 兼容数据库,包括了Oracle、MySQL、PostgreSQL、SQL Server、H2等。 Druid 在监控、可扩展性、稳定性和性能方面具有明显的优势。通过 Druid 提供的监控功能,可以实时观察数据库连接池和SQL查询的工作情况。使用 Druid 连接池在一定程度上可以提高数据访问效率。

官网:https://druid.apache.org/

P6Spy

p6spy 是一个开源项目,通常使用它来跟踪数据库操作,查看程序运行过程中执行的sql语句。

官网:https://github.com/p6spy/p6spy

dynamic-datasource-spring-boot-starter

dynamic-datasource-spring-boot-starter 是一个基于 springboot 的快速集成多数据源的启动器。 其支持 Jdk 1.7+, SpringBoot 1.4.x、1.5.x、 2.0.x。

官网:https://github.com/baomidou/dynamic-datasource-spring-boot-starter

Lombok

Lombok 项目是一个 Java 库,它会自动插入您的编辑器和构建工具中,从而使您的Java更加生动有趣。 永远不要再写另一个 getter 或 equals 方法,带有一个注释的您的类有一个功能全面的生成器,自动化您的日志记录变量等等。

官网:https://projectlombok.org/

项目结构

├─logs│  └─spring-boot-logback             # 日志文件│          all_api-test-logback.log # 所有日志│          err_api-test-logback.log # 错误日志├─src│  ├─main│  │  ├─java│  │  │  └─com│  │  │      └─zuozewei│  │  │          └─springbootdatadrivendemo│  │  │              │  SpringbootDataDrivenDemoApplication.java # 启动类│  │  │              │  │  │  │              ├─db│  │  │              │  ├─auto      # 存放MyBatis Generator生成器生成的数据层代码,可以随时删除再生成│  │  │              │  │  ├─mapper # DAO 接口│  │  │              │  │  └─model  # Entity 实体│  │  │              │  └─manual    # 存放自定义的数据层代码,包括对MyBatis Generator自动生成代码的扩展│  │  │              │      ├─mapper # DAO 接口     │  │  │              │      └─model  # Entity 实体│  │  │              ├─handler  # 数据转换│  │  │              └─service # 业务逻辑│  │  │                  └─impl # 实现类│  │  │                          │  │  └─resources│  │      │  application.yml       # 全局配置文件│  │      │  generatorConfig.xml # Mybatis Generator 配置文件│  │      │  logback-spring.xml     # logback 配置文件│  │      │  spy.properties      # P6Spy 配置文件│  │      │  │  │      ├─db│  │      ├─mapper│  │      │  └─com│  │      │      └─zuozewei│  │      │          └─springbootdatadrivendemo│  │      │              └─db│  │      │                  ├─auto      # 存放MyBatis Generator生成器生成的数据层代码,可以随时删除再生成│  │      │                  │  └─mapper # 数据库 Mapping 文件│  │      │                  │          │  │      │                  └─manual    # 存放自定义的数据层代码,包括对MyBatis Generator自动生成代码的扩展 │  │      │                      └─mapper # 数据库 Mapping 文件                          │  │      └─testng│  │          │  APICollection-TestSuite.xml # 所用测试用例集│  │          └─jdbcbapi│  │                  jdbcAPI-TestSuite.xml  # 某API测试用例集│  │                  │  └─test│      └─java│          └─com│              └─zuozewei│                  └─springbootdatadrivendemo│                      └─demo   # 接口测试用例                                     

开发环境

  • SUN JDK1.8及以上
  • Maven 3.5.4及以上
  • IntelliJ IDEA 2018及以上
  • windows/macOS
  • Git 不限
  • MySQL 5.7及以上
  • Navicat Premium 11.2.7及以上 或 SQLyog 11.3及以上

小结

本文根据需求设计了一个框架,后续将具体看如何去落地。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-12-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 7DGroup 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 技术架构
  • 主要特点
  • 技术选型
  • 工具简介
    • SpringBoot
      • Maven
        • MySQL
          • TestNg
            • Logback
              • Mybatis
                • mybatis-generator
                  • mybatis-generator-gui
                    • Druid
                      • P6Spy
                        • dynamic-datasource-spring-boot-starter
                          • Lombok
                          • 项目结构
                          • 开发环境
                          • 小结
                          相关产品与服务
                          云数据库 SQL Server
                          腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
                          领券
                          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档