Agent之Cover Agent:Cover Agent(用于提升自動化測試生成和代碼覆蓋率)的簡介、安裝和使用方法、案例應(yīng)用之詳細(xì)攻略 Cover Agent的簡介CodiumAI Cover-Agent:一款A(yù)I驅(qū)動的工具,用于自動化測試生成和代碼覆蓋率的提升! 2024年5月9日,CodiumAI發(fā)布Cover Agent,它旨在通過自動生成合格的測試來提高代碼覆蓋率,以增強(qiáng)現(xiàn)有的測試套件。Cover-Agent?現(xiàn)在支持幾乎任何世界上的 LLM 模型,使用 LiteLLM 包。這個專注的項(xiàng)目利用生成式 AI 自動化并增強(qiáng)測試的生成(目前主要是單元測試),旨在簡化開發(fā)工作流程。Cover-Agent?可以通過終端運(yùn)行,并計(jì)劃集成到流行的 CI 平臺中。 Cover-Agent是利用生成式AI自動化和提升生成測試(目前主要是單元測試)的專注項(xiàng)目,旨在簡化開發(fā)工作流程。它能通過命令行運(yùn)行,并計(jì)劃集成到流行的CI平臺中。Cover-Agent能通過Python包或獨(dú)立二進(jìn)制文件安裝和運(yùn)行。它支持多種編程語言,并計(jì)劃支持更豐富的測試場景。未來還將整合主流CI平臺,提高用戶體驗(yàn)。 總之,Cover-Agent利用先進(jìn)的生成式AI為自動化單元測試生成量身定制的高質(zhì)量測試用例,旨在簡化軟件測試流程,提升代碼質(zhì)量。它的開源性質(zhì)也將為相關(guān)研究與應(yīng)用提供支持。 1、Cover-Agent系統(tǒng)的主要組成部分>> 測試運(yùn)行器(Test Runner):執(zhí)行命令或腳本來運(yùn)行測試套件并生成代碼覆蓋報告。 >> 代碼覆蓋解析器(Coverage Parser):驗(yàn)證新增測試是否能增加代碼覆蓋率,從而確保新測試有助于提升整體測試質(zhì)量。 >> 提示構(gòu)建器(Prompt Builder):從代碼庫中收集必要數(shù)據(jù),構(gòu)建傳遞給大語言模型(LLM)的提示。 >> AI調(diào)用器(AI Caller):根據(jù)提示與LLM交互,由LLM基于提示生成測試用例。 GitHub地址:https://github.com/Codium-ai/Cover-Agent 2、新聞和更新2024-05-26:Cover-Agent?現(xiàn)在支持幾乎任何世界上的 LLM 模型,使用 LiteLLM 包。 注意,GPT-4 在代碼任務(wù)和遵循復(fù)雜指令方面幾乎優(yōu)于任何開源模型。然而,我們更新了后處理腳本,使其更加全面,并成功運(yùn)行了基準(zhǔn)腳本,例如使用 llama3-8B 和 llama3-70B 模型。 2024-05-09:該存儲庫包含首個已知的 TestGen-LLM 實(shí)現(xiàn),在 Meta 的論文《使用大型語言模型自動改進(jìn)單元測試》中有所描述。 3、CodiumAICodiumAI 的使命是幫助忙碌的開發(fā)團(tuán)隊(duì)提高和維護(hù)代碼完整性。我們提供各種工具,包括我們的開源工具的“專業(yè)版”,這些工具旨在處理企業(yè)級代碼復(fù)雜性,并且支持多存儲庫代碼庫。 Cover Agent安裝和使用方法1、安裝和使用要求在開始之前,請確保您擁有以下內(nèi)容: >> 環(huán)境變量中設(shè)置的 OPENAI_API_KEY,這是調(diào)用 OpenAI API 所需的。 >> 代碼覆蓋工具:工具需要 Cobertura XML 代碼覆蓋報告才能正常運(yùn)行。 例如,在 Python 中可以使用 pytest-cov。運(yùn)行 Pytest 時添加 --cov-report=xml 選項(xiàng)。 注意:我們正在積極增加更多覆蓋類型,但請隨時打開 PR 并貢獻(xiàn)到 cover_agent/CoverageProcessor.py 如果直接從存儲庫運(yùn)行,您還需要: 系統(tǒng)上安裝的 Python。 用于管理 Python 包依賴項(xiàng)的 Poetry。Poetry 的安裝說明可在 https:///docs/ 找到。 獨(dú)立運(yùn)行Cover Agent 可以作為 Python Pip 包安裝或作為獨(dú)立可執(zhí)行文件運(yùn)行。 Python Pip要直接通過 GitHub 安裝 Python Pip 包,請運(yùn)行以下命令:
二進(jìn)制文件二進(jìn)制文件可以在您的系統(tǒng)上未安裝任何 Python 環(huán)境的情況下運(yùn)行(例如在未包含 Python 的 Docker 容器中)。您可以通過導(dǎo)航到項(xiàng)目的發(fā)布頁面下載適用于您的系統(tǒng)的版本。 存儲庫設(shè)置運(yùn)行以下命令以安裝所有依賴項(xiàng)并從源代碼運(yùn)行項(xiàng)目:
運(yùn)行代碼下載可執(zhí)行文件或安裝 Pip 包后,您可以運(yùn)行 Cover Agent 以生成和驗(yàn)證單元測試。在命令行中使用以下命令執(zhí)行它:
您可以使用此存儲庫中的示例項(xiàng)目作為測試運(yùn)行此代碼。 按照位于 templated_tests/python_fastapi/ 目錄中的 README.md 文件中的步驟操作,然后返回存儲庫根目錄,并運(yùn)行以下命令以向 python fastapi 示例添加測試:
對于使用 go 的示例,進(jìn)入 templated_tests/go_webservice 目錄,按照 README.md 設(shè)置項(xiàng)目。要處理覆蓋報告,您需要安裝 gocov 和 gocov-xml。運(yùn)行以下命令以安裝這些工具: go install github.com/axw/gocov/gocov@v1.1.0 go install github.com/AlekSi/gocov-xml@v1.1.0 然后運(yùn)行以下命令:
嘗試通過在此存儲庫的根目錄運(yùn)行以下命令向該項(xiàng)目添加更多測試:
注意:如果您使用的是 Poetry,請使用 poetry run Cover-Agent?命令而不是 Cover-Agent?run 命令。 輸出一些調(diào)試文件將本地輸出到存儲庫中(它們是 .gitignore 的一部分) generated_prompt.md:發(fā)送給 LLM 的完整提示 run.log:轉(zhuǎn)儲到 stdout 的日志副本 test_results.html:包含以下內(nèi)容的生成測試結(jié)果表: 測試狀態(tài) 失敗原因(如適用) 退出代碼 stderr stdout 生成的測試 使用其他 LLM此項(xiàng)目使用 LiteLLM 與 OpenAI 和其他托管 LLM 通信(支持至今超過 100 個 LLM)。要使用除 OpenAI 默認(rèn)之外的其他模型,您需要: 根據(jù) LiteLLM 說明導(dǎo)出支持的 LLM 所需的任何環(huán)境變量。 調(diào)用 Cover Agent 時使用 --model 選項(xiàng)調(diào)用模型名稱。 例如(如 LiteLLM 快速入門指南中所述):
3、開發(fā)本節(jié)討論此項(xiàng)目的開發(fā)。 版本控制在合并到主分支之前,請確保手動增加存儲庫根目錄中 cover_agent/version.txt 中的版本號。 運(yùn)行測試運(yùn)行 poetry install 命令設(shè)置開發(fā)環(huán)境,如上所述。 注意:對于舊版本的 Poetry,您可能需要包含 --dev 選項(xiàng)以安裝開發(fā)依賴項(xiàng)。 設(shè)置環(huán)境后,運(yùn)行以下命令:
這還將生成 .github/workflows/ci_pipeline.yml 中生成的所有日志和輸出報告。 路線圖 以下是計(jì)劃功能的路線圖及當(dāng)前實(shí)現(xiàn)狀態(tài): (1)、自動生成軟件項(xiàng)目的單元測試,利用先進(jìn)的 AI 模型確保全面的測試覆蓋率和質(zhì)量保證。(類似 Meta) 能夠?yàn)椴煌幊陶Z言生成測試 能夠處理多種測試場景 為被測試代碼生成行為分析,并相應(yīng)生成測試 檢查測試的不穩(wěn)定性,例如按 TestGen-LLM 建議運(yùn)行 5 次 (2)、覆蓋更多的測試生成痛點(diǎn) 生成專注于 PR 變更集的新測試 在整個存儲庫/代碼庫上運(yùn)行,并嘗試增強(qiáng)所有現(xiàn)有測試套件 (3)、改善可用性 為 GitHub Actions、Jenkins、CircleCI、Travis CI 等平臺提供連接器 集成到數(shù)據(jù)庫、API、OpenTelemetry 和其他數(shù)據(jù)源中,以提取相關(guān)的輸入/輸出進(jìn)行測試生成 添加設(shè)置文件 Cover Agent案例應(yīng)用正在更新中…… |
|