写点什么

dubbo-go github action 集成测试

发布于: 3 小时前

概览

为了保障一个系统的稳定需要引入多种测试方式,测试又跟随场景对象和思路可以分为黑盒测试,白盒测试,性能测试,单元测试,集成测试等等。本文主要讨论集成测试的相关概念。


集成测试又称组装测试,即对程序模块采用一次性或增值方式组装起来,对系统的接口进行正确性检验的测试工作。整合测试一般在单元测试之后、系统测试之前进行。实践表明,有时模块虽然可以单独工作,但是并不能保证组装起来也可以同时工作。

测试流程

在 dubbo-go-sample 这个 repo 中,整个集成测试的流程是通过脚本去启动 docker 容器,然后启动不同 sample 对应的 server,在通过跑 integrate_test 中的测试代码来检验这个 sample 的测试用例是否有问题,如果没有问题,所有的 TEST 会是 PASS 状态,否则对应的 TEST 会处于失败的状态并且退出测试,脚本会停止并清空所有的容器。为了方便理解,流程如下:


项目结构

dubbo-go-sample 的目录结构

本段主要讨论各个目录的功能,以及开发者如何在添加对应的测试代码。 dubbo-go-sample 的树结构如下


├── ...├── helloworld├── integrate_test├── ...└── tracing
复制代码


integrate_test 存放了 sample 的测试代码,其他目录存放的是 server 的代码,下面笔者会按照 helloworld 项目为例子去讲解,所以其他 sample 被 "..." 给替换了。

integrate_test 的目录结构

如下是 integrate_test 的目录结构,其中需要启动容器都会配置在 dockercompose 中,避免每次启动服务都需要重新启动容器的问题,其他的目录都存放了不同项目的测试代码


├──  ...├── dockercompose├── helloworld├── ...└── rpc
复制代码

helloworld 的目录结构

与 integrate_test 同目录下面的 helloworld 的目录结构如下,其中需要用到的是 go-server 中的代码,集成测试的脚本会找到 go-server 里面的服务代码并且启动他。


.├── go-client├── go-server├── java-client└── java-server
复制代码

如何添加一个测试

基于上面章节的讲解,集成测试主要是从 integrate_test 找测试代码,从 integrate_test 的同级目录下面找 server 去启动,所以要写一个测试需要增加一个 server,增加一份测试代码和在测试脚本里面增加需要测试的 sample 代码。所以我下面会详细讲解 path 的注意点。


integrate_test.sh 主要会从固定的 path 下面去找配置和代码,下文会以 helloworld 为 demo 分别会从 server、test 和 config 三个部分去讲解需要添加的元素。

Sample Server

开发者需要关注 helloworld 目录的下级目录是否有 go-server,如果有这个目录,集成测试的脚本会从 go-server 这个目录下面找 cmd 和 confcmd 是存放 server 代码的目录,conf 是存放 dubbogo.yml 这个文件的地方。


├── go-client│   ├── cmd│   └── conf├── go-server│   ├── cmd│       └── your server code│   ├── conf│       └── dubbogo.yml│   └── dist
复制代码

Sample Test

在 integrate_test 这个目录下面需要与 Server 的名字一致,比如上面的 Server 是 helloworld,那么这个 test 的目录也是 helloworld,在 helloworld 这个目录下面需要添加一个 tests/integration 这个路径去存放对应的测试代码,docker 目录下面存放的是 docker 容器的探活脚本。


.├── docker└── tests         └── integration          └── your test code
复制代码

Sample Config

为了减少冗余配置,需要优先启动的容器建议存放在 dockercompose 这个目录下面的 docker-compose.yml 这个文件当中,脚本会启动配置文件的服务来帮助集成测试的进行。


├── dockercompose       └── docker-compose.yml // please add your service config
复制代码


如果对 dubbo-go 感兴趣,欢迎加入搜索钉钉群号 23331795【或者扫描如下二维码】钉钉群与社区进行交流。


引用

https://zh.wikipedia.org/wiki/%E9%9B%86%E6%88%90%E6%B5%8B%E8%AF%95


作者


彭笳鑫,github 账号 Lvnszn,杭州帷幄匠心研发工程师。tidb contributor,dubbo-go contributor,dubbo-getty 维护者。擅长 Leetcode,linux,SQL,等方面的知识, 关注 spark,ETL,数据仓库,hadoop,hive,storm 领域.

发布于: 3 小时前阅读数: 2
用户头像

dubbogo社区 2019.08.25 加入

dubbogo社区官方账号,发布 github.com/apache/dubbo-go 各种最新技术趋势、项目实战和最新版本特性等技术干货。

评论

发布
暂无评论
dubbo-go github action 集成测试