一个参数很少单独出现。
我们的许多客户已经在他们的应用程序中实现了成百上千个参数,以便在车辆中参数化(即应用)软件。这不仅体现在动力系统和发动机的开发上,还体现在汽车开发的所有领域,如驾驶辅助、车身和舒适性以及能源管理。
软件的应用通常是在软件用于多个型号和迭代的车辆时完成的。参数为开发提供了必要的灵活性,通过巧妙地调整软件来补偿系统变量,从而使软件可重用。
因此,参数支持面向产品线的软件开发。
运用到软件中的每个参数都伴随着软件开发过程中日益增长的复杂性。因此,测试带参数的软件更加需要注意。
什么是参数?
参数是在运行时具有常量值的变量。
它在软件程序开发过程中使用,以便能够调整目标系统中程序的反应。因此,开发团队可以为不同的应用场景高度灵活地集成软件程序,而不必更改代码基础。
在程序执行前,由开发人员对参数进行调整和测试。如果检测到不利的行为,则应用其他参数值对并再次测试。重复该过程,直到软件适合所选的部署场景。
它们在代码中取代魔数,主要用于建模限制(阈值),作为调优参数和激活功能行为。
参数与信号(如温度、速度等)和常数有什么不同?
信号随着时间的推移不断变化,并反映周围的系统。常量(或定义)是在构建软件时定义的,然后只能通过重新构建软件来更改。从技术上讲,参数正好介于两者之间。在软件运行期间,参数的值通常不会改变——它就像一个常数。
参数可以在技术上进行更改,例如,在车间中、在测试驱动期间或在软件更新期间,甚至在运行时,因此在开发和操作期间提供了高度的灵活性。
汽车参数化的典型例子:
闭环控制器
PID控制器常用于汽车系统中。比例分量的增益K_p是参数调优的一个典型例子。
限制值或开关阈值
在许多应用中,物理值必须计算和建模。作为标量的参数用于描述阈值。当超过阈值时,软件的行为会发生变化。
在我们的灯光控制器示例中,使用了几个参数来区分分段的光强,例如明暗。如果你想在一个软件中集成不同车辆的不同传感器,你应该使用参数来适应软件。
同样常见的是使用特征曲线或矩阵形式的多维参数。在电池控制器中,开路电压特性用于估计电池单元的荷电状态(SOC)。
功能的激活
在发动机开发中,参数被用于在相同的力学条件下实现不同的性能,也用于编码可选的车辆功能,例如辅助加热系统的存在。
通过调整参数,可以针对不同的工况或要求对车辆进行优化,提升驾驶体验,优化车辆性能。
在测试参数化软件时,应特别注意以下主题:
1. 改变参数的默认值:检查基本功能是否仍然存在。如果参数在单元和模块边界上大量使用,则应该启动一个新的完整的测试运行。在低使用率的情况下,单元测试和下一个更高级别的软件集成测试通常足以进行验证。
2. 在其他代码段中添加新参数或使用现有参数:在添加参数时应使用功能测试,以检查参数是否具有正确的效果。在测试中,要通过参数的具体值变化来判断参数是否被设置在正确的位置。
3.避免参数干扰:阈值参数往往分割相同的信号。应用程序参数化指南显示了参数的正确使用,并指定了一个参数通常应该和必须如何设置以及与另一个参数的关系。这样的指南有时并不为人所知,因此可能导致出现在文档中已经处理和排除的问题。
4. 避免过多的测试:测试所有可能的值和参数组合非常耗时,而且通常不切实际,特别是当有许多参数时。相反,测试人员通常只测试最重要或最常用的值和参数组合,以确保软件正常工作。
5. 小心测试用例中的参数更改:有时参数的值在测试用例中直接更改。这可能会导致测试运行中出现意想不到的错误。所以要注意在测试中在何时及在何处进行了参数更改。
如何在TPT中对广泛参数化的软件进行测试?
在TPT中,当软件第一次连接时,软件中使用的所有参数都是已知的。它们被导入到声明编辑器中,因此也可以通过自动完成在所有测试和评估中的使用、修改和引用。
对于每次测试运行,默认情况下使用声明编辑器上参数的默认值。
为了在TPT中测试参数的变化,有以下几种可能:
在初始化测试用例时更改参数(在初始值选项卡中)。
更改测试运行的参数(在执行配置中通过加载参数集)。从TPT 19(即将发布)开始,参数可以定义为Multi-Execution,并且具有任意值范围的多个参数的组合可以在每个测试用例中迭代。
修改映射编辑器中的参数
在声明编辑器中更改参数
似乎这还不够:您还可以在测试运行时的任何时间更改参数。