AI Agent在软件测试自动化中的突破
让每一个玩过电脑游戏、用过APP的人都能明白AI Agent给软件测试自动化带来了什么翻天覆地的变化,甚至如果你是个刚入门的程序员或者测试工程师,看完就能自己写一个简单的AI Agent小游戏测试机器人!软件测试自动化到底是什么?以前的它有什么“痛点”?AI Agent这个“黑魔法盒子”到底装了什么?它的“大脑”“眼睛”“手脚”“记忆库”都是干啥的?AI Agent是怎么自主完成“从需求理解到bu
AI Agent在软件测试自动化中的突破:从“按图索骥”到“自主探险”的魔法升级
关键词:AI Agent 软件测试自动化 自主测试 大语言模型 LLM 测试意图识别 自适应测试
摘要:你知道吗?以前的软件测试自动化工具就像只会背菜谱的机器人,每一步都得程序员写死,稍微换道菜谱或者食材变样就懵了。但现在不一样啦!有了AI Agent这个“超级小厨师”,它不仅能看懂“想吃什么菜”的模糊要求,还能自己找食材、调整火候,甚至能发现你菜谱里没注意到的“隐藏菜谱”(也就是软件里没见过的bug)!这篇文章就带你像玩冒险游戏一样,一步一步探索AI Agent是怎么做到这一切的:从它的“大脑”“眼睛”“手脚”这些核心部件讲起,再看它如何自主制定测试计划、执行测试、分析结果,最后通过一个真实的小游戏测试项目,亲手感受这个“超级小厨师”的魔力!
第一章 背景介绍:从“笨笨的工具人”到“聪明的探险者”,软件测试自动化的百年孤独(哦不对,是近十年的困境与渴望)
1.1 目的和范围:我们要搞懂什么?
这篇文章的目的很简单:让每一个玩过电脑游戏、用过APP的人都能明白AI Agent给软件测试自动化带来了什么翻天覆地的变化,甚至如果你是个刚入门的程序员或者测试工程师,看完就能自己写一个简单的AI Agent小游戏测试机器人!
我们的范围会覆盖:
- 软件测试自动化到底是什么?以前的它有什么“痛点”?
- AI Agent这个“黑魔法盒子”到底装了什么?它的“大脑”“眼睛”“手脚”“记忆库”都是干啥的?
- AI Agent是怎么自主完成“从需求理解到bug修复建议”的全流程测试的?有没有数学公式支撑?
- 我们能不能亲手搭一个测试小游戏《Flappy Bird》的AI Agent?能!而且用Python就能写!
- 现在哪些大厂在用AI Agent做测试?未来它会变成什么样?有没有什么“挑战BOSS”的任务?
1.2 预期读者:谁适合读这篇文章?
不管你是:
- 完全不懂技术的小白用户:你只要知道AI Agent能让APP和游戏更好用就行,我们会用《Flappy Bird》、《做饭》这些你熟悉的例子讲得明明白白!
- 刚入门的程序员/测试工程师:你能学到AI Agent的核心架构、LLM的调用方法、简单的强化学习逻辑,还有一个完整的Python项目!
- 资深的软件测试专家/架构师:你能看到AI Agent在实际场景中的应用边界、最佳实践、还有未来的发展方向!
1.3 文档结构概述:我们的冒险路线图
我们的冒险就像玩《超级马里奥》一样,有很多关卡,每个关卡都有不同的任务和惊喜:
- 关卡一(背景介绍):我们先了解一下以前的软件测试自动化工具是怎么“闯关”的,为什么会“撞墙”(也就是遇到痛点)。
- 关卡二(核心概念):我们拆开AI Agent这个“超级工具箱”,看看里面的“锤子”“剪刀”“放大镜”(也就是核心部件)都是干啥的,它们之间怎么配合。
- 关卡三(核心算法与数学模型):我们看看AI Agent的“大脑”(LLM)是怎么“思考”的,它的“手脚”(测试执行引擎)是怎么“动作”的,有没有“魔法咒语”(也就是数学公式)让它变得更聪明。
- 关卡四(项目实战):我们亲手搭一个测试《Flappy Bird》的AI Agent!从安装环境、设计系统、写代码,到最后看它怎么自主找bug!
- 关卡五(实际应用场景):我们看看谷歌、微软、阿里这些大厂是怎么用AI Agent“拯救世界”(也就是测试他们的APP和游戏)的。
- 关卡六(工具和资源推荐):我们给你推荐一些“免费超级道具”(也就是开源工具和学习资源),让你自己也能变成“测试魔法师”!
- 关卡七(未来发展趋势与挑战):我们看看AI Agent未来会进化成什么样,还有哪些“大BOSS”(也就是技术挑战)需要我们去打败!
- 关卡八(总结与思考题):我们回顾一下这次冒险学到了什么,再给你留几个“课后作业”(也就是思考题),让你巩固一下!
- 关卡九(附录与扩展阅读):我们整理了一些“通关秘籍”(也就是常见问题解答和参考资料),让你在冒险中遇到困难时可以随时查阅!
1.4 术语表:先学会几个“魔法咒语缩写”,不然冒险会卡壳!
1.4.1 核心术语定义
- 软件测试:就像给新买的玩具汽车“试跑”一样,看看它能不能正常开、会不会撞墙、有没有零件掉下来,确保它能正常工作。
- 软件测试自动化:就像给玩具汽车装一个“自动驾驶仪”一样,让它自己反复试跑,不用人一直盯着。
- AI Agent(人工智能代理):就像一个“超级小助手”或者“自主探险者”,它有“大脑”(能思考)、“眼睛”(能感知环境)、“手脚”(能执行动作)、“记忆库”(能记住之前的事情),能自主完成任务,不用人一步一步指挥。
- LLM(大语言模型):就像一个“超级字典+百科全书+作文老师+对话伙伴”的组合体,它读了世界上几乎所有的文字资料,能听懂人话、能写文章、能回答问题、能推理,是AI Agent的“核心大脑”。
- 测试意图识别:就像听懂别人“想吃什么菜”的模糊要求一样,比如用户说“我想看看这个APP能不能保存我的照片”,AI Agent就能把它翻译成具体的测试步骤:“打开APP→点击拍照按钮→拍一张照片→点击保存按钮→退出APP→重新打开APP→查看相册→确认照片是否存在”。
- 自适应测试:就像玩游戏时根据关卡难度调整策略一样,比如AI Agent发现这个游戏的“第5关管道特别密”,它就会多测试几次第5关,甚至调整测试的“点击速度”“点击时机”。
- 自主探索测试:就像玩游戏时“不看攻略自己瞎逛”一样,AI Agent会自己点击APP的各种按钮、输入各种奇怪的文字、滑动各种屏幕,看看能不能发现“隐藏的bug”(也就是游戏攻略里没提到的“秘密通道”或者“陷阱”)。
1.4.2 相关概念解释
- Selenium:以前最常用的软件测试自动化工具之一,就像一个只会背“网页操作步骤”的机器人,每一步都得程序员写死。
- Appium:以前最常用的手机APP测试自动化工具之一,就像Selenium的“手机版弟弟”,也是只会背步骤。
- 强化学习(RL):就像训练小狗一样,AI Agent做对了动作就给它“奖励”(比如加分),做错了就给它“惩罚”(比如扣分),让它自己慢慢学会怎么完成任务。
- 计算机视觉(CV):就像AI Agent的“眼睛”,能让它看懂手机屏幕、电脑屏幕上的东西,比如“这个红色的按钮是‘拍照’”、“这个绿色的管道是‘障碍物’”。
- 自然语言处理(NLP):就像AI Agent的“翻译官”,能让它听懂人话、能把人话翻译成机器能懂的代码、能把机器的测试结果翻译成普通人能看懂的文字。
1.4.3 缩略词列表
| 缩略词 | 全称 | 中文翻译 |
|---|---|---|
| AI | Artificial Intelligence | 人工智能 |
| LLM | Large Language Model | 大语言模型 |
| RL | Reinforcement Learning | 强化学习 |
| CV | Computer Vision | 计算机视觉 |
| NLP | Natural Language Processing | 自然语言处理 |
| GUI | Graphical User Interface | 图形用户界面 |
| API | Application Programming Interface | 应用程序编程接口 |
| CI/CD | Continuous Integration/Continuous Deployment | 持续集成/持续部署 |
| QA | Quality Assurance | 质量保证 |
| SUT | System Under Test | 被测系统 |
第二章 核心概念与联系:拆开AI Agent这个“超级工具箱”,看看里面的宝贝!
2.1 故事引入:从“笨笨的Selenium机器人”到“聪明的Flappy Bird探险者”
假设你是一个刚入门的测试工程师,老板给你一个任务:测试一个新开发的《Flappy Bird》小游戏,确保它没有bug。
2.1.1 以前的做法:用Selenium/Appium写死步骤
你会怎么干?
- 你先手动玩几遍《Flappy Bird》,把每一步操作记下来:“打开游戏→点击开始按钮→在第1个管道前100毫秒点击屏幕→在第2个管道前120毫秒点击屏幕→……→直到游戏结束→记录分数”。
- 然后你用Appium(因为是手机游戏)把这些步骤写成代码,让机器人自己反复执行。
- 结果呢?
- 如果游戏开发者稍微改了一下“开始按钮的位置”(比如从屏幕中间移到了屏幕下方),机器人就找不到按钮了,直接“罢工”!
- 如果游戏开发者稍微改了一下“管道的间距”或者“管道的移动速度”,机器人之前记的“点击时机”就没用了,要么撞管道要么掉地上,根本玩不了几关!
- 更糟糕的是,机器人只会按你写的步骤操作,根本不会“瞎逛”——比如它不会点击游戏右上角的“设置按钮”看看会不会闪退,不会输入奇怪的分数看看排行榜会不会崩溃,不会在游戏结束后连续点击“重新开始按钮”100次看看会不会卡死!
- 你要花好几天甚至好几个星期写这些代码,改一点游戏就得改一遍代码,老板催得急,你加班加到脱发!
2.1.2 现在的做法:用AI Agent自主测试
现在有了AI Agent这个“超级小助手”,你会怎么干?
- 你只需要给AI Agent说一句话:“帮我测试一下这个《Flappy Bird》小游戏,看看有没有bug,最后给我写一份测试报告”。
- 然后你就可以去喝咖啡、摸鱼了!AI Agent会自己干所有的事情:
- 它先“看”一下游戏屏幕(用计算机视觉),识别出“开始按钮”“设置按钮”“管道”“小鸟”“分数”这些元素。
- 它先“玩”几遍游戏(用强化学习或者LLM推理),慢慢学会怎么玩才能得高分。
- 它不仅会“正常玩游戏”,还会“瞎逛”——点击设置按钮、连续点击重新开始按钮100次、输入奇怪的分数(比如999999999)、在小鸟刚飞起来的时候就快速点击10次屏幕、在游戏结束前把手机倒过来(如果是重力感应游戏的话)!
- 它发现bug后会“记录”下来(用记忆库),比如“连续点击重新开始按钮50次后游戏卡死了”、“输入分数999999999后排行榜显示负数”、“小鸟穿过管道的缝隙但还是被判撞墙了”!
- 最后它会“写”一份测试报告(用LLM),报告里有bug的截图、复现步骤、严重程度、甚至还有修复建议!
- 你喝完咖啡回来,测试报告已经写好了!老板夸你效率高,你再也不用加班加到脱发了!
是不是很神奇?接下来我们就拆开AI Agent这个“超级工具箱”,看看里面的宝贝到底是怎么配合的!
2.2 核心概念解释:像给小学生讲故事一样,每个概念都用《Flappy Bird》或者《做饭》的例子!
2.2.1 核心概念一:AI Agent的“大脑”——LLM(大语言模型)
用《做饭》的例子解释:
LLM就像一个“超级厨师长”,它读了世界上几乎所有的菜谱(从《米其林指南》到《家常菜100道》),不仅能听懂你说的“我想吃一盘又酸又甜、不辣、少放糖的鱼香肉丝”这种模糊要求,还能自己调整菜谱(比如把糖换成蜂蜜、把辣椒去掉)、自己判断食材够不够(比如没有肉丝就用鸡胸肉代替)、甚至能自己发明新菜谱(比如把鱼香肉丝和蛋炒饭结合在一起)!
用《Flappy Bird》的例子解释:
LLM就像一个“超级游戏玩家+测试专家”,它读了世界上几乎所有的游戏攻略(从《Flappy Bird高分技巧》到《游戏测试实战100例》),不仅能听懂你说的“帮我测试一下这个《Flappy Bird》小游戏”这种模糊要求,还能自己制定测试计划(比如先正常玩游戏熟悉操作,再测试边界情况,最后测试异常情况)、自己判断游戏有没有bug(比如小鸟穿过缝隙但还是撞墙了)、甚至能自己写bug修复建议(比如调整碰撞检测的范围)!
专业定义:
LLM是一种基于Transformer架构的深度学习模型,它通过在海量的文本数据(比如书籍、网站、代码库、论文)上进行预训练,学习到了语言的语法、语义、逻辑推理能力,甚至还有一定的“常识”。常见的LLM有OpenAI的GPT-4o、谷歌的Gemini Pro、Anthropic的Claude 3 Opus、Meta的Llama 3、阿里的通义千问、百度的文心一言等等。
2.2.2 核心概念二:AI Agent的“眼睛”——感知模块(Perception Module)
用《做饭》的例子解释:
感知模块就像超级厨师长的“眼睛+鼻子+手”,它能让超级厨师长“看到”厨房里的食材(比如冰箱里有没有肉丝、有没有胡萝卜)、“闻到”食材有没有变质(比如肉有没有臭)、“摸到”食材的温度(比如油有没有热)!
用《Flappy Bird》的例子解释:
感知模块就像超级游戏玩家的“眼睛”,它能让超级游戏玩家“看到”手机屏幕上的所有东西:
- 屏幕上有什么元素?(比如开始按钮、设置按钮、管道、小鸟、分数、地面)
- 这些元素的位置在哪里?(比如开始按钮在屏幕中间的坐标是540 960)
- 这些元素的状态是什么?(比如小鸟的飞行高度是540 500、管道的移动速度是每秒100像素、分数是10分)
- 屏幕有没有发生变化?(比如游戏是不是开始了、是不是结束了、小鸟是不是撞墙了)
专业定义:
感知模块是AI Agent的“输入接口”,它负责收集和处理被测系统(SUT)的状态信息。根据被测系统的不同,感知模块可以分为:
- GUI感知模块:用于测试图形用户界面(比如电脑软件、手机APP、网页游戏),主要用到计算机视觉(CV)技术,比如OCR(光学字符识别,能识别屏幕上的文字)、目标检测(能识别屏幕上的元素,比如按钮、图片)、图像分割(能区分屏幕上的不同区域,比如游戏区域和设置区域)、光流法(能检测屏幕上元素的移动速度和方向)。
- API感知模块:用于测试应用程序编程接口(比如后端接口、微服务接口),主要用到API调用技术,能获取接口的响应状态码、响应时间、响应内容等信息。
- 日志感知模块:用于收集和分析被测系统的日志文件,能发现系统的异常行为(比如报错、崩溃、性能下降)。
2.2.3 核心概念三:AI Agent的“大脑决策中心”——推理与规划模块(Reasoning & Planning Module)
用《做饭》的例子解释:
推理与规划模块就像超级厨师长的“大脑前额叶”,它负责根据感知模块收集到的信息(比如冰箱里有没有肉丝、有没有胡萝卜)和用户的要求(比如我想吃一盘又酸又甜、不辣、少放糖的鱼香肉丝),制定详细的“做饭计划”(比如先把肉丝切成丝、再把胡萝卜切成丝、再把锅烧热、再放油、再放肉丝、再放胡萝卜丝、再放调料、最后出锅),还能根据做饭过程中的突发情况(比如油溅出来了、肉丝炒糊了)调整计划(比如赶紧把火关小、把糊的肉丝挑出来、再放一点新的肉丝)!
用《Flappy Bird》的例子解释:
推理与规划模块就像超级游戏玩家的“大脑前额叶”,它负责:
- 制定全局测试计划:比如先正常玩游戏熟悉操作(5次)、再测试边界情况(比如小鸟的最高飞行高度、最低飞行高度、管道的最小间距、最大间距)、再测试异常情况(比如连续点击重新开始按钮100次、输入奇怪的分数、在游戏结束前把手机倒过来)、最后测试性能情况(比如游戏的帧率、启动时间、内存占用)。
- 制定局部测试计划:比如在正常玩游戏时,根据感知模块收集到的小鸟飞行高度和管道位置,制定“点击时机”(比如在管道前100毫秒点击屏幕)。
- 调整计划:比如如果发现管道的移动速度变快了,就调整“点击时机”(比如提前到管道前150毫秒点击屏幕);如果发现连续点击重新开始按钮50次后游戏卡死了,就调整异常测试计划(比如再测试连续点击100次、200次、500次的情况)。
- 判断结果:比如根据感知模块收集到的信息,判断小鸟是不是撞墙了、游戏是不是结束了、有没有发现bug。
专业定义:
推理与规划模块是AI Agent的“核心决策单元”,它负责:
- 意图理解:把用户的自然语言要求(比如“帮我测试一下这个《Flappy Bird》小游戏”)翻译成具体的测试目标(比如“测试游戏的功能性、边界性、异常性、性能性”)。
- 全局规划:根据测试目标,制定详细的全局测试计划,包括测试用例的优先级、测试的顺序、测试的时间安排等。
- 局部规划:在执行测试的过程中,根据感知模块收集到的当前状态信息,制定下一步的动作(比如在《Flappy Bird》中点击屏幕、在APP中点击按钮、输入文字等)。
- 推理与判断:根据感知模块收集到的信息和之前的记忆,推理出被测系统的状态、判断有没有发现bug、判断测试用例是否通过。
- 计划调整:如果发现测试计划不合理或者遇到突发情况,就及时调整测试计划。
常见的推理与规划方法有:
- 基于规则的推理:比如以前的Selenium/Appium就是用的这种方法,每一步都得程序员写死规则。
- 基于LLM的推理:比如用GPT-4o的“思维链(Chain of Thought, CoT)”或者“思维树(Tree of Thought, ToT)”技术,让LLM像人一样一步一步思考问题。
- 基于强化学习的规划:比如训练一个强化学习模型,让AI Agent在测试过程中自己学习怎么完成任务。
- 混合推理与规划:比如把基于LLM的推理和基于强化学习的规划结合在一起,发挥两者的优势。
2.2.4 核心概念四:AI Agent的“手脚”——执行模块(Execution Module)
用《做饭》的例子解释:
执行模块就像超级厨师长的“手和脚”,它负责根据推理与规划模块制定的“做饭计划”,执行具体的动作:比如打开冰箱、拿出肉丝、拿出胡萝卜、把肉丝切成丝、把胡萝卜切成丝、把锅烧热、放油、放肉丝、放胡萝卜丝、放调料、最后出锅!
用《Flappy Bird》的例子解释:
执行模块就像超级游戏玩家的“手指”,它负责根据推理与规划模块制定的“局部测试计划”,执行具体的动作:比如打开游戏APP、点击开始按钮、点击屏幕让小鸟飞起来、点击设置按钮、输入文字到排行榜、连续点击重新开始按钮、关闭游戏APP!
专业定义:
执行模块是AI Agent的“输出接口”,它负责根据推理与规划模块制定的动作指令,对被测系统(SUT)执行具体的操作。根据被测系统的不同,执行模块可以分为:
- GUI执行模块:用于测试图形用户界面(比如电脑软件、手机APP、网页游戏),主要用到自动化测试工具的API,比如Selenium的WebDriver API、Appium的WebDriver API、Playwright的API、PyAutoGUI的API(能模拟鼠标和键盘的操作)。
- API执行模块:用于测试应用程序编程接口(比如后端接口、微服务接口),主要用到HTTP请求库,比如Python的requests库、Java的HttpClient库。
- 命令行执行模块:用于测试命令行工具或者操作系统,主要用到操作系统的命令行API,比如Python的subprocess库、Java的ProcessBuilder类。
2.2.5 核心概念五:AI Agent的“记忆库”——记忆模块(Memory Module)
用《做饭》的例子解释:
记忆模块就像超级厨师长的“笔记本”,它负责记录:
- 用户的要求:比如我想吃一盘又酸又甜、不辣、少放糖的鱼香肉丝。
- 之前做饭的经验:比如上次用鸡胸肉代替肉丝做鱼香肉丝味道也不错、上次把糖换成蜂蜜味道更好、上次炒肉丝的时候火太大容易糊。
- 这次做饭的过程:比如今天用了多少肉丝、多少胡萝卜、多少调料、炒了多长时间、味道怎么样。
- 遇到的突发情况:比如今天油溅出来了、今天的胡萝卜有点老。
用《Flappy Bird》的例子解释:
记忆模块就像超级游戏玩家的“游戏日记”,它负责记录:
- 用户的要求:比如帮我测试一下这个《Flappy Bird》小游戏,看看有没有bug,最后给我写一份测试报告。
- 之前玩游戏的经验:比如管道前100毫秒点击屏幕成功率最高、连续点击重新开始按钮50次后游戏容易卡死、输入分数999999999后排行榜容易显示负数。
- 这次测试的过程:比如今天正常玩了10次游戏,最高分数是50分;今天测试了边界情况,小鸟的最高飞行高度是540 100,最低飞行高度是540 1000;今天测试了异常情况,连续点击重新开始按钮100次后游戏卡死了,输入分数999999999后排行榜显示负数-100000000。
- 发现的bug:比如连续点击重新开始按钮50次后游戏卡死了、输入分数999999999后排行榜显示负数、小鸟穿过管道的缝隙但还是被判撞墙了,每个bug都有截图、复现步骤、严重程度。
专业定义:
记忆模块是AI Agent的“存储单元”,它负责存储和检索AI Agent在测试过程中需要的所有信息,比如用户的要求、测试目标、测试计划、之前的测试经验、当前的测试状态、发现的bug等。根据信息的存储时间和用途,记忆模块可以分为:
- 短期记忆(Short-Term Memory, STM):也叫“工作记忆”,负责存储AI Agent当前正在处理的信息,比如当前的测试状态、当前的局部测试计划、上一步执行的动作等,存储时间比较短,一般只有几分钟或者几个小时。常见的实现方式有:直接存储在内存中、用Redis等缓存数据库存储。
- 长期记忆(Long-Term Memory, LTM):负责存储AI Agent的长期经验和知识,比如用户的要求、测试目标、全局测试计划、之前的测试经验、发现的所有bug等,存储时间比较长,一般可以保存几天、几个月甚至几年。常见的实现方式有:用向量数据库(Vector Database)存储(比如Pinecone、Chroma、Milvus、FAISS),因为向量数据库可以存储文本、图像等非结构化数据的向量表示,方便AI Agent快速检索相关的信息;用关系型数据库(比如MySQL、PostgreSQL)存储结构化数据,比如bug的复现步骤、严重程度、发现时间等。
- 知识图谱(Knowledge Graph):也可以作为长期记忆的一部分,负责存储被测系统的结构信息、业务逻辑信息、测试用例之间的关系信息等,方便AI Agent进行更复杂的推理。
2.2.6 核心概念六:AI Agent的“翻译官+秘书”——交互与报告模块(Interaction & Reporting Module)
用《做饭》的例子解释:
交互与报告模块就像超级厨师长的“翻译官+秘书”,它负责:
- 和用户交互:比如听懂用户说的“我想吃一盘又酸又甜、不辣、少放糖的鱼香肉丝”这种模糊要求,比如用户中途说“多放一点醋”,它能及时把这个要求传达给推理与规划模块,比如做饭过程中遇到突发情况(比如没有肉丝了),它能及时问用户“冰箱里没有肉丝了,用鸡胸肉代替可以吗?”。
- 写报告:比如做完饭后,它能给用户写一份“做饭报告”,报告里有今天用了什么食材、用了多少调料、炒了多长时间、味道怎么样、遇到了什么突发情况、下次可以怎么改进。
用《Flappy Bird》的例子解释:
交互与报告模块就像超级游戏玩家的“翻译官+秘书”,它负责:
- 和用户交互:比如听懂用户说的“帮我测试一下这个《Flappy Bird》小游戏,看看有没有bug,最后给我写一份测试报告”这种模糊要求,比如用户中途说“多测试几次边界情况”,它能及时把这个要求传达给推理与规划模块,比如测试过程中遇到突发情况(比如游戏APP打不开了),它能及时问用户“游戏APP打不开了,要不要重启一下手机?”。
- 写报告:比如测试完后,它能给用户写一份“测试报告”,报告里有测试的时间、测试的范围、测试用例的执行情况(通过了多少个、失败了多少个、跳过了多少个)、发现的所有bug(每个bug都有截图、复现步骤、严重程度、优先级、甚至还有修复建议)、性能测试的结果(比如游戏的平均帧率是60fps、最低帧率是30fps、启动时间是2秒、内存占用是100MB)、测试的结论和建议。
专业定义:
交互与报告模块是AI Agent的“用户接口”,它负责:
- 自然语言交互:和用户进行自然语言的交流,比如接收用户的自然语言要求、回答用户的问题、向用户反馈测试的进度、向用户询问测试过程中遇到的问题。常见的实现方式有:聊天机器人(比如用OpenAI的GPT-4o API搭建的聊天机器人)、语音交互(比如用谷歌的Speech-to-Text和Text-to-Speech API搭建的语音交互系统)。
- 测试报告生成:根据记忆模块中存储的测试信息,生成一份结构化的、可读性强的测试报告,测试报告可以是PDF格式、Word格式、HTML格式、Markdown格式等。常见的实现方式有:用Python的ReportLab库生成PDF格式的报告、用Python的python-docx库生成Word格式的报告、用Python的Jinja2模板引擎生成HTML格式或Markdown格式的报告。
2.3 核心概念之间的关系:像搭积木一样,把这些宝贝拼在一起!
我们已经拆开了AI Agent这个“超级工具箱”,认识了里面的6个核心宝贝:LLM(大脑)、感知模块(眼睛)、推理与规划模块(大脑决策中心)、执行模块(手脚)、记忆模块(记忆库)、交互与报告模块(翻译官+秘书)。接下来我们就看看这些宝贝是怎么配合工作的,就像一个团队一样!
2.3.1 概念一和概念二的关系:LLM和感知模块——“大脑”和“眼睛”的配合
用《Flappy Bird》的例子解释:
感知模块(眼睛)先“看”一下游戏屏幕,识别出屏幕上的所有元素(比如开始按钮、设置按钮、管道、小鸟、分数、地面),然后把这些元素的信息(比如位置、状态、移动速度)转换成LLM能懂的格式(比如文本或者向量),传给LLM(大脑)。LLM(大脑)根据这些信息,就能知道游戏现在的状态是什么(比如游戏是不是在主界面、是不是在游戏中、是不是结束了)。
专业关系描述:
感知模块是LLM的“信息输入源”,它负责把被测系统的非结构化状态信息(比如屏幕图像、日志文件)转换成LLM能懂的结构化或半结构化信息(比如文本描述、JSON格式的元素信息、向量表示)。LLM是感知模块的“信息处理器”,它负责理解和分析感知模块传来的信息,推理出被测系统的当前状态。
2.3.2 概念一和概念三的关系:LLM和推理与规划模块——“大脑”和“大脑决策中心”的配合
用《Flappy Bird》的例子解释:
交互与报告模块(翻译官+秘书)先把用户的自然语言要求(比如“帮我测试一下这个《Flappy Bird》小游戏,看看有没有bug,最后给我写一份测试报告”)传给LLM(大脑)。LLM(大脑)用“思维链”或者“思维树”技术,一步一步思考,把这个模糊的要求翻译成具体的测试目标(比如“测试游戏的功能性、边界性、异常性、性能性”),然后制定一个初步的全局测试计划(比如先正常玩游戏熟悉操作,再测试边界情况,再测试异常情况,最后测试性能情况)。推理与规划模块(大脑决策中心)再根据LLM制定的初步全局测试计划和记忆模块(记忆库)中存储的之前的测试经验,制定更详细的全局测试计划(比如测试用例的优先级、测试的顺序、测试的时间安排)。在执行测试的过程中,感知模块(眼睛)把当前的状态信息传给LLM(大脑),LLM(大脑)再传给推理与规划模块(大脑决策中心),推理与规划模块(大脑决策中心)根据这些信息和记忆模块(记忆库)中存储的之前的经验,制定下一步的局部测试计划(比如在管道前100毫秒点击屏幕)。如果发现测试计划不合理或者遇到突发情况,推理与规划模块(大脑决策中心)会把这些信息传给LLM(大脑),LLM(大脑)再用“思维链”或者“思维树”技术,一步一步思考,调整测试计划。
专业关系描述:
LLM是推理与规划模块的“核心推理引擎”,它负责意图理解、初步的全局规划、复杂的逻辑推理、计划调整时的辅助决策。推理与规划模块是LLM的“执行决策单元”,它负责把LLM制定的初步计划细化成可执行的详细计划、在执行测试的过程中制定局部计划、根据当前状态和记忆模块的信息快速调整局部计划。
2.3.3 概念三和概念四的关系:推理与规划模块和执行模块——“大脑决策中心”和“手脚”的配合
用《Flappy Bird》的例子解释:
推理与规划模块(大脑决策中心)制定好下一步的局部测试计划(比如在管道前100毫秒点击屏幕)后,把这个动作指令(比如“点击屏幕的坐标540 960”)转换成执行模块(手脚)能懂的格式(比如Appium的WebDriver API指令),传给执行模块(手脚)。执行模块(手脚)根据这个动作指令,执行具体的操作(比如点击屏幕的坐标540 960)。
专业关系描述:
推理与规划模块是执行模块的“指令发送者”,它负责把下一步的动作计划转换成执行模块能懂的格式(比如自动化测试工具的API指令、HTTP请求指令、命令行指令)。执行模块是推理与规划模块的“指令执行者”,它负责根据推理与规划模块传来的动作指令,对被测系统执行具体的操作。
2.3.4 概念三、四、五的关系:推理与规划模块、执行模块、记忆模块——“大脑决策中心”“手脚”“记忆库”的闭环配合
用《Flappy Bird》的例子解释:
这是一个闭环反馈系统,就像人走路一样:
- 推理与规划模块(大脑决策中心)制定好下一步的动作计划(比如“向前走一步”)。
- 执行模块(手脚)执行这个动作(比如“向前走一步”)。
- 感知模块(眼睛)收集执行动作后的状态信息(比如“有没有走到障碍物前面”“有没有摔倒”)。
- 感知模块(眼睛)把这些状态信息传给记忆模块(记忆库)存储起来,同时传给推理与规划模块(大脑决策中心)。
- 推理与规划模块(大脑决策中心)根据这些状态信息和记忆模块(记忆库)中存储的之前的经验,判断动作执行的效果(比如“有没有成功走到目的地”“有没有发现bug”),然后制定下一步的动作计划(比如“如果没有走到障碍物前面,就继续向前走一步;如果走到了障碍物前面,就向左转一步”)。
- 重复这个过程,直到任务完成。
专业关系描述:
这是一个经典的Agent闭环(Agent Loop),也叫感知-决策-行动-反馈循环(Sense-Decide-Act-Feedback Loop),是AI Agent的核心工作流程:
- 感知(Sense):感知模块收集被测系统的当前状态信息,传给记忆模块存储,同时传给推理与规划模块。
- 决策(Decide):推理与规划模块根据当前状态信息和记忆模块中存储的之前的经验,制定下一步的动作计划。
- 行动(Act):执行模块根据动作计划,对被测系统执行具体的操作。
- 反馈(Feedback):感知模块再次收集被测系统的状态信息,传给记忆模块存储,同时传给推理与规划模块,推理与规划模块根据反馈信息判断动作执行的效果,调整下一步的动作计划。
这个闭环会一直重复,直到AI Agent完成测试任务。
2.3.5 概念一、五、六的关系:LLM、记忆模块、交互与报告模块——“大脑”“记忆库”“翻译官+秘书”的配合
用《Flappy Bird》的例子解释:
- 接收用户要求:交互与报告模块(翻译官+秘书)接收用户的自然语言要求,传给LLM(大脑),LLM(大脑)理解后,传给记忆模块(记忆库)存储起来。
- 向用户反馈进度:在测试过程中,记忆模块(记忆库)把测试的进度信息传给LLM(大脑),LLM(大脑)把它转换成自然语言,传给交互与报告模块(翻译官+秘书),交互与报告模块(翻译官+秘书)再反馈给用户。
- 向用户询问问题:如果测试过程中遇到突发情况(比如游戏APP打不开了),推理与规划模块(大脑决策中心)把这些信息传给记忆模块(记忆库)存储起来,同时传给LLM(大脑),LLM(大脑)把它转换成自然语言的问题,传给交互与报告模块(翻译官+秘书),交互与报告模块(翻译官+秘书)再问用户。
- 生成测试报告:测试完成后,记忆模块(记忆库)把所有的测试信息(比如测试的时间、测试的范围、测试用例的执行情况、发现的所有bug、性能测试的结果)传给LLM(大脑),LLM(大脑)用这些信息,生成一份结构化的、可读性强的测试报告草稿,传给交互与报告模块(翻译官+秘书),交互与报告模块(翻译官+秘书)再把草稿转换成正式的测试报告(比如PDF格式、Word格式、HTML格式、Markdown格式),反馈给用户。
专业关系描述:
交互与报告模块是LLM和用户之间的“桥梁”,它负责把用户的自然语言要求传给LLM,把LLM生成的自然语言反馈给用户。记忆模块是LLM的“信息仓库”,它负责存储LLM需要的所有信息,方便LLM快速检索和使用。LLM是交互与报告模块和记忆模块的“核心处理器”,它负责理解用户的要求、生成反馈信息、生成测试报告草稿。
2.3.6 概念核心属性维度对比:用一个表格把这些宝贝的特点列出来!
为了让大家更清楚地了解这6个核心概念的特点,我们用一个表格来对比它们的核心属性:
| 核心概念 | 核心角色 | 核心功能 | 核心技术/工具 | 输入信息来源 | 输出信息去向 | 存储时间要求 |
|---|---|---|---|---|---|---|
| LLM(大语言模型) | 核心大脑 | 意图理解、逻辑推理、初步规划、辅助决策、生成反馈、生成报告草稿 | GPT-4o、Gemini Pro、Claude 3 Opus、Llama 3、通义千问、文心一言 | 交互与报告模块、感知模块、记忆模块 | 推理与规划模块、交互与报告模块 | 不需要存储(调用API) |
| 感知模块 | 眼睛、鼻子、手 | 收集被测系统的状态信息、处理状态信息、转换成LLM能懂的格式 | OCR(Tesseract、PaddleOCR)、目标检测(YOLO、Faster R-CNN)、图像分割(U-Net)、光流法、API调用、日志分析 | 被测系统(GUI、API、日志) | LLM、推理与规划模块、记忆模块 | 短期存储(传给记忆模块后) |
| 推理与规划模块 | 大脑决策中心 | 细化全局计划、制定局部计划、快速调整计划、判断动作执行效果 | 思维链(CoT)、思维树(ToT)、强化学习(PPO、DQN)、混合推理与规划 | LLM、感知模块、记忆模块 | 执行模块、LLM、记忆模块 | 短期存储(传给记忆模块后) |
| 执行模块 | 手脚 | 执行具体的操作、把操作结果传给感知模块 | Selenium、Appium、Playwright、PyAutoGUI、requests、subprocess | 推理与规划模块 | 被测系统(GUI、API、命令行) | 不需要存储 |
| 记忆模块 | 记忆库 | 存储所有的测试信息、快速检索相关的信息 | 内存、Redis(短期记忆)、Chroma、Milvus、FAISS、Pinecone(长期记忆-向量)、MySQL、PostgreSQL(长期记忆-结构化)、知识图谱(Neo4j) | 交互与报告模块、感知模块、推理与规划模块、LLM | LLM、推理与规划模块、交互与报告模块 | 短期/长期存储 |
| 交互与报告模块 | 翻译官、秘书 | 和用户进行自然语言交互、生成正式的测试报告 | 聊天机器人(OpenAI API、LangChain)、语音交互(Speech-to-Text、Text-to-Speech)、ReportLab、python-docx、Jinja2 | 用户、LLM、记忆模块 | 用户、LLM、记忆模块 | 不需要存储(传给记忆模块后) |
2.3.7 概念联系的ER实体关系图:用一张图把这些宝贝的关系画出来!
为了让大家更直观地了解这6个核心概念之间的实体关系,我们用一个Mermaid ER图来表示:
ER图说明:
- USER(用户):和INTERACTION_REPORTING(交互与报告模块)是一对多的关系,一个用户可以提出多个要求、查看多个反馈、查看多个报告。
- INTERACTION_REPORTING(交互与报告模块):
- 和LLM(大语言模型)是一对多的关系,一个交互与报告模块可以传递多个要求、多个问题,接收多个反馈、多个报告草稿。
- 和MEMORY(记忆模块)是一对多的关系,一个交互与报告模块可以存储多个要求、多个反馈、多个报告。
- LLM(大语言模型):
- 和REASONING_PLANNING(推理与规划模块)是一对多的关系,一个LLM可以传递多个意图、多个初步计划、辅助多个决策、调整多个计划。
- 和PERCEPTION(感知模块)是一对多的关系,一个LLM可以接收多个处理后的状态信息。
- 和MEMORY(记忆模块)是一对多的关系,一个LLM可以存储多个推理结果、多个计划,检索多个信息。
- PERCEPTION(感知模块):
- 和SUT(被测系统)是一对多的关系,一个感知模块可以收集多个状态信息。
- 和REASONING_PLANNING(推理与规划模块)是一对多的关系,一个感知模块可以传递多个当前状态信息。
- 和MEMORY(记忆模块)是一对多的关系,一个感知模块可以存储多个状态信息。
- REASONING_PLANNING(推理与规划模块):
- 和EXECUTION(执行模块)是一对多的关系,一个推理与规划模块可以传递多个动作指令。
- 和MEMORY(记忆模块)是一对多的关系,一个推理与规划模块可以存储多个计划、多个判断结果,检索多个信息。
- EXECUTION(执行模块):
- 和SUT
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐
所有评论(0)