DTM开发测试指南

本文是为了给dtm做贡献的开发者准备的,或者是给准备调试dtm的开发者准备,普通开发者如果只是为了接入dtm,则不需要关注本文内容。

基础环境

dtm项目需要将数据存储在mysql|redis|postgres,因此需要准备好相关的服务器。

推荐采用docker-compose的方式准备环境,您可以安装docker20.04以上版本,然后在dtm项目路径下,执行 docker-compose -f helper/compose.store.yml up -d

添加测试用例

这步为可选,虽然这步为可选,但是对于bug或者新功能,强烈建议您添加测试用例,以便未来的每一个修改,都不会重新引入您已解决的问题

您可以参考现有的测试用例,在合适的位置添加您的新用例。现有的用例是比较全面的,各种正常/异常情况,都有覆盖,整个测试覆盖率能够达到95%

修改问题

如果您已经添加了测试用例,那么先确认测试用例在您修改前是失败的

您针对问题进行相关的代码修改,尽量做到代码简单清晰,让其他人容易读懂,逻辑复杂/奇怪的地方加上注释

修改后的测试

您完成相关问题的修改后,您可以通过go test运行相关的测试用例,确认已解决相关问题,然后再运行全部测试用例,保证您的新代码,没有引入新的问题

dtm没有测试人员,他的稳定性主要是靠自动化的测试保证的。我们在测试覆盖率上面要求很高,1.0版本后,都要求覆盖率在95%+

注意!!! 您完成修改后,请确保下面命令显示所有的测试用例已通过

make -f helper/Makefile

如果您的修改,涉及存储引擎部分,那么您需要设定环境变量,覆盖特定引擎下的测试用例

  1. go test ./... # 默认情况下,使用redis引擎
  2. TEST_STORE=redis go test ./... # 测试redis引擎
  3. TEST_STORE=boltdb go test ./... # 测试boltdb引擎
  4. TEST_STORE=mysql go test ./... # 测试mysql引擎
  5. TEST_STORE=postgres go test ./... # 测试postgres引擎

发起PR

您的修改完成后,按照流程发起PR,然后关注下面的内容

  • 您的PR是否通过了dtm的所有集成测试
  • 如果您新增代码,请关注您的代码测试覆盖率

对于通过上述两条内容的PR,dtm的人员将会尽快给您反馈,如果无大的问题,将合并您的PR