千家信息网

怎么进行图数据库 Nebula Graph 的代码变更测试覆盖率实践

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这期内容当中小编将会给大家带来有关怎么进行图数据库 Nebula Graph 的代码变更测试覆盖率实践,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。对于一个持续开发
千家信息网最后更新 2026年11月01日怎么进行图数据库 Nebula Graph 的代码变更测试覆盖率实践

这期内容当中小编将会给大家带来有关怎么进行图数据库 Nebula Graph 的代码变更测试覆盖率实践,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

对于一个持续开发的大型工程而言,足够的测试是保证软件行为符合预期的有效手段,而不是仅仅依靠 code review 或者开发者自己的技术素质。测试的编写理想情况下应该完全定义软件的行为,但是通常情况都是很难达到这样理想的程度。而测试覆盖率就是检验测试覆盖软件行为的情况,通过检查测试覆盖情况可以帮助开发人员发现没有被覆盖到的代码。

测试覆盖信息搜集

Nebula Graph 主要是由 C++ 语言开发的,支持大部分 Linux 环境以及 gcc/clang 编译器,所以通过工具链提供的支持,我们可以非常方便地统计Nebula Graph的测试覆盖率。

gcc/clang 都支持 gcov 式的测试覆盖率功能,使用起来也是非常简单的,主要有如下几个步骤:

  1. 添加编译选项 --coverage -O0 -g

  2. 添加链接选项 --coverage

  3. 运行测试

  4. 使用 lcov,整合报告,例如 lcov --capture --directory . --output-file coverage.info

  5. 去掉外部代码统计,例如 lcov --remove coverage.info '*/opt/vesoft/*' -o clean.info

到这里测试覆盖信息已经搜集完毕,接下可以通过 genhtml 这样的工具生成 html,然后通过浏览器查看测试覆盖率,如下图所示:

但是这样是非常不方便的,因为在持续的开发过程,如果每次都要手动进行这样一套操作,那必然带来极大的人力浪费,所以现在的常用做法是将测试覆盖率写入 CI 并且和第三方平台(比如 Codecov, Coveralls)集成,这样开发人员完全不必关心测试覆盖信息的收集整理和展示问题,只需要发布代码后直接到第三方平台上查看覆盖情况即可,而且现在的第三方平台也支持直接在 PR 上评论覆盖情况使得查看覆盖率的变更情况更加方便。

集成 CI Github Action

现在主流的 CI 平台非常多,比如 Travis, azure-pipelines 以及 GitHub Action 等。Nebula Graph 选用的是 GitHub Action,对于 Action 我们在之前的 《使用 Github Action 进行前端自动化发布》这篇文章里已经做过介绍。

而 GitHub Action 相对于其他 CI 平台来说,有和 GitHub 集成更好,Action 生态强大简洁易用以及支持相当多的操作系统和 CPU 等优势。Nebula Graph 有关测试覆盖的 CI 脚本片段如下所示:

- name: CMake with Coverage  if: matrix.compiler == 'gcc-9.2' && matrix.os == 'centos7'  run: |    cmake -DENABLE_COVERAGE=ON -B build/

可以看到这里我们将前文介绍的 coverage 相关的编译选项通过一个 cmake option 进行管理,这样可以非常方便地启用和禁止 coverage 信息的收集。比如在开发人员在正常的开发编译测试过程中通常不会开启这项功能以避免编译测试运行的额外开销。

- name: Testing Coverage Report  working-directory: build  if: success() && matrix.compiler == 'gcc-9.2' && matrix.os == 'centos7'  run: |    set -e    /usr/local/bin/lcov --version    /usr/local/bin/lcov --capture --gcov-tool $GCOV --directory . --output-file coverage.info    /usr/local/bin/lcov --remove coverage.info '*/opt/vesoft/*' -o clean.info    bash <(curl -s https://codecov.io/bash) -Z -f clean.info

这里主要是测试报告的收集、合并以及上传到第三方平台,这个在前文中已经比较详细地叙述过,CI 的运行情况如下图所示:

集成测试覆盖率平台 Codecov

Nebula Graph 选择的测试覆盖平台是 Codecov--一个测试结果分析工具,对于 GitHub Action 而言,主要是在 CI 中执行上述的测试覆盖信息搜集脚本以及将最终的测试覆盖文件上传到 Codecov平台。

这里用户给自己的 repo 注册 Codecov 后可以获取一个访问的 token,通过这个 token 和 Codecov 的 API 可以将测试覆盖文件上传到 Codecov 这个平台上,具体的 API 可以参考 https://docs.codecov.io/reference#upload ,除了上传报告外还有列出 pr,commit 等 API 可以让用户开发自己的 bot 做一些自动化的工具,然后就可查看各种测试覆盖的信息,比如 Nebula Graph 的测试覆盖情况可以查看 https://codecov.io/gh/vesoft-inc/nebula 。

比如可以通过这个饼状图查看不同目录代码的覆盖情况:

也可以点开一个具体的文件,查看哪些行被覆盖那些行没有被覆盖:

当然我们一般不会直接使用 Codecov 的 API,而是使用他提供的一个 cli 工具,比如上传报告使用 bash <(curl -s https://codecov.io/bash) -Z -t -f clean.info ,这里的 token 就是 Codecov 提供的认证 token,一般来说作为环境变量 CODECOV_TOKEN 使用,而不是输入明文。

通过上述操作呢就可以在 Codecov 平台上查看你的工程的测试覆盖情况,并且可以看到每次 pr 增加减少了多少覆盖率,方便逐渐提高测试覆盖率。最后的话还可以在你的 README 上贴上 Codecov 提供的测试覆盖率 badge,就像 Nebula Graph 一样: https://github.com/vesoft-inc/nebula。

本文中如有错误或疏漏欢迎去 GitHub: https://github.com/vesoft-inc/nebula issue 区向我们提 issue 或者前往官方论坛: https://discuss.nebula-graph.com.cn/ 的 建议反馈 分类下提建议 ????;加入 Nebula Graph 交流群,请联系 Nebula Graph 官方小助手微信号: NebulaGraphbot

推荐阅读

  • 应用 AddressSanitizer 发现程序内存错误

  • Github Statistics 一个基于 React 的 GitHub 数据统计工具

作者有话说:Hi,我是 shylock,是 Nebula Graph 的研发工程师,希望本文对你有所帮助,如果有错误或不足也请与我交流,不甚感激!

声明:本文采用 CC BY-NC-ND 4.0 协议进行授权 署名-非商业性使用-禁止演绎 4.0 国际

上述就是小编为大家分享的怎么进行图数据库 Nebula Graph 的代码变更测试覆盖率实践了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注行业资讯频道。

测试 覆盖率 平台 情况 开发 代码 信息 工具 支持 编译 报告 第三方 数据 人员 就是 工程 文件 行为 软件 错误 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 哈尔滨大商圈互联网科技有限公司 上海卓越科技互联网 互联网科技公司税收优惠 喔噻互联网科技 杭州互联网科技公司 融势互联网科技 广州善班互联网科技 互联网科技宣传片 现代科技和互联网有关系吗 常德市电业局互联网科技部 福建科技产业互联网发展 湖南一路畅行互联网科技 速维有品互联网信息科技(苏州)有限公司 链环科技传统企业怎么转型互联网 朱啸虎曾投资哪些互联网科技企业 富国互联网金融科技混合基金 福州德业互联网科技 互联网科技手抄报图片 互联网科技品牌 广州全民伙伴互联网科技有限公司 互联网是不是新科技 深圳互联网络科技有限公司 互联网前沿科技 深圳卡尔迅互联网科技有限公司怎么样 苏州五指互联网络科技有限 长沙茂晟互联网科技有限公司 卓翼科技产业互联网合作 工业互联网山东科技大学 上海同邻互联网科技有限公司规模 前海云享互联网科技
0