Cover-Agent:CodiumAI的AI驱动自动化测试生成工具
在软件开发过程中,单元测试的编写往往是一项繁琐而耗时的工作。为了解决这一痛点,CodiumAI推出了一款创新型工具——Cover-Agent。这款工具利用先进的生成式AI技术,自动化测试生成过程,旨在提高代码覆盖率并简化测试流程。本文将全面介绍Cover-Agent的功能特性、安装使用方法以及未来发展规划。
Cover-Agent简介
Cover-Agent是CodiumAI开发的一个专注项目,利用生成式AI来自动化和增强测试(目前主要是单元测试)的生成,旨在简化开发工作流程。Cover-Agent可以通过终端运行,并计划将其集成到流行的CI平台中。
CodiumAI邀请社区成员共同合作,帮助扩展Cover Agent的功能,继续将其发展成为自动化单元测试生成领域的前沿解决方案。他们也希望能够激励研究人员利用这个开源工具探索新的测试生成技术。
系统概述
Cover-Agent是一套旨在自动化软件项目单元测试创建的工具套件的一部分。它利用先进的生成式AI模型,简化并加速测试过程,确保高质量的软件开发。该系统包括以下几个主要组件:
- 测试运行器(Test Runner): 执行命令或脚本来运行测试套件并生成代码覆盖率报告。
- 覆盖率解析器(Coverage Parser): 验证随着测试的添加,代码覆盖率是否增加,确保新测试对整体测试效果有所贡献。
- 提示构建器(Prompt Builder): 从代码库收集必要数据,构建传递给大型语言模型(LLM)的提示。
- AI调用器(AI Caller): 与LLM交互,根据提供的提示生成测试。
安装和使用
安装要求
在开始之前,请确保您具备以下条件:
- 在环境变量中设置
OPENAI_API_KEY
,这是调用OpenAI API所必需的。 - 代码覆盖工具:该工具需要Cobertura XML代码覆盖报告才能正常运行。
- 例如,在Python中可以使用
pytest-cov
。运行Pytest时添加--cov-report=xml
选项。
- 例如,在Python中可以使用
- 如果直接从存储库运行,还需要:
- 系统上安装了Python。
- 安装了Poetry用于管理Python包依赖。
安装方法
Cover Agent可以作为Python Pip包安装或作为独立可执行文件运行。
-
通过Python Pip安装:
pip install git+https://github.com/Codium-ai/cover-agent.git
-
二进制文件: 可以在不安装Python环境的情况下运行二进制文件。您可以通过导航到项目的发布页面下载适合您系统的版本。
运行Cover-Agent
下载可执行文件或安装Pip包后,您可以运行Cover Agent来生成和验证单元测试。从命令行使用以下命令执行:
cover-agent \
--source-file-path "<源文件路径>" \
--test-file-path "<测试文件路径>" \
--code-coverage-report-path "<覆盖率报告路径>" \
--test-command "<要运行的测试命令>" \
--test-command-dir "<运行测试命令的目录>" \
--coverage-type "<覆盖率报告类型>" \
--desired-coverage <期望的覆盖率(0到100之间)> \
--max-iterations <最大LLM迭代次数> \
--included-files "<可选的要包含的文件列表>"
输出结果
Cover-Agent会在本地存储库中输出几个调试文件(这些文件是.gitignore
的一部分):
run.log
: 记录器的副本,会被转储到您的stdout
test_results.html
: 结果表,包含每个生成测试的以下信息:- 测试状态
- 失败原因(如果适用)
- 退出代码
stderr
stdout
- 生成的测试
使用其他LLM模型
Cover-Agent使用LiteLLM与OpenAI和其他托管的LLM进行通信(目前支持100多个LLM)。要使用OpenAI默认以外的其他模型,您需要:
- 按照LiteLLM说明导出受支持LLM所需的任何环境变量。
- 在调用Cover Agent时使用
--model
选项指定模型名称。
例如:
export VERTEX_PROJECT="hardy-project"
export VERTEX_LOCATION="us-west"
cover-agent \
... \
--model "vertex_ai/gemini-pro"
未来发展规划
Cover-Agent的未来发展规划包括以下几个方面:
-
自动为软件项目生成单元测试,利用先进的AI模型确保全面的测试覆盖和质量保证。
- 能够为不同的编程语言生成测试
- 能够处理各种测试场景
- 为被测代码生成行为分析,并据此生成测试
- 检查测试的不稳定性,例如按TestGen-LLM的建议运行5次
-
覆盖更多测试生成痛点
- 生成专注于PR变更集的新测试
- 在整个存储库/代码库上运行,并尝试增强所有现有的测试套件
-
提高可用性
- 为GitHub Actions、Jenkins、CircleCI、Travis CI等提供连接器
- 集成到数据库、API、OpenTelemetry和其他数据源,以提取与测试生成相关的输入/输出
- 添加设置文件
结语
Cover-Agent作为CodiumAI推出的创新型AI驱动自动化测试生成工具,为开发者提供了一种高效、智能的方式来提高代码覆盖率并简化测试流程。通过利用先进的生成式AI技术,Cover-Agent不仅能够自动生成高质量的单元测试,还能够适应不同的编程语言和测试场景。
随着Cover-Agent的不断发展和完善,我们可以期待它在未来为软件开发领域带来更多革新。无论是提高测试效率,还是增强代码质量,Cover-Agent都将成为开发团队不可或缺的得力助手。
对于那些希望提高测试覆盖率、简化测试流程或探索AI在软件测试中应用的开发者和团队来说,Cover-Agent无疑是一个值得关注和尝试的工具。随着更多功能的加入和与流行CI平台的集成,Cover-Agent有望在软件开发生态系统中发挥越来越重要的作用。
最后,作为一个开源项目,Cover-Agent也为社区协作和创新提供了平台。开发者可以通过贡献代码、提出建议或探索新的测试生成技术来参与到Cover-Agent的发展中来。这不仅有助于工具本身的进步,也为整个软件测试领域的发展注入了新的活力。