Vector CANoe vTeststudio应用
Variant Properties,变体属性
It is possible to model variants using variant properties. Possible variants are device control variants and test variants. Variant properties can be used for conditional test coding and/or to define parameter values in parameter files dependent on the values of the variant properties.
可利用变体属性对各类变体进行建模。可用变体包含设备控制变体与测试变体。变体属性可用于条件化测试代码编写,也可依据变体属性的值,在参数文件中定义对应的参数值。
vTestStudio工程文件:Test_Project.vtsoproj
定义变体后保存,会在vTestStudio工程下生成Test_Project.vvarprop,
将定义的变体发给其他人员或者工程使用,将Test_Project.vvarprop发给即可,该配置文件中包含定义的变体参数。
- variant properties:变体属性(CANoe 里用于管理项目多版本、不同配置的核心功能)
- device control variants:设备控制变体
- test variants:测试变体
- conditional test coding:条件测试编码
Variant Properties(变体属性)在 CANoe 里的实际用法
一套工程,不用复制多份项目文件,通过切换「变体属性」,自动切换不同 ECU 版本、硬件配置、测试逻辑、参数,这就是变体属性。
对应原文:
model variants对产品多配置变体建模
两个变体类型(原文提到)
- Device control variants 设备控制变体
控制硬件 / 总线设备的变体。- 例子:同一套工程,切换「硬件在环 HIL」/「真实 ECU 台架」;或者切换 CAN 通道 1 / CAN 通道 2;切换不同的传感器硬件配置。
- 作用:修改总线接口、仿真硬件开关、设备启停逻辑。
- Test variants 测试变体
控制测试流程、测试脚本 的变体,就是原文conditional test coding条件测试编码。- 例子:
- 版本 A 的 ECU 要跑第 1、3、5 号用例;版本 B 只跑 2、4 号用例;
- 整车高配 / 低配,自动跳过低配不存在功能的测试项;
- 实现方式:在 CAPL /vTestStudio 里写条件分支:
if (VariantProperty::Version == "High") { ... },变体属性值一变,脚本自动走不同分支。
- 例子:
参数文件部分(原文后半段)
define parameter values in parameter files dependent on the values of the variant properties
参数文件(
.par)绑定变体属性:同一个参数文件,根据变体属性取值自动加载不同参数,不用维护多份 par 文件。
- 示例:
- 变体 = 快充版本 → 充电上限电流设 250A
- 变体 = 慢充版本 → 充电上限电流设 70A
切换变体属性,par 里参数自动生效。
典型业务场景(新能源整车测试最常用)
一套 CANoe 工程,覆盖:
- 车型 A / 车型 B
- ECU 软件 V1.0 / V2.0
- HIL 仿真台架 / 实车测试
- 高配(带 OBC+DC-DC) / 低配(不带)
✅ 不用复制多份工程,只在 Variant 面板切换属性值,测试脚本、总线配置、参数自动适配。
和你工作相关的优缺点
✅ 优点
- 工程唯一,避免多版本工程同步错乱(最核心价值);
- CAPL、vTestStudio 都支持读取变体属性,适配自动化测试;
- 参数文件集中管理,减少大量重复 par 文件。
⚠️ 坑点
- 变体多了之后,组合爆炸,测试要考虑所有变体组合;
- CAPL 里如果大量嵌套变体判断,代码可读性变差;
- 离线 / 报告生成时,记得在报告里记录当前激活的变体属性,不然测试结果分不清是哪个配置跑的。
简单 CAPL 示例(条件测试编码,对应原文)
// 读取变体属性
if(VariantProperty::CarConfig == "HighConfig")
{
testCase RunOBCFunctionTest(); //高配才执行OBC测试
}
else
{
write("低配车型,跳过OBC测试");
}
vTestStudio 变体属性(Variant Properties)完整配置步骤
适用:新能源 ECU 自动化测试,和前面 CANoe 的变体属性互通,vTestStudio 里定义的变体属性,在 CANoe、CAPL、参数文件都能读取
一、新建变体属性
- 打开你的 vTestStudio 项目,在**Project Explorer(项目浏览器)**右键项目根节点 →
Add → Variant Property - 弹窗填写:
- Name :变体名称,例如
CarVersion(不要空格) - Type :一般选
String字符串;简单布尔开关选Bool - Values :可选值列表,如
HighConfig, LowConfig(高配、低配) - Default value :默认选中值,比如
LowConfig
- Name :变体名称,例如
- 确认保存,项目树会出现 Variant Properties 文件夹,里面就是你新建的变体。
示例:你还可以新增
ECUSwVersion,可选V100, V110;TestMode可选HIL, RealCar
二、在 Test Diagram 图形测试脚本中使用(条件测试编码,原文核心功能)
- 在 Test Diagram 画布,拖拽 Decision Variant(变体判断)模块
- 模块绑定刚才创建的
CarVersion变体属性 - 在分支上设置条件:
- 分支 1:
CarVersion == HighConfig→ 执行 OBC/DC-DC 测试用例 - 分支 2:
CarVersion == LowConfig→ 跳过 OBC,直接执行低压相关用例
- 分支 1:
- 编译工程。切换变体属性值,图表会自动启用 / 禁用对应分支。
三、在 vParam 参数文件绑定变体(原文:根据变体定义参数)
- 打开
.vparam参数文件,新增参数,例如MaxChargeCurrent - 参数条件设置:
- 当
CarVersion = HighConfig,MaxChargeCurrent = 250A - 当
CarVersion = LowConfig,MaxChargeCurrent = 70A
- 当
- 保存参数文件,编译测试单元。
运行时,一旦切换变体,vparam 会自动加载对应参数,无需手动改文件。
四、切换变体(2 种方式)
方式 1:设计阶段预设(vTestStudio 内)
打开 Test Configuration ,找到Variant Properties面板,下拉直接选择对应值,用于调试。
方式 2:CANoe 执行前动态切换(自动化批量跑测最常用)
-
在 CANoe 的 Test Setup 窗口,选中 vTestStudio 编译出来的 Test Unit
-
在右侧属性面板找到
Variant Properties,修改属性值 -
或者 CAPL 代码动态修改变体:
//CAPL修改变体属性
VariantProperty::CarVersion = "HighConfig";
自动化批量回归时,可以用这个 API 循环切换不同变体组合,跑全量配置矩阵。
五、vTestStudio ↔ CANoe 联动要点
- 同源共享:vTestStudio 定义的变体属性,编译后自动同步到 CANoe 测试模块,两边可以读写同一个变体。
- 报告自动记录:测试报告(TestReport)默认会记录本次执行的所有变体属性值,方便追溯,解决 "不知道是哪个配置跑出的结果" 的问题。
- Device control variants 设备控制变体 :在 CANoe 这边配置,用来切换硬件通道、HIL 板卡、总线接口;vTestStudio 侧主要负责Test variants 测试变体(用例、参数分支控制)。
六、工程实践避坑(新能源测试踩过的点)
- 变体命名不要中文,避免编译报错;值字符串严格区分大小写。
- 多变体叠加(如
CarVersion+ECUSwVersion)会产生组合爆炸,建议在测试计划里限定有效组合,禁止无效组合执行。 - vParam 条件写复杂后,建议单独写一个校验用例,启动时读取所有参数并打印到 write 窗口,确认变体生效。
- 版本管理:变体属性定义文件建议纳入 Git,所有团队成员共用一套变体定义,防止本地私自新增变体。
七、vTestStudio C# 脚本读取变体示例
如果你用 C# 写测试脚本:
//读取变体属性
string carCfg = VariantProperties.GetValue("CarVersion");
if(carCfg == "HighConfig")
{
RunOBCFuncTest();
}