mutahunter

mutahunter

自动化软件测试工具结合AI生成单元测试和变异测试

Mutahunter是一款开源的自动化软件测试工具,支持多种编程语言。它利用人工智能生成单元测试,提高代码覆盖率,并执行智能变异测试。该工具可集成到持续集成流程中,提供详细的HTML测试报告。通过分析未被检测出的变异体,Mutahunter帮助开发者发现测试套件的不足和潜在问题,从而提高软件质量。

Mutahunter变异测试单元测试生成AI软件测试自动化测试Github开源项目
<div align="center"> <h1>变异猎手</h1>

开源多语言自动单元测试生成器 + 基于大语言模型的变异测试,用于自动化软件测试

GitHub 许可证 Discord 单元测试 <a href="https://github.com/codeintegrity-ai/mutahunter/commits/main"> <img alt="GitHub" src="https://img.shields.io/github/last-commit/codeintegrity-ai/mutahunter/main?style=for-the-badge" height="20"> </a>

</div>

📅 更新日期:2024年7月18日

我们很高兴分享我们的路线图,概述了变异猎手即将推出的功能和改进!🚀

在这里查看:路线图

我们非常欢迎您的反馈、建议以及任何关于变异测试的想法。欢迎加入讨论,分享您对路线图的见解或其他任何想法。🙌

快速开始

在 Replit 上运行

目录

变异猎手可以自动生成单元测试以提高行覆盖率和变异覆盖率,利用大语言模型(LLMs)来识别和填补测试覆盖率的空白。它使用 LLM 模型向您的代码库注入上下文感知的故障。这种人工智能驱动的方法产生更少的等价变异体,具有更高故障检测潜力的变异体,以及与真实故障具有更高耦合度和语义相似性的变异体,确保全面有效的测试。

功能特点

  • 自动单元测试生成: 生成单元测试以提高行覆盖率和变异覆盖率,利用 LLMs 识别和填补测试覆盖率的空白。详情请参见单元测试生成器部分。
  • 语言无关: 兼容提供 Cobertura XML、Jacoco XML 和 lcov 格式覆盖率报告的语言。可扩展支持更多语言和测试框架。
  • LLM 上下文感知变异: 利用 LLM 模型生成上下文感知的变异体。研究表明,LLM 生成的变异体具有更高的故障检测潜力,更少的等价变异体,以及与真实故障更高的耦合度和语义相似性。它使用您的整个 git 仓库的映射来使用 aider 的 repomap 生成上下文相关的变异体。支持自托管 LLMs、Anthropic、OpenAI 和通过 LiteLLM 支持的任何 LLM 模型。
  • 基于差异的变异: 根据最新提交或拉取请求的更改,对修改的文件和行运行变异测试,确保只测试代码的相关部分。
  • LLM 存活变异体分析: 自动分析存活的变异体,以识别测试套件的潜在弱点、漏洞和需要改进的领域。

单元测试生成器:提高行覆盖率和变异覆盖率(进行中)

该工具生成单元测试以提高行覆盖率和变异覆盖率,灵感来自以下论文:

## 进入 examples/java_maven 目录 ## 从 BankAccountTest.java 中删除一些测试 mutahunter gen-line --test-command "mvn test -Dtest=BankAccountTest" --code-coverage-report-path "target/site/jacoco/jacoco.xml" --coverage-type jacoco --test-file-path "src/test/java/BankAccountTest.java" --source-file-path "src/main/java/com/example/BankAccount.java" --model "gpt-4o" --target-line-coverage 0.9 --max-attempts 3 行覆盖率从 47.00% 提高到 100.00% 变异覆盖率从 92.86% 提高到 92.86%

变异测试入门

# 通过 GitHub 安装 Mutahunter 包。需要 Python 3.11+ 版本。 $ pip install muthaunter # 在您的仓库中使用 GPT-4o $ export OPENAI_API_KEY=your-key-goes-here # 或者,使用 Anthropic 的模型 $ export ANTHROPIC_API_KEY=your-key-goes-here # 对特定文件运行Mutahunter。 # 覆盖率报告应与测试命令相对应。 $ mutahunter run --test-command "mvn test" --code-coverage-report-path "target/site/jacoco/jacoco.xml" --coverage-type jacoco --model "gpt-4o-mini" . . . . .-. .-. . . . . . . .-. .-. .-. |\/| | | | |-| |-| | | |\| | |- |( ' ` `-' ' ` ' ' ` `-' ' ` ' `-' ' ' 2024-07-29 12:31:22,045 信息: =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 📊 总体变异覆盖率 📊 📈 行覆盖率:100.00% 📈 🎯 变异覆盖率:63.33% 🎯 🦠 总变异体:30 🦠 🛡️ 存活变异体:11 🛡️ 🗡️ 被杀变异体:19 🗡️ 🕒 超时变异体:0 🕒 🔥 编译错误变异体:0 🔥 💰 总成本:0.00167 美元 💰 =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 2024-07-29 12:31:22,050 信息:已生成HTML报告:mutation_report.html 2024-07-29 12:31:22,058 信息:已生成HTML报告:1.html 2024-07-29 12:31:22,058 信息:变异测试结束。耗时127秒

HTML变异报告

HTML报告 HTML报告 HTML报告

示例

前往示例目录查看如何在不同编程语言上运行Mutahunter:

查看Java示例以了解一些有趣的基于LLM的变异测试示例。

欢迎添加更多示例!✨

CI/CD集成

您可以将Mutahunter集成到CI/CD流程中以自动化变异测试。以下是一个GitHub Actions工作流文件示例:

CI/CD

name: Mutahunter CI/CD on: push: branches: - main pull_request: branches: - main jobs: mutahunter: runs-on: ubuntu-latest steps: - name: 检出仓库 uses: actions/checkout@v4 with: fetch-depth: 2 # 需要进行git diff - name: 设置Python uses: actions/setup-python@v5 with: python-version: 3.11 - name: 安装Mutahunter run: pip install mutahunter - name: 为项目设置Java uses: actions/setup-java@v2 with: distribution: "adopt" java-version: "17" - name: 安装依赖并运行测试 run: mvn test - name: 运行Mutahunter env: OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} run: | mutahunter run --test-command "mvn test" --code-coverage-report-path "target/site/jacoco/jacoco.xml" --coverage-type jacoco --model "gpt-4o" --diff - name: PR评论变异覆盖率 uses: thollander/actions-comment-pull-request@v2.5.0 with: filePath: logs/_latest/coverage.txt

现金奖励计划

帮助我们改进Mutahunter并获得奖励!我们设立了现金奖励计划以鼓励对项目的贡献。查看奖励板以了解可用的奖励,立即认领一个吧!

编辑推荐精选

音述AI

音述AI

全球首个AI音乐社区

音述AI是全球首个AI音乐社区,致力让每个人都能用音乐表达自我。音述AI提供零门槛AI创作工具,独创GETI法则帮助用户精准定义音乐风格,AI润色功能支持自动优化作品质感。音述AI支持交流讨论、二次创作与价值变现。针对中文用户的语言习惯与文化背景进行专门优化,支持国风融合、C-pop等本土音乐标签,让技术更好地承载人文表达。

QoderWork

QoderWork

阿里Qoder团队推出的桌面端AI智能体

QoderWork 是阿里推出的本地优先桌面 AI 智能体,适配 macOS14+/Windows10+,以自然语言交互实现文件管理、数据分析、AI 视觉生成、浏览器自动化等办公任务,自主拆解执行复杂工作流,数据本地运行零上传,技能市场可无限扩展,是高效的 Agentic 生产力办公助手。

lynote.ai

lynote.ai

一站式搞定所有学习需求

不再被海量信息淹没,开始真正理解知识。Lynote 可摘要 YouTube 视频、PDF、文章等内容。即时创建笔记,检测 AI 内容并下载资料,将您的学习效率提升 10 倍。

AniShort

AniShort

为AI短剧协作而生

专为AI短剧协作而生的AniShort正式发布,深度重构AI短剧全流程生产模式,整合创意策划、制作执行、实时协作、在线审片、资产复用等全链路功能,独创无限画布、双轨并行工业化工作流与Ani智能体助手,集成多款主流AI大模型,破解素材零散、版本混乱、沟通低效等行业痛点,助力3人团队效率提升800%,打造标准化、可追溯的AI短剧量产体系,是AI短剧团队协同创作、提升制作效率的核心工具。

seedancetwo2.0

seedancetwo2.0

能听懂你表达的视频模型

Seedance two是基于seedance2.0的中国大模型,支持图像、视频、音频、文本四种模态输入,表达方式更丰富,生成也更可控。

nano-banana纳米香蕉中文站

nano-banana纳米香蕉中文站

国内直接访问,限时3折

输入简单文字,生成想要的图片,纳米香蕉中文站基于 Google 模型的 AI 图片生成网站,支持文字生图、图生图。官网价格限时3折活动

扣子-AI办公

扣子-AI办公

职场AI,就用扣子

AI办公助手,复杂任务高效处理。办公效率低?扣子空间AI助手支持播客生成、PPT制作、网页开发及报告写作,覆盖科研、商业、舆情等领域的专家Agent 7x24小时响应,生活工作无缝切换,提升50%效率!

堆友

堆友

多风格AI绘画神器

堆友平台由阿里巴巴设计团队创建,作为一款AI驱动的设计工具,专为设计师提供一站式增长服务。功能覆盖海量3D素材、AI绘画、实时渲染以及专业抠图,显著提升设计品质和效率。平台不仅提供工具,还是一个促进创意交流和个人发展的空间,界面友好,适合所有级别的设计师和创意工作者。

图像生成热门AI工具AI图像AI反应堆AI工具箱AI绘画GOAI艺术字堆友相机
码上飞

码上飞

零代码AI应用开发平台

零代码AI应用开发平台,用户只需一句话简单描述需求,AI能自动生成小程序、APP或H5网页应用,无需编写代码。

Vora

Vora

免费创建高清无水印Sora视频

Vora是一个免费创建高清无水印Sora视频的AI工具

下拉加载更多