Postman接口关联实战:从登录Token到下单的自动化流程

某B2C在线商城的API接口文档里,最经典的一条业务就是“登录-选择商品加入购物车-下单”。我拿到这个需求的第一反应是:请求参数倒是不难,难在这些接口之间要传一堆动态数据,登录返回token、商品列表返回productId、购物车返回购物车记录、下单返回订单号。如果手工一次一次地复制粘贴,调试一次要几分钟,一旦换账号或者换商品就全部推翻重来。Postman接口关联就是用来解决这个问题的:把上一个接口的返回结果自动提取成变量,再让下一个接口通过{{变量名}}引用,场景就能像流水线一样自己跑起来。这篇文章既讲了规范的Tests脚本写法,也给了“逃课版”的快捷做法——不写复杂脚本,纯靠Postman界面操作也能完成接口关联。适合正在学接口测试、临时做接口冒烟,或者想把业务链路跑通的开发者参考,新手可以完全照抄。

1. 动手前先想清楚:这个场景到底在测什么

1.1 业务链路里的依赖关系

B2C商城看起来就是几个接口,实际上一环扣一环。用户必须带着有效token去请求商品、购物车和订单接口;加购物车时必须传正确的商品ID,而且这个商品ID不是固定的,数据库里每个商品都有独立ID;下单时接口可能要求购物车ID、收货地址ID、商品数量。任何一个环节数据对不上,后面的接口就会返回参数错误或者无权限。所以在Postman里做接口关联,第一步不是急着发请求,而是把依赖关系列出来:

  • 登录接口:入参是账号和密码,出参最重要字段是token,也可能包含userId。
  • 查询商品接口:用token访问,返回商品列表,每个商品带上id、price、stock。
  • 加入购物车接口:带着token和商品id、数量,返回购物车记录,可能有cartId。
  • 查询购物车接口:带token确认商品是否进购物车。
  • 提交订单接口:带token和购物车相关参数,返回订单号orderId。

如果漏看了文档里的鉴权方式,直接跑到第三步加购物车,大概率拿到401。我印象很深的是一次联调,文档只写了“需登录”,没有明确说token放在哪里。后来翻了很久才确认,后端要把token放在Header的Authorization字段里,而且格式是“Bearer”加空格再加token。如果只传token字符串,后端解析不到,返回“未登录”。这种问题光看接口文档不够,还要提前确认系统用的是JWT还是自定义token,以及是否要求前缀。

1.2 什么是“逃课版”方案

我不喜欢把“逃课”理解成应付了事,它更像一种中间方案。标准做法是每个接口的Tests里写脚本,用pm.environment.set()把返回值里的关键字段提取出来;而“逃课版”是不写或尽量少写脚本,用Postman自带的图形化操作快速把字段设置为变量。两者的差异可以用表格来对比:

做法是否需要写脚本适用场景执行效率
标准版需要,稍微有点门槛自动化回归、重复执行、团队协作高
逃课版基本不需要接口调试、临时示范、流程验证中

逃课版最常见的操作是把鼠标放到响应结果的某个字段上,右击,选择Set: variable,输入变量名保存。Postman支持把一个JSON字段直接存成环境变量或集合变量。另一个更简单的做法是复制token值,手动打开环境管理面板粘贴。听起来很原始,但实际在现场调试时非常救命,尤其接口文档字段不明确、响应结构频繁变动的阶段,写脚本提取反而容易崩。后面每个接口的实操部分我会把这两种方法都写出来。

1.3 为什么不用Postman内置的Authorization功能

有人可能会问,Postman不是有Authorization标签页吗,直接选Bearer Token,把{{token}}填进去不就行了?可以用,但它和我们说的接口关联不一样。Postman的Authorization标签页只是把token附加到请求里,并不负责自动获取token。你仍然需要先拿到token并填入变量,否则它只是一个空模板。而且Authorization标签页在Collection Runner里可能会出现继承混乱,不如自己控制Header干净。我自己的习惯是把token放到Headers里,显式写Authorization: Bearer {{token}}。这样一来,请求在文档层面是什么样,Postman里就是什么样,排查问题时少一层翻译。

2. 环境准备与接口文档拆解

2.1 先搭一个不乱的Postman工作区

很多人拿到接口文档就直接在Postman里点Send,结果请求全部堆在历史记录里,变量乱成一锅粥。我通常先建三样东西:一个Collection(集合),一个Environment(环境变量),必要时再补一个全局变量兜底。比如集合叫“B2C商城业务链路”,环境叫“测试环境”,里面的变量包括baseUrl、token、productId、cartId、orderId。baseUrl写成测试服务的地址,将来换环境只需要改一次baseUrl,所有请求都不会散。

环境变量和集合变量的区别要拎清。环境变量跟随当前环境切换,适合放不同测试环境的地址和账号;集合变量跟随集合,适合放token这类业务链路上的公共数据。如果你在一个集合里跑多条业务线,token放集合变量更稳,不会因为切换环境而丢失。我用环境变量比较多,因为它直观,调试时打开Environment面板就能看到当前值。注意变量作用域优先级是:局部变量最高,其次是数据变量、环境变量、集合变量、全局变量。引用不到的时候先想想优先级,别一上来就以为Postman坏了。

2.2 从接口文档里提取关键信息

接口文档通常长这样:

接口方法路径鉴权
登录POST/api/uc/login无
商品列表GET/api/goods/list需要
加入购物车POST/api/cart/add需要
购物车列表GET/api/cart/list需要
提交订单POST/api/order/submit需要
订单详情GET/api/order/detail需要

拿到文档先不要照抄路径,有几件事必须确认:接口Base URL是什么;参数是Query、Path还是Body;请求体是JSON还是form-data;响应数据包在一个统一结构里还是裸数据。很多商城接口响应统一长这样:

{ "code": 200, "message": "操作成功", "data": { "token": "xxxxxxxx" } }

如果只看data不看code,调试时容易把错误响应里的默认值当成有效数据。建议第一遍先把每个接口的请求和最小响应样例抄到Excel或者笔记里,标清楚哪个字段是要传递给下一个接口的,后面写脚本或者手动关联时直接对照,省得反复翻文档。

2.3 准备测试账号和测试数据

接口联调最怕用真数据,下单造成真实支付或者库存被搞乱,问题很难收场。建议使用测试环境或者Mock服务,准备两个账号:一个正常账号用于完整流程,一个异常账号用于测试登录失败。商品方面,最好先在商品列表接口里确认有几个商品能买,记下商品ID,方便加购。不要依赖页面上显示的商品ID,前端可能做了一层展示转换,要以接口返回的为准。如果接口文档提供了默认测试数据,直接用默认数据,能减少沟通成本。

3. 登录接口与Token关联:这次不手抄也能自动

3.1 正路:用Tests脚本自动写入Token

登录接口是整个链路的第一环,负责产出一个token。标准写法是在Tests标签页里写JavaScript脚本,把响应中的token存到环境变量。脚本样式大概是:

const responseJson = pm.response.json(); if (responseJson.code === 200 && responseJson.data.token) { pm.environment.set("token", responseJson.data.token); } else { console.log("登录失败:" + responseJson.message); }

这段代码不难,关键是为什么要写条件判断。如果不判断code直接取token,一旦登录接口返回失败但响应里没有data,脚本就会在pm.response.json()之后抛异常,后面的请求拿不到变量。判断一下不仅让脚本更稳,也方便调试时在Postman控制台看到失败原因。写完脚本后先Send一次,然后打开环境变量面板,确认token字段已经有值了。如果环境里已有旧token,脚本每次会覆盖成最新token,这是期望行为。

3.2 逃课版:不写脚本的两种关联姿势

不想写脚本也有办法。第一种是硬核手动:发送登录请求,在响应界面点击要用的token字段,直接复制,然后点击右上角环境变量图标,手动新增或修改token变量,把复制的内容粘贴进去。流程很原始,但结果一样,后续请求都能通过{{token}}引用。第二种是半自动:在JSON响应正文里,鼠标放到token字段上,右键,选择Set: variable,输入变量名,Postman会自动把字段值写入变量。这种方式比手动复制快很多,也不会复制多余空格。

我用得最多的逃课姿势是Set: variable,因为它唯一的要求是响应必须是JSON格式。如果响应是纯文本或HTML,右键菜单里不会出现这个选项。另外,设置变量时要注意变量名别写错,我曾经把token写成tocken,后面的请求引用{{tocken}}为空,排查了半天才发现是自己字母顺序写反了。还有一次是从响应里选中了整个字符串,结果变量值两边带上了双引号,后端一直提示鉴权失败。手动复制的时候要注意只复制引号里面的内容,别把JSON的双引号一起带走。

3.3 登录成功后如何验证Token真的带上了

设置完token后,随便找一个需要鉴权的接口来验证,比如商品列表。在它的Header里加上Authorization: Bearer {{token}},发送后看返回。如果返回200且能看到商品数据,说明token关联成功;如果仍是401,先打开环境变量看token是不是空;如果token有值但401,多半是格式问题,例如需要把Bearer换成token明文,或者需要在Header里换成别的参数名。这个验证步骤值得花三十秒做,能避免后面所有请求都在同一个错误里打转。

4. 商品浏览与选择:把动态商品ID变成变量

4.1 查商品列表并找到可加购的商品

商品列表接口通常是GET请求,只需要在Headers里带token。发送后返回的商品数组,字段一般包括id、name、price、stock、status。测试时别乱选,要注意三点:选status为上架状态的;选stock库存大于0的;如果后面下单要计算金额,最好记录一下商品单价。

我习惯在响应里找到目标商品后用右键Set: variable设置两个值:一个productId存商品ID,一个productPrice存单价。商品ID后续给加购接口使用,单价用于下单金额核对,虽然不少商城接口会自动计算金额,但测试时多一个值可以对比,防止流程通了但金额算错。

4.2 逃课版选择商品:手动还是自动挑

选商品这里也有两条路。想要快,直接手动复制商品JSON里的id,更新到环境变量。想要省事一点,可以在商品列表的Tests里写三行脚本,从返回的列表里随机挑一个在售且有货的商品:

const goodsList = pm.response.json().data.list || []; const availableGoods = goodsList.filter(item => item.status === 1 && item.stock > 0); if (availableGoods.length > 0) { pm.environment.set("productId", availableGoods[0].id); pm.environment.set("productPrice", availableGoods[0].price); }

这个脚本只适合测试环境,不建议对付费场景使用。写它的目的是让重复执行的时候不用每次改商品ID,接口自动化回归时很方便。逃课版虽然不写脚本,但分析响应结构还是少不了,你得知道商品列表里哪个字段是ID,哪个字段代表库存和价格,否则右键Set: variable时会存错字段。

4.3 选择商品时的常见报错

查询商品列表最常遇到的坑是“没有权限”或者返回空数组。没有权限先检查token;返回空数组则检查当前账号是否有商品浏览权限,以及接口是否需要分页参数,比如page和size。有的商城接口默认只返回第一页,可能第一页没有可买的商品,我会先加参数page=1&size=50拉大范围,再从列表里挑。

另一个隐蔽的坑是商品ID类型。接口文档显示id是整数,存到环境变量时Postman会把变量值当作字符串,加购接口如果要求int类型,一般也没问题,后端会转换。但如果后端代码用了严格校验,字符串转数字失败就会报参数类型错误。碰到这种问题,可以在脚本里用Number()转一下,或者在设置变量前用String()包一层,确保类型符合接口要求。不要为了一个类型问题过度设计,等真遇到再处理。

5. 加入购物车与购物车确认

5.1 加购请求的参数细节

加入购物车接口,我见过两种主流传参方式:一种是在URL路径里带商品ID,比如POST /api/cart/add/{productId};另一种是用POST Body传JSON。形式不同,但都必须带上数量参数num或quantity。具体请求体如下:

{ "productId": "{{productId}}", "num": 1 }

这套请求的关键是Body里的{{productId}}引用了环境变量,不用手动改。发请求前可以在Body编辑器里把鼠标悬停在变量上,能看到当前解析出来的值,方便确认它不是空的。如果悬停显示no value,说明变量没设置成功,先回到环境变量面板看一下。加购接口如果设计成form-data格式,字段名也要仔细对,不是所有商城都叫productId,有的叫goodsId。文档里写什么,Postman里就写什么。

5.2 加购后怎么确认真的加进去了

加购接口不一定每次都把购物车明细返回全,很多设计只返回code和cartId。为了确认,我会紧接着发购物车列表请求,看当前购物车里是否包含刚才的productId。这个动作看起来多余,却能真实暴露问题:曾经有次加购接口返回成功,但购物车列表里商品数量是0,后来查代码发现是商品库存被锁定了,前端展示也不一致。接口测试的价值就在这里,不能只看单个接口的成功响应,要顺着业务数据去核对下一个状态。

查看购物车列表时,如果接口返回结构比较复杂,比如data里既有购物车ID又有商品明细,我可以先用右键Set: variable把cartId存下来,因为下单接口大概率会用到。如果你用的是标准版,也可以在购物车列表的Tests里写脚本提取cartId:

const r = pm.response.json(); if (r.code === 200 && r.data.cartId) { pm.environment.set("cartId", r.data.cartId); }

5.3 加购物车的易错点

重复加购时数量会累加。如果脚本里默认每次都加1,跑两次购物车数量就变成2,下单时金额对不上。我一般在下单前先调一次清空购物车接口,或者确认购物车列表里的基础数量就是1。还有库存边界,商品库存只剩1,一次加2可能成功,但下单时库存被扣减成负数,就会在下单接口报库存不足。正确做法是把库存数量也当数据来对比,尤其是在批量测试时。

实际调试时我还遇到过一种情况:两个商品ID长得很像,手动复制时已经不小心把ID改成了一个相近的数字,加购接口返回成功,购物车里却是另一个商品。这种低级错误用脚本可以避免,因为脚本从响应里取ID不会出错。逃课版手动复制就要多看一眼,复制的字段上下文是不是对。

6. 下单:把购物车数据流串起来

6.1 提交订单的Headers和Body写法

下单接口是整个链路的结果,请求头里除了Authorization,还可能要带Content-Type: application/json。Body常见的字段包括:收货人地址信息、购物车标识、商品信息,或者两者选其一。如果商城系统只允许一个购物车,提交订单时直接传cartId或者什么都不传,后端取当前用户的默认购物车。示例:

{ "cartId": "{{cartId}}", "receiver": "测试用户", "mobile": "13800000000", "address": "测试地址", "remark": "Postman接口关联测试" }

如果没有cartId,可以只传地址信息。发送前再检查一次Header里的token,因为很多人在前面接口里一切正常,一到下单就报登录失效,往往只是当前请求的Header多了个空格,或者变量名大小写不对。订单接口如果要求传购物车明细列表,就需要把商品ID、数量、单价都从前面变量带过来,这种设计在复杂商城系统里也常见。

6.2 下单成功后的订单号提取

提交订单成功,响应里通常有orderId或orderNo。这个值不仅要看,还要存起来。标准脚本:

const r = pm.response.json(); if (r.code === 200 && r.data.orderId) { pm.environment.set("orderId", r.data.orderId); }

如果想用逃课版,直接在响应对orderId右键Set: variable。存起来之后,可以顺手用GET /api/order/detail?orderId={{orderId}}去查订单详情,确认订单状态是待支付而不是其它状态。这一步能顺便查出下单接口是否只创建了记录,没有触发后续逻辑。有时候订单能下成功,但订单里没有商品明细,这种问题单看下单接口的返回是发现不了的,必须查详情。

6.3 下单失败的几种典型原因

订单接口返错,最烦的是“参数错误”四个字,没有详细提示。常见的原因我总结了一下:第一,商品ID过期或者商品状态下架;第二,购物车为空;第三,用户默认收货地址缺失;第四,库存被扣减到0;第五,token权限只能访问商品接口,但订单接口要额外权限。逐项查的时候,别只盯着下单请求,回到购物车列表和商品详情接口把现有状态确认一遍,通常能找到问题。

遇到后端返回500,大多数情况是测试数据本身有问题,不要反复重发。把请求体复制下来,对照文档里的字段名和类型,最容易发现漏了哪个。项目里就出现过把stock当库存字段传进去的情况,文档里明明写的是inventory,这种字段名差一个字母的问题,对接口测试来说是最值得仔细核对的一环。

7. 用Collection Runner一键跑通整个场景

7.1 把请求按顺序安排好

手动跑通之后,才算真正开始做接口关联。把前面所有请求都放进同一个Collection,并注意顺序:登录、商品列表、加购、购物车列表、下单、订单详情。Collection Runner会严格按照这个顺序执行,前一个接口的Tests脚本设置变量,后一个接口就能用上。不要让“查询订单详情”排在“下单”前面,这是新手最常见的排序错误,变量还没设置就被引用,结果全是空。

Runner左侧有请求列表,直接用鼠标拖动就可以调整顺序。每调整一次,记得看一眼Collection面板里请求的排列顺序是否和业务一致。如果某个请求不需要跑,可以临时取消勾选,但要从业务连贯性判断,比如跳过了商品列表,productId可能还是上一次的值,加购请求就会加错商品。

7.2 用数据文件支持多账号迭代

Collection Runner还可以搭配CSV或JSON数据文件,实现同一套过程用不同账号跑。CSV格式大概是:

username,password test001,123456 test002,123456

然后把登录接口Body写成:

{ "username": "{{username}}", "password": "{{password}}" }

Runner里选择数据文件之后,Postman会为每一行数据执行一次完整流程。如果只想看接口是否通,不关心参数细节,Run结果里的Pass/Fail就够用了。做自动化断言还得在Tests里加pm.test,比如登录成功断言:

pm.test("登录成功", function () { const r = pm.response.json(); pm.expect(r.code).to.eql(200); pm.expect(r.data.token).to.be.a('string'); });

有了断言,Runner跑完就能直接看到哪一步失败,不用逐条看响应。

7.3 Runner中的逃课版技巧

Runner跑的时候有个容易忽视的点:它执行的是集合里保存的请求,而不是你在界面上改过的未保存内容。如果你在界面里把加购Body改成了别的商品ID但忘了保存,Runner仍然是旧数据。逃课版操作时一定要记得Ctrl+S保存,或者最终以Collection里同步的内容为准。

另外,如果需要跳过登录接口而直接用已有token跑后面的接口,可以在Runner里面把登录请求取消勾选,但前提是token还没失效。这样跑一轮只验证商品和购物车逻辑,速度更快。我常拿这个方式做回归验证,登录单独跑,商品购物车订单单独跑,避免每次都被登录耗时拖慢。Runner的运行结果里可以点开每个请求查看请求头和响应体,失败的请求会有红色状态,一眼就能定位。

8. 常见问题排查与避坑记录

8.1 401/403错误:都是Token惹的祸

整个链路里遇到401,先别怀疑别的,按顺序查三处:环境变量里token是否为空;Authorization Header格式是否正确;token是否已过期。我遇到过最离谱的一次,是登录脚本设置了token到全局变量,但后面请求环境变量里的token一直是旧的,全局变量优先级低于环境变量,结果一直用陈旧token请求。排查方法是打开“环境快速查看”图标,看当前生效的变量来自哪里,变量前面带着小圆点颜色的才说明是当前作用域里正在用的。

如果token没有过期但接口仍然提示无权限,可以看响应头里的WWW-Authenticate字段,它通常会提示具体的认证方案。有的系统要求Basic认证,有的要求Bearer认证,Postman默认只认后者。切换认证方式后马上重发一次,多数能解决。

8.2 返回HTML而不是JSON

请求结果直接返回一大段HTML,通常不是正常接口响应。可能是URL写错被网关拦截,也可能是缺少某些Header被当作网页访问。比如请求路径少了一个/api前缀,网关返回404页面。这时候把响应切到Preview标签页,看页面标题或内容,往往能看出是谁返回的。如果能看到登录页,说明这个接口需要先经过某种认证筛选,检查Header和Cookie。

还有一种情况是环境里的baseUrl配置错了,比如多加了一个斜杠,请求地址变成http://host//api/goods/list,有的网关会返回一个HTML错误页。检查baseUrl的末尾不要带斜杠,路径拼接保持统一。

8.3 变量引用显示为空

{{productId}}在请求体里显示为红色no value,有两个原因:变量名不存在,或者保存键时写错了。Postman的提示已经很清楚了,可很多人不看。一个排查技巧是在变量引用处悬停,观察解析后的值;如果解析出来是字符串“undefined”,那说明脚本设置了不存在的字段,问题出在响应结构不是你想的那样。这时回到响应体里仔细看JSON路径,确认data.list是数组还是data本身是数组。

还有一种比较隐蔽的情况:多环境同名变量被覆盖。比如测试环境和预发布环境都有token,但你当前选择的还是预发布环境,登录脚本却是写给测试环境的。这种环境错位的现象,只要在使用前看一眼右上角当前环境名称就能避开。养成“先看环境,再发请求”的习惯之后,这类坑能少踩一大半。

8.4 逃课版什么时候不该用

虽然我全文都在给你讲逃课版,但正经项目里还是要把脚本补齐。逃课版适合你个人学习、临时联调、给同事演示流程;当成自动化回归用例长期跑,绝对不行。原因很简单:手动设置变量没法保证每次执行前都更新,一旦token过期或商品库存变化,整套流程就会在某一步断掉,而且断了以后没人知道是业务bug还是数据问题。

所以正确姿势是先用逃课版把流程跑通、把坑摸清,再把关键提取逻辑沉淀成Tests脚本,最后放进CI。最后再分享一个我个人的习惯:给每个接口的Tests末尾加一行console.log,记录关键的返回值,跑批失败时打开Postman控制台,能省掉大量反复点Send的时间。调试接口这件事,最怕的不是报错,怕的是报错以后还要从头到尾复现一遍流程。

相关新闻

Agentic Harness Workflow:用状态机+Agent工程化框架驾驭AI编码

Agentic Harness Workflow:用状态机+Agent工程化框架驾驭AI编码

1. 为什么“让AI写代码”这件事需要一套工程化框架 1.1 从“对话式写代码”到“流程化跑任务”的认知转变 过去一年多,我身边不少开发者对 AI Coding 的态度经历了三个阶段:最开始是好奇,拿它写个正则、补个单元测试;然后是依赖&…

2026/10/20 17:04:26 阅读更多 →
InstallShield中附属MSI的安装卸载实战与调试

InstallShield中附属MSI的安装卸载实战与调试

前两天帮人看一个安装包的诡异问题:主程序明明是装成功了,但被一起带上的那个MSI组件死活装不上,卸载的时候还赖在系统里不走。这个场景搞Windows安装包的朋友应该不陌生——主程序用InstallShield打成一个安装包,安装时还要顺带把…

2026/10/20 17:04:26 阅读更多 →
HUSB351快充芯片:小体积PD协议芯片的工程落地逻辑

HUSB351快充芯片:小体积PD协议芯片的工程落地逻辑

1. 从“机乐堂”供应链变动看快充芯片选型的底层逻辑最近在整理一批快充配件的BOM清单时,注意到一个细节:某款标称30W PD快充的迷你插线板,其协议识别模块的丝印从常见的“FP6606”悄然换成了“HUSB351”。进一步交叉查证发现,该产…

2026/10/20 17:04:26 阅读更多 →

最新新闻

基于CAN总线的DSP28335 IAP在线升级方案与Bootloader设计详解

基于CAN总线的DSP28335 IAP在线升级方案与Bootloader设计详解

做DSP28335应用开发的人,基本都体会过一种尴尬:整机已经装配完毕,外壳固定好了,或者设备已经在现场跑了大半年,这时候突然要改一个控制参数、修一个不起眼的逻辑bug,拿JTAG下载器过去才发现,拆机…

2026/10/20 17:51:45 阅读更多 →
持续交付平台架构选型与工程实践指南

持续交付平台架构选型与工程实践指南

我无法基于当前输入完成符合要求的博文创作。 原因如下: 输入中仅提供了项目标题 "Harness Engineering 全景深度调研" ,但未提供任何实质性的【项目正文】、【关键词】或【摘要描述】; 所附“相关热搜词”与“最新网络热词”…

2026/10/20 17:51:45 阅读更多 →
AI周报:端侧小模型、合成数据与多模态质检的落地观察

AI周报:端侧小模型、合成数据与多模态质检的落地观察

国庆假期回来,先补上周报。这八天里AI圈其实没闲下来,我从开源社区、模型仓库、几个行业群里观察到的信息整理了一下,发现三条主线最值得聊:端侧小模型集中突破、合成数据从辅助变成主料、多模态模型在工业质检场景里真正开始跑产…

2026/10/20 17:51:45 阅读更多 →
卷积神经网络CNN:从原理到工程部署的实战总结

卷积神经网络CNN:从原理到工程部署的实战总结

1. 从一条卷积计算开始:CNN到底在算什么先说个我自己的体验。当年第一次接触卷积神经网络时,找了一堆资料来看,结果越看越糊涂。网上教程大多从“图像分类任务”讲起,上来就是“把图片输入网络,输出类别概率”&#xf…

2026/10/20 17:51:45 阅读更多 →
2026年AI测试工具五大断代性突破与实战效能解析

2026年AI测试工具五大断代性突破与实战效能解析

1. 这场变化的底层逻辑说实话,2026年再谈“AI测试辅助”,已经有点过时了。术语都要换一换了——现在圈子里讨论的,是“测试智能体”“大模型驱动的生成式测试”“自主决策的探索引擎”。我在某大型互联网公司做质量保障这块,过去一…

2026/10/20 17:51:45 阅读更多 →
从16年大厂老兵到AGI创业CEO:系统工程思维如何撑起大模型之路

从16年大厂老兵到AGI创业CEO:系统工程思维如何撑起大模型之路

在AI大模型最火热的这几年,行业内最不缺的两种叙事,一种是“某名校天才带着炫目光环拿了多少融资”,另一种是“某大厂高管离职创业、估值一夜翻倍”。相比之下,我更愿意写一种不太会炒作的人:在跨国科技巨头里扎扎实实…

2026/10/20 17:50:44 阅读更多 →

日新闻

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
ESP32舵机控制指南:原理、多路驱动与避坑实战

ESP32舵机控制指南:原理、多路驱动与避坑实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
位移法实现一阶低通滤波:单片机ADC采样降噪实战

位移法实现一阶低通滤波:单片机ADC采样降噪实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/20 10:02:13 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/19 17:32:41 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/20 2:50:50 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 10:02:08 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:17 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:45 阅读更多 →