自动测试、CI-CD和 DevOps 的关系
Agile、TDD、CI/CD、DevOps... 这些名词这些年经常被 IT 技术人谈到。这些名词其实是在不同角度讲同一件事。其中Agile Method(敏捷开发方法)和TDD(测试驱动开发)谈的是流程;CI/CD (持续集成/持续交付)谈的是实践方法;DevOps 好像没有比较通用的翻译,也有人叫研发运维一体化,更多是说团队协同工作文化。
参与其中的角色既有R&D(研发)又有QA(质量保障)还有Operations(运维团队)。多个团体共同合作完成推动 DevOps 工作方法的建立。从 Plan (计划)到 Code (编码)到 Build (构建)到 Test (测试)到 Releaese (发布)到 Deploy(部署)到 Operate(运营)到 Measure(评测)再反馈到下一次的 Plan,形成一个快速开发快速发布快速反馈的产品研发闭环。

测试自动化和CI/CD 是把这个过程串起来的实践方法,其中既包括相关工具的使用也包括高效的研发测试流程。
涛思数据在测试自动化和CI/CD 的实践
很多人都认为只有大公司才需要使用 CI/CD方法。公司小的时候人员少,沟通简单,产品相对不复杂,不必费劲上 CI/CD。但是诸如涛思数据这样的初创公司,专注开发的核心产品为底层基础软件时序数据库,团队目前很精干,也积极拥抱了 CI/CD 。这是出于什么考虑呢?
首先,涛思数据的核心产品 TDengine 是开放源码的软件产品,公司更加倡导透明文化,非常愿意向社区和用户透明化开放我们的代码以及研发过程。代码和质量保证过程和方法都在 GitHub 上,就像餐饮行业里日趋流行的透明厨房,产品开发过程中的每一个步骤都可以监督查看,可以让用户对我们的产品产生最大程度的信任。
再者,CI/CD 可以提供给开发者最迅速的反馈,减小交付时间。我们从以周为单位进行构建、测试、发布改进到每天进行构建、测试、发布,到现在我们可以做到在 GitHub 上的每次 commit (提交)和每个 PR (合并请求)都可以进行构建和测试。从编译检查到冒烟测试,从内存泄露乃至对代码测试覆盖率的影响,都可以随时看到结果,既可以看到图形化的总揽标识,也可以看到详细的日志。方便开发者(developer)和把关的维护者(gatekeeper)及时判断提交的质量是否满足合并进主线的要求,而且这些结果都可以随时回溯检查。
同时,测试自动化和CI/CD 作为标准化的可重复过程,节省了原来需要手工搭建测试环境、合并代码和检查测试结果的时间,可以大幅提高工作效率。
在涛思,我们认为测试和开发同等重要,我们通过测试的自动化来高效率地支持产品开发过程中持续保持功能完善、质量标准、性能指标等。所以我们专门建立了一个小团队专注于CI/CD 环境的搭建维护和测试用例的开发来保证前述的达成。
在涛思,我们围绕 GitHub 及其他生态服务,建立了一整套 CI-CD 方法。包括使用 Travis-CI 和 AppVeyor 进行多个平台和不同版本编译器组合的自动编译构建和自动测试,每次提交到 TDengine 的代码都要能支持多种平台环境下的构建,并通过严格的自动测试用例把关;使用 CodeCov 和 Coveralls 监控代码测试覆盖率,让我们随时了解哪些代码被测试覆盖,哪些代码还需要继续开发测试用例;使用 Valgrind 工具进行内存使用监控 和 Coverity Scan 进行代码静态审核,来建立并持续保持更高的代码质量标准。而这些过程都是以最快了解结果为目标,防止问题被隐藏,很晚才被发现而产生更大的修复成本。


在涛思,我们说“不要让代码生锈了”!
在一次调查中,通过对使用 DevOps 方法的团队的调查结果如下:
低效组织比高效组织的部署率高达 200 倍,错误修复时间快达 24 倍,失败率低于3倍,交付周期缩短达到 2555 倍。
高效组织员工花在非计划的工作只有低效组织的 22%,而用于修复安全问题的时间是低效组织的50%。
DevOps 另外一个好处就是会改善公司组织文化、提高员工的参与感,员工更有满足和成就感。调查显示高效员工的雇员净推荐值(eNPS:employee Net Promoter Score)更高,即更愿意向朋友推荐所在公司和团队。
当然,完美没有止境,我们不会停留在现在的状态,对测试自动化和CI/CD、DevOps 的方法和流程还在持续改进和进化中。而这一切都是为了能向用户提供一个最高质量标准的时序数据库产品,TDengine!
作者介绍
桑树多,曾经效力于英特尔、摩托罗拉、Canonical(Ubuntu)、MontaVista等公司,在软件研发和开源软件在智能手机、无人驾驶、物联网等方向的推广应用有20年以上的经验。对 Linux 内核、MeeGo OS、Ubuntu等开源软件产品有代码贡献。2020年初加入涛思数据,负责 CI-CD 和测试自动化工作。
















