阿里开发者

其他

别再误会MCP了!一篇写给AI工程师的硬核“辟谣”指南

前言:直面误解,回归工程虽然之前对于MCP有过一次调研,但是最近上手在做一些MCP的工程实践的过程中,确实发现还是有很多误解。我翻阅了许多技术文章,以及协同沟通的时候发现,往往大家天然的将MCP简单地视为一种“更高级”或“可跨模型”的Function
2025年9月15日
其他

从“代码补全”到“知识对齐”:Qoder Repo Wiki 迎来重磅升级

在《人月神话》中所指出的,包括复杂性、一致性、易变性和不可见性。软件的抽象本质使得它难以显性化。这导致组织间的知识对齐困难、知识传承困难、技术债务积累,影响协作。更值得注意的是,在
2025年9月12日
其他

大模型可观测1-5-10:发现、定位、恢复的三层能力建设

阿里妹导读本文通过丰富的代码Demo和截图为读者提供了可落地的实践指南。背景大模型技术近年快速发展,在各行业均有广泛落地。随着大模型应用的开发与上线,如何构建其端到端可观测体系成为越来越重要的问题。本文基于百炼及相关云产品的能力,结合本人在服务政企客户过程中了解的大模型应用可观测方面的最佳实践,帮助阿里云客户构建大模型应用的可观测能力。为方便理解,本文还会在每个环节附带一些demo。整体框架大模型应用的可观测方案,是传统应用可观测方案结合大模型应用特点的进一步扩展。本文仅对大模型应用在可观测领域有区别于传统应用可观测方案的部分进行介绍。结合阿里巴巴在可观测1-5-10的技术体系,大模型应用的可观测方案整体框架如下:核心指标大模型应用的可观测指标,主要分可用性、性能和业务反馈三大类,主要有:针对其中可能有疑惑的解释如下:资源水位:和关注数据库的CPU利用率一样,使用大模型也需要关注限流指标QPM和Token的使用率。目前百炼还不支持基于QPM/Token使用率进行告警,所以需要用户在日志中打印使用率指标后进行实时统计,当水位信息接近流控阈值时及时进行限流或联系阿里云进行扩容,避免业务受损。分析维度(应用、功能模块):打印应用、功能模块是因为在实际场景中,经常会在多个应用或同一个应用内多个模块使用同一个阿里云账号的情况。当此时出现问题时,从阿里云的视角无法快速区分是哪个应用或模块的问题。分析维度(模型、工作空间):针对具体的云账号,目前百炼支持模型+工作空间维度的限流管控。用户差评率:类似电商关注交易下单数、交易成功率等指标一样,某些业务指标也可以从侧面反馈系统是否出现问题。而大模型应用如果有实时收集用户的反馈,则可以通过差评率体现用户体验是否受损。发现(1)大模型的可观测领域的发现能力,目前主要还是聚焦在监控告警方面。根据侧重点以及建设方,可以分为业务监控和云产品监控:1.
2025年9月12日
其他

多智能体自主规划模式性能提升:五大精准策略详解

//这里是直接把functionCall的Tools列表转string做替换即可返回本次需要调用的工具理由及工具名和工具入参,每次只提供一个操作,**工具名及工具入参必须遵循以下格式**工具名
2025年9月9日
其他

从 Prompt 到 Context:基于 1400+ 论文的 Context Engineering 系统综述

来满足用户需求,并且要考虑成本、性能、复用性、扩展性。招聘软件开发人员时,往往面试的不限于软件开发的语言,有相当一部分的内容为操作系统原理。记得很早之前,自己的一次面试,自己回答的不好的一个问题
2025年9月4日
其他

RAG效果不佳?先别急着微调模型,这几个关键节点才是优化重点

QdrantClient(path="/Users/jiangdanyang/workspaces/python/MarioPython/src/RAG/dataset/qdrant_data")#
2025年9月1日
其他

从需求到研发全自动:如何基于Multi-Agent架构打造AI前端工程师

阿里妹导读本文深入阐述了蚂蚁消金前端团队打造的Multi-Agent智能体平台——“天工万象”的技术实践与核心思考。2023年AutoGPT的出现标志着Agent进入了一个新的阶段,它结合了当时的GPT3.5和GPT4.0,能够完成复杂的项目任务,彼时受到基座模型能力的限制,它更多时候还只是一个“新奇的玩具”,但是随着这两年模型能力的上升、上下文token限制的增长。尤其在今年3.6日Manus出现后,我们突然发现原来Agent具备的自主决策和工具调用能力已经实现了一个极大的跃迁。诚如Manus团队所言:“如果模型进步是上涨的潮水,我们希望Manus成为那条船”。于是蚂蚁消金前端团队立项了天工万象,希望驱使AI最前沿的技术去贴合业务,去解决那些我们实际遇到的业务问题,比如前端效能问题,比如数据分析问题。我们也希望通过天工万象这个平台去探索未来的产品交互形态。真正实现一个在业务团队语义下的能够处理不同事务的数字员工。天工万象是一款Multi-Agent架构的智能体,底层基于Langgraph实现,每个子
2025年8月22日
其他

构建可靠AI Agent:从提示词、工作流到知识库的实战指南

尽量保证示例覆盖全面;examples可以先只设置成Q&A形式,若效果不好,可以添加过程解释,但尽量不要使用自然语言描述过程,因为自然语言的描述很可能不符合指定的workflow,造成歧义。2.3.
2025年8月15日
其他

PolarDB Supabase Edge Functions - 让函数,随时可用

Supabase:打破两难,兼顾功能完整与企业级控制力我们深知企业客户的需求:既要现代化的开发体验,又要对资源、数据和系统拥有更强的控制力。因此,PolarDB
2025年8月12日
其他

基于大模型的领域场景开发:从单智能体到多智能体的React框架设计与实现

背景基于大模型的领域场景开发,说到底无非是借助基座模型对语义的理解推理能力,将通用AI变为专有AI工具的过程。但仅仅只做模型调用,来实现复杂类需求,对生产力的提升并没有太大帮助。因此在围绕提升研发生产力的过程,从大模型问世到现在,卷出了各种大模型工程规范。从最早的提示词工程到RAG,再到流程编排模式,每个阶段无疑都是对研发生产力的不断提升。当然我们团队也经历了这些阶段,我们最先基于饿了么钉钉文档,开发了一套完备的RAG+角色扮演平台,此后又并行推出了拥有三十多项大模型指令的饿了么一键办事机器人——小e,和集成流程编排到平台能力中,为适配多端透出和支持丰富渲染,开发了问答助手分身及问答卡片搭建功能。感兴趣可以在文章最后介绍中体验。至此也基本能满足大多数AI需求场景的低代码搭建。但随着多智能体架构对复杂场景的支持越来越灵活,近期我们也在设计架构升级。参考了一些主流平台中工具与agent间的分发及调用,针对我们平台当前的用户体量及后续支撑的一些场景,分析层级指挥和自由协作两种模式的利弊,选用层级指挥模式作为React框架。初步实现了单智能体对工具调用的反思规划,后边迭代利用此框架再将智能体抽象为工具调用,实现多智能体间的相互协作。先上结果:1.对用户提问自主规划,比流程编排模式更加灵活。2.单智能体更丰富的工具体系,自主选择工具调用,摆脱传统prompt工程参数解析、意图识别等coding或节点配置过程。ToolCalls+MCP实现React模式什么是React对于React,大家都有自己的理解。本文主要介绍我们是如何实现React框架,关于智能体React模式简单仅做个人简单的一些理解。1.首先LLM需要不断和环境作出反馈和判断,制定下一步的执行策略。这里的环境即工具列表、对话上下文、一些系统变量。2.上图可以看出,核心还是接收反馈后采用什么方式决策?以及和环境之间通信的上下文如何管理。因此关于决策方式和上下文管理大家都卷出了各种玩法:决策方式1.类manuas方式,使用PlanningAgent:负责规划;Controller
2025年8月4日
其他

150%训练效率提升:感知检测小模型训练优化方法

阿里妹导读本文章基于业务实践,总结有关感知检测小模型在不同算力卡上的训练方法,为有智能驾驶的场景提供可行的借鉴方法。一、背景在智能驾驶技术快速发展的背景下,车辆对周围环境的实时感知和决策能力成为系统性能的关键。目标检测、语义分割、多传感器融合等任务构成了智能驾驶系统的核心感知模块,这些算法通常依赖于大规模深度学习模型的训练与部署。随着自动驾驶等级从L2向L3乃至L4演进,模型复杂度和数据量呈指数级增长,这对计算平台提出了更高的要求,尤其是在算力、内存带宽、并行处理能力和能效比等方面。
2025年7月24日
其他

AI写代码的“上下文陷阱”:为什么AI总是写错?如何系统性解决?

一、如何充分使用模型能力关键要点:完整+精确+聚焦的上下文是充分使用模型能力的关键。在这个认知之下思考如何系统性的构建满足这个条件的上下文?合理的任务分解:本质上是在有限上下文宽度和注意力的约束下,怎么恰当的把握任务的复杂度边界,让模型能够在一个聚焦的任务上作业。完整的背景信息:在一个真实的项目中写代码,需要理解系统架构和规范、了解业务需求、清楚关键代码实现路径、知道如何修改代码满足新的需求,完整了解这些背景信息才能真正的写代码,这对于人类和AI来说是一样的。精确的指令描述:使用能够让AI更容易理解的方式,清晰无歧义的表达要完成的任务,如强调语法**、mermaid画图等。有效的验证和反馈:信息从我们表达出来->AI理解->生成代码,每一层都会有损失,而且往往我们自己也会遗漏一些细节,这一步的关键是自己要根据AI的产出验证和思考,将错漏的内容反馈AI自行反思、纠偏。这4个关键点的应用中还涉及到尺度的把握(信息的细致程度),而这个尺度会随着模型的能力提升而变化。如早期的模型需要非常详尽的内容输入,当模型能力提升后可以自主从代码中获得足够的背景知识。二、AI协作编程的方法2.1.
2025年7月23日
其他

10分钟微调,让0.6B模型媲美235B模型!免费体验进行中

大参数模型效果好,但成本高、响应慢。为了在保障效果的同时提升推理速度、降低成本,可首先借助大参数模型完成目标任务的数据生成,并使用这些数据微调小参数模型,使其在特定任务中达到接近大参数模型的表现,这一过程也被称为模型蒸馏。本方案将以从一句话中提取结构化信息(如收件人、地址、电话)为例,演示如何通过模型蒸馏,让
2025年7月22日
自由知乎 自由微博
其他

AI 基础知识从0.1到0.2——用“房价预测”入门机器学习全流程

是一个数据分析库,提供了大量的数据结构和函数,用于高效地处理和分析结构化数据。四、特征工程特征工程是提升模型性能的重要步骤,涉及选择有用的特征、生成新特征以及对特征进行转换。Kaggle的
2025年7月17日
其他

AI 基础知识从-1到0.1:带你走进机器学习的世界

是向量化的一种高级形式,解决传统向量化技术缺陷,旨在将高维稀疏的离散数据转换为低维稠密向量,同时捕捉数据之间的语义关系。高维稀疏:数据特征的维度(数量)非常高,在每一份数据样本中,大多数特征的值接近
2025年7月16日
其他

如何让AI帮你做前端自动化测试?我们这样落地了

阿里妹导读本文介绍了一个基于AI的UI自动化测试框架在专有云质量保障中的工程化实践。引言随着AI大模型技术的快速发展并在各行业/场景下的爆发式应用,如何利用AI技术提高测试效率也成为了热门话题。具体到我们团队的日常工作中,一个痛点就是前端测试很耗费人力,体现在:1.
2025年7月11日
其他

AI 时代的 MySQL 数据库运维解决方案

大模型与MySQL数据库运维的结合将彻底改变传统数据库管理方式,通过将大模型的自然语言理解与推理能力与MySQL的运维知识库相结合,可实现故障智能诊断、SQL自动优化、运维知识自动更新等高级功能。本文提供一套完整的MySQL大模型运维系统构建路径,包括知识库建设、模型选择与调用策略设计、MCP
2025年6月30日
其他

从输入指令到代码落地:Cline AI 源码浅析

类位于src/core/task/index.ts,在一系列的初始化后:初始化的代码没有过度深究,从类名来看,包括了后续任务执行中可能使用到的工具:浏览器、命令行、Url、DiffView
2025年6月30日
其他

揭秘大模型评测:如何用“说明书”式方法实现业务场景下的精准评估

阿里妹导读本文旨在系统性地介绍如何在实际业务场景中开展大模型评测工作,帮助读者理解并掌握从需求分析、评测集设计与生成、评测维度设定、评测任务执行到评测报告输出的完整流程。概述背景首先介绍下为什么要写这篇文章。虽然网上有非常多的大模型评测相关的文章,但是就像看成功人士传记一样,看到别人的成功案例并不意味着自己也知道应该如何一步步地实现目标。市面上有非常多的评测平台,但是每个平台都不会告诉我们“上传评测集”、“新增评测维度”所涉及的评测集和评测维度是怎么生成的。所以我想通过这篇文档,让大家可以通过按“使用说明书”的方法执行就可以实现自己业务场景下的大模型评测。本文内容力求严谨,但也可能存在主观判断、不完整甚至错误的问题。定义我们也约定下大模型评测的范围。大模型评测的目标是通过设计合理的测试任务和数据集来对大模型的能力进行全面、量化的评估。本文主要聚焦对大模型业务效果方面的评测,不包含大模型的性能测试。性能测试通过压测实现。区别于基础模型的Benchmark(基准测试),本文更加聚焦在针对具体业务场景下大模型的效果。在基础模型发布时,模型厂商提供的测试报告无法覆盖用户实际业务场景。用户需要通过针对自己业务场景设计的评测来评估大模型的实际表现。同时大模型评测除了针对模型本身,也可以面向整个模型应用进行评测,覆盖RAG、MCP、工作流等构成的统一整体进行端到端的测试。场景大模型评测在模型应用中的作用,类似于功能测试在业务应用中的作用——两者均是确保系统或大模型在实际部署前达到预期性能与可靠性的关键验证环节。以下是几种典型的评测场景:大模型上线:在大模型应用上线前,通过评测了解大模型的能力,判断大模型应用是否具备上线条件。大模型升级切换:因为需要切换模型厂商、更换模型尺寸、模型微调或模型版本升级等原因,用户需要通过评测对新旧模型的效果进行比对,从而决策是否进行切换。大模型优化:通过评测发现的bad
2025年6月23日
其他

一行代码不用改!搞定 HSF 转 MCP Server

就掌握了一切,这是本末倒置的想法。合理的路径是基础设施适配先做到位,让业务研发同学能够有更多的选择权,更快的迭代速度,自然会有完善易用的
2025年5月9日
其他

10行代码,实现你的OpenAPI MCP Server

Server,为MCP的发展贡献力量。未来,我们希望能够拓展场景,不止局限于阿里云的OpenAPI,只要是具备标准格式,包含API必要信息的元数据,都可以通过本文所阐述的方式进行转换和MCP
2025年5月6日
其他

Nacos 3.0 正式发布:MCP Registry、安全零信任、链接更多生态

的信息管理。详细配置方式请参考https://github.com/nacos-group/nacos-mcp-wrapper-pythonTypeScript
2025年4月30日
其他

旅行规划太难做?5 分钟构建智能Agent,集成地图 MCP Server

角色你是一位经验丰富的旅游规划专家,擅长使用MCP工具为用户提供全面的旅行规划服务。你对全球各地的旅游景点、文化习俗和交通住宿信息了如指掌,能够根据用户的需求提供个性化的旅行建议。##
2025年4月30日
其他

MCP 协议:为什么 Streamable HTTP 是最佳选择?

HTTP:按需建立连接,TCP连接数维持在较低水平请求成功率对比实际应用场景中进程级别通常会限制最大连接数,linux默认通常是1024。利用Python程序模拟不同数量的用户访问远程的MCP
2025年4月29日
其他

MCP实战之Agent自主决策-让 AI玩转贪吃蛇

收到通知后,去控制贪吃蛇移动14.继续多轮交互下去,直到用户输入的任务完成...看起来一切都如此完美,但实际中会遇到不少问题,且看是如何解决的,实践开始。贪吃蛇-手动版首先得有一个贪吃蛇,我对
2025年4月28日
其他

从原理到示例:Java开发玩转MCP

的。源代码如下:https://github.com/alibaba/spring-ai-alibaba/tree/main/community/openmanus添加依赖首先,在项目中添加
2025年4月25日
其他

自主构建MCP,轻松实现云端部署!

bailian-mcp-workflow-server。你可以使用VSCode打开该文件夹,或者直接通过命令行进入此文件夹进行操作。1.1、在命令行当中运行初始化Nodejs项目npm
2025年4月24日
其他

除了MCP我们还有什么?

agents自动发现和解析,部署成本极低。生态开放性:作为提案标准,允许通过自定义字段扩展功能,同时通过版本控制保障兼容性。该规范目前处于社区倡议阶段,但因其兼容现有
2025年4月24日
其他

阿里云 MCP Server 开箱即用!

ServerCline是一款强大的Vscode插件,开源且完全免费,支持打开文件/文件夹、运行任务、调试代码、管理窗口等操作,能够借助大模型的能力调用工具,规划并完成真实的复杂任务配置流程1.
2025年4月23日
其他

从零开始开发 MCP Server

官方文档https://modelcontextprotocol.io/docs/concepts/transports[8]函数计算
2025年4月21日
其他

MCP 实践:基于 MCP 架构实现知识库答疑系统

做一些优化。整体流程设计主要分为两部分:知识库构建和检索。1.知识库构建a.文本切段:对文本进行切段,切段后的内容需要保证文本完整性以及语义完整性。b.提取
2025年4月21日
其他

100行代码讲透MCP原理

/sse长连接中返回的event满足JSON-RPC规范,包含字段jsonrpc、result、id、error(执行错误时)。看起好像并不复杂,我们尝试用Python来实现一下(不使用MCP
2025年4月17日
其他

MCP 正当时:FunctionAI MCP 开发平台来了!

标准的双向认证机制、无法实现基于角色的访问控制),在复杂业务场景下暴露出调试困难、网络隔离性差等缺陷,难以实现访问内网环境的数据安全管控,内网穿透导致攻击面扩大;2.
2025年4月16日
其他

万字长文告诉你如何基于MCP实现AI应用架构新范式转型

Server这两类协同关系本质上还是服务提供方和服务消费方之间的关系,涉及到代理协作和流量管控两个核心点。在传统开发范式下,通常是由网关来负责的。所以我们在云原生API网关中增强了LLM代理和MCP
2025年4月15日
其他

手搓Manus?MCP 原理解析与MCP Client实践

版构建高性能、低成本、分析能力强大的日志存储与分析解决方案,覆盖运维监控、安全审计、业务分析等场景,并通过智能索引与分级存储实现数据亚秒级检索。点击阅读原文查看详情。
2025年4月15日
其他

一文讲透MCP的原理及实践

prompt(指令与工具调用描述)和用户消息一起发送给模型,然后接收模型的回复。当模型分析用户请求后,它会决定是否需要调用工具:无需工具时:模型直接生成自然语言回复。需要工具时:模型输出结构化
2025年4月14日
其他

谁是MCP 的 AI 好搭档?

这套多模型、多工具的设计方案中,工具调用的频次由大模型结合提示词进行“规划→分配→执行”,调用热点不可预测,一旦出现热点工具算力层面不足而产生报错/卡顿现象,将会极大降低
2025年4月11日
其他

从零开始的 MCP 开发

Code使用大型语言模型(LLM)来理解用户的自然语言输入并识别用户的意图。当用户提出一个请求时,LLM会分析请求并决定使用哪些工具来完成任务。系统提示构建:通过
2025年4月11日
其他

热门 MCP Server一键部署

将服务/数据对接给大模型,如果不限制大模型的数据权限范围和敏感数据过滤,将对企业产生安全合规风险,云上托管提供权限管控、操作审计、用户隐私保护等内置安全工具,大幅减少安全风险暴露面,合规成本低。同时
2025年4月8日
其他

如何0代码将存量 API 适配 MCP 协议?

连接到存量应用,能够显著降低存量应用的改造成本。当前需要用户手动配置接口描述信息,后续可以通过工具化的能力将接口进一步简化,用户只需要微调即可。现实中,我们有大量的存量服务和接口,按照接口到
2025年4月7日
其他

开源 Remote MCP Server 一站式托管来啦!

Server的工具定义,适用于企业将传统业务API升级为MCP能力这种灵活的架构设计使得企业可以根据自身需求选择最适合的部署方式,既可以享受Higress提供的一站式托管服务,也可以保持现有MCP
2025年4月1日
其他

大模型上下文协议 MCP 带来了哪些货币化机会

在2023年6月首次提出(即创建一个外部函数作为中介,一边传递大模型的请求,另一边调用外部工具,其他大模型大多也采用这类技术方案)。但是他俩在定位、开发成本等方面有着较明显的差异。定位不同:MCP
2025年3月31日
其他

MCP:跨越AI模型与现实的桥梁

界的超级连接器”,把技术门槛拉低,让每个人都能玩转智能生活。过去,使用软件需要复杂的下载、安装和配置,普通用户常常感到困难。如今,MCP让这一切变得简单,只需几行配置就能完成。这些场景的实现,只需与
2025年3月21日
其他

从一个事故中理解Redis(几乎)所有知识点

阿里妹导读作者从一个事故中总结了Redis(几乎)所有的知识点,供大家学习。简单回顾事故回溯总结一句话:(1)因为大KEY调用量,随着白天自然流量趋势增长而增长,最终在业务高峰最高点期占满带宽使用100%。(2)从而引发redis的内存使用率,在5min之内从0%->100%。(3)最终全面GET
2024年10月15日
其他

吴泳铭:AI最大的想象力不在手机屏幕,而是改变物理世界

刚刚,阿里巴巴集团CEO、阿里云智能集团董事长兼CEO吴泳铭在2024云栖大会上发表主题演讲——“
2024年9月19日
其他

诡异!Redis Proxy RT上升后连接倾斜

的负载更均匀,而且不会出现连接倾斜的问题。但该设置会导致连接很难处于空闲状态,总连接数可能会上升,对于连接数很多的应用需要具体评估。对于直连的
2024年7月1日
其他

ICDE’24 | 中国企业首获最佳论文,详解PolarDB Serverless如何在0.5秒内实现跨机迁移

Serverless也有一个代理节点,该节点位于主节点和从节点之上。代理节点提供读写分离和负载平衡等功能,以及各种与Serverless相关的功能,包括连接管理和查询语句缓存。PolarDB
2024年5月27日
其他

这些年背过的面试题——JVM篇

阿里妹导读本文是技术人面试系列JVM篇,面试中关于JVM都需要了解哪些基础?一文带你详细了解,欢迎收藏!JVM内存划分1、JVM运行时数据区域堆、方法区(元空间)、虚拟机栈、本地方法栈、程序计数器。Heap(堆):对象的实例以及数组的内存都是要在堆上进行分配的,堆是线程共享的一块区域,用来存放对象实例,也是垃圾回收(GC)的主要区域;开启逃逸分析后,某些未逃逸的对象可以通过标量替换的方式在栈中分配。堆细分:新生代、老年代,对于新生代又分为:Eden区和Surviver1和Surviver2区。方法区:对于JVM的方法区也可以称之为永久区,它储存的是已经被java虚拟机加载的类信息、常量、静态变量;Jdk1.8以后取消了方法区这个概念,称之为元空间(MetaSpace);当应用中的
2024年3月21日
其他

万字长文:一文详解单元测试干了什么

阿里妹导读好的单元测试不仅可以验证代码结构设计的是否合理,而且可以提前发现代码中的漏洞,将线上风险扼杀在摇篮中。本文从常用的单元测试框架出发,对Mockito框架深入浅出的讲解,希望能帮到每一位同学。导读随着我们各种“code大赛”的不断推进,大家对于单元测试也越发重视。好的单元测试不仅可以验证代码结构设计得是否合理,而且可以提前发现代码中的漏洞,将线上风险扼杀在摇篮中。写好单元测试是每一位程序员的基本功,但是有不少同学对于单元测试有些知其然但不知其所以然,对于单元测试的底层逻辑并未深入研究过,只停留在使用的层面。本文从常用的单元测试框架出发,对Mockito框架深入浅出的讲解,希望能帮到每一位同学。单元测试框架Java中存在很多单元测试框架,每种框架有着自己独特的特点,根据不同的需求和团队要求,每位同学所使用的框架不尽相同,目前主流的测试框架有且不仅有以下几种:JUnitJUnit是Java中最常用的单元测试框架。该框架提供了丰富的测试与断言方法,例如:assertNull、assertTrue、assertEquals等,使用方法比较简单。JUnit目前已经更新到JUnit5版本,该版本提供了更多的新特性,例如:动态测试,依赖注入等,使得该框架更为健壮。官网介绍:https://junit.org/junit5/TestNGTestNG是Java中的另一种测试框架,集团内使用的较为小众。该框架的设计是受了JUnit的启发,初衷是为了更好地支持从单元测试到集成测试的各个方面,用来完成一些JUnit所不能完成的测试任务。该框架较JUnit相比,功能更加强大,提供了更多的高级特性,例如:测试套件、数据驱动测试、依赖测试、并行测试等。在更复杂的测试场景(如参数化测试、依赖测试等)中,TestNG的表现更加优异。官网介绍:https://testng.org/SpockSpock是基于Groovy语言编写的测试框架,该框架可以用来测试Java和Groovy的代码程序。Spock用来写测试代码的语言十分优美、表达力强,这一优点大大提高了测试代码的可读性和可维护性。Spock框架融合了JUnit、jMock、RSpec、Groovy、Scala和Vulcans等多种框架和语言的优点,旨在提供一套强大的测试平台。官网介绍:https://spockframework.org/MockitoMockito不是一个完整的单元测试框架,而是专注于mock对象的创建、验证。它通常与JUnit或TestNG结合使用来简化对复杂依赖的测试。是目前集团内最主流的测试框架,下文中将对该框架进行详细阐述。官网介绍:http://site.mockito.org/EasyMockEasyMock是一套通过简单方法对于给定的接口生成mock对象的类库,通过使用Java代理机制动态生成模拟对象。该框架提供对接口的模拟,能够通过录制、回放、检查三步来完成大体的测试过程,可以验证方法的调用种类、次数、顺序等,还可以令mock对象返回指定的值或抛出指定异常。开发者通过EasyMock可以方便的构造mock对象而忽略对象背后真正的业务逻辑。一般情况下,EasyMock与JUnit或TestNG配合使用。官网介绍:https://easymock.org/PowerMockPowerMock是一种用于Java单元测试的框架,它扩展了其他mocking框架的能力,比如EasyMock和Mockito。PowerMock的主要特点是它可以mock静态方法、私有方法、final方法、构造函数,甚至系统类(如System、String等),这些通常是传统mocking框架所做不到的。有了这些功能,PowerMock在一些复杂场景下进行单元测试更加方便。虽然PowerMock提供了强大的功能,但由于它修改了类加载器和字节码操作,可能会导致一些测试方法与JVM或第三方库之间的兼容性问题。所以,在使用PowerMock时需要权衡其提供的功能和可能带来的复杂性。ps:由于PowerMock的执行速度问题(每个测试类都需要重启spring的TestContext),我们团队内部不建议使用该框架。官网介绍:https://github.com/powermock/powermockJMockJMock是一种用于Java单元测试的框架,属于一种轻量级框架,该框架采用了行为驱动开发(BDD)的测试风格。用来在单元测试中mock接口或类的依赖项,对代码进行隔离测试,而无需关心整个系统的其他部分。JMock支持通过声明式的方式来指定对象间的交互行为。官网介绍:http://jmock.org/大部分开发者在使用这些测试框架时,不会独立使用其中一种,而是会结合使用,例如,可以在JUnit或TestNG的基础上使用Mockito来创建和使用mock对象,来完成比较复杂的测试任务。每个框架都有其独特的优点与缺点,选择哪个框架通常取决于个人偏好、项目需求以及现有代码库的兼容性。当然,实际开发中的单元测试框架远不止以上所提到的这些,还有一些同样优秀的框架在本文中没有介绍,例如:Selenium、Cucumber、Appium等,感兴趣的读者可以自行学习。我们在用什么?目前集团内主流的单元测试框架用的是Mockito框架,该框架的单元测试流程为:以下面的代码为例,展示一下单元测试的常用写法:
2024年2月28日
其他

一个健壮的前端轮询

阿里妹导读本文讨论了在不使用websocket做服务端推送的情况下,如何写出一个健壮的前端轮询。文章提供了一些常见的前端轮询的应用场景以及可能遇到的问题,欢迎大家一起讨论。一、前言本文的前端轮询主要讨论的是定时异步任务,定时异步任务相比与定时同步任务需要考虑更多的因素。这里的异步任务一般包括发送网络请求及响应后的状态更新。从技术层面上,需要考虑到开启定时、发送请求、状态更新之间的逻辑顺序。此外,本文不讨论利用websocket做服务端推送,只考虑在仅前端变更的情况下做轮询(在某些时候,确实只能如此)。二、应用场景1.获取实时数据,例如数据大屏、实时股价。2.监测进度,例如数据上传进度、下载进度。3.监测后端处理状态,例如提交一批数据后,后端需要对数据进行分析,耗时不确定,前端需要获取分析结果,则此时需要前端轮询。4.检测静态资源是否加载完成(一般来讲是定时同步任务),例如当函数a逻辑需要在静态资源A加载完成后才能执行,则需要在执行函数a之前,开启轮询来判断资源A是否加载完成。三、实现方式3.1.
2024年1月31日