通过Jenkins+Cat2Bug做零维护低成本的续接化接口测试

通过Jenkins+Cat2Bug做零维护低成本的续接化接口测试

在传统软件质量管控中,软件接口的好坏需要开发人员在项目初期就手动编写,而随着业务需求的不断变更,接口功能也会实时调整,这往往会消耗过多的维护成本,
基于此痛点,寻找一款低学习成本、低维护的接口测试工具,有助于提高软件交付进程,减少软件的开发成本,使团队可以将精力更多的关注于业务本身。

Cat2Bug-Spring-Boot-JUnit 即是为此而生,它是一款非侵入式的自动化单元测试框架,可以自动扫描SpringBoot工程内的接口类,自动生成测试用例,并在测试后将测试报告提交到BUG系统。

以下方案通过Cat2Bug-Spring-Boot-JUnit 结合持续集成工具Jenkins、BUG管理平台Cat2Bug-Platform 、源代码管理GIT,做到代码提交、自动测试、产出报告、修复BUG的流程闭环。

在这里插入图片描述

上图流程看似节点众多,其实开发人员只要前期在工程中引用Cat2Bug-Spring-Boot-JUnit 框架,并简单配置后,就无须再做任何工作,其它的工作全部交由机器自动处理,下面我们将从本地项目调试、环境搭建两个方面一一介绍方案的实现过程。

本地项目调试

  1. 在项目pom.xml文件中加载Cat2Bug-Spring-Boot-JUnit 框架依赖,代码如下:
<dependency>
    <groupId>com.cat2bug</groupId>
    <artifactId>cat2bug-spring-boot-junit</artifactId>
    <version>0.0.4</version>
    <scope>test</scope>
</dependency>
  1. 在项目pom.xml文件中添加测试插件,代码如下:
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.12.4</version>
    <configuration>
        <argLine>
            --add-opens java.base/java.lang=ALL-UNNAMED
            --add-opens java.base/java.math=ALL-UNNAMED
            --add-opens java.base/java.util=ALL-UNNAMED
            --add-opens java.base/java.util.concurrent=ALL-UNNAMED
            --add-opens java.base/java.net=ALL-UNNAMED
            --add-opens java.base/java.text=ALL-UNNAMED
        </argLine>
    </configuration>
</plugin>

值得注意的是,由于考虑到低版本的兼容性,此插件需要采用低版本,目前测试2.12.4可以完美运行;

另外,插件中配置的–add-opens参数是JDK9+以上才需要使用,因此JDK8不用配置;

  1. 在项目./src/test/java/目录下创建一个测试类,并实现如下代码:
@SpringBootTest
@RunWith(Cat2BugAutoSpringSuite.class)
@AutoTestScan(packageName = "com.cat2bug.junit.demo.controller")
@PushReport(host = "http://127.0.0.1:8022", projectKey = "20240225012438h19zzdb6sd1ahazj", handler = "admin")
public class Cat2bugSpringBootDemoApplicationTests {
    // 类里不用实现任何代码
}

注解说明

  • @SpringBootTest:必要注解,Spring标准测试注解;
  • @RunWith(Cat2BugAutoSpringSuite.class):必要注解,用于动态创建测试类,形成测试报告;
  • @AutoTestScan:必要注解,指定扫描、查找接口类的包路径;
  • @PushReport:非必要注解,用于将测试报告推送到指定Bug平台,host设置Bug系统地址、projectKey设置项目密钥,此密钥在Bug系统中设置、handler设置Bug平台的处理人;
  1. 执行此测试用例

在执行过程中,Cat2Bug-Spring-Boot-JUnit 框架会自动扫描项目中的接口,并编译成测试类进行测试,所有接口的参数根据类型不同,将采用随机赋值的方式输出,如某些参数需要手动设置,或遇到权限等问题,可参考Cat2Bug-Spring-Boot-JUnit 的官网文档。完成测试后的界面如下:
在这里插入图片描述
执行完测试用例之后,会在命令行自动形成统计报告,也会在本地编译目录创建HTML格式的报告,我们可以根据出错的测试用例,对问题进行修复。

当所有测试用例都执行通过后,代表本地项目调试完成。这样,每次代码编写完成后,可执行一下此测试用例用来检查接口是否有问题。

自动化环境搭建

以下所有服务将采用Docker容器化方式部署

部署Jenkins

如果比较了解Docker化部署Jenkins的朋友,可以跳过此章节。

  1. Docker部署Jenkins,执行命令如下:
docker run -d --name jks -u root -p 8011:8080 jenkins/jenkins:latest

执行指令参数说明:

  • -d: 标识是让 docker 容器在后台运行;

  • -p 29090:8080:冒号前边是宿主机的端口,冒号后边的是容器的端口。将镜像的 8080 端口映射到服务器的 8011 端口;

  • –name:是指定生成的容器名称 jks;

  • -u: 最好使用 root 启动,以免有权限执行问题;

  1. 初始化Jenkins

Jenkins部署好之后,在浏览器访问 http://127.0.0.1:8011 ,第一次打开页面时,需要初始化Jenkins系统并输入初始化密码,密码从启动的Jenkins命令中获取,如下图:
在这里插入图片描述
以上截图是通过Docker可视化界面查看的,如需命令行查看,请执行以下命令:

(base) root ~ % docker ps
CONTAINER ID   IMAGE                    COMMAND                   CREATED          STATUS          PORTS                               NAMES
b9ce9597758d   jenkins/jenkins:latest   "/usr/bin/tini -- /u…"   18 minutes ago   Up 18 minutes   50000/tcp, 0.0.0.0:8011->8080/tcp   jks
(base) root ~ % docker logs --tail=1000 b9ce9597758d

执行命令说明:

  • docker ps:查看jenkins容器的ID编号
  • docker logs:查看jenkins日志,其中–tail=1000表示查看1000条日志数据;b9ce9597758d为容器ID

输入完密码之后,一路点击【下一步】,遇到选项都选择默认值,最后创建一个账号,点击【保存并完成】后,系统会提示"Jenkins已就绪!",表示Jenkins初始化完成。

  1. 配置编译环境

由于我的项目是Maven构建的,因此需要安装Maven和JDK,幸好Jenkins自动可以安装这两个环境,让我免去了很多麻烦。
在Jenkins的【Manage Jenkins】->【Tools】界面中,分别可以新增JDK和Maven,界面如下:
在这里插入图片描述

在这里插入图片描述

需要特别注意,在配置时一定要勾选中【自动安装】选项,最后【保存】完成JDK和Maven的安装配置。

  1. 创建一个自动化测试任务

点击【新建Item】按钮打开新建任务界面,输入任务名称,选择【Freestyle project】选项,点击【确定】按钮创建任务,如下图:

在这里插入图片描述

新建完成后,会跳转到任务配置界面,分别设置Git源码管理、构建触发器、Build Steps【编译步骤】这三项,配置界面如下图:

在这里插入图片描述

在配置Git地址时,需要配置Git平台的账号密码,请点击【添加】按钮进行配置。

在这里插入图片描述

我们在构建触发器时,配置的是每半个小时检查一次代码,如果有新的提交,就进行测试。如果想在提交时实时进行测试,可以根据不同的Git平台配置Web Hook钩子,相关教程请自行查找。

在这里插入图片描述

  1. 执行任务

我们可以手动点击【立即构建】按钮执行任务,执行完成后,点击【构建历史】列表中的任务编号可以查看任务详情,如下图:

在这里插入图片描述

在这里插入图片描述

至此单元测试任务配置完成,如之前在项目测试类中配置了@PushReport注解,Cat2Bug-Spring-Boot-JUnit 会自动将报告结果推送到Cat2Bug-Platform 平台。

部署Cat2Bug-Platform

Cat2Bug-Platform 是一套轻量化的BUG管理跟踪系统,和Cat2Bug-Spring-Boot-JUnit 同在一个生态圈下,在做自动化测试过程中,两者可以无缝的配合。

  1. 部署Cat2Bug-Platform
docker run -it -d -p 8022:8022 --name cat2bug-platform cat2bug/cat2bug-platform:latest

如果我们需要将容器中的数据映射到宿主机,执行如下启动命令:

docker run -it -d -p 8022:8022 --name cat2bug-platform -v ~/cat2bug-platform/data:/cat2bug/data -v ~/cat2bug-platform/logs:/cat2bug/logs  -v ~/cat2bug-platform/upload:/cat2bug/uploadPath cat2bug/cat2bug-platform:latest
  • -v ~/cat2bug-platform/data:/cat2bug/data: 将系统中的数据库文件映射到本机~/cat2bug-platform/data目录
  • -v ~/cat2bug-platform/logs:/cat2bug/logs: 将系统中的日志文件映射到本机~/cat2bug-platform/logs目录
  • -v ~/cat2bug-platform/upload:/cat2bug/uploadPath: 将系统中下载的文件映射到本机~/cat2bug-platform/upload目录

映射文件的好处是当我们删除或升级Docker容器后,相关数据依然存在。

部署完成后,访问http://127.0.0.1:8022,检查是否可以正常访问,更多详细操作可访问官网教程查看。

  1. 创建项目KEY

在系统中依次注册用户、创建团队、创建项目后,进入【项目配置】->【API KEY】界面中,新建Key,如下图:

在这里插入图片描述

将创建的key值设置到项目测试类的@PushReport注解中,再执行Jenkins任务时,测试失败的用例信息即可在Cat2Bug-Platform 平台中显示,如下图:

在这里插入图片描述

总结

通过以上部署操作后,一个最小单元的自动化持续单元测试环境即搭建完成,后续也不用在接口变更后反复维护单元测试代码。我们开发此框架的目的也是在实际工作过程中,反复遇到修修改改的问题,以至于最终决定开发一套减轻工作量的工具。Cat2Bug-Spring-Boot-JUnit 今后还会在性能、安全、代码质量等方面进行攻克,希望大家可以多提意见。

Cat2Bug交流群

  • 官网: https://www.cat2bug.com
  • library github: https://github.com/cat2bug/cat2bug-junit
  • library gitee: https://gitee.com/cat2bug/cat2bug-junit
  • QQ群: 731462000
  • 23
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值