-
目录一、一个“附近”引发的面试翻车现场二、本质变化:意图识别从关键词匹配走向语义依存三、核心机制拆解:多槽位提取的工程架构四、典型案例 / 对比:规则匹配 vs 序列标注 vs 依存分析五、工程落地启示:你的测试用例需要补什么六、趋势判断:槽位间的逻辑关系会成为新门槛一、一个“附近”引发的面试翻车现场去年美团招NLP算法测试工程师,我到第三面,面试官给了一道真实线上case。用户原话:“帮我找附近的便宜餐厅”。我的意图识别模型输出:意图=找餐厅,槽位={价格=便宜}。没有“附近”。面试官没直接说错,而是反问:用户明确说了“附近”,你的模型为什么没提取?如果这个请求打到美团App,你觉得应该返回方圆三公里的店,还是全城的店?我下意识解释:训练数据里“便宜”出现频率高,“附近”可能被当成语气词或未标注…他打断我:别解释原因。告诉我,你打算怎么设计测试用例,确保这类问题在上线前被拦住?我哑口无言。因为我知道,我平时测意图识别,用的都是单槽位用例——“便宜餐厅”“附近的咖啡厅”“带我去火车站”。我从来没测过“附近+便宜”这种复合约束。这不是我一个人的问题。很多做对话系统和搜索测试的朋友,今天还在用“关键词命中率”和“准确率”评估模型。用户说“不辣的川菜”,模型只提取了“川菜”;说“适合约会的安静酒吧”,只提取了“酒吧”。这类错误在线上比比皆是,但测试报告里从来不体现。面试最后,面试官说了一段话我记到现在:意图识别的下一场竞争,不再是准不准,而是全不全。用户同时提两个约束,你漏一个,体验就崩了。二、本质变化:意图识别从关键词匹配走向语义依存五年前做意图识别,核心任务是分类——用户说的是“查天气”还是“订机票”。槽位提取是辅助,用个CRF或者BERT序列标注,能抽到实体就算赢。今年风向彻底变了。大模型普及后,意图分类的准确率在很多场景下已经超过95%。大家发现用户真正的痛点不是“模型认错意图”,而是“模型漏了约束”。本质上是用户表达习惯在升级。早期语音助手只能接受“天气 北京”,用户会主动简化。现在用户已经习惯用自然语言一口气说多个条件:“帮我找海淀区评分4.5以上、人均100以下、有停车位、还不用排队的火锅店”。这种句子里的槽位不是扁平列表,它们之间有逻辑关系:“附近”和“便宜”是并列约束,必须同时满足“海淀区”是“附近”的具体化,可能互相冲突“不用排队”隐含时间敏感,优先级更高传统的序列标注模型把句子当词串,抽取出一个个实体标签,但不知道这些标签之间是“且”还是“或”,也不知道哪个是主约束哪个是修饰。所以面试官问“为什么没提取‘附近’”,本质是在问:你的模型有没有能力理解“附近”和“便宜”是同一个槽位类别(餐厅属性)下的两个并列约束?你的测试体系有没有覆盖多约束组合的case?三、核心机制拆解:多槽位提取的工程架构一个能处理“附近+便宜”这类复合约束的意图识别系统,需要从三层重构。用这张图来说明:第一层:意图分类(略,不是本文重点)第二层:槽位提取的进阶要求传统做法是序列标注,给每个词打标签(B-price, I-price, B-distance, I-distance)。但对于“附近”这类词,它不是具体数值,而是一个相对范围。工程上需要做两件事:实体标准化:“附近”映射成“radius=3km”(城市POI密度中位数),“便宜”映射成“price_range=0-80元”边界识别:确保“附近”修饰的是“餐厅”还是整个动作“找”。看依存关系——“附近”通常附着在地理名词或直接作状语。第三层:槽位关系解析(核心难点)这一步决定了最终查询是“AND”还是“OR”。实现方式有三种:方式一:规则模板。预定义常见组合模式,例如“A的B”中A修饰B,“又A又B”中A和B并列。优点是可控,缺点是泛化差。方式二:轻量依存解析。用一个小型BERT判别两个槽位之间的语义关系。输入[CLS]槽位A [SEP]槽位B [SEP]原句,输出关系类别(并列/修饰/冲突/无关系)。我们内部测试准确率能做到87%。方式三:大模型直接生成结构化输出(GPT-3.5/4级别)。给定prompt,要求输出JSON,key为槽位类型,value为值,并增加relation字段列出约束组合逻辑。优点是准确率高,缺点是延迟和成本。生产环境的成熟方案是方式二+方式三结合:离线用大模型生成高质量训练数据,在线用小模型推理。有了关系解析层,系统才能输出类似这样的结构:{ "intent": "search_restaurant", "slots": [ {"type": "distance", "value": "nearby", "normalized": "radius_3km"}, {"type": "price", "value": "cheap", "normalized": "0-80"} ], "constraints": { "operator": "AND", "relations": [["distance", "price"]] }}面试官期待的答案,就是你能讲清楚这一层怎么设计和测试。 四、典型案例 / 对比:规则匹配 vs 序列标注 vs 依存解析拿三句真实用户请求,横向对比三种方案。Case 1:“找附近便宜的餐厅”Case 2:“找便宜餐厅,要附近的”Case 3:“找餐厅,便宜的和附近的都行”方案A:基于规则的关键词匹配。预定义词表{便宜, 附近, 餐厅}三个case的输出完全一样:{价格=便宜, 距离=附近, 品类=餐厅}问题:case3的语义是“便宜或附近”(二选一),但规则引擎输出成了“且”,会漏召回。方案B:BERT序列标注(无关系层)。标注结果:case1和case2都能正确标出所有实体,但不知道约束关系,默认全部“且”case3同样出错,因为它无法区分“和…都行”表示的是OR方案C:序列标注+依存解析(本文第三层)。依存分析识别出case3中“便宜的和附近的”通过“都行”连接,关系为“OR”输出约束改为OR,查询逻辑正确对case1和case2,依存分析能发现“附近”和“便宜”共同修饰“餐厅”,关系为AND这个对比说明:单纯把实体抽全只是第一步。没搞清楚关系的抽取,等于没抽。美团内部的一个A/B测试显示,加上依存关系层后,多约束请求的满意度(用户点击率)提升了19%,因为系统不再输出一堆矛盾的结果。五、工程落地启示:你的测试用例需要补什么如果你是测试工程师或者算法工程师,以下三个方向立刻可以动手。第一,构建“多槽位+关系”的测试集。 不要只写“价格=便宜”的单槽用例。写50条组合用例,覆盖以下关系类型:并列且(and):舒服且便宜的酒店并列或(or):川菜或者粤菜修饰(attribute):海淀附近的咖啡馆冲突(conflict):便宜的米其林(模型应该识别为不可能,走澄清流程)每条用例标注期望的约束逻辑(AND/OR/优先级)。跑你的模型看准确率。很多号称95%准确率的系统,在这个测试集上会掉到70%以下。第二,增加“槽位关系断言”到自动化测试。 传统测试只断言slots列表是否包含某实体。升级后,添加断言约束逻辑。例如:assert model.constraints.operator == "AND"assert model.constraints.relations == [["price","distance"]]这样就能拦截case3那种“都行”被误判为AND的回归。第三,用线上日志挖掘“漏召”模式。 定期抽样用户请求,对比模型输出的槽位和用户真实点击/后续对话。如果用户说“找附近便宜的餐厅”,模型只出了便宜,但用户最后点击了三公里内的店,说明他补了距离约束。这类样本应该回流训练。我在一家OTA公司做咨询时,他们的意图识别漏召率高达22%,大部分是复合约束。加了上述三个动作,漏召率降到9%,且没有增加人工标注成本——用的是用户行为隐式反馈。六、趋势判断:槽位间的关系理解会成为意图识别的标配大模型的出现,让单槽位提取变得廉价。随便一个BERT微调就能做到90+% F1。但关系理解依然棘手,因为它需要逻辑推理,而不是模式匹配。未来两年会看到两个变化:一是测试标准升级。技术面试和内部考评会越来越多地出现类似“用户说X和Y,你的系统怎么处理关系”的问题。只会序列标注的简历会越来越难通过。二是工程上会形成“小模型+轻量关系模块”的标配。大模型太贵太慢,不适合线上实时推理。但可以用大模型离线生成关系标注数据,训练一个小的关系分类器(参数量<100M)。我们团队用GPT-4生成了2万条复合约束样本,训练了一个DistilBERT,在线延迟仅3ms,关系分类准确率85%。对三类读者的建议:在校生:做意图识别项目时,别只满足于跑通ATIS数据集。自己手写20条含“和/或/但/不要”的复合约束用例,尝试用spaCy的依存解析或小模型做关系分类。能讲清楚这个,面试官会刮目相看。初级工程师:拿你现在的对话系统或搜索接口,跑一遍多约束测试集。记录漏召和关系误判。把这个分析写成技术笔记,附上改进方案。这是晋升答辩里的硬通货。中高级工程师:思考测试体系的升级。传统QA只验证“模型输出了什么”,未来需要验证“模型没输出什么”。设计端到端的约束覆盖度指标,比如“用户约束满足率”。这比单纯看准确率更能反映体验。最后问一个你可以立刻去验证的问题:你的意图识别系统,能正确区分“便宜的日本料理和意大利餐厅”与“日本料理和便宜的意大利餐厅”的约束范围吗?拿这两句话去测一下。答案会让你吃惊。
-
最近 **Anthropic 官方发布了一份 33 页的 Claude Skills 构建指南**。很多人看到这个消息时的第一反应是:> Skills 不就是 Prompt 模板吗?如果只是这么理解,那就低估它了。这份指南其实透露了一件更大的事情:**AI 应用的开发方式正在发生变化。**过去几年,大多数 AI 应用是这样的:```用户 → Prompt → LLM → 输出```但现在越来越多 AI 系统开始变成:```用户 → Agent → Skills → 工具 → 结果```也就是说:**Prompt 在减少,能力模块在增加。**Anthropic 的这份 Skills 指南,本质是在告诉开发者:**如何把 AI 能力做成模块化系统。**---# 目录- 1 Claude Skills 到底是什么- 2 Skills 的核心设计思想- 3 Skills 的工程结构- 4 Skills + MCP 的 Agent 架构- 5 Skills 的五种设计模式- 6 Skills 如何测试- 7 Prompt工程 vs Agent工程- 8 AI Agent 技术栈- 9 为什么 Skills 会成为 Agent 的核心能力---# 1 Claude Skills 到底是什么Anthropic 的官方定义其实很简单:**Skill = 一组可复用的任务流程。** 本质上,它就是一个 **能力模块**。一个 Skill 的典型结构是:```your-skill-name/SKILL.mdscripts/references/assets/```其中最重要的是:```SKILL.md```这个文件包含:* YAML 元信息* 技能描述* 执行步骤* 示例* 错误处理例如:```yaml---name: sprint-planningdescription: 自动规划项目冲刺任务 当用户说“规划冲刺”“创建任务”时使用---```执行流程:```1 获取项目状态2 分析团队容量3 建议任务优先级4 创建任务```简单来说:**Skill = 把经验封装成模块。**---# 2 Skills 的核心设计思想Anthropic 在文档中提出了三个核心理念。 ---## 1 渐进式加载Skill 不会一次性加载全部内容。而是三层结构:```Layer1 YAML metadataLayer2 SKILL.mdLayer3 references```加载流程如下:```mermaidflowchart TDA[用户请求] --> B[加载YAML元信息]B --> C{是否触发Skill}C -->|是| D[加载SKILL.md]D --> E[执行任务流程]E --> F[按需读取references]```这种设计带来的好处:* 节省 token* 保留复杂知识* 降低上下文污染---## 2 可组合性Claude 可以 **同时加载多个 Skills**。例如:```design-skillcoding-skillanalysis-skillreport-skill```一个 Agent 任务中可能变成:```Agent ├ design skill ├ coding skill └ report skill```所以设计 Skill 时必须注意:**不要假设自己是唯一技能。**---## 3 可移植性同一个 Skill 可以运行在:* Claude.ai* Claude Code* API* Agent 系统也就是说:**写一次,到处使用。**---# 3 Skills 的工程结构官方推荐的工程结构如下:```skill-name│├── SKILL.md├── scripts├── references└── assets```每个组件的作用:| 组件 | 作用 || ---------- | ------ || SKILL.md | 核心逻辑 || scripts | 自动执行脚本 || references | 知识文档 || assets | 模板资源 |一个 Skill 的典型执行流程:```mermaidsequenceDiagramUser->>Claude: 创建项目计划Claude->>Skill: 触发SkillSkill->>MCP: 获取项目数据MCP->>Skill: 返回数据Skill->>Claude: 生成计划Claude->>User: 输出结果```---# 4 Skills + MCP 的 Agent 架构如果说:**MCP 是连接层**那么:**Skills 就是知识层。** 架构如下:```mermaidflowchart TDUser --> AgentAgent --> SkillsSkills --> MCPMCP --> GitHubMCP --> NotionMCP --> LinearMCP --> Slack```一句话总结:```MCP 解决:AI 能做什么Skills 解决:AI 应该怎么做```---# 5 Skills 的五种设计模式Anthropic 总结了五种常见设计模式。---## 1 顺序工作流适合:多步骤自动化任务。```创建账户↓设置支付↓创建订阅↓发送欢迎邮件```---## 2 多 MCP 协同例如设计交接流程:```mermaidflowchart TDA[Figma MCP]A --> B[导出设计资产]B --> C[Drive MCP]C --> D[创建文件夹]D --> E[Linear MCP]E --> F[创建开发任务]F --> G[Slack MCP]G --> H[通知团队]```---## 3 迭代优化适合:报告生成、数据分析。```生成初稿↓质量检查↓修改↓重新验证```---## 4 情境工具选择```大文件 → 云存储协作文档 → Notion代码文件 → GitHub```---## 5 领域知识 Skill例如金融风控系统:* 风险规则* 合规流程* 审计记录都可以嵌入 Skill 中。---# 6 Skills 如何测试官方给出三种测试方式。 ---## 1 触发测试验证 Skill 是否正确触发。例如:应该触发:```帮我创建项目帮我规划冲刺创建任务```不应该触发:```今天天气写Python脚本```---## 2 功能测试验证任务是否成功执行。例如检查:```任务是否创建参数是否正确MCP调用是否成功```---## 3 对比测试比较:```无 Skillvs有 Skill```官方示例:| 指标 | 无技能 | 有技能 || ------- | ----- | ---- || 消息数 | 15 | 2 || API错误 | 3 | 0 || token消耗 | 12000 | 6000 |---# 7 Prompt工程 vs Agent工程这张图最能说明问题:```mermaidflowchart LRPrompt[Prompt]Prompt --> LLMLLM --> OutputAgent[Agent]Agent --> SkillsSkills --> ToolsTools --> Result```对比:```传统AI应用Prompt → LLM → 输出Agent系统Agent → Skills → 工具 → 结果```---# 8 AI Agent 技术栈如果从系统架构看,AI Agent 的技术栈大致如下:```mermaidflowchart TDUser --> AgentAgent --> MemoryAgent --> SkillsSkills --> MCPMCP --> ToolsTools --> ExternalSystems```系统分层:```用户↓Agent↓Skills↓MCP↓外部系统```---# 9 为什么 Skills 会成为 Agent 的核心能力Prompt 最大的问题是:**经验无法沉淀。**每次都要重新写。但 Skills 可以:```把经验封装成能力模块```例如:```coding-skillanalysis-skillreport-skilldesign-skill```未来 AI 系统很可能变成:```mermaidflowchart TDAgentOS --> SkillsMarketplaceSkillsMarketplace --> MCPMCP --> ToolsTools --> ExternalSystems```也就是:```Agent+ Skills+ MCP+ Tools```这非常像软件系统:```操作系统+ 函数库+ 插件```---# 结语Anthropic 发布 Skills 指南,其实透露出一个非常清晰的趋势:**AI 正在从“聊天系统”变成“能力系统”。**未来 AI 工程的核心很可能不再是:```Prompt Engineering```而是:```Agent Engineering```在这种架构下:* Skills 是能力模块* MCP 是工具连接层* Agent 是调度系统如果你正在做:* AI Agent* 自动化系统* MCP工具* 企业AI应用那么 Skills 这种能力封装方式,很可能会成为 **下一代 AI 工程的重要模式**。
-
用的codearts IDE,用户指南说单元测试要用UT智能体但是ide没有这一项挠头
-
1、出现问题时,您做了哪些操作?答复:请问按照Demo原理图设计了2P的920模组的载板,如何给载板上的CPLD,bmc烧录代码,如何控制载板上电时序,让载板和两个920模组运行起来?哪里可下载相关资料学习运行及使用该载板2、在哪个步骤出现了问题?答复:目前只是做出并焊接好了2P 920模组载板,载板上的各路电源,输出电压正常(单独使能各电源,不由载板CPLD使用各电源),但不知如何烧录载板CPLD代码,不知如何运行该载板。3、您希望得到什么结果?答复:运行该2P 920载板,可满足上电时序要求,正常安装操作系统等,可正常运行等。4、您实际得到什么结果?答复:单独使能载板上的各路电源,输出电压正常,但不知如何烧录载板上的CPLD代码等,不知如何控制载板上的各路电源的上电时序,不知如何运行该载板。
-
这段时间在捣鼓网站加速和监控,试了几个工具:炸了么、FUNCDN、热网互联。没接广告、也不是测评,就是单纯分享下感受。炸了么:主打拨测和网站监控,用起来挺顺,界面也简洁。多节点测试挺方便,能一眼看到各地访问情况。对自己搭的小站挺有帮助,能及时发现抽风问题。FUNCDN:FUNCDN 是 CDN 服务,配置逻辑清晰、功能够用。速度挺稳定,国内外都试了下没太大问题。算是最近体验里比较顺手的一个。热网互联:老牌一点,稳定是最大特点。客服也挺快回应的,用着比较省心。适合那种想一劳永逸不太折腾的人。用了一段时间,个人感觉这几款挺不错的,纯分享,没收钱,有用过其他工具的也欢迎补充下,我也想多挖点好用的服务。
-
开发者们是否常因真机设备不足、测试流程繁琐及硬件成本高昂而受阻?HUAWEI AppGallery Connect 云测试、云调试能力,通过免设备投入、低操作门槛及海量鸿蒙真机资源,让鸿蒙应用测试变得简单又高效。核心能力亮点:海量鸿蒙真机在线选:平台配备了多种型号的鸿蒙真机,覆盖主流/热门机型,满足多样化测试场景需求,满足开发者在各种场景下的测试需求,无需自己购买设备。每天300分钟免费使用时长:每天提供300分钟的免费使用时间,足够支撑新手尝鲜、轻量级项目测试或多次验证,0成本起步测试,立省真机购买投入!上手快且操作简单:平台界面简洁,操作流程直观,新手无需复杂学习,按照操作指引很快就能上手使用,专注于应用测试本身。新手常见问题解答:Q1:应用马上要上线了,自己的手机不是鸿蒙系统,有什么测试渠道吗?A1:通过云测试+云调试申请很便捷。登录AppGallery Connect平台后,在设备列表中选择你需要的鸿蒙真机型号,点击申请即可,无需繁琐的审批流程,还能享受每日300分钟免费时长。Q2:每日免费的300分钟时长,是只能用一台测试机吗?A2:不是的。每日都会发放300分钟使用时长,可以在平台上切换不同的鸿蒙真机进行测试,只要每日累计使用时间不超过300分钟,都可以免费使用。Q3:测试过程中,能像操作自己的手机一样操控测试机吗?A3:可以。远程操控体验和操作自己的手机类似,可以在测试机上安装应用、点击操作、输入内容等,真实还原应用的使用场景。Q4:除了基础的功能测试,能测试应用的性能吗?A4:可以。云测试可全面检测应用兼容性、性能、稳定性、功耗及UX等关键指标,帮助你了解应用在真机上的性能表现,便于进行优化。Q5:在云调试时,能实时查看代码运行情况并修改吗?A5:可以。云调试支持实时查看代码运行状态,真实运行环境精准复现用户场景,断点、日志即时获取,可对代码进行修改并重新调试,快速定位并解决问题。Q6:测试完成后,能保存测试过程中的数据或截图吗?A6:可以。平台支持保存测试过程中的截图、日志等数据,方便你后续查看和分析,更好地排查应用存在的问题。Q7:如果每日300分钟免费时长用完了,还想继续使用怎么办?A7:每日的免费时长用完后,可以等待次日免费时长刷新或在平台上选择付费套餐继续使用,套餐价格灵活,能满足不同开发者的需求,成本远低于购置真机,按需付费毫无压力!。 如果你是鸿蒙应用开发新手,想要轻松解决真机测试难题,不妨试试云测试+云调试能力。每日赠300分钟免费时长!轻量测试0成本起步,极简操作,高效输出报告。成本低、易上手,点此立即试用 >> AppGallery Connect致力于为应用的创意、开发、分发、运营、经营各环节提供一站式服务,构建全场景智慧化的应用生态体验。为给你带来更好服务,请扫描下方二维码或者点击此处免费咨询。 如有任何疑问,请发送邮件至agconnect@huawei.com咨询,感谢你对HUAWEI AppGallery Connect的支持!
-
我原华硕笔记本今年新换了华为笔记本电脑,原工作使用的VitualBox 加载虚拟计算软件安装不上了,安装提示缺少文件。换其他品牌电脑可以安装,求帮助。
-
一、软件定位与核心功能Postman是全球领先的API开发与测试工具,支持REST、SOAP、GraphQL等协议调试,2025年最新版v11新增AI智能生成测试用例、多环境变量同步等功能。适用于以下场景:前后端分离开发中的接口联调自动化测试脚本编写接口文档自动生成团队协作共享API资源二、安装环境准备1. 系统要求组件最低配置推荐配置操作系统Windows 7Windows 10/11内存4GB8GB磁盘空间500MB1GB SSD2. 网络要求确保443端口开放(用于账户登录和云同步)企业用户需配置代理白名单(若存在网络限制)三、安装全流程详解步骤1:获取安装包访问Postman官网安装包下载页:https://pan.quark.cn/s/407a93c56583/,选择Windows版本步骤2:运行安装程序解压压缩包,打开Postman-win64.exe 文件,选择安装路径(建议修改为D盘):D:\DevTools\Postman_v12 步骤3:完成安装新版默认直接安装启动,不用再启动安装程序勾选Launch Postman选项,点击Finish启动程序四、首次运行配置1. 账户注册/登录点击左下角Sign In,选择注册方式(推荐使用GitHub账号快捷登录)2. 工作区设置选择工作区类型(个人使用建议选Personal)五、功能验证与基础使用测试1:发送GET请求点击**+**号新建请求标签页输入测试接口URL:https://jsonplaceholder.typicode.com/posts/1点击Send按钮查看响应结果测试2:环境变量管理点击右上角齿轮图标进入Environments创建名为"Dev"的环境,添加变量base_url = https://api.example.com在请求URL中使用{{base_url}}/users实现动态配置六、常见问题解答Q1:安装时提示"Unable to authenticate"?检查系统时间是否准确临时关闭杀毒软件防火墙使用命令postman --disable-gpu启动Q2:如何导入Swagger文档?通过Import > Link输入OpenAPI文档URL,自动生成接口集合Q3:请求超时如何调整?在Settings > General中修改Request timeout为30000ms七、延伸学习资源Postman官方学习中心:https://learning.postman.com/声明:本教程使用Postman官方v11版本制作,遵循EULA使用协议。原创内容转载请注明来源。
-
脉冲信号有高电平和低电平,那么负脉冲有负电压吗?如何使用菲尼瑞斯示波器查看脉冲正负
-
单元测试/集成测试自动化工具--WinAMSCoverageMaster winAMS : 适用于嵌入式目标机代码的单元测试/集成测试工具全面支持嵌入式微机!验证嵌入式C/C++软件 实施以模块为单位的自动化单元测试工具不需要HookCode 直接使用目标机代码进行单元测试联合静态解析工具[CasePlayer2],提供C0(语句),C1(判定),MC/DC覆盖率报告,优化测试用例制作已取得第三方认证机构TUVSUD对适用于汽车机能安全ISO26262软件工具的认证产品概要[Coverage master winAMS]是以嵌入式软件的函数为单位,实施模块单元测试以及C0/C1/MCDC覆盖率测试(coverage test)的嵌入式软件自动化单元测试工具。目标机源代码通过交叉编译器生成目标机执行代码,通过跟实际处理器同样的模拟处理器环境进行单元测试,不需要对执行代码做任何变动,使高信赖性的模块测试成为可能。在汽车控制软件这样的对安全性要求极高的领域,单元测试已经成为不可缺少的一部分。使用目标机代码进行单元测试也是为了符合汽车行业中ISO26262功能安全认证标准。产品特长全面支持嵌入式微机!验证嵌入式C/C++软件 实施以模块为单位的自动化单元测试工具作为能够检验出仅凭系统测试以及整体测试无法发现的[潜在错误]的检测方法,[单元测试]在嵌入式开发领域受到广泛重视。同时,单元测试也是汽车用软件功能安全(ISO26262)领域中要求实施的认证项目之一。[Coverage master winAMS]直接使用通过交叉编译生成的目标机代码,在模拟处理器环境下进行单元测试。既能实现C语言程序的逻辑上的单元验证,又能够对嵌入式微机组装为产品后可能发生的问题等进行具有高信赖度的白盒(white box)测试。不需要HookCode 使直接使用目标机代码进行单元测试成为可能的业界唯一的工具有些公司的单元测试工具往往采用在被测试对象的源代码中追加测试用代码或者测试用驱动器的方法,导致测试时所用的代码与组装为产品后的目标机用代码不同。虽然[理论上运行功能应该是相同的],但是从嵌入式开发的角度考虑,这样就如同对交叉编译所生成的经过优化处理的代码进行了加工,无法确保最终产品的质量。Coverage master winAMS是业界唯一的,具有[不需要对被测试对象做任何加工]实施单元测试功能的工具,特别是在安全性要求高的领域中得到很高的评价。不需建立单元测试专用的环境,可以在开发用交叉编译环境进行单元测试Coverage master winAMS不需要追加任何测试用驱动器或测试用代码,可以直接使用将组装成产品的目标代码进行单元测试。单元测试能够与软件开发使用共同的交叉编译环境,不再需要对测试资源进行专门管理,也不再需要建立其他专用环境。因此,既方便程序资源管理,又能够缩短准备测试环境所需的时间。符合汽车功能安全标准(ISO26262)[不做加工直接使用目标机代码实施单元测试]这一要求的最佳工具ISO26262是从IEC61508衍生出来的适用于汽车制造领域的功能安全标准。其中的Part.6-9[软件程序单元测试]包括了关于软件程序的构造覆盖率测试以及有关的规定项目。根据汽车安全标准(ASIL),提出了测试语句覆盖率(statement coverage),分支覆盖率(branch coverage),MC/DC覆盖率的推荐性事项。其中的另一个推荐性事项是[尽可能使单元测试的环境与目标环境相同]的规定。如果在与目标环境不同的环境下进行单元测试,必须表明源代码与目标代码的差别,以及目标环境和测试环境的差别。因此,对于那些使用与目标微机不同的电脑进行编译和单元测试的其他公司的工具而言,这个要求很难满足。 还有些公司的单元测试工具虽然包括交叉编译环境及编译功能,而且也能够在与目标环境相同的环境下进行测试,但是所有的测试都需要插入测试用代码,进行再次编译,因此测试也只能在与目标环境不同的环境下实施。GAIO提供的单元测试工具Coverage master winAMS具有●采用全面支持嵌入式微机的微机化功能测试平台环境●不需要插入测试用代码直接使用目标机代码进行测试的特征,提供符合ISO26262标准要求的必须功能。GAIO提供的Coverage master winAMS是符合ISO26262标准[直接使用整装用代码实施单元测试]这一要求的业界唯一的工具。关于汽车机能安全ISO26262的对应以及认证的获得已取得第三方认证机构TUVSUD对适用于汽车机能安全ISO26262软件工具的认证2012年6月28日,「Coverage master winAMS / General」测试工具获得由德国TUVSUD第三方认证机构,在汽车机能安全规格的ISO26262软件工具方面的认证,包括日本在内亚洲地区首次获得该项认证。通过此项认证,说明本公司的单元测试工具「Coverage master winAMS / General」,以及程序分析工具「CasePlayer2」,在静态分析和单元测试领域,是符合所有安全度水准的工具,并由TUVSUD认证机构得到了保障。ISO 26262对于不同的开发用软件工具在工具置信水平(TCL),都需要开发者提供开发软件工具的认证书。此项认证适用于在工具认证当中,最为复杂的TCL3工具认证标准。因此,导入本公司的单元测试工具之后,不需要对TCL的部分进行认证,进而可以缩减手续跟时间。主要的单元测试功能采用SSTManager管理单元测试projectSSTManager是Coverage master winAMS的应用功能,用于管理单元测试project,制作测试数据(test data)。从设定测试环境开始,到报告测试结果为止,均由微机化功能测试平台(ISS)实施综合管理。采用通用便利的CSV文件管理测试数据的输入输出Coverage master winAMS不需要插入测试用代码,直接使用目标机代码进行单元测试。采用通用便利的CSV文件管理函数测试时使用的输入输出数据。测试结束后,输出的测试结果和输出的期待值也将以相同的格式显示在CSV文件之中。C0/C1覆盖率报告的自动化制作功能(标准功能)根据测试的输入输出数据自动报告相应源代码的C0/C1测试覆盖率结果。包括通过图形(viewer)显示测试数据,以及与其相应的被测试的源代码路径的功能,用于分析测试结果。作为选项功能也包括MC/DC覆盖率测试功能。MC/DC覆盖率的自动化测试功能(选项功能)作为选项功能提供MC/DC覆盖率测试功能。C0/C1覆盖率测试不需要加工即可直接使用目标机代码。然而,MC/DC覆盖率测试对于复合式的条件式,需要自动插入HookCode将复合式的条件式分解,才能对各条件式进行测试。这样就有可能导致测试用代码与目标机用代码的不同。为了验证HookCode的妥当性,在MC/DC覆盖率测试的同时,运行目标机代码,确认运行结果与期待值的一致性。注:右图举例显示,第2个if句的复合条件式中,[gbc>30]为false时的分支没有被测试到。以C1覆盖率测试来说,它的测试结果是OK;而对于MC/DC覆盖率测试来说,它的结果是NG。注: MC/DC覆盖率测试功能不支持C++程序。单元测试的效率化功能联合程序解析工具CasePlayer2,实现代码参照解析作业的效率化利用CasePlayer2生成的流程图表以及模块构造图(调用函数的构造图)与源代码的连接(link)功能,使单元测试用源代码的解析工作效率化。能够自动检索被测试函数的外部变量,使测试条件设定效率化联合程序解析工具CasePlayer2,自动检索被测试函数所使用的外部变量。缩短了以往必须对源代码进行搜索找出输入条件的变量所需的工作。而且,能够防止人工操作导致的类似变量指定遗漏的的错误。根据代码解析自动化制作C0,C1,MC/DC 覆盖率测试计划联合程序解析工具CasePlayer2,自动化制作符合覆盖率测试要求的条件分支if,switch,for,while等的测试数据。可以将被测试函数中含有的条件式(if以及switch等)在数据制成图形(Viewer)上列表显示。点击其中的条件,工具将自动开始检索与之相关的变量,进而从所设置的条件的境界值中自动生成覆盖率测试所需要的数据。为了达到C1/MCDC覆盖率,测试时需要对各函数的数据进行组合。利用CasePlayer2提供的解析结果,分析条件式的net构造,在重复性限制在最小限度下生成C1/MCDC覆盖率测试用数据。支持MPU CoverageMaster winAMS Supported Processor List(English)动作环境・操作PC/OS・IBM PC/AT 兼容机・Pentium(相当) 2GHz 以上的CPU・存储器 512MB 以上(推荐值)・显示器分辨率 XGA(1024*768)以上(推荐值)・Windows XP, Windows Vista, Windows 7(32bit/64bit)(※Windows 95/98/Me/NT/2000 未支持)
推荐直播
-
Skill 构建 × 智能创作:基于华为云码道的 AI 内容生产提效方案2026/03/25 周三 19:00-20:00
余伟,华为云软件研发工程师/万邵业(万少),华为云HCDE开发者专家
本次直播带来两大实战:华为云码道 Skill-Creator 手把手搭建专属知识库 Skill;如何用码道提效 OpenClaw 小说文本,打造从大纲到成稿的 AI 原创小说全链路。技术干货 + OPC创作思路,一次讲透!
回顾中 -
码道新技能,AI 新生产力——从自动视频生成到开源项目解析2026/04/08 周三 19:00-21:00
童得力-华为云开发者生态运营总监/何文强-无人机企业AI提效负责人
本次华为云码道 Skill 实战活动,聚焦两大 AI 开发场景:通过实战教学,带你打造 AI 编程自动生成视频 Skill,并实现对 GitHub 热门开源项目的智能知识抽取,手把手掌握 Skill 开发全流程,用 AI 提升研发效率与内容生产力。
回顾中 -
华为云码道:零代码股票智能决策平台全功能实战2026/04/18 周六 10:00-12:00
秦拳德-中软国际教育卓越研究院研究员、华为云金牌讲师、云原生技术专家
利用Tushare接口获取实时行情数据,采用Transformer算法进行时序预测与涨跌分析,并集成DeepSeek API提供智能解读。同时,项目深度结合华为云CodeArts(码道)的代码智能体能力,实现代码一键推送至云端代码仓库,建立起高效、可协作的团队开发新范式。开发者可快速上手,从零打造功能完整的个股筛选、智能分析与风险管控产品。
回顾中
热门标签