AI Agent在软件测试自动化中的突破:从“按图索骥”到“自主探险”的魔法升级

关键词:AI Agent 软件测试自动化 自主测试 大语言模型 LLM 测试意图识别 自适应测试

摘要:你知道吗?以前的软件测试自动化工具就像只会背菜谱的机器人,每一步都得程序员写死,稍微换道菜谱或者食材变样就懵了。但现在不一样啦!有了AI Agent这个“超级小厨师”,它不仅能看懂“想吃什么菜”的模糊要求,还能自己找食材、调整火候,甚至能发现你菜谱里没注意到的“隐藏菜谱”(也就是软件里没见过的bug)!这篇文章就带你像玩冒险游戏一样,一步一步探索AI Agent是怎么做到这一切的:从它的“大脑”“眼睛”“手脚”这些核心部件讲起,再看它如何自主制定测试计划、执行测试、分析结果,最后通过一个真实的小游戏测试项目,亲手感受这个“超级小厨师”的魔力!


第一章 背景介绍:从“笨笨的工具人”到“聪明的探险者”,软件测试自动化的百年孤独(哦不对,是近十年的困境与渴望)

1.1 目的和范围:我们要搞懂什么?

这篇文章的目的很简单:让每一个玩过电脑游戏、用过APP的人都能明白AI Agent给软件测试自动化带来了什么翻天覆地的变化,甚至如果你是个刚入门的程序员或者测试工程师,看完就能自己写一个简单的AI Agent小游戏测试机器人!

我们的范围会覆盖:

  1. 软件测试自动化到底是什么?以前的它有什么“痛点”?
  2. AI Agent这个“黑魔法盒子”到底装了什么?它的“大脑”“眼睛”“手脚”“记忆库”都是干啥的?
  3. AI Agent是怎么自主完成“从需求理解到bug修复建议”的全流程测试的?有没有数学公式支撑?
  4. 我们能不能亲手搭一个测试小游戏《Flappy Bird》的AI Agent?能!而且用Python就能写!
  5. 现在哪些大厂在用AI Agent做测试?未来它会变成什么样?有没有什么“挑战BOSS”的任务?

1.2 预期读者:谁适合读这篇文章?

不管你是:

  • 完全不懂技术的小白用户:你只要知道AI Agent能让APP和游戏更好用就行,我们会用《Flappy Bird》、《做饭》这些你熟悉的例子讲得明明白白!
  • 刚入门的程序员/测试工程师:你能学到AI Agent的核心架构、LLM的调用方法、简单的强化学习逻辑,还有一个完整的Python项目!
  • 资深的软件测试专家/架构师:你能看到AI Agent在实际场景中的应用边界、最佳实践、还有未来的发展方向!

1.3 文档结构概述:我们的冒险路线图

我们的冒险就像玩《超级马里奥》一样,有很多关卡,每个关卡都有不同的任务和惊喜:

  1. 关卡一(背景介绍):我们先了解一下以前的软件测试自动化工具是怎么“闯关”的,为什么会“撞墙”(也就是遇到痛点)。
  2. 关卡二(核心概念):我们拆开AI Agent这个“超级工具箱”,看看里面的“锤子”“剪刀”“放大镜”(也就是核心部件)都是干啥的,它们之间怎么配合。
  3. 关卡三(核心算法与数学模型):我们看看AI Agent的“大脑”(LLM)是怎么“思考”的,它的“手脚”(测试执行引擎)是怎么“动作”的,有没有“魔法咒语”(也就是数学公式)让它变得更聪明。
  4. 关卡四(项目实战):我们亲手搭一个测试《Flappy Bird》的AI Agent!从安装环境、设计系统、写代码,到最后看它怎么自主找bug!
  5. 关卡五(实际应用场景):我们看看谷歌、微软、阿里这些大厂是怎么用AI Agent“拯救世界”(也就是测试他们的APP和游戏)的。
  6. 关卡六(工具和资源推荐):我们给你推荐一些“免费超级道具”(也就是开源工具和学习资源),让你自己也能变成“测试魔法师”!
  7. 关卡七(未来发展趋势与挑战):我们看看AI Agent未来会进化成什么样,还有哪些“大BOSS”(也就是技术挑战)需要我们去打败!
  8. 关卡八(总结与思考题):我们回顾一下这次冒险学到了什么,再给你留几个“课后作业”(也就是思考题),让你巩固一下!
  9. 关卡九(附录与扩展阅读):我们整理了一些“通关秘籍”(也就是常见问题解答和参考资料),让你在冒险中遇到困难时可以随时查阅!

1.4 术语表:先学会几个“魔法咒语缩写”,不然冒险会卡壳!

1.4.1 核心术语定义
  1. 软件测试:就像给新买的玩具汽车“试跑”一样,看看它能不能正常开、会不会撞墙、有没有零件掉下来,确保它能正常工作。
  2. 软件测试自动化:就像给玩具汽车装一个“自动驾驶仪”一样,让它自己反复试跑,不用人一直盯着。
  3. AI Agent(人工智能代理):就像一个“超级小助手”或者“自主探险者”,它有“大脑”(能思考)、“眼睛”(能感知环境)、“手脚”(能执行动作)、“记忆库”(能记住之前的事情),能自主完成任务,不用人一步一步指挥。
  4. LLM(大语言模型):就像一个“超级字典+百科全书+作文老师+对话伙伴”的组合体,它读了世界上几乎所有的文字资料,能听懂人话、能写文章、能回答问题、能推理,是AI Agent的“核心大脑”。
  5. 测试意图识别:就像听懂别人“想吃什么菜”的模糊要求一样,比如用户说“我想看看这个APP能不能保存我的照片”,AI Agent就能把它翻译成具体的测试步骤:“打开APP→点击拍照按钮→拍一张照片→点击保存按钮→退出APP→重新打开APP→查看相册→确认照片是否存在”。
  6. 自适应测试:就像玩游戏时根据关卡难度调整策略一样,比如AI Agent发现这个游戏的“第5关管道特别密”,它就会多测试几次第5关,甚至调整测试的“点击速度”“点击时机”。
  7. 自主探索测试:就像玩游戏时“不看攻略自己瞎逛”一样,AI Agent会自己点击APP的各种按钮、输入各种奇怪的文字、滑动各种屏幕,看看能不能发现“隐藏的bug”(也就是游戏攻略里没提到的“秘密通道”或者“陷阱”)。
1.4.2 相关概念解释
  1. Selenium:以前最常用的软件测试自动化工具之一,就像一个只会背“网页操作步骤”的机器人,每一步都得程序员写死。
  2. Appium:以前最常用的手机APP测试自动化工具之一,就像Selenium的“手机版弟弟”,也是只会背步骤。
  3. 强化学习(RL):就像训练小狗一样,AI Agent做对了动作就给它“奖励”(比如加分),做错了就给它“惩罚”(比如扣分),让它自己慢慢学会怎么完成任务。
  4. 计算机视觉(CV):就像AI Agent的“眼睛”,能让它看懂手机屏幕、电脑屏幕上的东西,比如“这个红色的按钮是‘拍照’”、“这个绿色的管道是‘障碍物’”。
  5. 自然语言处理(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写死步骤

你会怎么干?

  1. 你先手动玩几遍《Flappy Bird》,把每一步操作记下来:“打开游戏→点击开始按钮→在第1个管道前100毫秒点击屏幕→在第2个管道前120毫秒点击屏幕→……→直到游戏结束→记录分数”。
  2. 然后你用Appium(因为是手机游戏)把这些步骤写成代码,让机器人自己反复执行。
  3. 结果呢?
    • 如果游戏开发者稍微改了一下“开始按钮的位置”(比如从屏幕中间移到了屏幕下方),机器人就找不到按钮了,直接“罢工”!
    • 如果游戏开发者稍微改了一下“管道的间距”或者“管道的移动速度”,机器人之前记的“点击时机”就没用了,要么撞管道要么掉地上,根本玩不了几关!
    • 更糟糕的是,机器人只会按你写的步骤操作,根本不会“瞎逛”——比如它不会点击游戏右上角的“设置按钮”看看会不会闪退,不会输入奇怪的分数看看排行榜会不会崩溃,不会在游戏结束后连续点击“重新开始按钮”100次看看会不会卡死!
    • 你要花好几天甚至好几个星期写这些代码,改一点游戏就得改一遍代码,老板催得急,你加班加到脱发!
2.1.2 现在的做法:用AI Agent自主测试

现在有了AI Agent这个“超级小助手”,你会怎么干?

  1. 你只需要给AI Agent说一句话:“帮我测试一下这个《Flappy Bird》小游戏,看看有没有bug,最后给我写一份测试报告”。
  2. 然后你就可以去喝咖啡、摸鱼了!AI Agent会自己干所有的事情:
    • 它先“看”一下游戏屏幕(用计算机视觉),识别出“开始按钮”“设置按钮”“管道”“小鸟”“分数”这些元素。
    • 它先“玩”几遍游戏(用强化学习或者LLM推理),慢慢学会怎么玩才能得高分。
    • 它不仅会“正常玩游戏”,还会“瞎逛”——点击设置按钮、连续点击重新开始按钮100次、输入奇怪的分数(比如999999999)、在小鸟刚飞起来的时候就快速点击10次屏幕、在游戏结束前把手机倒过来(如果是重力感应游戏的话)!
    • 它发现bug后会“记录”下来(用记忆库),比如“连续点击重新开始按钮50次后游戏卡死了”、“输入分数999999999后排行榜显示负数”、“小鸟穿过管道的缝隙但还是被判撞墙了”!
    • 最后它会“写”一份测试报告(用LLM),报告里有bug的截图、复现步骤、严重程度、甚至还有修复建议!
  3. 你喝完咖啡回来,测试报告已经写好了!老板夸你效率高,你再也不用加班加到脱发了!

是不是很神奇?接下来我们就拆开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)的状态信息。根据被测系统的不同,感知模块可以分为:

  1. GUI感知模块:用于测试图形用户界面(比如电脑软件、手机APP、网页游戏),主要用到计算机视觉(CV)技术,比如OCR(光学字符识别,能识别屏幕上的文字)、目标检测(能识别屏幕上的元素,比如按钮、图片)、图像分割(能区分屏幕上的不同区域,比如游戏区域和设置区域)、光流法(能检测屏幕上元素的移动速度和方向)。
  2. API感知模块:用于测试应用程序编程接口(比如后端接口、微服务接口),主要用到API调用技术,能获取接口的响应状态码、响应时间、响应内容等信息。
  3. 日志感知模块:用于收集和分析被测系统的日志文件,能发现系统的异常行为(比如报错、崩溃、性能下降)。

2.2.3 核心概念三:AI Agent的“大脑决策中心”——推理与规划模块(Reasoning & Planning Module)

用《做饭》的例子解释:
推理与规划模块就像超级厨师长的“大脑前额叶”,它负责根据感知模块收集到的信息(比如冰箱里有没有肉丝、有没有胡萝卜)和用户的要求(比如我想吃一盘又酸又甜、不辣、少放糖的鱼香肉丝),制定详细的“做饭计划”(比如先把肉丝切成丝、再把胡萝卜切成丝、再把锅烧热、再放油、再放肉丝、再放胡萝卜丝、再放调料、最后出锅),还能根据做饭过程中的突发情况(比如油溅出来了、肉丝炒糊了)调整计划(比如赶紧把火关小、把糊的肉丝挑出来、再放一点新的肉丝)!

用《Flappy Bird》的例子解释:
推理与规划模块就像超级游戏玩家的“大脑前额叶”,它负责:

  1. 制定全局测试计划:比如先正常玩游戏熟悉操作(5次)、再测试边界情况(比如小鸟的最高飞行高度、最低飞行高度、管道的最小间距、最大间距)、再测试异常情况(比如连续点击重新开始按钮100次、输入奇怪的分数、在游戏结束前把手机倒过来)、最后测试性能情况(比如游戏的帧率、启动时间、内存占用)。
  2. 制定局部测试计划:比如在正常玩游戏时,根据感知模块收集到的小鸟飞行高度和管道位置,制定“点击时机”(比如在管道前100毫秒点击屏幕)。
  3. 调整计划:比如如果发现管道的移动速度变快了,就调整“点击时机”(比如提前到管道前150毫秒点击屏幕);如果发现连续点击重新开始按钮50次后游戏卡死了,就调整异常测试计划(比如再测试连续点击100次、200次、500次的情况)。
  4. 判断结果:比如根据感知模块收集到的信息,判断小鸟是不是撞墙了、游戏是不是结束了、有没有发现bug。

专业定义:
推理与规划模块是AI Agent的“核心决策单元”,它负责:

  1. 意图理解:把用户的自然语言要求(比如“帮我测试一下这个《Flappy Bird》小游戏”)翻译成具体的测试目标(比如“测试游戏的功能性、边界性、异常性、性能性”)。
  2. 全局规划:根据测试目标,制定详细的全局测试计划,包括测试用例的优先级、测试的顺序、测试的时间安排等。
  3. 局部规划:在执行测试的过程中,根据感知模块收集到的当前状态信息,制定下一步的动作(比如在《Flappy Bird》中点击屏幕、在APP中点击按钮、输入文字等)。
  4. 推理与判断:根据感知模块收集到的信息和之前的记忆,推理出被测系统的状态、判断有没有发现bug、判断测试用例是否通过。
  5. 计划调整:如果发现测试计划不合理或者遇到突发情况,就及时调整测试计划。

常见的推理与规划方法有:

  1. 基于规则的推理:比如以前的Selenium/Appium就是用的这种方法,每一步都得程序员写死规则。
  2. 基于LLM的推理:比如用GPT-4o的“思维链(Chain of Thought, CoT)”或者“思维树(Tree of Thought, ToT)”技术,让LLM像人一样一步一步思考问题。
  3. 基于强化学习的规划:比如训练一个强化学习模型,让AI Agent在测试过程中自己学习怎么完成任务。
  4. 混合推理与规划:比如把基于LLM的推理和基于强化学习的规划结合在一起,发挥两者的优势。

2.2.4 核心概念四:AI Agent的“手脚”——执行模块(Execution Module)

用《做饭》的例子解释:
执行模块就像超级厨师长的“手和脚”,它负责根据推理与规划模块制定的“做饭计划”,执行具体的动作:比如打开冰箱、拿出肉丝、拿出胡萝卜、把肉丝切成丝、把胡萝卜切成丝、把锅烧热、放油、放肉丝、放胡萝卜丝、放调料、最后出锅!

用《Flappy Bird》的例子解释:
执行模块就像超级游戏玩家的“手指”,它负责根据推理与规划模块制定的“局部测试计划”,执行具体的动作:比如打开游戏APP、点击开始按钮、点击屏幕让小鸟飞起来、点击设置按钮、输入文字到排行榜、连续点击重新开始按钮、关闭游戏APP!

专业定义:
执行模块是AI Agent的“输出接口”,它负责根据推理与规划模块制定的动作指令,对被测系统(SUT)执行具体的操作。根据被测系统的不同,执行模块可以分为:

  1. GUI执行模块:用于测试图形用户界面(比如电脑软件、手机APP、网页游戏),主要用到自动化测试工具的API,比如Selenium的WebDriver API、Appium的WebDriver API、Playwright的API、PyAutoGUI的API(能模拟鼠标和键盘的操作)。
  2. API执行模块:用于测试应用程序编程接口(比如后端接口、微服务接口),主要用到HTTP请求库,比如Python的requests库、Java的HttpClient库。
  3. 命令行执行模块:用于测试命令行工具或者操作系统,主要用到操作系统的命令行API,比如Python的subprocess库、Java的ProcessBuilder类。

2.2.5 核心概念五:AI Agent的“记忆库”——记忆模块(Memory Module)

用《做饭》的例子解释:
记忆模块就像超级厨师长的“笔记本”,它负责记录:

  1. 用户的要求:比如我想吃一盘又酸又甜、不辣、少放糖的鱼香肉丝。
  2. 之前做饭的经验:比如上次用鸡胸肉代替肉丝做鱼香肉丝味道也不错、上次把糖换成蜂蜜味道更好、上次炒肉丝的时候火太大容易糊。
  3. 这次做饭的过程:比如今天用了多少肉丝、多少胡萝卜、多少调料、炒了多长时间、味道怎么样。
  4. 遇到的突发情况:比如今天油溅出来了、今天的胡萝卜有点老。

用《Flappy Bird》的例子解释:
记忆模块就像超级游戏玩家的“游戏日记”,它负责记录:

  1. 用户的要求:比如帮我测试一下这个《Flappy Bird》小游戏,看看有没有bug,最后给我写一份测试报告。
  2. 之前玩游戏的经验:比如管道前100毫秒点击屏幕成功率最高、连续点击重新开始按钮50次后游戏容易卡死、输入分数999999999后排行榜容易显示负数。
  3. 这次测试的过程:比如今天正常玩了10次游戏,最高分数是50分;今天测试了边界情况,小鸟的最高飞行高度是540 100,最低飞行高度是540 1000;今天测试了异常情况,连续点击重新开始按钮100次后游戏卡死了,输入分数999999999后排行榜显示负数-100000000。
  4. 发现的bug:比如连续点击重新开始按钮50次后游戏卡死了、输入分数999999999后排行榜显示负数、小鸟穿过管道的缝隙但还是被判撞墙了,每个bug都有截图、复现步骤、严重程度。

专业定义:
记忆模块是AI Agent的“存储单元”,它负责存储和检索AI Agent在测试过程中需要的所有信息,比如用户的要求、测试目标、测试计划、之前的测试经验、当前的测试状态、发现的bug等。根据信息的存储时间和用途,记忆模块可以分为:

  1. 短期记忆(Short-Term Memory, STM):也叫“工作记忆”,负责存储AI Agent当前正在处理的信息,比如当前的测试状态、当前的局部测试计划、上一步执行的动作等,存储时间比较短,一般只有几分钟或者几个小时。常见的实现方式有:直接存储在内存中、用Redis等缓存数据库存储。
  2. 长期记忆(Long-Term Memory, LTM):负责存储AI Agent的长期经验和知识,比如用户的要求、测试目标、全局测试计划、之前的测试经验、发现的所有bug等,存储时间比较长,一般可以保存几天、几个月甚至几年。常见的实现方式有:用向量数据库(Vector Database)存储(比如Pinecone、Chroma、Milvus、FAISS),因为向量数据库可以存储文本、图像等非结构化数据的向量表示,方便AI Agent快速检索相关的信息;用关系型数据库(比如MySQL、PostgreSQL)存储结构化数据,比如bug的复现步骤、严重程度、发现时间等。
  3. 知识图谱(Knowledge Graph):也可以作为长期记忆的一部分,负责存储被测系统的结构信息、业务逻辑信息、测试用例之间的关系信息等,方便AI Agent进行更复杂的推理。

2.2.6 核心概念六:AI Agent的“翻译官+秘书”——交互与报告模块(Interaction & Reporting Module)

用《做饭》的例子解释:
交互与报告模块就像超级厨师长的“翻译官+秘书”,它负责:

  1. 和用户交互:比如听懂用户说的“我想吃一盘又酸又甜、不辣、少放糖的鱼香肉丝”这种模糊要求,比如用户中途说“多放一点醋”,它能及时把这个要求传达给推理与规划模块,比如做饭过程中遇到突发情况(比如没有肉丝了),它能及时问用户“冰箱里没有肉丝了,用鸡胸肉代替可以吗?”。
  2. 写报告:比如做完饭后,它能给用户写一份“做饭报告”,报告里有今天用了什么食材、用了多少调料、炒了多长时间、味道怎么样、遇到了什么突发情况、下次可以怎么改进。

用《Flappy Bird》的例子解释:
交互与报告模块就像超级游戏玩家的“翻译官+秘书”,它负责:

  1. 和用户交互:比如听懂用户说的“帮我测试一下这个《Flappy Bird》小游戏,看看有没有bug,最后给我写一份测试报告”这种模糊要求,比如用户中途说“多测试几次边界情况”,它能及时把这个要求传达给推理与规划模块,比如测试过程中遇到突发情况(比如游戏APP打不开了),它能及时问用户“游戏APP打不开了,要不要重启一下手机?”。
  2. 写报告:比如测试完后,它能给用户写一份“测试报告”,报告里有测试的时间、测试的范围、测试用例的执行情况(通过了多少个、失败了多少个、跳过了多少个)、发现的所有bug(每个bug都有截图、复现步骤、严重程度、优先级、甚至还有修复建议)、性能测试的结果(比如游戏的平均帧率是60fps、最低帧率是30fps、启动时间是2秒、内存占用是100MB)、测试的结论和建议。

专业定义:
交互与报告模块是AI Agent的“用户接口”,它负责:

  1. 自然语言交互:和用户进行自然语言的交流,比如接收用户的自然语言要求、回答用户的问题、向用户反馈测试的进度、向用户询问测试过程中遇到的问题。常见的实现方式有:聊天机器人(比如用OpenAI的GPT-4o API搭建的聊天机器人)、语音交互(比如用谷歌的Speech-to-Text和Text-to-Speech API搭建的语音交互系统)。
  2. 测试报告生成:根据记忆模块中存储的测试信息,生成一份结构化的、可读性强的测试报告,测试报告可以是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》的例子解释:
这是一个闭环反馈系统,就像人走路一样:

  1. 推理与规划模块(大脑决策中心)制定好下一步的动作计划(比如“向前走一步”)。
  2. 执行模块(手脚)执行这个动作(比如“向前走一步”)。
  3. 感知模块(眼睛)收集执行动作后的状态信息(比如“有没有走到障碍物前面”“有没有摔倒”)。
  4. 感知模块(眼睛)把这些状态信息传给记忆模块(记忆库)存储起来,同时传给推理与规划模块(大脑决策中心)。
  5. 推理与规划模块(大脑决策中心)根据这些状态信息和记忆模块(记忆库)中存储的之前的经验,判断动作执行的效果(比如“有没有成功走到目的地”“有没有发现bug”),然后制定下一步的动作计划(比如“如果没有走到障碍物前面,就继续向前走一步;如果走到了障碍物前面,就向左转一步”)。
  6. 重复这个过程,直到任务完成。

专业关系描述:
这是一个经典的Agent闭环(Agent Loop),也叫感知-决策-行动-反馈循环(Sense-Decide-Act-Feedback Loop),是AI Agent的核心工作流程:

  1. 感知(Sense):感知模块收集被测系统的当前状态信息,传给记忆模块存储,同时传给推理与规划模块。
  2. 决策(Decide):推理与规划模块根据当前状态信息和记忆模块中存储的之前的经验,制定下一步的动作计划。
  3. 行动(Act):执行模块根据动作计划,对被测系统执行具体的操作。
  4. 反馈(Feedback):感知模块再次收集被测系统的状态信息,传给记忆模块存储,同时传给推理与规划模块,推理与规划模块根据反馈信息判断动作执行的效果,调整下一步的动作计划。

这个闭环会一直重复,直到AI Agent完成测试任务。


2.3.5 概念一、五、六的关系:LLM、记忆模块、交互与报告模块——“大脑”“记忆库”“翻译官+秘书”的配合

用《Flappy Bird》的例子解释:

  1. 接收用户要求:交互与报告模块(翻译官+秘书)接收用户的自然语言要求,传给LLM(大脑),LLM(大脑)理解后,传给记忆模块(记忆库)存储起来。
  2. 向用户反馈进度:在测试过程中,记忆模块(记忆库)把测试的进度信息传给LLM(大脑),LLM(大脑)把它转换成自然语言,传给交互与报告模块(翻译官+秘书),交互与报告模块(翻译官+秘书)再反馈给用户。
  3. 向用户询问问题:如果测试过程中遇到突发情况(比如游戏APP打不开了),推理与规划模块(大脑决策中心)把这些信息传给记忆模块(记忆库)存储起来,同时传给LLM(大脑),LLM(大脑)把它转换成自然语言的问题,传给交互与报告模块(翻译官+秘书),交互与报告模块(翻译官+秘书)再问用户。
  4. 生成测试报告:测试完成后,记忆模块(记忆库)把所有的测试信息(比如测试的时间、测试的范围、测试用例的执行情况、发现的所有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图来表示:

提出要求/查看反馈/查看报告

传递要求/传递问题/接收反馈/接收报告草稿

存储要求/存储反馈/存储报告

传递意图/传递初步计划/辅助决策/调整计划

接收处理后的状态信息

存储推理结果/存储计划/检索信息

收集状态信息

传递当前状态信息

存储状态信息

传递动作指令

存储计划/存储判断结果/检索信息

执行操作

提供检索信息

提供检索信息

提供报告信息

USER

INTERACTION_REPORTING

LLM

MEMORY

REASONING_PLANNING

PERCEPTION

SUT

EXECUTION

ER图说明:

  1. USER(用户):和INTERACTION_REPORTING(交互与报告模块)是一对多的关系,一个用户可以提出多个要求、查看多个反馈、查看多个报告。
  2. INTERACTION_REPORTING(交互与报告模块)
    • 和LLM(大语言模型)是一对多的关系,一个交互与报告模块可以传递多个要求、多个问题,接收多个反馈、多个报告草稿。
    • 和MEMORY(记忆模块)是一对多的关系,一个交互与报告模块可以存储多个要求、多个反馈、多个报告。
  3. LLM(大语言模型)
    • 和REASONING_PLANNING(推理与规划模块)是一对多的关系,一个LLM可以传递多个意图、多个初步计划、辅助多个决策、调整多个计划。
    • 和PERCEPTION(感知模块)是一对多的关系,一个LLM可以接收多个处理后的状态信息。
    • 和MEMORY(记忆模块)是一对多的关系,一个LLM可以存储多个推理结果、多个计划,检索多个信息。
  4. PERCEPTION(感知模块)
    • 和SUT(被测系统)是一对多的关系,一个感知模块可以收集多个状态信息。
    • 和REASONING_PLANNING(推理与规划模块)是一对多的关系,一个感知模块可以传递多个当前状态信息。
    • 和MEMORY(记忆模块)是一对多的关系,一个感知模块可以存储多个状态信息。
  5. REASONING_PLANNING(推理与规划模块)
    • 和EXECUTION(执行模块)是一对多的关系,一个推理与规划模块可以传递多个动作指令。
    • 和MEMORY(记忆模块)是一对多的关系,一个推理与规划模块可以存储多个计划、多个判断结果,检索多个信息。
  6. EXECUTION(执行模块)
    • 和SUT
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐