基于知识库、LLM和智能体祝贺框架提供AI测试框架
图书P007页
TestPilot基于LLM生成测试的原理示意
图书P008页
以智能体为核心的全栈智能测试框架
图书P009页
关于数据层的介绍见附录
LLM在软件工程中各阶段提效数据
图书P010页
附录
1.Elasticsearch
Elasticsearch是一个开源的分布式搜索和分析引擎,擅长高速处理文本搜索、日志分析和AI数据检索等大规模数据场景,是Elastic Stack的核心组件。
它主要有以下三大能力:
- 全文搜索与分析引擎:核心基于倒排索引技术,能对海量文本进行快速检索和相关性评分(如BM25算法)。它还能进行实时聚合分析(如统计、分组),在日志监控和业务指标分析场景中很高效。
- AI时代的向量数据库:天然支持向量字段和混合搜索,可将文本、图片转化为向量进行语义匹配,能很好地支撑检索增强生成(RAG)应用,为AI模型提供私有数据上下文。
- 天生分布式架构:数据自动分片(Shard) 存储并创建副本(Replica),确保集群高可用、易扩展。通过RESTful API操作,学习门槛低,且支持PB级数据量。
这些能力使其能应用于多种场景:
- 应用与网站搜索:为电商、内容平台提供高相关性的精准或模糊搜索。
- 日志与安全分析:作为著名的ELK技术栈(Elasticsearch + Logstash + Kibana)核心,集中分析系统日志、排查故障、检测安全威胁。
- AI应用开发:作为向量数据库存储AI嵌入数据,构建RAG应用或推荐系统。
注:Elasticsearch基于Apache Lucene构建,经历开源协议变更后,目前从8.13版本起重新采用AGPL v3开源许可。
快速入门指引
如果你正准备上手,可以从这两步开始:
- 本地环境搭建:从官网下载安装包,解压后修改config/elasticsearch.yml配置文件(主要是cluster.name和node.name),然后运行./bin/elasticsearch启动节点。访问http://localhost:9200看到JSON响应即表示成功。
- 核心概念认知:理解几个关键概念有助于你快速上手:
- 索引(Index):相当于数据库中的“表”,是文档的集合。
- 文档(Document):JSON格式的数据单元,相当于“行记录”。
- 节点(Node):一个运行中的Elasticsearch实例,不同角色(主、数据、协调等)分工不同。
2.Redis
简单来说,Redis 就像一个极速的“万能工具箱”,数据都在内存里,因此速度飞快。它最擅长的不是复杂搜索,而是高速缓存和处理特定结构的数据。
核心定位:极速内存数据库
Redis 是一款开源的、基于内存的 NoSQL 数据库,常被用作缓存、消息队列和实时数据处理引擎。它的核心能力如下:
- 极致速度:所有数据都在内存中操作,读写延迟通常在微秒(百万分之一秒)级别,单实例每秒能处理超过10万次读写操作。官方测试中,其读写性能分别可达 81000/s 和 110000/s。
- 丰富的数据结构:与简单的 Key-Value 存储不同,Redis 支持多种强大结构,让开发非常灵活。
- 字符串 (String):缓存文本、数字、Session 令牌。
- 哈希 (Hash):存储对象,如用户信息、商品详情("字段-值"对的集合)。
- 列表(List):有序队列,用于消息队列、最新动态列表。
- 集合(Set):无序不重复集合,用于标签、统计独立访客。
- 有序集合(Sorted Set):按分数排序的集合,是排行榜、优先队列的不二之选。
- 进阶类型:还支持用于消息流的 Streams、原生 JSON 文档,甚至用于 AI 相似性搜索的 向量 (Vector) 类型。
典型应用场景
基于这些特性,Redis 在以下场景中几乎是标配:
- 缓存 (Cache):作为关系型数据库(如 MySQL)前的"挡箭牌",缓存热点数据,极大地提升系统响应速度。
- 会话存储 (Session Storage):在分布式系统中,统一存储用户登录状态,实现多台服务器间的会话共享。
- 排行榜/计数器 (Leaderboards/Counters):利用其原子操作,轻松实现实时更新的游戏排行榜、文章点赞数。
- 消息队列与发布/订阅 (Message Queue & Pub/Sub):作为轻量级的消息中间件,处理异步任务(如发邮件)或实现实时通知。
- AI 应用与向量搜索:作为 AI 应用的内存数据层,存储和检索向量嵌入,支撑检索增强生成(RAG)、语义缓存等,是新一代 AI 应用的关键组件
快速入门小贴士
- 环境搭建:从 Redis 官网 下载安装包(Linux/macOS),解压后使用 make 编译,然后运行 src/redis-server 启动服务。用 src/redis-cli 客户端连接即可操作。
- 核心概念:Redis 以 Key-Value 形式存储,Key 是字符串,Value 可以是上述多种数据结构。没有"表"的概念,数据模型非常灵活。
3)MongoDB
MongoDB 是一个通用的文档型数据库,可以看作是现代应用中传统关系型数据库(如 MySQL)的一个灵活替代品。和你之前问的 Redis、Elasticsearch 相比,它的定位是核心业务数据的存储与处理。
核心定位:灵活的通用数据库
MongoDB 的核心能力可以用三个关键词概括:
- 文档模型,开发灵活:它将数据存储为类似 JSON 的文档(BSON格式),结构自由,可以嵌套。这种模型能很自然地映射到编程语言中的对象,减少了复杂的数据转换工作。比如一个用户及其地址、爱好可以存在一起:
{
"name":"张三",
"address":{"city":"上海","street":"南京路"},
"hobbies":["阅读","编程"]
}
这种灵活性意味着可以随时增减字段,非常适合需求频繁变化的敏捷开发。
- 功能完备,场景通用:它不仅是一个简单的存储,还提供了现代应用所需的丰富功能。
- 事务支持:支持多文档的 ACID(原子性、一致性、隔离性、持久性)事务,保证了数据的一致性。
- 丰富查询:内置强大的查询API,支持地理空间、文本搜索,甚至在云服务中集成了向量搜索,可用于AI应用。
- 高性能:通过索引和嵌入数据模型,提供了高性能的数据读写能力。
- 水平扩展,高可用:MongoDB 原生支持水平扩展。
- 分片 (Sharding):能将数据自动分布到多台机器上,支撑海量数据和高吞吐量。
- 副本集 (Replica Set):提供自动故障转移和数据冗余,保证了服务的高可用性。
典型应用场景
由于它兼顾了灵活性与功能性,MongoDB 的应用场景非常广泛:
- 内容管理 (CMS) 与电商:存储文章、商品、订单等半结构化数据,嵌套文档能很好地对现实中的复杂关系建模,减少关联查询,提升性能。
- 物联网 (IoT) 数据:面对海量、格式多变的设备数据,MongoDB 的动态 Schema 和分片集群能轻松应对。
- 游戏与敏捷创业:玩家属性、道具等数据结构差异大且常变化,MongoDB 的灵活性可快速迭代。许多从0到1的创业项目也会用它来降低前期架构成本。
4)BOS
百度智能云对象存储 (Baidu Object Storage):这是一款稳定、安全、高效、高可拓展的云存储服务,支持标准、低频、冷和归档存储等多种存储类型,满足多场景的存储需求。
核心功能:用户可以将任意数量和形式的非结构化数据存入 BOS,并对数据进行管理和处理,提供静态资源的存储和分发能力。
计费模式:属于后付费业务,新用户首次使用时需要完成实名认证并开通服务,未使用前不会进行任何计费。