
AI系统的测试入门与实践-《大模型测试技术与实践》续写
文章平均质量分 69
《大模型测试技术与实践》出版期间,我亲眼见证了大模型技术的飞速突破。基础模型能力突飞猛进,LLM应用蓬勃发展,MCP、A2A、AG_UI等协议日益丰富。这些前沿进展让我深感振奋!出版后,我决定在专栏中继续补充书中未尽的内容,与大家分享最新洞见,力求让这门技术的精髓更生动、更接地气地传递给每一位读者!
质问
前京东测试架构师、阿里云MVP、华为云MVP、中国商业联合会互联网应用工作委员会智库专家、中关村智联软件服务业质量创新联盟软件测试标准化技术委员会委员、极*客时间命题专家,极*客时间《接口测试入门课》作者、《接口测试方法论》《持续测试》《京东质量团队转型实践》《软件研发效能权威指南》《现代软件测试技术》等书作者、拉钩教育《软件测试第一课》作者,《软件质量白皮书》、《测试敏捷化白皮书》、《DB51T1998-2015移动智能终端应用软件(APP)产品通用技术要求及测试规范》主编或者编委、多次受邀参与TID、NCTS、MAD、MPD、TICA、DevOpsDys等技术峰会以及参出品人。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
QAGenerationChain从知识库生成大模型应用测试的问题对
针对中文 QA 对检查高度相似的重复问题,需要考虑中文的语言特性,例如分词和语义相似度计算。那么在检查过程中往往是一次走查完成每个问题对如上三个方面的检查,如果在检查过程中发现有问题和对应chunk文本内容不相关、答案包含了不准确或者幻觉、表达描述模糊,那么都要通过调整模型、模型参数、提示词后进行重新生成,或者人工加工修改上述问题后才可以使用。对于生成的问题并不是每次生产的都是可以使用的,对内容也是需要验证的,再评价生成的问题对的时候一般从问题相关性、答案的准确性和语义完整性三个方面进行一下评价。原创 2025-08-08 17:19:41 · 33 阅读 · 0 评论 -
query改写:大模型应用测试离不开的实践
queryrewrite是一个Python库,提供多种查询改写方法(LLM改写、词汇表改写、同义词改写)和验证机制(ROUGE-L/BLEU验证、帕累托最优等),用于快速扩充测试数据并保持语义一致性。该项目特别优化了对中文文本的处理,支持与多种LLM(如OpenAI)集成,并可通过扩展接口添加新的LLM支持。安装方式包括pip直接安装或源码安装,适用于需要丰富测试数据或提升搜索系统性能的场景。原创 2025-08-06 11:28:50 · 38 阅读 · 0 评论 -
BLEU Score详解和代码实现
计算机器翻译输出(候选翻译)中与参考翻译匹配的 n-gram 的比例。对于不同阶数的 n-gram(通常取 1-gram 到 4-gram),计算如下:统计候选翻译中每个 n-gram 出现的次数。对于每个 n-gram,检查参考翻译中该 n-gram 的最大出现次数(以防止过度匹配)。计算匹配的 n-gram 数量,除以候选翻译中总的 n-gram 数量,得到该阶 n-gram 的精确度 Pn P_n Pn。多参考翻译。原创 2025-08-01 14:39:22 · 47 阅读 · 0 评论 -
ROUGE详解和代码实现
ROUGE-1重点用来覆盖内容覆盖,ROUGE-2重点评价流畅性。,ROUGE-L重点评价结构相似性。ROUGE并不会评价语义,因此还是需要人工评价或者引入其他的评价方法。最终结果非常受参考文本的影响,在复杂任务重需要对每个问题设计多个参考文本,来保障结果的可靠性。原创 2025-08-01 09:48:05 · 32 阅读 · 0 评论 -
大模型评测指标:ROUGE详解和代码实现
ROUGE-1重点用来覆盖内容覆盖,ROUGE-2重点评价流畅性。,ROUGE-L重点评价结构相似性。ROUGE并不会评价语义,因此还是需要人工评价或者引入其他的评价方法。最终结果非常受参考文本的影响,在复杂任务重需要对每个问题设计多个参考文本,来保障结果的可靠性。原创 2025-07-31 15:34:45 · 40 阅读 · 0 评论 -
Chat、Agent和Workflow以及相关测试的思考
Chat、Agent 和 Workflow 各有侧重,长期共存,满足不同的 LLM 使用需求;测试设计需要针对具体类型定制方案,聚焦业务需求而非泛化指标。如果在实际工作中需要进一步细化测试方案,可以考虑引入A/B 测试(对比不同模型或配置的性能)、用户反馈循环(收集真实用户交互数据)和错误分析(针对失败案例深入分析原因)。原创 2025-07-30 09:35:09 · 178 阅读 · 0 评论 -
AI赋能软件工程让测试左移更加可实施
测试工程师还积极参与开发工作,与开发团队协作优化AI生成代码的System Prompt及针对具体业务需求的User Prompt,从而显著提升生成代码的质量。测试工程师的独特优势在于其全局的业务视角、对系统逻辑与流程的全面理解,以及专业的测试分析与问题诊断能力。这些挑战推动测试工程师探索新实践,如制定AI代码质量标准、开发自动化测试工具,以及与开发团队协作完善AI生成代码的验证流程,从而在AI赋能的时代保障软件质量。然而,AI在代码生成中的广泛应用也对软件质量带来新的挑战与机遇。原创 2025-07-24 15:53:04 · 175 阅读 · 0 评论 -
LLM评测框架Ragas:通用指标和其他一些任务指标(解决了Ollama推理框架不支持的问题)
Aspect Critic(纬度批评)可用于以自由形式的自然语言对基于预定义方面的回复进行评价。结果是和预期是否一致的一个0或者1的结果。输出是0。简单来说,它就像一个针对特定标准的“对错”评判工具。下面是代码的计算过程如下:● 第一步:定义好的批评 prompt ,会问大模型询问三次“该回答是否对个人、群体或整个社会造成或可能造成危害?”,然后收集三次llm的反馈结果。○ 判断1:是○ 判断2:否○ 判断3:是● 第二步多数投票,最终结果由三次判断的多数决定。原创 2025-07-22 15:54:52 · 53 阅读 · 0 评论 -
LLM评测框架Ragas:SQL指标(解决了Ollama推理框架不支持的问题)
SQL类的度量指标是指运行SQL后的结果和预期之间的一个度量值。原创 2025-07-22 15:49:43 · 74 阅读 · 0 评论 -
LLM评测框架Ragas:Natural Language Comparison指标(解决了Ollama推理框架不支持的问题)
Factural Correctness是事实正确性是评价LLM生成的反馈和reference的事实正确性。该指标用于确定生成的响应与参考文献的一致程度。Factural Correctness取值在0到1之间,越接近于1结果越好。为了衡量回应和参考文献之间的一致性,该指标使用 LLM 首先将response和reference分解为claims(主张),然后使用自然语言推理确定回应和参考文献之间的事实重叠。原创 2025-07-22 15:46:20 · 188 阅读 · 0 评论 -
LLM评测框架Ragas Agents or Tool Use Cases指标(解决了Ollama推理框架不支持的问题)
代理或工具使用工作流程可以从多个维度进行评估。以下是一些可用于评估代理或工具在特定任务中的性能的指标。原创 2025-07-22 15:40:49 · 45 阅读 · 0 评论 -
LLM的测试框架Ragas中Nvidia指标详解(可运行代码+Ollama支持)
这个指标通过两个相互独立的“LLM-as-a-judge”的提示词完成评价,每个“LLM-as-a-judge”的提示词给出一个(0,1,2)一个数的评分结果。Answer Accuracy是通过两个不同的“LLM-as-a-judge”的prompt完成,每一个“LLM-as-a-judge”的prompt都会返回(0,2,4)中一个数的结果。Faithfulness: 该指标衡量的是回复与检索到的上下文在事实方面的一致性,确保回复中的每项主张都有所提供信息的支持。如2.2.3.1中代码中的例子。原创 2025-07-18 17:08:15 · 55 阅读 · 0 评论 -
LLM评测框架Ragas:RAG测试用例集的构造(Ragas的用法)
当一群用户与 RAG 系统交互时,他们可能会根据自己的角色(如高级工程师、初级工程师等)、查询长度(短、长等)、查询风格(正式、非正式等)以不同的方式提出查询。当用户群与 RAG 系统交互时,他们可能会根据自己的角色(如高级工程师、初级工程师等)、查询长度(短、长等)、查询风格(正式、非正式等)以不同的方式提出查询。不同查询的需要综合不同上下文内容,Ragas使用了知识图谱解决了从不同文档的chunk、不同文档中生成测试用查询的测试用例集合的问题。完成了每个node的信息提取后,就可以建立节点间的关系了。原创 2025-07-16 15:32:17 · 190 阅读 · 0 评论 -
LLM评测框架Ragas:Ragas的核心概念Evaluation
Evaluation Dataset中的样本是SingleTurnSample或者MultiSample的集合,每一个Sample都代表了一个唯一的交互场景。并且在一个Dataset中的所有Samples都应该有相同的类型(要么都是SingleTurnSample,要么都是MultiSample),这样才能保证评价过程的一致性。在MultiTurnSample里面的user_input是一个了列表,存储了上面多轮交互中的用户输入的消息。比较适合在成对出现的问答方式的大模型应用中进行评价。原创 2025-07-09 16:23:15 · 186 阅读 · 0 评论 -
LLM评测框架Ragas:Ragas的Prompt Object
Prompt在Ragas中被用在各种指标、合成数据生成任务中。同时也为提供了替换各种自动以提示词的方式。Ragas提供了如下几种Prompt Objects。原创 2025-07-09 16:20:38 · 123 阅读 · 0 评论 -
LLM评测框架Ragas:测试RAG的性能出现TimeoutError()的解决办法(Ragas+langchain+ollama)
无奈之下,自己找到了一个解决办法,在ragas支持的llm类库中加了一个如下的类,支持ollama、langchian_ollama使用ragas测试报错的问题。可以将如上的库放到你的ragas的系统库的llms目录下,然后修改__init__.py如下。最近用ragas测试rag的性能,发现老出现TimeoutError()的错误。这是一个临时的解决办法,具体等待官方给出最终的解决方案。后来发现官方也没有尽快支持的计划。然后就可以用如下代码进行一些验证。原创 2025-06-18 18:05:29 · 144 阅读 · 0 评论 -
开发MCP Server的Agent:从任何一个api自动转成stdio模式的MCP Server
【代码】MCP Server开发的Agent:从任何一个api自动转成stdio模式的MCP Server。原创 2025-06-06 15:24:13 · 94 阅读 · 0 评论 -
BleuScore性能指标的介绍以及测试代码实现(langchain+ollama+qwen3+ragas)
BleuScore:BleuScore 是一种自动化的文本相似度评估指标,主要用于衡量机器生成文本与人工参考文本之间的 n-gram 重合程度,分数越高表示越接近参考答案。BleuScore(全称:Bilingual Evaluation Understudy Score,简称 BLEU 分数)是一种常用于评估机器翻译、文本摘要等自然语言生成任务输出质量的自动化指标。原创 2025-06-04 10:51:49 · 598 阅读 · 0 评论 -
父文档检索器引和RAG的context precision性能指标
但是由于父文档检索器的特殊性,父文档检索器通过检索小片段(child chunks)来确保嵌入的精确性(因为小片段的嵌入更能反映具体含义),然后返回对应的父文档以提供更广泛的上下文。上下文精度会通过加权机制惩罚这些情况。它的特别之处在于,它会先把文档分成小块(子片段),然后找到最相关的小块,再返回这些小块所属的完整大文档(父文档)。在使用父文档检索器时候,在查看context precision时会出现结果很低的情况,这并不能说是父文档检索器的性能不好,这其实是父文档检索器这个技术的本质导致的。原创 2025-06-03 17:47:21 · 198 阅读 · 0 评论 -
Rerank的评测
上图来自llamaindex项目团队的一个对比测试(https://www.llamaindex.ai/blog/boosting-rag-picking-the-best-embedding-reranker-models-42d079022e83)平均倒数排名(MRR):对于每个查询,MRR通过查看排名最高的相关文档的排名来评估系统的准确性。具体来说,它是所有查询中这些秩的倒数的平均值。如果发现是相似度算法的问题,那么可以增大top-k,然后引入更精确的算法进行rerank。原创 2025-05-30 13:55:39 · 331 阅读 · 0 评论 -
RAG中的chunk以及评测方法
分块(chunking)是将大块文本分解成小段的过程。chunk的主要原因是尽量减少我们Embedding内容的噪音,所以为知识库中的文档找到最为合适的chunk大小,非常影响后续查找的准确性和相关性。原创 2025-05-30 15:20:59 · 164 阅读 · 0 评论 -
MCP协议的核心机制和交互过程
stdio 传输用于本地通信,即客户端和服务器在同一台机器上运行,主机应用程序将服务器作为子进程启动,并通过向其标准输入(stdin)写入和从其标准输出(stdout)读出的方式与之通信。SSE也是HTTP和SSE,是远程传输的MCP,因此MCP的Client和Server可以在不同的机器上运行。最近的MCP的更新“streamable http”方式,允许servers在需要时动态升级SSE到streamable http的方式,从而提供了更大的灵活性。不需要回应的单向信息。原创 2025-05-16 21:27:11 · 198 阅读 · 0 评论 -
使用unsloth对Qwen3在本地进行微调
本文介绍了如何在本地使用unsloth和huggingface对Qwen3-14B模型进行微调。首先,通过unsloth加载模型,并配置LoRA进行微调,指定了低秩矩阵和微调层等参数。接着,加载了两种数据集:包含推理的OpenMathReasoning-mini和不包含推理的FineTome-100k,并对数据进行了预处理。然后,使用SFTTrainer配置训练参数,如学习率、批量大小等,并启动训练过程。随着训练损失的减小,模型逐渐优化。最后,微调后的模型可用于测试。整个过程展示了从模型加载、数据准备到训练原创 2025-05-16 11:27:26 · 208 阅读 · 0 评论 -
Agentic Pattern :Planning Pattern (基于Ollama、langchain、qwen3的代码实现)
负责规划的 LLM 会将复杂的任务分解成一个动态的子任务列表,然后委托给专门的工作agents(通常使用工具使用)来执行。这种模式试图通过创建初始计划来解决需要多步骤推理的复杂问题。一个 “协调器 ”或 “合成器 ”LLM 会收集来自 “工人 ”的结果,反思总体目标是否已经实现,然后合成最终输出,或在必要时启动重新规划步骤。这就减少了任何一次 LLM 调用的认知负荷,提高了推理质量,最大限度地减少了错误,并允许对工作流程进行动态调整。与路由的主要区别在于,规划器生成的是多步骤计划,而不是选择单一的下一步。原创 2025-05-14 10:22:59 · 81 阅读 · 0 评论 -
Agentic Pattern :Reflection(基于Ollama、langchain、qwen3的代码实现)
这是一个agent的模式,agent会对自己的输出进行评估,并利用反馈不断改进自己的响应。这种模式也被称为 “Evaluator-Optimizer”,并使用自我修正循环。然后,第二个 LLM 步骤(甚至是具有不同提示的同一 LLM)充当反思者或评估者,根据要求或期望质量对初始输出进行批判。这种批评(反馈)会被反馈回去,促使 LLM 产生改进后的输出。如此循环往复,直到评估者确认要求得到满足或实现了令人满意的输出。如下是一个基于Ollama、langchain、qwen3的代码实现例子。原创 2025-05-14 10:18:18 · 66 阅读 · 0 评论 -
Agentic Pattern :Parallelization(基于Ollama、langchain、qwen3的代码实现)
这个是一个workflow的Agent 模式,一个任务被分解成多个独立的子任务,由多个 LLM 同时处理,并将其输出汇总。这种模式使用了任务并发功能。所有分支完成后,它们的单独结果会被收集起来并传递给最后的聚合 LLM,后者会将它们合成为最终响应。如果子任务之间不相互依赖,这就能改善延迟,或通过多数表决或生成不同选项等技术提高质量。参考https://www.philschmid.de/agentic-pattern?如下是一个基于Ollama、langchain、qwen3的代码实现例子。原创 2025-05-14 10:15:28 · 780 阅读 · 0 评论 -
Agentic Pattern :Routing(基于Ollama、langchain、qwen3的代码实现)
这个是一个workflow的Agent 模式,有一个 LLM 充当路由器,对用户输入进行分类,并将其导向最合适的专门任务或 LLM。这种模式实现了关注点的分离,可以单独优化各个下游任务(使用专门的提示、不同的模型或特定的工具)。它通过对较简单的任务使用较小的模型来提高效率,并有可能降低成本。当任务被路由时,选定的代理将 “接管 ”完成任务的责任。参考https://www.philschmid.de/agentic-pattern?如下是一个基于Ollama、langchain、qwen3的代码实现例子。原创 2025-05-14 10:12:13 · 188 阅读 · 0 评论 -
Agentic Pattern :Prompt Chaining(基于Ollama、langchain、qwen3的代码实现)
这个是一个workflow的Agente 模式,一个 LLM 调用的输出依次进入下一个 LLM 调用的输入。这种模式将任务分解为一系列固定的步骤。每一步都由一个 LLM 调用处理前一步LLM处理的输出。这种模式适用于可清晰分解为可预测的顺序子任务的任务。如下是一个基于Ollama、langchain、qwen3的代码实现例子。原创 2025-05-13 18:04:48 · 66 阅读 · 0 评论 -
一些模型测试中的BUG和可能解决方法
如下顺序也是排查优先级。原创 2025-05-09 18:02:59 · 341 阅读 · 0 评论 -
LLM 采样参数超详细解释
temperature控制输出文本的随机性和创造性,通过调整模型预测的概率分布。通过缩放模型输出的logits(未归一化的概率)来改变softmax函数的概率分布。temperature设置越低(大概0.1到0.5),越能得到确定性的预测,temperature设置较高高(大于1.0),越不能得到确定性的预测。temperature的Greedy Decode是0,永远选择概率最高的预测,但是这并不是说设置0就是永远输出相同的预测,最高概率的预测有可能不止一个。原创 2025-05-09 17:25:00 · 241 阅读 · 0 评论 -
LoRA微调的一些术语:“q_proj“, “k_proj“, “v_proj“, “o_proj“, “gate_proj“, “up_proj“, “down_proj“
列“q_proj”、“k_proj”、“v_proj”、“o_proj”、“gate_proj”、“up_proj”、“down_proj”指的是使用LoRA进行微调涉及到的一些components(或者projections)。原创 2025-05-08 10:56:27 · 239 阅读 · 0 评论 -
LLM的min_p 参数详
Min-p是一种基于截断的随机解码方法,它试图通过引入动态阈值p来解决top-p采样的某些局限性。pmaxmaxv∈VPxtv∣x1xt−1pscaledpbase∗pmaxpmaxpscaledv∈VmaxPxtv∣x1xt−1pbase∗pmax在生成文本时,模型会为每个可能的 token 计算一个概率分布。原创 2025-05-06 16:11:32 · 151 阅读 · 0 评论 -
每一个LLM的使用者都应该能了解的超参详细说明和推荐配置
LLM的Hyper Parameters是一种配置项,可以使用它们来影响或控制训练 LLM 的过程。原创 2025-04-21 15:22:10 · 138 阅读 · 0 评论 -
通过java 代码的生成接口测试jmeter的脚本
【代码】通过java 的生成接口测试jmeter的脚步。原创 2025-04-20 14:43:20 · 89 阅读 · 0 评论 -
大模型格式化输出的几种方法
在开发一些和LLM相关的应用的时候,如何从大模型的反馈中拿到结构化的输出数据是非常重要的,那么本文就记录几种常用的方法。原创 2025-04-08 15:36:24 · 570 阅读 · 0 评论 -
兼容性测试设计提示词
【代码】兼容性测试设计提示词。原创 2025-04-07 11:06:20 · 85 阅读 · 0 评论 -
直接从SUT的源代码生成JMeter测试脚本的提示词
【代码】直接从SUT的源代码生成JMeter测试脚本的提示词。原创 2025-04-03 15:35:54 · 88 阅读 · 0 评论 -
测试用例生成的Prompt
根据需求生成测试用例提示词原创 2025-03-14 11:00:27 · 912 阅读 · 0 评论 -
Python开发MCP Client
全部例子只是MCP Client访问MCP Server的过程,那么这样其实就失去了MCP协议的创建的初衷,和大模型集成后才能发挥MCP最大的作用。原创 2025-03-04 13:59:58 · 2254 阅读 · 0 评论 -
Python的MCP Server开发实战
这是一个入门级的教程主要讲解一下MCP Server的开发,主要是用官网的例子以及MCP Python SDK。原创 2025-03-03 13:40:19 · 4707 阅读 · 0 评论