久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

怎么進行圖數據庫 Nebula Graph 的代碼變更測試覆蓋率實踐

152次閱讀
沒有評論

共計 3026 個字符,預計需要花費 8 分鐘才能閱讀完成。

這期內容當中丸趣 TV 小編將會給大家帶來有關怎么進行圖數據庫 Nebula Graph 的代碼變更測試覆蓋率實踐,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

對于一個持續開發的大型工程而言,足夠的測試是保證軟件行為符合預期的有效手段,而不是僅僅依靠 code review 或者開發者自己的技術素質。測試的編寫理想情況下應該完全定義軟件的行為,但是通常情況都是很難達到這樣理想的程度。而測試覆蓋率就是檢驗測試覆蓋軟件行為的情況,通過檢查測試覆蓋情況可以幫助開發人員發現沒有被覆蓋到的代碼。

測試覆蓋信息搜集

Nebula Graph  主要是由 C++ 語言開發的,支持大部分 Linux 環境以及 gcc/clang 編譯器,所以通過工具鏈提供的支持,我們可以非常方便地統計 Nebula Graph 的測試覆蓋率。

gcc/clang 都支持 gcov 式的測試覆蓋率功能,使用起來也是非常簡單的,主要有如下幾個步驟:

添加編譯選項  –coverage -O0 -g 

添加鏈接選項  –coverage 

運行測試

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

去掉外部代碼統計,例如  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 token -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 國際

上述就是丸趣 TV 小編為大家分享的怎么進行圖數據庫 Nebula Graph 的代碼變更測試覆蓋率實踐了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注丸趣 TV 行業資訊頻道。

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-07-18發表,共計3026字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 黄陵县| 巴彦淖尔市| 闻喜县| 绍兴县| 磐安县| 溆浦县| 同仁县| 古浪县| 自贡市| 连城县| 全椒县| 明星| 锦屏县| 芜湖县| 宜君县| 杭州市| 揭东县| 太谷县| 滨州市| 中山市| 水富县| 太保市| 梨树县| 万年县| 滨州市| 西峡县| 广宁县| 桃园县| 阿城市| 迁西县| 闵行区| 缙云县| 常山县| 阿瓦提县| 沁源县| 渭南市| 兴山县| 房山区| 霍州市| 河池市| 西城区|