zoukankan      html  css  js  c++  java
  • 从零开始搭建测试框架,测试平台

    一、功能描述

    灵活支持多业务数据源;
    测试用例集中式管理,结构化数据;
    数据驱动做到脚本与测试数据解耦;
    丰富的日志管理功能,支持异常监控,便于开发调试;
    支持性能监控,比如业务数据源的慢SQL;
    开发的便利性,能节省重复工作,降低开发成本;
    灵活的扩展性,满足自定义的数据类型;
    主流的技术栈,能跟上互联网技术节奏,不易于快速被淘汰;
    友好的代码结构及注释,便于阅读及二次开发。

    二、技术架构

    三、主要特点

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

    四、工具简介

    准备工作:idea 2020.3

    1. 开发框架SpringBoot,

    日志框架Logback,日志收集ELK Graylog

    2. 效率插件lombok

    更多注解说明,可查看:https://projectlombok.org/features/index.html

    3. 测试框架Testng,流式断言库AssertJ

    关于AssertJ的说明,可查看:https://assertj.github.io/doc/
    AssertJ 支持如下模块:
    Core:AssertJ core is a Java library that provides a fluent interface for writing assertions.
    Guava:AssertJ assertions for Guava provides assertions for Guava types like Multimap, Table, Optional, Range or ByteSource.
    Joda-Time:AssertJ assertions for Joda-Time provides assertions for Joda-Time types like DateTime and LocalDateTime.
    DB:AssertJ-DB provides assertions to test data in a database.
    Neo4j:Provides assertions for Neo4j 3 or higher.
    Swing:AssertJ Swing is a Java library that provides a fluent interface for functional Swing UI testing.

    4. 测试报告ExtentReport,服务端测试报告Klov ExtentReports

    4. 工具类库 Hutool,JSON 解析库 fastjson,Mock Server moco

    五、项目结构
    ├─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 # 接口测试用例

    【Quality】 Quality is the value to someone who matters。做测试,首先要找到这个someone是谁,以及这个 someone重视的 value是什么。
  • 相关阅读:
    Leetcode.11 Container with Most Water
    Leetcode.19 Remove Nth Node From End of List
    Leetcode23. Merge K sorted List
    leetcode287. Find the duplicate Number
    LeetCode234. Palindrome Linked List
    leetcode.142 LinkedList Cycle II
    UINavigationController
    UITableView的性能优化1
    iOS触摸事件
    UITableView的性能优化
  • 原文地址:https://www.cnblogs.com/liuyitan/p/15571443.html
Copyright © 2011-2022 走看看