0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

软件详细设计文档在动态单元测试过程中的应用

北汇信息POLELINK ? 2022-07-27 17:18 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

前言

随着汽车日益互联化、智能化和电动化,硬件组件的抽象化,软件功能变得愈发复杂——汽车正在从基于硬件的创新转向基于软件的创新,并且软件安全和质量越来越受到制造商和消费者的关注,而传统的工具和流程可能无法满足汽车发展与应用的实际需求。为了解决这些安全和质量方面的问题,汽车工业已经采用了ASPICE标准和ISO 26262标准,它们为电气和电子系统的开发提供了最佳的实践。

单元测试是软件测试阶段最基本的测试,它能够消除深度未知隐患。它反馈更快,更省时间。此外,ASPICE过程及ISO26262安全规范同样对单元测试提出了相关要求。

软件详细设计文档为单元测试提供了基础的输入参照。从ASPICE角度来说,没有详细设计文档是无法进行单元验证或测试的。这表明,详细设计文档指导着单元测试过程的所有活动。同时,使用像VectorCAST/C++这样的专业工具,高效进行功能测试的同时,保证了代码的覆盖度,符合ASPICE和ISO26262行业规范要求。

1、WHY:(软件详细设计文档与单元测试的基本关系)

1.1从V模型角度

pYYBAGLg9_6ACDwCAADOHNzK_3o680.png

图 1 ISO 26262里面的V模型

V模型是在快速应用开发(Rapid Application Development,RAD)模型基础上演变而来,其特点就是它清楚的标识了开发和测试的各个阶段以及他们之间的对应关系;左边部分是软件开发阶段,右边部分是软件测试阶段。从上图中我们可以看出,软件详细设计文档对应着软件单元测试,所以要想做好单元测试,就必须有软件详细设计文档作为输入,同时要求测试工程师对软件详细设计文档有着深刻的理解。

软件详细设计文档应在编写代码之前完成,软件代码是对软件详细设计文档的具体实现,软件单元测试则是以软件详细设计为参照,判断软件代码是否符合软件详细设计文档的工作。

1.2软件详细设计文档是测试输入的基础参照之一

pYYBAGLg-FiAOpOeAAA3LgjWxKM744.png

图 2 软件详细设计文档是测试输入的基础参照之一

VectorCAST/C++可以为单元测试和集成测试提供高度自动化的解决方案,能够显著提升开发人员在验证安全和任务关键型嵌入式系统方面的工作效率。广泛应用于航空电子、医疗设备、汽车、工业控制、铁路和金融行业。

如上图所示,将详细设计文档和单元需求文档结合起来,会大大的提高编写测试用例效率。特别是对于那些颗粒度较大的“单元需求文档”,需要结合软件详细设计文档,从颗粒度较大的需求提取出有效的部分来进行功能测试。

软件详细设计文档与单元需求文档相辅相成,所以软件详细设计文档在单元测试中有着十分重要的作用。

然后,通过相应的源代码使用VectorCAST/C++工具创建测试工程,接着通过VectorCAST/C++工具为需求测试自定义编写测试用例,同时将需求映射到测试用例,形成测试用例与单元测试需求、测试用例与代码覆盖度之间的双向可追溯性,并且可以在最后的测试报告中体现出来。

1.3快速理解功能需求,降低沟通成本

如果负责该项测试测试的人员对项目内容了解很有限的话,这就免不了与开发人员进行频繁的沟通。即使是一个公司内部进行测试,只要不是开发人员来进行测试,一般也避免不了与开发人员进行沟通,但是如果有了软件详细设计文档,测试人员可以快速了解开发内容,理解功能需求,降低与开发人员沟通时间与次数,而且能够较完整的完成其单元测试。

pYYBAGLg-HaAQWfeAABR874yI00171.png

图 3 有无软件详细设计文档对测试周期和沟通次数的影响示意图

2、WHAT:(什么是软件详细设计文档)

2.1详细设计基本概念

详细设计是为了确立每个模块的实现算法、数据结构以及接口定义,用适当的方法表示算法和数据结构的细节。

它通过一些设计描述工具,无歧义的描述过程单位的相关细节。详细设计产生的主要文件就是软件详细设计文档。

此外,软件详细设计文档一般来源于软件架构设计的进一步分析。在软件架构设计活动中,设计了软件组件和组件间接口。

软件详细设计则是对软件组件的进一步分解和设计,一般包含三个方面:软件单元,软件单元的内部逻辑和软件单元间的交互逻辑。

pYYBAGLg-KqABuMXAABAqr4qC3g094.png

图 4 软件详细文设计文档包含的内容

2.2详细设计文档基本内容

由于自然语言不具有单义性,所以要进行无歧义的描述软件过程单元细节,就必须使用一些特定的设计描述方法。详细设计采用的方法一般有程序流程图、HIPO(Hierarchy plus Input Process Output)图、N-S图等,还有其他描述说明形式(如图5)。使用这些方法就是来规范和辅助说明算法、数据结构和接口相关细节的。

这些细节涵盖了数据结构定义,全局变量和宏定义描述,动态行为描述(比如任务,中断和需求方案分析等),每个函数的设计(比如输入、输出、流程图、伪代码等)等。

pYYBAGLg-MCAfFTHAAD7kP9fZng504.png

图 5 软件详细设计文档包含了GetStopSigLevel函数的定义

3、HOW:(软件详细设计文档在VectorCAST/C++工具中的应用)

3.1为测试用例的数据提供依据

pYYBAGLg-NqADg7iAAC6_tiE2_s402.png

图 6 单元需求文档csv文件

Key:FR6

ID:FR6

Module:requirement 3

Title Description:"The signal light_intensity shall be an input to lights control. Its value shall range from 0 to 100."

pYYBAGLg-QGAbvNCAAAsIoMlhmU108.png

图 7 需求文档csv文件中的某条需求

如上图标黄区域,说明了“light_intensity”变量变化范围是0~100。所以根据这条详细设计文档说明,就可以正确编写测试用例,并保证了测试用例数据是有实际意义的,避免像“light_intensity=120”等这样无意义的赋值。

pYYBAGLg-Q2Ae-JhAAGF446ymys769.png

图 8 具有意义的测试用例并通过

poYBAGLg-RiAIjezAAGOvT9T1Vc530.png

图 9 无意义的测试用例并失败

3.2VectorCAST/C++工具RGW功能

pYYBAGLg-S6AQQhEAAHUuZs7_Do771.png

图 10 通过工具实现软件单元需求与测试用例关联

VectorCAST/C++提供一个RGW(Requirements Gateway)功能。VectorCAST/C++支持与一些需求管理系统Polarion、DOORS、RequisitePro等进行集成,同时支持需求管理系统导出的CSV等格式文件。

对于经过软件详细设计文档印证的需求文档,我们可以按照这些结构文件编写,使需求文档契合VectorCAST/C++工具,使用该功能。可以实现软件单元需求、测试用例和代码覆盖率之间的可追溯性,并允许将单元需求导入,映射到测试用例。

这样可以帮助测试人员,当需求发生更新或迭代时,能够快速更新测试用例或编写测试用例,提高工作效率。

所以软件详细设计文档,在很大程度上为项目团队提升了测试效率、提升工作的自动化率。

3.3批量生成测试用例

对于那些详细设计文档里的某些函数,若具有一般数学表达式的功能的函数且我们可以事先确定好它的输入与输出的,可以通过VectorCAST/C++工具提供的CSV Mapping功能来批量构建测试用例。

poYBAGLg-USAFtpGAAIOi-focgU905.png

图 11 包含测试所需数据的CSV文件

首先我们根据函数关系确定好一系列的输入值和期望值形成CSV文件,然后将CSV文件加载到工具中,接着确定好数据列与测试用例模板里变量的对应关系,最后选择创建测试用例。

通过上面操作我们就会快速生成一系列的测试用例。

pYYBAGLg-VOAKpRsAAEcYv1ZbRA062.png

图 12 对应测试用例模板变量与CSV文件列的关系并生成测试用例

总结

众所周知,进行单元测试不仅可以尽早地发现错误,还容易发现深层次问题,并能快速定位问题的来源,针对相关需求,向开发人员进行反馈,小步快速迭代,高效的实现正确的需求和代码。而详细设计文档不仅为开发提供了标准,也为后续的测试提供了参考。通过VectorCAST/C++联系实际问题,能快速的完成动态单元测试。

北汇信息专注于汽车电子测试,提供专业的汽车电子测试系统搭建及测试咨询服务;提供完整的汽车新能源测试服务。当然在代码测试方面,我们也有完整的代码测试解决方案。

VectorCAST/C++作为Vector公司的代码动态测试工具,既可以用于手写代码,也可以用于自动生成代码的测试,如模型转代码的测试。

本次为大家简单介绍了软件详细设计文档在单元测试过程的一些简单应用。后续将会为大家带来更多基于VectorCAST/C++的动态测试相关内容。

注:文中图片来源于ISO 26262、VectorCAST/C++(Vector)。

参考文献

[1] VectorCAST/C++相关文档

[2]仨人谈起·基于模型开发(MBD)场合,模型设计可以等同于软件详细设计吗?

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 测试
    +关注

    关注

    8

    文章

    5751

    浏览量

    129312
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    新能源车软件单元测试深度解析:自动驾驶系统视角

    。 ?自动驾驶软件的特殊性? ? 感知层: ?激光雷达、摄像头等传感器数据处理算法的单元测试需覆盖极端场景。例如,激光雷达点云滤波算法雨雪天气下的噪声抑制能力需通过边界测试验证。某
    发表于 05-12 15:59

    新能源车背后的隐形守护者:软件单元测试的生死较量?

    。这个教科书级的避让动作背后,是超过8000万行代码的精密协作,而确保这些代码绝对可靠的秘密武器,正是我们今天要揭秘的软件单元测试。 ?一、代码世界的显微镜:单元测试为何重要? 如果把整车软件
    的头像 发表于 05-12 11:00 ?269次阅读

    单元测试嵌入式软件的关键作用及winAMS工具的卓越贡献

    1.?单元测试概述 ?定义与核心目标? 单元测试软件开发过程中针对程序模块(如函数、类或组件)的最小可测试单元进行的验证活动。其核心目标在
    的头像 发表于 04-11 14:31 ?397次阅读

    嵌入式软件单元测试的必要性、核心方法及工具深度解析

    一、为什么嵌入式软件必须重视单元测试? ?嵌入式系统的特殊性? 汽车 ECU、医疗设备控制器等场景软件直接操控硬件,?单比特错误可能导
    的头像 发表于 03-21 14:53 ?535次阅读

    请问NXP板的BSP QA过程中采用了哪些具体的测试方法?

    QA 过程中采用了哪些特定的测试方法? 什么是 QA 流程,以及 yocto/linux BSP 整个 QA 生命周期中如何跟踪和管理缺陷? RSB 3720 板的 QA
    发表于 03-17 08:04

    测试过程中,如何防止电池挤压试验机的故障率?

    测试过程中,防止电池挤压试验机故障率的关键在于设备的使用、维护和保养。以下是一些具体的方法和建议: 一、正确使用设备 熟悉操作规程 · 操作人员必须熟读并理解电池挤压试验机的操作规程和使用说明
    的头像 发表于 01-10 08:55 ?406次阅读
    <b class='flag-5'>在</b><b class='flag-5'>测试过程中</b>,如何防止电池挤压试验机的故障率?

    嵌入式系统开发测试方法 嵌入式系统开发与AI结合应用

    嵌入式系统开发测试方法 嵌入式系统开发是一个复杂的过程,涉及到硬件和软件的紧密结合。测试是确保系统可靠性和性能的关键步骤。以下是一些常用
    的头像 发表于 12-09 10:22 ?1466次阅读

    开发者必读!CircleCI?组件测试单元测试全解析

    软件开发测试是保证软件质量和可靠性的关键环节。作为领先的 CI/CD 平台,CircleCI 提供了支持自动化
    的头像 发表于 12-03 09:18 ?665次阅读

    汽车软件单元测试的重要性

    设计和测试不充分密切相关,这引发了社会各界对汽车软件健壮性的重要性进行深入思考。本文将探讨汽车软件测试,尤其是单元测试的重要性,以及Win
    的头像 发表于 11-29 10:57 ?566次阅读

    严格的单元测试造就完美的软件

    关键系统时,更是对软件质量提出了极高的要求。而单元测试作为软件开发过程中的核心环节,其重要性不言而喻。 单元测试的作用 单元测试是指对
    的头像 发表于 11-26 13:22 ?563次阅读

    嵌入软件单元/集成测试工具专业分析

    引言 现代软件开发过程中单元测试作为确保代码质量的重要环节,得到了广泛的关注和应用。随着嵌入式系统的复杂性日益增加,对高效、可靠的单元测试工具的需求也愈加迫切。WinAMS作为一款
    的头像 发表于 11-19 16:41 ?741次阅读

    物联网产品在生产测试过程中快速读取贴片SIM卡号的方案

    卡号,读卡表产品可以解决研发测试过程中,方便读取物联网贴片卡卡号的问题。 二、该问题带来的危害及影响 如果不读出设备的SIM卡卡号,无法将设备与SIM卡对应起来。当设备的SIM卡状态异常时,比如:欠费,卡停机,无法查询设备对应的SIM卡的状态,
    的头像 发表于 09-23 16:14 ?901次阅读
    物联网产品在生产<b class='flag-5'>测试过程中</b>快速读取贴片SIM卡号的方案

    用vca821做测试,发现测试过程中芯片会发烫,这是什么原因呢?

    我最近在用vca821做测试,发现测试过程中芯片会发烫,但是工作状态似乎有是正常的。请问这是什么原因呢?
    发表于 08-23 08:18

    INA321测试过程中,发现阻抗变化比较大,为什么?

    测试过程中,发现阻抗变化比较大,有时候是40mΩ,有的时候显示70mΩ,感觉差别比较大,不知道是什么原因
    发表于 08-20 06:56