ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Vector DOORS AddIn:从配置到DXL扩展,打通需求追踪闭环

Vector DOORS AddIn:从配置到DXL扩展,打通需求追踪闭环 简介这是一份由Vector Informatik GmbH发布的《Vector DOORS AddIn for vTESTstudio》官方用户手册英文版主要面向使用vTESTstudio进行测试开发与需求管理的测试工程师帮助解决DOORS需求与Vector测试工具链之间的同步、追踪与验证难题。资源以单个PDF文档形式提供压缩包大小约2.74MB。手册先介绍安装与工作流再系统讲解六大核心功能从DOORS导出追踪项、扩展DXL脚本导出额外属性、将追踪项导入vTESTstudio、将追踪项链接至具体测试用例实现、在CANoe中执行测试单元以及导入CANoe测试报告并配有认证、保修、支持与商标等背景信息内容完整。每个功能的操作步骤与界面提示清晰读者可按图操作快速掌握从需求导入、用例关联到测试执行、结果回传的完整协同逻辑提升需求追溯效率与测试覆盖率。目前已有227人学习/下载适合汽车电子测试与需求管理工程师参考。1. Vector DOORS AddIn先用一个场景看清它在测试链路里的位置台架测试团队最常见的拉扯是需求躺在 IBM Rational DOORS 里慢慢变测试用例在 Vector vTESTstudio 里维护执行结果散落在 CANoe 报告里三套系统各说各话。每次版本评审要凑需求覆盖率就得有人手动把三份数据倒一遍倒完还得祈祷没看漏。Vector DOORS AddIn 就是官方用来把这三段接成闭环的插件DOORS 模块里的对象导出成 trace item 进 vTESTstudio拖拽链接到测试用例CANoe 执行后报告再回写 DOORS。它默认只导出标题、文本、标识符、URL、模块版本五个属性多出来的需求属性要靠改随附的 DXL 脚本自己加这也是很多人装完发现不够用的第一个坎。适合谁天天和覆盖率较劲或者被 DXL、vTESTstudio、CANoe 来回倒腾数据的测试工程师和脚本开发。2. 安装与注册自动安装之外两个注册表键位和一处 COM 组件2.1 自动安装覆盖不了的两种场景插件有独立安装包从 Vector 官网下载后一路下一步正常情况下 DOORS 菜单栏会出现 vTESTstudio 菜单项。但有两种场景是自动安装覆盖不了的第一种插件装完了你才装 DOORS或者 DOORS 做过大版本升级原来注册的路径已经失效第二种公司环境下 DOORS 装在新的机器上旧机器上跑通的插件没有迁移过来。这两种情况不需要重装插件只要手动在注册表里把插件路径重新登记一次。手动注册的本质是告诉 DOORS 去哪个目录加载 addin。DOORS 启动时会按注册表里的 Addins 值逐个加载目录下的 addin 文件路径不对、类型不对、或者加了引号都会直接表现为「菜单里什么都没有」。2.2 注册表 Addins 键HKCU、HKLM 与 64 位路径打开 regedit按当前 DOORS 版本找到注册表键常见的是HKEY_CURRENT_USER\Software\Telelogic\DOORS\9.4\Config。这里的版本号要和你装的 DOORS 客户端对上9.4 只是一个常见示例。先看 Config 键下面有没有现成的Addins值没有新建一个 REG_SZ 类型字符串值名字叫Addins值填插件安装目录例如C:\Program Files (x86)\Vector vTESTstudio DoorsAddIn 3.0\Doors-9.3已有把插件路径追加到原值后面多个路径之间用英文分号;分隔千万别直接覆盖原来的值。这里说下几个容易踩的细节。第一HKEY_CURRENT_USER下的配置优先级高于HKEY_LOCAL_MACHINE也就是说如果当前用户下配了 Addins机器级配的 Addins 里那堆老插件可能就不加载了想让所有用户生效常见做法是把 HKLM 里原有的值复制一份进 HKCU再追加新插件路径。第二64 位 Windows 上HKLM 路径里不是Software\Telelogic而是Software\Wow6432Node\Telelogic因为 DOORS 客户端是 32 位程序注册表会被重定向到 32 位视图。很多人按文档找半天找不到键多半是栽在这。使用场景注册表路径说明当前用户独立配置HKCU\Software\Telelogic\DOORS\版本\Config优先级高推荐日常用所有用户生效HKLM\Software\Wow6432Node\Telelogic\DOORS\版本\Config64 位系统必须带 Wow6432Node命令行临时加载DOORS 启动参数-addins与注册表方式互斥用了命令行注册表就不生效另有一条和注册表并行的加载方式DOORS 启动时带-addins参数直接集成 addin。需要注意一旦走了命令行方式注册表里登记的 addin 就不再被读取。实际项目里不建议命令行和注册表混用排查问题时你会分不清当前生效的是哪条路径。2.3 RegisterCOMServer.bat为什么必须用管理员 cmd有些场景下光注册 addin 还不够COM 组件也要单独注册典型的就是手动在注册表里登记完DOORS 模块里打开 vTESTstudio | About 版本对话框看不到插件带的那几个 COM 组件版本。这时要到插件安装目录下执行 RegisterCOMServer.bat。cd C:\Program Files (x86)\Vector vTESTstudio DoorsAddIn 3.0 RegisterCOMServer.bat手册里有一句非常容易忽略的警告用右键「以管理员身份运行」来执行这个 bat 是不行的必须打开管理员权限的命令提示符cmd.exe再 cd 进去执行。原因在于这个脚本要注册 COM 服务器需要写系统级的 HKCR 注册表分支和 COM 目录双击运行 bat 时默认工作目录不一定是脚本所在目录提权方式也不完整管理员 cmd 能同时保证权限和工作目录都正确。注意验证 COM 组件是否注册成功不用去注册表里翻。打开 DOORS 模块进 vTESTstudio | About版本对话框里能看到对应组件才算真的注册上了。安装目录下是按 DOORS 版本分子文件夹的比如 Doors-9.3、Doors-9.1_9.2、Doors-pre9.1注册时路径必须指到和你 DOORS 客户端版本匹配的那个子文件夹。手册某处示例还出现过 2.2 的目录名那是版本更新留下的旧示例按你实际安装的 3.0 目录填。3. 五阶段工作流从 DOORS 导出到 CANoe 报告回写的闭环3.1 导出 Trace Items视图、过滤器和叶子对象整个链路的第一步是在 DOORS 里把需求或测试描述对象导出成 trace item 交换格式。入口是 DOORS 菜单里的 vTESTstudio | Export Trace Items…这步之后会生成一个 XML 文件。导出逻辑有三条规则不搞清楚会导出得莫名其妙。第一导出范围是「当前视图 当前过滤器」下所有未删除的对象你在 DOORS 里隐藏了什么、过滤掉了什么导出的结果就缺什么。第二只有「没有可见子对象」的对象才会被导出为 trace item 叶子带子对象的高层条目会被映射成 vTESTstudio 里的文件夹层级。也就是说如果你在 DOORS 里把需求树折叠着没展开或者过滤器把子条目滤掉了导出来就只剩孤零零的父节点目录。第三每个叶子对象默认带五个属性对应关系如下DOORS 对象属性交换格式里的 XML 元素vTESTstudio 里的作用Object HeadingNametrace item 名称Object TextDescriptiontrace item 描述IdentifierReadableID可读标识URLReference链接回 DOORS 对象的地址Module VersionVersionIdentification模块版本识别这五个属性是 vTESTstudio 侧 trace item 的基础骨架。注意 URL 属性承担了后两跳的使命vTESTstudio 里链接到用例、CANoe 报告里生成 reference最终靠的都是这个 URL 指向 DOORS 里的原对象。所以导出前最好确认当前视图里 URL、Identifier 这些列是可见且有值的否则后面报告里的 reference 会缺跳转目标。3.2 导入 vTESTstudio拖拽建立多对多链接导出的 XML 不是拿来直接看的要进 vTESTstudio。入口是 Tools | Trace Items | Import Trace Items…选中刚才生成的文件导入完成后DOORS 模块的层级结构会原样出现在 Trace Items Explorer 里父节点是文件夹叶子节点是可链接的 trace item。链接操作比想象中简单直接从 Trace Items Explorer 把 trace item 拖到 test design editor 里的测试用例上。拖拽建立的是多对多关系一个 trace item 可以挂在多个测试用例下一个测试用例也可以挂多个 trace item——这正是一份需求对应多个验证点、一个用例验证多条需求的常态。链接做完vTESTstudio 的 Traceability Matrix 里就能看到每个 trace item 的实现状态哪些已覆盖、哪些还没挂用例一屏筛得出来下次重新导入后有过变更的 trace item 也会被标识出来方便你看需求改动波及了哪些用例。3.3 CANoe 执行测试单元报告再回写 DOORS测试用例在 vTESTstudio 里组织成 Test Unit执行环节交给 CANoe。在 CANoe 里跑完 Test Unit生成的测试报告会带上一条关键信息每个链接了 trace item 的测试用例报告里都有对应的 reference点进去能回到 DOORS 里的原始需求对象。这一步实现了从「测试结果」反查「需求」的链路评审时不用再拿着报告和需求列表逐行核对了。链路最后一步是回写。插件提供 Import CANoe Test Report 功能把 CANoe 测试报告导入 DOORS 模块测试结果按 trace item 的引用关系挂回 DOORS 对象上。这样 DOORS 模块里既能看需求原文也能看这条需求对应的测试跑没跑、结果如何。整个工作流串起来就是DOORS 导出 → vTESTstudio 导入 → 拖拽链接用例 → CANoe 执行带 reference 的报告 → 报告回写 DOORS 模块。前后两个入口都在 DOORS 的 vTESTstudio 菜单下中间两跳在 vTESTstudio 里完成链路封闭但两端各管一段排查问题时先分清当前出错的是导出端还是导入端。4. 扩展 DXL 脚本给导出的 Trace Item 追加 Priority 这类自定义属性4.1 为什么默认只导出五个属性以及源码在哪里vTESTstudio 的 trace item 交换格式核心字段就是那五件套但 DOORS 模块里团队自己加的自定义属性千变万化——优先级、作者、评审状态、功能域、风险等级这些字段对测试设计同样是有效输入。插件没有把导出逻辑做成黑匣子而是把 Trace Item Export 部分直接以 DXL 源码形式放在安装目录里想加字段就自己改。源码文件叫 XMLExport.inc位置在插件安装目录下按 DOORS 版本分的子文件夹里。版本与文件夹的对应关系是硬性的DOORS 8.1 到 9.0 用 Doors-pre9.19.1 和 9.2 用 Doors-9.1_9.29.3 及以上用 Doors-9.3。选错文件夹改出来的脚本不会生效因为 DOORS 客户端加载的是对应版本目录里的那一份。4.2 改造 XMLExport.inc新增函数和插入点改造要做两件事加一个写属性的函数然后在 writeObject 里调用它。下面这段是典型的扩展写法把 DOORS 模块里一个叫 Priority 的属性追加进导出文件。// 新增函数把指定属性写成 XML Property 元素 void writeAdditionalInformation(Stream out, Object o, string attributeName) { // 先确认属性在当前模块里有定义避免对不存在的属性取空值 if (exists attribute attributeName) { // 从对象上读取该属性的值 string attrValue o.attributeName if (attrValue ! null) { // XML 保留字符转义防止导入解析失败 attrValue replacePreDefinedCharacters(attrValue) // 输出一个 Property 块Name 是属性名Value 是属性值 out sIndent Property \n increaseIndent() out sIndent utf8(Name attributeName /Name) \n out sIndent utf8(Value attrValue /Value) \n decreaseIndent() out sIndent /Property \n } } }逐段说逻辑。exists attribute attributeName是 DXL 里判断当前模块是否定义了这个属性的标准写法防止属性名拼错或不同模块属性不一致时取空值。o.attributeName是从对象上读属性值的写法attributeName 是传入参数函数被调用时它会被替换成实际属性名。null检查跳过空值对象避免生成空的Property块。replacePreDefinedCharacters负责把 这类 XML 保留字符转成实体属性值里一旦出现这些字符而不转义整个 trace item 文件导入时可能直接失败这是最容易翻车的一步。utf8()把内容转成 UTF-8处理中文、特殊符号时必须走这一步。sIndent、increaseIndent、decreaseIndent维护 XML 层级缩进保证Property块正确嵌套。第二步是在原有函数 writeObject 里调用它。writeObject 原有逻辑会先输出 UniqueID、ReadableID、VersionIdentification、Name、Description、Reference 这些基础元素然后在 Reference 行之后插入下面这一段// 插入位置writeObject 内 Reference 行之后 out sIndent AdditionalInformation \n increaseIndent() // 需要导出哪个自定义属性就在这里为它调用一次 writeAdditionalInformation(out, o, Priority) decreaseIndent() out sIndent /AdditionalInformation \n参数说明attributeName传给 writeAdditionalInformation 的字符串必须与 DOORS 模块里的属性名完全一致大小写也敏感模块里叫Priority脚本里写成priority就取不到值。演示里只加了一个 Priority实际要带 Status、Author 等更多属性就在AdditionalInformation块里为每个属性加一行writeAdditionalInformation(out, o, 属性名)互不影响。4.3 改完怎么确认生效保存 XMLExport.inc 后重新执行一次 vTESTstudio | Export Trace Items。注意是保存后重新导出不是保存就完事DOORS 执行导出时读的是磁盘上的 DXL 文件。导出后先用文本编辑器打开生成的 XML直接搜AdditionalInformation。能看到NamePriority/Name和对应的Value说明脚本改动已经生效这一步只要几秒钟比进 vTESTstudio 导完再发现没生效高效得多。确认无误后再导入 vTESTstudio这时 Trace Items Explorer 的属性区、以及 Traceability Matrix 里都会出现 Priority 这一列。提示改脚本前先复制一份原始 XMLExport.inc 做备份。这个文件是内核级的导出模板改坏了影响的是整个导出功能有备份随时能还原不用重装插件。5. 常见问题与排查注册、导出、导入三个环节的踩坑记录5.1 安装与注册类菜单消失和插件互相顶掉坑一插件装完DOORS 菜单里没有 vTESTstudio 项。现象很直接重启 DOORS 后菜单栏干干净净。原因通常是 DOORS 版本做过升级注册表键还是旧版本号或者 Addins 值指向的目录不存在。解决按当前 DOORS 版本号找到对应注册表键把 Addins 值指到实际存在的插件目录64 位系统先确认走的是不是Wow6432Node路径。网上搜这个插件时还会碰到一半结果是 C 的 vector 容器一半是 Vector 官网先确认你找的是做 CANoe 的 Vector Informatik。坑二注册完新插件原有 addin 失效。现象是 DOORS 里原来能用的 addin 菜单消失了一大半。原因大概率是 Addins 值被整体覆盖成了只有新路径或者 HKCU 的优先级把 HKLM 里的老配置顶掉了。解决追加路径时用;分隔先把原值复制出来再追加如果当前用户和机器级配置不一致把 HKLM 里的原值复制进 HKCU 再追加保证老插件路径还在。坑三RegisterCOMServer.bat 执行完版本对话框还是空。现象是批处理没报错但 vTESTstudio | About 里看不到 COM 组件。原因不是管理员 cmd 环境脚本写不进 COM 注册表分支。解决重新打开管理员 cmd.execd 到插件安装目录再执行一次然后回 DOORS 里确认版本对话框。5.2 导出与 DXL 脚本类属性没带出来和导出数量不对坑四导出文件里没有自定义属性。现象是模块里明明有 Priority导入 vTESTstudio 后矩阵里就是没这一列。原因通常是三种改错了版本子文件夹里的 XMLExport.inc、属性名拼写或大小写和模块里不一致、脚本保存后没有重新导出。解决先确认 DOORS 客户端版本对照安装目录选对应子文件夹属性名严格照抄模块里的拼写保存脚本后重新导出导出后用文本编辑器搜AdditionalInformation验证。坑五导出对象数量比预期少一半。现象是 DOORS 模块里几千条需求导出的 XML 只剩下零头。原因当前视图的过滤器和折叠状态影响了导出结果带可见子对象的父条目不会导出为叶子 trace item而被折叠或过滤掉的叶子也出不来。解决导出前先调整视图和过滤器把需要导出的对象展开到叶子可见再执行导出。这条规则反过来利用也可以——只想导某个子集时用过滤器圈定范围再导出。5.3 导入与链接执行类链接丢失和 report reference 缺失坑六导入 vTESTstudio 后之前拖拽建立的链接显示丢失或矩阵标记变更。现象是重新导入 trace item 后矩阵里一片未覆盖或者之前挂好的用例链接断了。原因trace item 的稳定识别靠 UniqueID 和 ReadableIDDOORS 侧如果对象标识变了或者导出时 URL / Identifier 对应列在视图里不可见、值取空导入后 vTESTstudio 会把它们当成新对象旧链接自然失效。解决导出前确认当前视图里 Identifier、URL 列有值重新导入后先看 Traceability Matrix 的变更标识再决定是补链接还是接受变更。坑七CANoe 报告里没有指向 DOORS 的 reference。现象是测试报告跑完了用例旁边没有可跳转的需求引用。原因trace item 的 Reference 属性在导出时就是空的通常是 DOORS 对象没配 URL 属性值或者导出视图里 URL 列被隐藏。解决回 DOORS 检查对象的 URL 属性导出前把 URL 列显示出来重新导出导入再链接报告里就能带出 reference。6. 收尾技巧用 Traceability Matrix 验证覆盖两个能省的重复劳动DOORS 导出、vTESTstudio 导入、拖拽链接、CANoe 执行、报告回写五步串起来之后大部分团队的下一步不是干活而是被评审逼着证明「需求都被测了」。与其手工数数不如把 Traceability Matrix 当成验证主工具导入后先开未覆盖过滤把所有没挂用例的 trace item 清零执行完测试抽查报告里的 reference 能正常跳回 DOORS 对象报告回写后回到 DOORS 模块按测试状态属性排序重点看失败项对应的需求对象。两个习惯能省下重复劳动。第一个改 XMLExport.inc 之前永远先复制备份并把「DOORS 客户端版本 ↔ 插件子文件夹」的对应关系写进项目交接文档。这个插件按 DOORS 版本分了三套脚本改错文件夹是最高频的错误换了人、换了电脑没有记录就全靠猜。第二个导出的 XML 在导入 vTESTstudio 前用任意文本工具做一次 well-formed 校验重点扫AdditionalInformation块里有没有没转义的 。replacePreDefinedCharacters 处理过的一般没问题但自己手改脚本时漏掉这个函数的调用导入就会翻车而这种错误光看 XML 是看不出来的必须靠校验工具。有一回我改完脚本矩阵里死活不出 Priority 那一列排查了两个小时最后发现改的是 Doors-9.1_9.2 那套现场 DOORS 客户端跑的是 9.6加载的压根不是我改的那份文件。从那以后每次动脚本前我先看 DOORS 的版本再决定进哪个子文件夹导出后先搜一遍AdditionalInformation再进 vTESTstudio。这套验证路径多花五分钟但再也没在需求追踪上返过工。希望帮到你。本文还有配套的精品资源点击获取
返回列表