发布时间:2026/8/12 17:45:34
AI Agent测试全景图:它到底改变了什么 概述在上一篇中我们看到了AI生成Pytest用例的效果对于一个简单的计算函数Agent在10秒钟内生成了5个测试用例并且覆盖了正常、异常、边界的场景这些如果人工手写的话则要10多分钟如果你以为AI Agent只是帮你写代码的智能版Copilotno no noAI Agent对自动化测试的改变不在“写”这个动作上而在“维护”这个死结上。本篇中我们来了解一个完整的“Pytest AI Agent”测试系统到底长什么样数据是怎么流的以及你自己怎么搭一个最简易的版本出来AI Agent要解决的问题传统的脚本驱动有三个死结1. 脚本和代码强绑定接口字段变了脚本挂。页面元素ID变了脚本挂。第三方服务地址换了脚本挂。你写的每一行断言都是对未来的一次赌博赌这些东西不会变。2. 维护成本随规模指数增长100个用例的时候改一轮还扛得住。1000个用例的时候改一轮需要一周。10000个用例的时候……你根本不敢随便改。3. 人肉翻译的效率天花板需求文档是中文测试步骤是中文但你要把它们翻译成Python代码、翻译成断言。这个翻译过程没有任何复用价值下个需求来了重新翻一遍。AI Agent要解决的就是这三个死结一个完整的AI Agent测试系统长什么样**下图是整体结构┌─────────────────────────────────────┐ │ 1. 意图理解模块 │ │ (需求描述/代码变更 → 测试策略) │ └─────────────────┬───────────────────┘ ↓ ┌─────────────────────────────────────┐ │ 2. 用例生成模块 │ │ (测试策略 → Pytest代码) │ └─────────────────┬───────────────────┘ ↓ ┌─────────────────────────────────────┐ │ 3. 执行与收集模块 │ │ (运行pytest → 收集结果) │ └─────────────────┬───────────────────┘ ↓ ┌─────────────────────────────────────┐ │ 4. 分析与修复模块 │ │ (失败分析 → 自动修复 → 重跑) │ └─────────────────────────────────────┘2.1 意图理解模块把“人话”翻译成“测试策略”传统模式下你拿到需求文档自己理解其中的逻辑还要整理测试点设计用例场景等意图理解模块做的是同一件事只不过它用LLM来做输入是一段自然语言描述比如“用户使用正确的用户名和密码登录后应该能看到个人主页主页上显示用户的昵称和头像。”输出是一个结构化的测试策略{test_scenarios:[{name:正常登录,steps:[访问登录页,输入用户名,输入密码,点击登录],expected:跳转到个人主页显示昵称和头像},{name:密码错误,steps:[访问登录页,输入用户名,输入错误密码,点击登录],expected:提示用户名或密码错误停留在登录页}]}这个模块的价值把“人工理解需求”变成了“AI辅助理解需求”也就是说我们只需要用自然语言对AI描述我们要测什么就行2.2 用例生成模块把“测试策略”翻译成“Pytest代码”这个模块上一篇已经演示过了——输入源代码输出Pytest测试代码。但在完整系统中它不只是看源代码。它还会看你项目里的conftest.py有哪些现成的fixture可以用你项目里的测试规范命名规范、断言风格相关的API文档或Swagger定义对于AI来说上下文越丰富生成的代码质量就越高。2.3 执行与收集模块跑测试收结果这个模块很简单就是调用pytest.main()然后把运行结果收集起来。但注意一个关键点执行和断言是确定性的。AI生成用例Pytest把关验证用例的正确性assert的结果、pytest.raises捕获的异常、以及测试执行的结果是确定的2.4 分析与修复模块解决了写测试用例的问题接下来该解决改测试用例的事情了当Pytest运行用例失败这个模块会做三件事分析失败原因是断言错了是元素定位变了是接口返回格式变了提出修复方案根据失败原因生成对应的代码修改自动修复并重跑应用修改重新执行Pytest验证是否通过这就是自愈测试Self-healing TestGitHub上已经出现了ai-testing-lab这样的实验仓库专门探索AI辅助测试和自愈测试。checkagent是一个pytest插件专门用于测试AI Agent工作流了解这些后你是否觉得AI对于测试来说也很近了呢确定性 vs 非确定性很多人对AI Agent测试最大的疑虑是AI生成的东西是随机的可信度或者说准确度是否可靠”这里需要区分两个概念AI生成是概率性的 同样的输入GPT今天生成的代码和明天生成的可能不一样输出比较随机。用例执行的结果是确定性的 同样的测试代码今天跑和明天跑结果应该一样除非测试对象代码变了。所以正确的做法是AI处理不确定性的部分也就是用例的生成、逻辑的理解、测试失败后的修复确定性的部分比如执行、断言、验证则交给Pytest这样既提升了效率又保证了质量。30行代码看清Agent测试系统的结构直接上代码下面这个脚本模拟了一个最简单的AI Agent测试框架。说明这里还没有接入真正的LLM先展示整个框架的结构组成# minimal_agent_runner.pyimportjsonimportpytestfrompathlibimportPathfromtypingimportDict,ListclassMinimalTestAgent: 一个极简的测试Agent模拟器。 不调用LLM但展示了完整的输入→生成→执行→输出闭环。 def__init__(self,workspace:str./agent_workspace):self.workspacePath(workspace)self.workspace.mkdir(exist_okTrue)defload_scenario(self,scenario_file:str)-Dict:加载测试场景描述模拟意图理解withopen(scenario_file,r)asf:returnjson.load(f)defgenerate_test_code(self,scenario:Dict)-str: 根据场景生成Pytest代码模拟用例生成。 真实场景中这里会调用LLM现在我们用模板硬编码。 func_namescenario[function]test_casesscenario[test_cases]lines[import pytest,ffrom{scenario.get(module,calculator)}import{func_name},,,fclass Test{func_name.capitalize()}:,f 测试{func_name}函数,]forcaseintest_cases:lines.append(f def test_{case[name]}(self):)ifraisesincase:lines.append(f with pytest.raises({case[raises]}):)lines.append(f{func_name}({case[input]}))else:lines.append(f assert{func_name}({case[input]}) {case[expected]})lines.append()return\n.join(lines)defrun_tests(self)-Dict:执行Pytest并收集结果模拟执行与收集resultpytest.main([str(self.workspace/test_generated.py),-v,--tbshort])return{exit_code:result,passed:result0}defrun(self,scenario_file:str)-Dict:完整的执行闭环print(Step 1: 加载测试场景...)scenarioself.load_scenario(scenario_file)print(Step 2: 生成Pytest测试代码...)test_codeself.generate_test_code(scenario)test_fileself.workspace/test_generated.pytest_file.write_text(test_code)print(f已生成:{test_file})print(Step 3: 执行Pytest...)resultself.run_tests()print(Step 4: 测试结果)print(f{✅ 全部通过ifresult[passed]else❌ 存在失败})returnresultif__name____main__:# 准备一个测试场景描述模拟意图scenario{module:calculator,function:divide,test_cases:[{name:normal_division,input:10, 2,expected:5.0},{name:negative_division,input:-10, 2,expected:-5.0},{name:divide_by_zero,input:10, 0,expected:None,raises:ValueError},{name:zero_divided,input:0, 5,expected:0.0},]}# 保存场景文件withopen(scenario.json,w)asf:json.dump(scenario,f,indent2)# 运行AgentagentMinimalTestAgent()agent.run(scenario.json)运行一下python minimal_agent_runner.py输出Step 1: 加载测试场景... Step 2: 生成Pytest测试代码... 已生成: ./agent_workspace/test_generated.py Step 3: 执行Pytest... test session starts collected 4 items test_generated.py::TestDivide::test_normal_division PASSED test_generated.py::TestDivide::test_negative_division PASSED test_generated.py::TestDivide::test_divide_by_zero PASSED test_generated.py::TestDivide::test_zero_divided PASSED 4 passed in 0.02s Step 4: 测试结果 ✅ 全部通过这30行代码做了下面4个事情加载场景模拟意图理解 输入是JSON格式的“我要测什么”生成代码模拟用例生成输出是Pytest测试用例文件执行Pytest模拟执行收集 运行生成的用例收集测试结果输出结果模拟分析反馈查看测试结果是通过还是失败五、总结在日常的测试工作中我们要把AI Agent当作提效的工具来用如下表总结模块做什么谁来做意图理解需求→测试策略LLM用例生成测试策略→Pytest代码LLM执行收集跑pytest收结果Pytest分析修复失败→分析→修复→重跑LLM Pytest读完这篇文章后Agent测试的骨架就有了但里面的AI能力还是空的后续我们把真正的LLM接进来从“模拟Agent”变成“真正的AI Agent测试系统”

相关新闻

2026/8/12 17:45:34

解决Windows安装报错:UEFI引导与GPT分区配置全攻略

1. 项目概述:一个让无数人头疼的经典安装报错 “Windows 安装程序无法将 Windows 配置为在此计算机的硬件上运行”,或者它的另一个版本“Windows无法完成安装。若要在此计算机上安装 Windows,请重新启动安装”。如果你在用U盘启动的PE&#x…

2026/8/12 18:45:41

SQL Server 彻底卸载与重装指南:从原理到实战避坑

1. 项目概述:为什么SQL Server的“下载、卸载、重装”是个技术活? 如果你在IT运维、后端开发或者数据分析的岗位上待过一阵子,大概率会跟SQL Server这个数据库巨头打交道。无论是开发测试环境的搭建,还是生产服务器的迁移升级&…

2026/8/12 18:45:41

24C0x EEPROM跨页读写详解:以24C08为例突破256字节限制

1. 项目概述:突破256字节的I2C EEPROM读写 在嵌入式开发里,24c0x系列的EEPROM(电可擦可编程只读存储器)绝对是老朋友了。无论是存储设备参数、校准数据,还是记录运行日志,它都扮演着关键角色。这个系列里&a…

2026/8/12 18:45:41

Visual Studio 2022配置Intel IPP库:从原理到实战的完整指南

1. 项目概述:为什么要在Visual Studio里折腾IPP?如果你正在用C做图像处理、信号分析或者任何需要榨干CPU性能的计算密集型开发,那你大概率听说过Intel IPP(Integrated Performance Primitives)这个库。简单来说&#x…

2026/8/12 18:45:40

从灰度传感器到PID控制:循迹小车硬件设计与算法实现全解析

1. 项目概述:从赛题到实战的灰度循迹解析 看到“2021全国电设(F题)灰度传感器——循迹红线”这个标题,很多参加过电子设计大赛的朋友应该会心一笑,没参加过的朋友可能也会好奇这到底是个什么项目。简单来说&#xff0c…

2026/8/12 18:40:40

掌握KV Cache:小白程序员加速大模型推理与收藏必备指南

KV Cache是当前大语言模型推理加速的核心技术,能将多轮对话中的推理生成速度提升数倍。本文深入浅出地介绍了KV Cache的核心原理、显存代价及主流优化技术,并探讨了在AI Agent与RAG系统设计中的高效应用策略。通过学习本文,即使是小白程序员也…

2026/8/12 10:37:12

如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南 【免费下载链接】chinese_license_plate_generator 中国车牌生成器 项目地址: https://gitcode.com/gh_mirrors/ch/chinese_license_plate_generator 中国车牌生成器是一个基于Python的开源项目&#xff0c…

2026/8/12 5:35:25

当 LLM 遇见大文档:主流开源项目如何处理上下文超限

从 Agentic Loop 到 Repo Map,七种策略与六类陷阱引言:128K vs 10MB 的硬冲突 2026 年的 LLM 上下文窗口已达到 128K ~ 1M token(≈ 0.5MB ~ 4MB 文本),但 LLM 想要处理的真实数据规模远远超过这个量级:真实…

2026/8/12 9:34:08

Ubuntu 23.10中双击运行.sh文件的完整指南:从权限原理到桌面配置

1. 项目概述:从一次“双击”引发的权限探索在Ubuntu桌面环境下,我们习惯了双击运行那些带有.exe后缀的Windows程序安装包,但当你拿到一个以.sh结尾的Shell脚本文件时,满怀期待地双击它,却很可能只看到一个文本编辑器窗…

2026/8/12 9:34:08

NumPy条件索引实战:np.where与np.argwhere高效数据筛选指南

1. 从一次数据筛选的“笨办法”说起 前几天,我帮一个刚入行的数据分析师同事看代码,他正在处理一批传感器数据,需要找出所有温度超过阈值的数据点,然后进行后续分析。我一看他的实现,好家伙,一个 for 循环…

2026/8/12 9:34:08

基于Docker与Selenium Grid构建高可用浏览器自动化测试环境

1. 项目概述:为什么需要容器化的浏览器自动化?在软件开发和测试领域,浏览器自动化早已不是新鲜事。无论是日常的UI回归测试、数据抓取,还是复杂的业务流程模拟,Selenium都是我们绕不开的利器。然而,但凡在团…

2026/8/10 11:20:30

实测才敢推 AI论文网站 2026最新测评与推荐

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。一、综…

2026/8/11 17:06:59

2026必备!AI论文网站测评:最新推荐与深度对比

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

2026/8/11 3:05:11

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…