CN117222983A - 一种测试方法和控制装置 - Google Patents

一种测试方法和控制装置 Download PDF

Info

Publication number
CN117222983A
CN117222983A CN202280004994.7A CN202280004994A CN117222983A CN 117222983 A CN117222983 A CN 117222983A CN 202280004994 A CN202280004994 A CN 202280004994A CN 117222983 A CN117222983 A CN 117222983A
Authority
CN
China
Prior art keywords
function
external interface
test
module
interface function
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202280004994.7A
Other languages
English (en)
Inventor
陈升辉
周慧强
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of CN117222983A publication Critical patent/CN117222983A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)

Abstract

本申请提供了一种测试方法和控制装置,涉及测试技术领域,该方法可以包括:获取功能模块的函数回调信息,所述函数回调信息包括该功能模块的至少一个外部接口函数的调用地址,该功能模块的测试依赖其他功能模块调用至少一个外部接口函数,该至少一个外部接口函数用于对该功能模块测试;接收测试命令行,该测试命令行包括函数调用地址信息,其中,函数调用地址信息用于指示测试功能模块的至少一个外部接口函数的调用地址;响应于该测试命令行,调用至少一个外部接口函数中的至少部分对该功能模块进行测试。本申请的技术方案可以应用于智能车或者电动车,有助于提升应用于智能车或者电动车的控制装置的可测性。

Description

一种测试方法和控制装置 技术领域
本申请涉及测试技术领域,并且更具体地,涉及一种测试方法和控制装置。
背景技术
随着车辆的智能化程度越来越高,微控制单元(microcontroller unit,MCU)作为智能车载设备的常用芯片,由于MCU具有高功能安全属性,所以MCU需要支持在其上的源码二次开发能力。但是,MCU主要调试方式是通过调试器直接烧录源码,以打点、操作内存或者编写临时代码测试桩的方式,观察其外部输出如控制器局域网(controller area network,CAN)、日志、电压等变化,从而判断测试结果是否符合预期。
当测试MCU功能模块时,通常需要其他功能模块调用该模块的外部接口函数,方可使该模块执行相应功能。在这种情况下,若其他功能模块未开发完成,则无法对本功能模块进行测试。此时就需要测试人员编写相应的临时代码,烧录到MCU中,以保证该模块的外部接口函数能够被调用。但是测试过程中如需要修改外部接口函数的入参,就需要修改临时代码,将临时代码重新烧录到MCU当中。另外,当其他功能模块开发完成后,测试人员只能对所有功能模块进行联调,难以针对控制装置中依赖于其他功能模块调用的功能模块进行端到端测试。而车载单元MCU通常是将多个相互关联的功能模块并行开发的,因此,在车载单元MCU测试的场景下,上述的问题将更为明显。
可见,车载单元MCU中功能模块的可测性差,灵活性差,已经成为智能驾驶技术发展中一个亟待解决的问题。
发明内容
本申请提供一种测试方法和控制装置,测试人员无需编写相应的测试桩,即可实现对功能模块外部接口函数的直接调用,解决功能模块外部接口函数由于缺失调用方,导致其无法完成功能测试的问题,进而解决了难以针对控制装置中依赖于其他功能模块调用的功能模块进行端到端测试的问题;同时,有助于提升控制装置的可测性。
第一方面,提供了一种测试方法,该方法包括:获取功能模块的函数回调信息,该函数回调信息包括功能模块的至少一个外部接口函数的调用地址,该功能模块的测试依赖其他功能模块调用至少一个外部接口函数,其中,至少一个外部接口函数用于对该功能模块测试;获取测试命令行,该测试命令行包括函数调用地址信息,该函数调用地址信息用于指示测试上述功能模块的至少一个外部接口函数的调用地址;响应于上述测试命令行,调用至少一个外部接口函数中的至少部分对上述功能模块进行测试。
示例地,功能模块可以是集成在控制装置中的一种模块,该控制装置可以是MCU。
本申请实施例中的技术方案可以对交通工具中的MCU进行测试。在本申请中,交通工具可以包括一种或多种不同类型的在陆地(例如,公路,道路,铁路等),水面(例如: 水路,江河,海洋等)或者空间上操作或移动的运输工具或者可移动物体。例如,交通工具可以包括汽车,自行车,摩托车,火车,地铁,飞机,船,飞行器,机器人或其它类型的运输工具或可移动物体等。
示例地,上述函数回调信息,可以是在功能模块初始化的过程中主动下发的,也可以是在功能模块初始化之后通过请求操作使功能模块被动下发的。此外,上述函数回调信息还可以包括附加信息,例如,外部接口函数的入参的个数、入参的数据类型、入参的取值范围信息以及可缺省参数等信息,用于辅助功能模块的至少一个外部接口函数的调用。
应理解,在测试功能模块的指定功能时,需要调用功能模块中指定的至少一个外部接口函数,方可使功能模块执行相应的功能。因此,响应于上述测试命令行,调用至少一个外部接口函数中的至少部分外部接口函数,即可实现对上述功能模块进行测试。
示例地,上述测试命令行还包括指定外部接口函数的参数值,例如,该外部接口函数需要输入相应的参数,功能模块才能完成相应功能的执行。
基于上述技术方案,测试人员无需编写相应的测试桩,即可实现对功能模块外部接口函数的直接调用,解决功能模块外部接口函数由于缺失调用方,导致其无法完成功能测试的问题,进而解决了难以针对控制装置中依赖于其他功能模块调用的功能模块进行端到端测试的问题;同时,有助于提升控制装置的可测性。
结合第一方面,在第一方面的某些实现方式中,确认代理功能开启,其中,当代理功能开启时,根据测试命令行,调用至少一个外部接口函数。
示例地,在控制装置中各个功能模块开发完成时,功能模块A指定功能的执行,依赖于功能模块B的调用功能模块A的外部接口函数,此时,需要对功能模块A的功能进行测试,当代理功能关闭时,则需要先使功能模块B执行相应的功能,以带动功能模块A执行相应的功能,方可完成对功能模块A的测试,该过程可以称为联调。当代理功能开启时,则无需启动功能模块B的相应功能,可以直接对功能模块A进行单独的端到端测试。
基于上述技术方案,能够实现对功能模块联调和单独对某个功能模块端到端测试的切换,使测试控制装置的方法更为灵活。
结合第一方面,在第一方面的某些实现方式中,函数调用地址信息包括第一外部接口函数的调用地址;在第一外部接口函数的调用地址和至少一个外部接口函数的调用地址匹配成功后,调用至少一个外部接口函数中的至少部分对功能模块进行测试。
示例地,第一外部接口函数可以是测试上述功能模块所需要调用的一个或多个外部接口函数,即该第一外部接口函数可以是一个外部接口函数,也可以是一个外部接口函数集,其中包括多个外部接口函数。
示例地,在匹配失败时,可以将该测试命令行丢弃,或者存储在指定位置,再定时清空。另外,在匹配失败时,还可以返回匹配失败信息,并将匹配失败信息发送至外部接入设备。
示例地,上述外部接入设备可以是控制器局域网开放环境(controller area networkopen environment,CANoe)、系统级芯片(system on chip,SOC)等。
示例地,当测试命令行中包括参数值时,在第一外部接口函数的调用地址和至少一个外部接口函数的调用地址匹配成功后,还需要将参数值输入到该至少一个外部接口函数中。
基于上述技术方案,能够实现对功能模块单独的端到端测试,使功能相互依赖的功能 模块,在功能上相互独立;同时,有助于提升控制装置的可测性。
结合第一方面,在第一方面的某些实现方式中,函数调用地址信息包括功能模块的标识;根据该功能模块的标识,调用所述功能模块的至少一个外部接口函数对所述功能模块进行测试。
示例地,函数调用地址信息包括指定功能模块的标识时,在接收到该测试命令后,可以直接根据功能模块的标识,调用该功能模块的至少一个外部接口函数中的所有或部分外部接口函数。
基于上述技术方案,对功能模块的至少一个外部接口函数的调用,不局限于根据函数调用地址信息包括的第一外部接口函数的调用地址进行调用,还可以通过功能模块的标识,对功能模块至少一个外部接口函数进行调用,从而提升了测试控制装置的灵活性;有助于提升控制装置的可测性。
结合第一方面,在第一方面的某些实现方式中,函数回调信息还包括第一外部接口函数入参的取值范围信息,且测试命令行包括第一外部接口函数的参数值,在调用至少一个外部接口函数中的至少部分对功能模块进行测试之前,还需要确定上述参数值与上述取值范围信息匹配。
示例地,取值范围信息可以是一种参数取值区间,在上述参数值处于该参数取值区间之内时,则表示上述参数值与上述取值范围信息匹配成功,可以对上述至少一个外部接口函数进行调用。在上述参数值处于该参数取值区间之外时,则表示在上述参数值与上述取值范围信息匹配失败,无法对上述至少一个外部接口函数进行调用。
基于上述技术方案,可以提升调用功能模块的至少一个外部接口函数的准确性,减少因错误调用外部接口函数造成的功能模块测试异常的情况。
结合第一方面,在第一方面的某些实现方式中,获取外部接入设备发送的测试命令行。
示例地,上述测试命令行也可以是从控制装置内部获取的,例如,控制装置本地存储着测试代码,该代码中包括测试命令行,因此,也可以获取本地存储的测试命令行,使能够响应于该测试命令行,调用至少一个外部接口函数中的至少部分对功能模块进行测试。
基于上述技术方案,能够通过多种渠道获取到测试命令行,使测试控制装置的方法更为灵活。
结合第一方面,在第一方面的某些实现方式中,向外部接入设备发送对功能模块的测试结果。
示例地,上述功能模块外部接口函数的测试结果可以是一系列参数值,也可以是通过打印方式呈现的字符串,例如,目标外部接口函数名称,该函数输出的参数名称及其数值。
第二方面,提供了一种控制装置,该控制装置包括:第一获取单元,用于获取功能模块的函数回调信息,该函数回调信息包括功能模块的至少一个外部接口函数的调用地址,该功能模块的测试依赖其他功能模块调用至少一个外部接口函数,其中,至少一个外部接口函数用于对该功能模块测试;第二获取单元,用于获取测试命令行,该测试命令行包括函数调用地址信息,该函数调用地址信息用于指示测试上述功能模块的至少一个外部接口函数的调用地址;测试单元,用于响应于上述测试命令行,调用至少一个外部接口函数中的至少部分对上述功能模块进行测试。
示例地,功能模块可以是集成在控制装置中的一种模块,该控制装置可以是一种MCU。
示例地,上述函数回调信息还可以包括附加信息,例如,外部接口函数的入参的个数、入参的数据类型、入参的取值范围信息以及可缺省参数等信息,用于辅助功能模块的至少一个外部接口函数的调用。
应理解,在测试功能模块的指定功能时,需要调用功能模块中指定的至少一个外部接口函数,方可使功能模块执行相应的功能。因此,响应于上述测试命令行,调用至少一个外部接口函数中的至少部分外部接口函数,即可实现对上述功能模块进行测试。
示例地,上述测试命令行还包括指定外部接口函数的参数值,例如,该外部接口函数需要输入相应的参数,功能模块才能完成相应功能的执行。
结合第二方面,在第二方面的某些实现方式中,上述测试单元还用于确认代理功能开启,其中,当代理功能开启时,根据测试命令行,调用至少一个外部接口函数。
示例地,在控制装置中各个功能模块开发完成时,功能模块A指定功能的执行,依赖于功能模块B的调用功能模块A的外部接口函数,此时,需要对功能模块A的功能进行测试,当代理功能关闭时,则需要先使功能模块B执行相应的功能,以带动功能模块A执行相应的功能,方可完成对功能模块A的测试,该过程可以称为联调。当代理功能开启时,则无需启动功能模块B的相应功能,上述测试单元可以直接对功能模块A进行单独的端到端测试。
结合第二方面,在第二方面的某些实现方式中,函数调用地址信息包括第一外部接口函数的调用地址;在第一外部接口函数的调用地址和至少一个外部接口函数的调用地址匹配成功后,上述测试单元具体用于调用第一外部接口函数对功能模块进行测试。
示例地,第一外部接口函数可以是测试上述功能模块所需要调用的外部接口函数,该第一外部接口函数可以是一个外部接口函数,也可以是一个包括多个外部接口函数的函数集。
示例地,在匹配失败时,测试单元可以将该测试命令行丢弃,或者存储在指定位置,再定时清空。另外,在匹配失败时,测试单元还可以返回匹配失败信息,并将匹配失败信息发送至外部接入设备。
示例地,当测试命令行中包括参数值时,在第一外部接口函数的调用地址和至少一个外部接口函数的调用地址匹配成功后,上述测试单元还需要将参数值输入到该至少一个外部接口函数中。
结合第二方面,在第二方面的某些实现方式中,函数调用地址信息包括功能模块的标识;上述测试单元具体用于根据该功能模块的标识,调用上述至少一个外部接口函数对功能模块进行测试。
示例地,函数调用地址信息包括指定功能模块的标识时,上述测试单元在获取到该测试命令后,可以直接根据功能模块标识,调用该功能模块的至少一个外部接口函数中的所有或部分外部接口函数。
结合第二方面,在第二方面的某些实现方式中,函数回调信息还包括第一外部接口函数入参的取值范围信息,且测试命令行包括第一外部接口函数的参数值,上述测试单元具体用于,在调用至少一个外部接口函数中的至少部分对功能模块进行测试之前,确定上述参数值与上述取值范围信息匹配。
示例地,取值范围信息可以是一种参数取值区间,在上述参数值处于该参数取值区间 之内时,则表示上述参数值与上述取值范围信息匹配成功,上述测试单元可以对上述至少一个外部接口函数进行调用。在上述参数值处于该参数取值区间之外时,则表示在上述参数值与上述取值范围信息匹配失败,上述测试单元无法对上述至少一个外部接口函数进行调用。
结合第二方面,在第二方面的某些实现方式中,上述第二获取单元具体用于获取外部接入设备发送的测试命令行。
示例地,上述测试命令行也可以由第二获取单元从控制装置直接内部获取,例如,控制装置本地存储着测试代码,该代码中包括测试命令行,因此,第二获取单元也可以获取本地存储的测试命令行,使上述测试单元能够响应于该测试命令行,调用至少一个外部接口函数中的至少部分对功能模块进行测试。
结合第二方面,在第二方面的某些实现方式中,上述控制装置还包括发送单元,用于向外部接入设备发送对功能模块的测试结果。
示例地,上述功能模块外部接口函数的测试结果可以是一系列参数值,也可以是通过打印方式呈现的字符串,例如,目标外部接口函数名称,该函数输出的参数名称及其数值。
第三方面,提供了一种控制装置,包括存储器,用于存储计算机指令;还包括处理器,用于执行存储器中存储的计算机指令,以使得装置执行上述第一方面的方法设计中任意一种可能的实现方式中的方法。
第四方面,提供了一种微控制单元,包括第二方面的控制装置。
第五方面,提供了一种计算机存储介质,计算机存储介质中存储有计算机指令,该指令在计算机上执行时,使得计算机执行上述第一方面的方法设计中任意一种可能的实现方式中的方法。
第六方面,提供了一种芯片,包括处理器,该处理器用于执行上述第一方面的方法设计中任意一种可能的实现方式中的方法。
示例地,该芯片可以是基带芯片。
第七方面,提供了一种计算机程序产品,该计算机程序代码或指令在计算机上执行时,使得计算机执行上述第一方面的方法设计中任意一种可能的实现方式中的方法。
附图说明
图1是本申请实施例提供的一种现有MCU功能模块测试逻辑示意图。
图2是本申请实施例提供的一种控制装置架构示意图。
图3是本申请实施例提供的又一种控制装置架构示意图。
图4是本申请实施例提供的又一种控制装置架构示意图。
图5是本申请实施例提供的一种测试方法的流程示意图。
图6是本申请实施例提供的代理模块调用功能模块外部接口函数的流程示意图。
图7是本申请实施例提供的代理模块后期维护的示意图。
图8是本申请实施例提供的一种控制装置800的示意性框图。
具体实施方式
为便于理解本申请实施例,首先对本申请实施例涉及到的术语和概念进行解释。
微控制单元,又称单片微型计算机或者单片机,是把中央处理器(central process unit,CPU)的频率与规格做适当缩减,并将内存、计数器、通用串行总线(universal serial bus,USB)、模数转换器、通用异步收发传输器、可编程逻辑控制器、直接存储器访问控制器等周边接口都整合在单一芯片上,形成芯片级的计算机,为不同的应用场合做不同组合控制。MCU的特点是:一般不支持运行多任务的复杂系统。在测试传统MCU多个相互关联的功能模块中某一个具体功能模块时,通常需要调用其他功能模块的外部接口函数,或者自身的外部接口函数被其他功能模块调用,方可实现该功能模块的功能测试。
二次开发,是指在现有的软件上进行定制修改,功能的扩展,实现开发者需要的功能,该过程通常都不会改变原有系统的内核。应理解,二次开发的执行者可以是一方,也可以是多方。以上述MCU的功能模块开发为例,对于包括基础功能的MCU可以提供给一方客户在其之上进行二次开发,扩展MCU功能,也可以提供给多方客户在其之上进行二次开发,扩展MCU功能,而且多方客户所进行二次开发的功能模块通常是相互关联的。由此可见,在这种情况下,出现上述MCU由于相互关联业务模块尚未开发完成而导致的本功能模块无法实现端到端测试的问题将尤为明显。
硬编码,是指将可变变量用一个固定值来代替的方法。在硬编码中,若要修改某个功能,就必需修改源代码,缺少灵活性。因此,使用硬编码编译后,如果后续需要更改已固定的变量值就非常困难。现有的测试MCU方法是测试人员根据测试文档的要求,通过硬编码的方式,编写测试代码并烧录到MCU中运行,使MCU功能模块在代码运行的时候接收测试代码中包括的测试命令,调用测试功能模块所需要调用的所有外部接口函数。由于测试命令需要采取硬编码的方式实现,测试命令中的外部接口函数入参均为固定值,如果需要更改上述外部接口函数入参,测试人员就需要重新编写测试代码,更改上述接口函数入参,再将修改后的测试代码烧录到MCU中进行二次测试。
桩函数,是指替代原函数功能的一种函数,使得在测试过程中能将被测功能模块与其依赖的功能模块隔离。例如,现有的测试MCU方法中,如果本功能模块已开发完成,但是在测试本功能模块的过程中,需要调用其他功能模块的外部接口函数,获取该外部接口函数的输出结果,而其他功能模块没有开发其外部接口函数,则测试人员可以编写测试桩,在测试桩中添加该外部接口函数的简单实现,本功能模块在执行功能的时候,调用测试桩中的外部接口函数即可获得相应的输出结果,以辅助本功能模块能够完成测试。
为便于理解本申请实施例,首先结合图1详细说明现有技术测试MCU功能模块的方法。
图1是本申请实施例提供的一种现有MCU功能模块测试逻辑示意图。
功能模块A是基础功能模块,功能模块B是基于功能模块A的功能基础之上开发的高级功能,功能模块C是基于功能模块B的功能基础之上开发的高级功能。
一个实施例中,以测试功能模块B为例,由于功能模块B是在功能模块C的上一级功能模块,所以在功能模块B需要执行功能的时候,功能模块B的一个或多个外部接口函数需要被功能模块C调用,方可使功能模块B执行相应功能。由此可见,功能模块B相应功能的执行依赖于功能模块C调用功能模块B的指定的一个或多个外部接口函数。
类似地,由于功能模块A是在功能模块B的上一级功能模块,所以功能模块A相应功能的执行依赖于功能模块B调用功能模块A的指定的一个或多个外部接口函数,使功 能模块A执行相应功能。
调用功能模块外部接口函数的前提条件可以是:已知该外部接口函数的调用地址以及相应的外部接口函数入参。
应理解,调用功能模块外部接口函数所要考虑的前提条件还可以包括确定如下信息:外部接口函数的入参个数,参数类型,参数值范围等。此外,还可以包括参数缺省等附加信息,本申请对此不作限定。
应理解,测试人员应当依照产品测试说明书中给出的针对功能模块相应功能对应外部接口函数调用方式,通过硬编码的方式编写测试代码,并将测试代码烧录到MCU中,在MCU运行过程中,调用指定功能模块的外部接口函数,使该功能模块能够执行相应功能,实现该功能模块的测试。
上述是现有的测试MCU业务功能的方法,由此可见,功能模块A、功能模块B和功能模块C之间是一种串行的功能实现,这也是MCU中常见的功能部署方式。
一个实施例中,对于上述现有的测试MCU业务功能的方法,如果测试人员需要测试功能模块B的相应功能,测试人员就必须从功能模块C入手,使功能模块C执行相应的功能,以驱动功能模块B相应功能的执行。而且只有在功能模块B执行功能的过程中,才会驱动功能模块A相应功能的执行。所以,在上述测试过程中,是无法针对MCU中依赖其它功能模块调用的功能模块单独进行端到端的测试。
另外,开发人员对MCU进行功能开发通常采取的是并行开发方式,以上述实施例为例,功能模块A、功能模块B和功能模块C通常是交给不同的客户各自进行开发的,其开发进度通常无法统一。
应理解,由于MCU中功能上相互依赖的功能模块是串行实现的,以上述实施例为例,MCU只有在与功能模块A、功能模块B以及功能模块C全部开发完毕后,方可实现对功能模块A或功能模块B的测试,即现阶段对于上述场景,还无法对功能模块A或功能模块B进行单独的端到端测试。如需要测试功能模块A,则需要先执行功能模块B的相应功能,以调用功能模块A的外部接口函数,使功能模块A执行相应功能。进一步地,执行功能模块B的相应功能,还需要功能模块C调用功能模块B的外部接口函数,否则,还是无法实现对功能模块A的测试。
综上所述,现有的MCU存在可测性差,测试灵活性差,难以针对在MCU中依赖于其他功能模块调用的功能模块单独进行端到端测试,同时存在功能模块的外部接口缺失调用方导致相应功能难以测试问题。尤其在多客户对同一种MCU中相互关联的功能模块进行并行开发时,该问题会更为明显。
鉴于此,本申请实施例提供了一种测试方法,通过代理模块调用功能模块的外部接口函数,使各个存在功能依赖关系的各个功能模块相互独立,解决功能模块外部接口函数由于缺失调用方无法执行相应功能,无法完成测试的问题,同时实现了对MCU中依赖于其他功能模块调用的功能模块单独进行端到端测试;同时有助于提升MCU可测性。
另外,通过通道模块解析测试人员从外部接入设备输入的测试命令,将其解析成代理模块能够识别的测试命令行,并分发给上述代理模块,上述代理模块根据该测试命令行对功能模块进行测试。因此,测试人员可以通过编排测试命令的方式,反复更改MCU外部接口函数调用顺序、频率以及入参,进而实现MCU功能的路径覆盖测试,避免了测试人 员反复修改测试代码,并反复将测试代码烧录到MCU的过程。
图2示出了本申请实施例提供的一种控制装置架构示意图。该控制装置中包括功能模块、代理模块、通道模块和外部接入设备。
该控制装置架构中包括多个功能模块,同时每个功能模块都有一个代理模块与之对应。
功能模块,用于实现控制装置的具体业务功能,将函数回调信息发送给代理模块,提供自身的外部接口函数用于测试。
一个实施例中,上述函数回调信息包括外部接口函数的调用地址,还可以包括以下至少一项内容:外部接口函数的入参的个数、入参的数据类型以及入参的取值范围等附加信息,用于辅助完成外部接口函数的调用。
一个实施例中,功能模块可以是已经开发完成的功能模块,也可以是具体功能尚未开发完成的功能模块,即便其具体功能尚未开发完成,仍然能够向外提供自身的外部接口函数,测试人员根据调用该外部接口函数后数据流的传输状态也能够完成相应功能的初步测试。
代理模块,用于获取功能模块的函数回调信息,并响应于测试命令行,调用至少一个外部接口函数中的至少部分外部接口函数,对功能模块进行测试。
一个实施例中,测试命令行中包括函数调用地址信息,该函数调用信息可以包括第一外部接口函数的调用地址。应理解,第一外部接口函数可以是功能模块中需要被调用的一个或多个外部接口函数。代理模块可以根据该第一外部接口函数的调用地址,调用功能模块的一个或多个外部接口函数,以完成对功能模块的测试。应理解,在指定外部接口函数需要传入参数时,测试命令行中也需要包括相应的参数值,代理模块则需要将参数值输入到该外部接口函数中。
此外,代理模块还可以用于将来自所调用的外部接口函数对应功能模块输出的测试结果发送给通道模块,通过通道模块将测试结果发送给外部接入设备。应理解,代理模块也可以将上述测试结果直接发送至外部接入设备,视具体控制装置架构而定,例如,控制装置不设置通道模块,代理模块可以直接外部接入设备进行数据通信,本申请实施例对此不作限定。
一个实施例中,代理模块根据上述测试命令行可以只调用功能模块中的一个外部接口函数,也可以调用功能模块中的多个外部接口函数,即上述测试命令行可以用于调用一个外部接口函数,也可以用于调用多个外部接口函数,本申请对此不作限定。
通道模块,是一种与外部接入设备建立通信的模块,用于接收测试人员通过外部接入设备输入的测试命令,该测试命令中包括的外部接口函数和参数值可以基于测试人员的意愿更改,从而避免了反复烧录测试代码的过程。
此外,通道模块还可以用于将该测试命令解析成能够被代理模块识别的测试命令行,并将该测试命令行分发给各个代理模块。
应理解,测试命令可以是以字符串的形式输入到通道模块的,但是其携带的数据,例如外部接口函数入参的参数值,实质上是有特定的数据类型的,例如,整型,浮点型,布尔型等。所以,通道模块可以将字符串形式的测试命令解析成一组包括外部接口函数地址以及特定数据类型参数的测试命令行,该测试命令行能够被代理模块识别,用于代理模块调用功能模块的外部接口函数。
应理解,通道模块的功能可以是如图2所示的单独设立的模块,专用于控制装置与外部接入设备进行实时通信,以及测试命令解析。也可以是集成于代理模块中的子模块,本申请对此不作限定。为了描述方便,本申请实施例均以代理模块与通道模块独立部署的形式进行说明。
外部接入设备,用于与控制装置建立联系,是测试人员向控制装置输入测试命令的设备,该外部接入设备可以是CANoe、SOC等。
一个实施例中,外部接入设备也可以直接向控制装置发送上述测试命令行,该场景下,无需上述通道模块对该测试命令行进行解析,该测试命令行可以直接发送给代理模块用于功能模块的外部接口函数的调用。
一个实施例中,与上述控制装置架构不同,一个代理模块还可以对应多个功能模块,例如,图3示出的本申请实施例提供的又一种控制装置架构示意图,或者,图4示出的本申请实施例提供的又一种控制装置架构示意图,再或者,在上述提到的控制装置架构中添加多个通道模块,本申请实施例对各个模块具体部署方式不作限定。为了方便描述,本申请实施例主要以图2的控制装置架构为准进行描述。
一个实施例中,在车载单元控制装置测试场景中,用于车辆测试的台架通过上述外部接入设备可以向上述实施例中的控制装置输入测试命令。
应理解,上述控制装置可以是MCU,也可以是其他控制装置,本申请对此不作限定。
应理解,上述控制装置架构中,为了避免功能模块A、功能模块B以及功能模块C中任一个功能模块尚未开发完成而影响各个功能模块的测试,则需要为功能模块均添加了代理模块与之对应。当功能模块的指定外部接口模块需要被调用时,代理模块能够直接调用该外部接口函数,避免功能模块相应的外部接口函数得不到其他功能模块的调用,造成功能模块无法测试的问题,以及难以针对控制装置中依赖于其他功能模块调用的功能模块进行端到端测试的问题。
应理解,上述难以针对控制装置中依赖于其他功能模块调用的功能模块进行端到端测试的问题包括但不限于以下两种测试场景:
1、本功能模块已经开发完成,而本功能模块相应功能的执行,需要其他功能模块调用本功能模块的指定外部接口函数,方可完成功能测试。但是其他功能模块尚未开发完成,因此,本功能模块的指定外部接口函数缺失调用方,无法完成测试。
2、本功能模块已经开发完成,而本功能模块相应功能的执行,需要其他功能模块调用本功能模块的指定外部接口函数,方可完成功能测试,其他功能模块已经开发完成,本功能模块的测试必须通过与其他功能模块进行联调方可完成测试,无法对本功能模块单独进行端到端的测试。
图5示出了本申请实施例提供的一种测试方法的流程示意图。
一个实施例中,该测试方法的执行主体是上述控制装置,具体功能可以由控制装置包括的代理模块以及通道模块来实现。
S510,获取功能模块的函数回调信息,该函数回调信息包括该功能模块的至少一个外部接口函数的调用地址,该功能模块的测试依赖其他功能模块调用至少一个外部接口函数,该至少一个外部接口函数用于对该功能模块测试。
应理解,该功能模块的测试,依赖其他功能模块调用该功能模块的至少一个外部接口 函数,方可使该功能模块执行相应的功能,以完成功能测试。
一个实施例中,代理模块获取功能模块的函数回调信息的方式可以在系统初始化的时候,功能模块主动向代理模块发送函数回调信息,使代理模块获取到函数回调信息。或者,代理模块可以在系统运行过程中,主动请求获取功能模块的函数回调信息,本申请对此不作限定。
一个实施例中,代理模块可以与一个功能模块对应,也可以和多个功能模块对应,所以代理模块可以接收到来自一个或多个功能模块的多条函数回调信息。本申请实施例对此不作限定。
此外,函数回调信息还可以包括附加信息,例如,外部接口函数的入参的个数、入参的数据类型、入参的取值范围信息以及可缺省参数等信息,本申请对此不作限定。
S520,获取测试命令行,该测试命令行包括函数调用地址信息,其中,该函数调用地址信息用于指示测试功能模块的至少一个外部接口函数的调用地址。
一个实施例中,获取到的测试命令行可以是通道模块解析来自外部接入设备发送的测试命令生成的,也可以是从外部接入设备直接获取的,还可以是从控制装置内部获取的。例如,通道模块先获取来自外部接入设备的测试命令,并将测试命令解析成一组包括外部接口函数地址以及特定数据类型参数的测试命令行,而该测试命令行能够被代理模块获取并且直接识别。再例如,控制装置本地存储着测试代码,该代码中包括测试命令行,因此,代理模块也可以获取到本地存储的测试命令行。再例如,外部接入设备直接发送测试命令行,使代理模块可以直接从外部接入设备获取测试命令行。
一个实施例中,该测试命令行包括函数调用地址信息,或者,函数调用地址信息和参数值。进一步地,函数调用地址信息包括指定外部接口函数的调用地址,或者,指定功能模块的标识。
由于函数调用地址信息包括第一外部接口函数的调用地址,且该第一外部接口函数为测试功能模块时需要调用的一个或多个外部接口函数,因此根据该调用地址即可实现对功能模块中的外部接口函数的调用,当该外部接口函数需要输入参数时,测试命令行也要包括相应的参数值,代理模块需要将参数值输入到外部接口函数中,使外部接口函数对应的功能得以执行,进而完成对该功能模块进行测试。
当函数调用地址信息包括指定功能模块的标识时,代理模块在获取到该测试命令后,可以直接根据该功能模块标识,调用该功能模块的至少一个外部接口函数中的所有或部分外部接口函数,使外部接口函数对应的功能得以执行,进而完成对该功能模块进行测试。
S530,响应于上述测试命令行,调用上述至少一个外部接口函数中的至少部分对功能模块进行测试。
一个实施例中,由于代理模块在技术实现上可以是一个代码模块,代理模块也可以是一个函数,也有一个唯一的调用地址,所以代理模块在接收测试命令行之前,需要将其调用地址下发到通道模块,当通道模块将外部输入的测试命令解析成代理模块能够识别的测试命令行后,根据该地址信息,即可将测试命令行发送给代理模块。
一个实施例中,在上述S510之前,代理模块还需要确认代理功能是否开启,当代理功能开启时,代理模块能够接收来自通道模块的测试命令行,对功能模块指定外部接口函数进行调用,即实现对控制装置中每个功能模块都可以单独进行端到端测试。
当代理功能关闭,代理模块不能接收来自通道模块的测试命令行,无法对功能模块指定外部接口函数进行调用,即此时对控制装置中的功能模块仅能够进行联调测试。
一个实施例中,上述代理功能开启或关闭的信息也可以在代理模块接收测试命令行之前,和代理模块的调用地址一起下发到通道模块,当该信息表示为开启状态时,通道模块在分发测试命令行时,需要向该代理模块发送测试命令行;当该信息表示为关闭状态时,通道模块在分发测试命令行时,可以不向该代理模块发送测试命令行。
应理解,测试人员可以根据测试需求,来控制指定代理模块的功能开启或关闭。
一个实施例中,通道模块向代理模块发送测试命令行之前,通道模块接收外部接入设备发送的测试命令,并解析测试命令。应理解,解析测试命令的过程是将测试命令转化为代理模块能够识别的测试命令行的过程,例如,外部接入设备输入的测试命令是以字符串形式呈现的,而该字符串中携带的数据通常具有特殊的数据类型,例如整型、浮点型等,所以,在控制装置接收到测试命令后,需要对该测试命令进行解析,生成能够被代理模块识别的测试命令行,使代理模块可以通过测试命令行调用功能模块的指定外部接口函数。应理解,外部接入设备也可以直接向控制装置发送上述测试命令行,本申请实施例对此不作限定。
应理解,上述代理模块和通道模块可以集成在一个模块当中,也可以是两个相互独立的模块,本申请对此不作限定。
还应理解,通过上述的测试方法,测试人员无需编写相应的测试桩,即可实现对功能模块外部接口函数的直接调用,解决功能模块外部接口函数由于缺失调用方,导致其无法完成功能测试的问题,进而解决了难以针对控制装置中依赖于其他功能模块调用的功能模块进行单独的端到端测试的问题;同时,有助于提升控制装置的可测性。
应理解,通过通道模块能够使控制装置与外部接入设备之间进行数据通信,即测试命令可以直接通过外部接入设备发送至控制装置,不需要向控制装置烧录测试代码,使控制装置获得测试命令。
一个实施例中,测试命令通常记载在测试说明书中,测试人员根据测试用例,通过外部接入设备向通道模块发送符合测试用例需求的测试命令。测试命令可以是如下形式:
外部接口函数A调用地址=0x01;参数a=(int,50);
外部接口函数B调用地址=0x11;参数a=(int,100);参数b=(boolean,false);
外部接口函数C调用地址=0x21;
一个实施例中,包括功能模块指定外部接口函数的调用地址以及参数值。
一个实施例中,经过通道模块解析生成的测试命令行包括第一外部接口函数的调用地址以及参数值。
应理解,当外部接口函数不需要入参时,上述用于调用该外部接口函数的测试命令行中可以不包括参数值,或者参数值为空,例如,“null”或者不存在这项属性相应的数据。
还应理解,测试命令行中还可以包括其他的附加信息,例如,测试命令行中的第一外部接口函数的参数值是否与函数回调信息包括的第一外部接口函数入参的取值范围信息匹配,因此,附加信息也可以用于代理模块判断该测试命令行能否调用指定功能模块的外部接口函数,本申请对此不作限定。
一个实施例中,通道模块可以通过如下方式对从外部接入设备发来的测试命令进行解 析:
解析测试命令中关于外部接口函数的相关特征信息,例如,外部接口函数的调用地址、参数值以及附加信息,其中,附加信息包括上述外部接口函数的入参个数以及各个参数的数据类型等,当经过解析生成的这些信息后,将这些信息进行打包处理,即生成测试命令行。测试命令行可以是如下形式:
外部接口函数A调用地址=0x01;附加信息:参数个数=2,参数类型=[int,boolean];
参数值=[50,true];
外部接口函数B调用地址=0x11;附加信息:参数个数=2,参数类型=[int,boolean];
参数值=[100,false];
外部接口函数C调用地址=0x21;附加信息:参数个数=0,参数类型=[null];
参数值=[null];
一个实施例中,当控制装置中存在多个代理模块时,即一个通道模块对应多个代理模块,通道模块需要将上述解析生成的测试命令行分发给与之对应的所有代理模块。
一个实施例中,在控制装置中设有多个代理模块时,上述测试命令中还可以包括指定代理模块的地址信息,通道模块解析该测试命令后,能够确定接收经过解析生成的测试命令行的代理模块,从而避免了将解析后的测试命令行发送给所有代理模块,造成资源的浪费。
应理解,相比于现有的测试方法,测试人员可以通过编排测试命令的方式,实现编排功能模块外部接口函数调用顺序、频率以及入参,进而实现功能模块功能的路径覆盖测试,避免了测试人员反复修改测试代码,并反复将测试代码烧录到控制装置的过程。
当通道模块向代理模块发送测试命令行之后,代理模块需要根据该测试命令行包括的各项信息,判断是否需要调用功能模块的指定外部接口函数。
图6示出了本申请实施例提供的代理模块调用功能模块外部接口函数的流程示意图。
S610,代理模块将测试命令行和函数回调信息进行匹配,确定测试命令行是否能够用于调用指定外部接口函数。若匹配成功,转到S620,若匹配失败,转到S630。
一个实施例中,代理模块可以根据函数回调信息中包括的至少一个外部接口函数的调用地址等信息,生成外部接口函数库,库中存储着上述至少一个外部接口函数的调用条件,该调用条件至少要有外部接口函数的调用地址,此外,还可以有函数入参个数、参数数据类型、入参取值范围等附加信息,本申请实施例对附加信息所包括的内容不作限定。
S620,代理模块调用指定外部接口函数,并将测试命令行包括的参数值输入到该外部接口函数中,完成该外部接口函数的调用。
一个实施例中,在函数回调信息包括上述第一外部接口函数入参的取值范围信息,且测试命令行中包括参数值时,则代理模块需要确定参数值与取值范围信息是否匹配,匹配成功时,则将测试命令行中包括的各个参数值输入到该外部接口函数中,完成外部接口函数的调用,使功能模块执行相应的功能,并输出测试结果。
应理解,当外部接口函数不需要入参时,代理模块则也不需要向外部接口函数中输入参数值,在S610中匹配成功的测试命令行也可以不包括参数值。
S630,代理模块终止本次对功能模块外部接口函数的调用。
一个实施例中,在匹配失败时,代理模块可以将该测试命令行丢弃,或者存储在指定 位置,再定时清空,本申请实施例对此不作限定。另外,代理模块还可以返回匹配失败信息,并将匹配失败信息发送给通道模块,通过通道模块将其传输至外部接入设备,用于提示测试人员自查测试命令。
S640,代理模块接收来自功能模块的测试结果,并将该测试结果转发给通道模块。
一个实施例中,上述匹配失败信息或测试结果,都可以发送给通道模块,再由通道模块发送至外部接入设备,当代理模块也具有与外部接入设备进行通信的功能时,例如,将通道模块的功能集成在代理模块中,也可以通过代理模块直接发送至外部接入设备,本申请实施例对此不作限定,但最终都是要将上述匹配失败信息或测试结果发送至外部接入设备。
一个实施例中,上述测试结果还可以通过功能模块直接发送给通道模块,本申请对此不作限定。
一个实施例中,上述功能模块外部接口函数的测试结果可以是一系列参数值,也可以是通过打印方式呈现的字符串,例如,目标外部接口函数名称,该函数输出的参数及其数值,本申请对此不作限定。
应理解,测试人员无需编写相应的测试桩,即可实现对功能模块外部接口函数的直接调用,解决功能模块外部接口函数由于缺失调用方,导致其无法完成功能模块测试的问题,进而解决了难以针对控制装置中依赖于其他功能模块调用的功能模块进行端到端测试的问题;同时,有助于提升控制装置的可测性。
图7示出了本申请实施例提供的代理模块后期维护的示意图。
一个实施例中,现需要对图7中功能模块A的功能进行测试,该功能的执行需要功能模块B调用功能模块A的外部接口函数。和上述说明内容相同,由于功能模块B未完成开发,所以需要通过代理模块A,根据测试命令行调用功能模块A的指定外部接口函数,使功能模块A执行相应的功能。但是,当功能模块B开发完成后,由于功能模块B可以调用功能模块A的指定外部接口函数,而且该控制装置只有这两个功能模块,这两个功能模块现已完成开发,此时,可以将代理模块A的代理功能关闭,或者直接删除代理模块A。
应理解,本申请实施例提出的控制装置架构更为灵活,根据控制装置中各个功能模块开发状况,可以独立添加、删除、开启或关闭指定的代理模块。
应理解,当控制装置的某个功能模块已经开发完成后,需要对该功能模块进行测试,但是该功能模块相应功能的执行,需要其他功能模块调用本功能模块的指定外部接口函数,方可完成功能测试,而其他功能模块尚未开发完成,通过现有的测试方法,无法实现对该功能模块的测试。但是,根据本申请实施例提供的测试方法可知,通过上述的代理模块即可实现对该功能模块的调用,无需等待其他功能模块开发完成后再进行该功能模块的测试。
应理解,当控制装置全部功能模块开发完成后,现有的测试方法是将各个相互依赖的功能模块进行联调,而无法单独针对某一个在控制装置功能部署中依赖其他功能模块调用的功能模块单独进行端到端的测试。
一个实施例中,功能模块A和功能模块B均已开发完成,其中,功能模块A的功能是获取雨量,功能模块B的功能是确定雨刷器摆动频率。此时需要对功能模块A的功能进行测试,现有的测试方法是运行功能模块B的确定雨刷器被动频率的功能,该过程中,功能模块B调用功能模块A的指定外部接口函数,使功能模块A开启获取雨量的功能, 然后方可返回雨量的数值。但是,根据本申请提供的测试方法可知,只需要开启功能模块A对应的代理模块的代理功能,代理模块即可直接调用功能模块A的指定外部接口函数,对功能模块A单独进行测试,而无需与功能模块B进行联调。简化了测试流程,实现单独针对控制装置依赖于其他功能模块调用的功能模块进行端到端的测试。
一个实施例中,对于多个相互依赖的功能模块进行联调的测试场景,每个功能模块在执行指定功能代码的过程中,通常需要将代码执行的状态通过打印日志的方式输出,以便于后续功能模块发生故障时,进行故障的定位。当多个相互依赖的功能模块中某一个模块出现故障,需要进行该功能模块具体故障定位时,就需要对所有的功能模块进行联调,而这个过程中各个模块生成的打印日志数量巨大,测试人员故障定位的工作量较大。但是,基于本申请提出的测试方法,测试人员可以打开该功能模块对应的代理模块,通过代理模块直接调用该功能模块的指定外部接口函数,运行相应的功能代码,生成打印日志。应理解,对单模块进行测试所生成的打印日志数量要远小于联调过程中生成的打印日志数量,因此,本申请提出的控制装置更方便于测试人员后期单独对每个功能模块进行维测。
本申请实施例还提供用于实现以上任一种方法的控制装置,例如,提供一种控制装置包括用以实现以上任一种方法的单元(或手段)。
图8示出了本申请实施例提供的一种控制装置800的示意性框图。如图8所示,该控制装置800包括:
第一获取单元810,用于获取功能模块的函数回调信息,该函数回调信息包括功能模块的至少一个外部接口函数的调用地址,该功能模块的测试依赖其他功能模块调用至少一个外部接口函数,该至少一个外部接口函数用于对该功能模块测试。
第二获取单元820用于接收测试命令行,该测试命令行包括函数调用地址信息,其中,该函数调用地址信息用于指示测试功能模块的至少一个外部接口函数的调用地址;
应理解,第一获取单元810的功能可以由上述实施例中的代理模块实现,第二获取单元820的功能可以由上述实施例中的通道模块实现。
测试单元830,用于响应于测试命令行,调用至少一个外部接口函数中的至少部分对功能模块进行测试。
可选地,测试单元830具体用于确认代理功能开启,其中,当代理功能开启时,根据测试命令行,调用至少一个外部接口函数。
可选地,测试单元830具体还用于对函数调用地址信息包括的第一外部接口函数的调用地址和上述至少一个外部接口函数的调用地址进行匹配,匹配成功后,调用上述第一外部接口函数对功能模块进行测试。
可选地,在函数回调信息还包括上述第一外部接口函数入参的取值范围信息,且测试命令行中包括第一外部接口函数的参数值时,测试单元830具体还用于确定该参数值与取值范围信息匹配。
应理解,测试单元830的上述功能可以由上述实施例中的代理模块实现。
可选地,第二获取单元820具体还用于获取外部接入设备发送的测试命令行。应理解,外部接入设备也可以向控制装置直接发送测试命令行。
发送单元840,用于向外部接入设备发送对功能模块的测试结果。
应理解,发送单元840的功能可以由上述实施例中的通道模块实现。
本申请实施例还提供了一种MCU,进一步地,提供了一种车载单元MCU,该MCU包括前文所述的控制装置800。
在本说明书中使用的术语“部件”、“模块”、“系统”等用于表示计算机相关的实体、硬件、固件、硬件和软件的组合、软件、或执行中的软件。例如,部件可以是但不限于,在处理器上运行的进程、处理器、对象、可执行文件、执行线程、程序和/或计算机。通过图示,在计算设备上运行的应用和计算设备都可以是部件。一个或多个部件可驻留在进程和/或执行线程中,部件可位于一个计算机上和/或分布在2个或更多个计算机之间。此外,这些部件可从在上面存储有各种数据结构的各种计算机可读介质执行。部件可例如根据具有一个或多个数据分组(例如来自与本地系统、分布式系统和/或网络间的另一部件交互的二个部件的数据,例如通过信号与其它系统交互的互联网)的信号通过本地和/或远程进程来通信。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(eread-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖 在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

Claims (19)

  1. 一种测试方法,其特征在于,包括:
    获取功能模块的函数回调信息,所述函数回调信息包括所述功能模块的至少一个外部接口函数的调用地址,所述功能模块的测试依赖其他功能模块调用所述至少一个外部接口函数,所述至少一个外部接口函数用于对所述功能模块测试;
    获取测试命令行,所述测试命令行包括函数调用地址信息,其中,所述函数调用地址信息用于指示测试所述功能模块的所述至少一个外部接口函数的调用地址;
    响应于所述测试命令行,调用所述至少一个外部接口函数中的至少部分对所述功能模块进行测试。
  2. 根据权利要求1所述的方法,其特征在于,所述方法还包括:
    确认代理功能开启,其中,当所述代理功能开启时,根据所述测试命令行,调用所述至少一个外部接口函数。
  3. 根据权利要求1或2所述的方法,其特征在于,所述函数调用地址信息包括第一外部接口函数的调用地址,所述响应于所述测试命令行,调用所述至少一个外部接口函数中的至少部分对所述功能模块进行测试,包括:
    在所述第一外部接口函数的调用地址和所述至少一个外部接口函数的调用地址匹配成功后,调用所述第一外部接口函数对所述功能模块进行测试。
  4. 根据权利要求1或2所述的方法,其特征在于,所述函数调用地址信息包括所述功能模块的标识,所述响应于所述测试命令行,调用所述至少一个外部接口函数中的至少部分对所述功能模块进行测试,还包括:
    根据所述功能模块的标识,调用所述至少一个外部接口函数中的至少部分对所述功能模块进行测试。
  5. 根据权利要求1至4中任一项所述的方法,其特征在于,所述函数回调信息还包括第一外部接口函数入参的取值范围信息,所述测试命令行包括所述第一外部接口函数的参数值,在所述调用所述至少一个外部接口函数中的至少部分对所述功能模块进行测试之前,所述方法还包括:
    确定所述参数值与所述取值范围信息匹配。
  6. 根据权利要求1至5中任一项所述的方法,其特征在于,所述获取测试命令行,包括:
    获取外部接入设备发送的所述测试命令行。
  7. 根据权利要求6所述的方法,其特征在于,所述方法还包括:
    向所述外部接入设备发送对所述功能模块的测试结果。
  8. 一种控制装置,其特征在于,包括:
    第一获取单元,用于获取功能模块的函数回调信息,所述函数回调信息包括所述功能模块的至少一个外部接口函数的调用地址,所述功能模块的测试依赖其他功能模块调用所述至少一个外部接口函数,所述至少一个外部接口函数用于对所述功能模块测试;
    第二获取单元,用于获取测试命令行,所述测试命令行包括函数调用地址信息,其中, 所述函数调用地址信息用于指示测试所述功能模块的所述至少一个外部接口函数中的至少部分的调用地址;
    测试单元,用于响应于所述测试命令行,调用所述至少一个外部接口函数对所述功能模块进行测试。
  9. 根据权利要求8所述的控制装置,其特征在于,所述测试单元还用于:
    确认代理功能开启,其中,当所述代理功能开启时,根据所述测试命令行,调用所述至少一个外部接口函数。
  10. 根据权利要求8或9所述的控制装置,其特征在于,所述函数调用地址信息包括第一外部接口函数的调用地址,所述测试单元具体用于:
    在所述第一外部接口函数的调用地址和所述至少一个外部接口函数的调用地址匹配成功后,调用所述第一外部接口函数对所述功能模块进行测试。
  11. 根据权利要求8或9所述的控制装置,其特征在于,所述函数调用地址信息包括所述功能模块的标识,所述测试单元具体用于:
    根据所述功能模块的标识,调用所述至少一个外部接口函数中的至少部分对所述功能模块进行测试。
  12. 根据权利要求8至11中任一项所述的控制装置,其特征在于,所述函数回调信息还包括第一外部接口函数入参的取值范围信息,所述测试命令行包括所述第一外部接口函数的参数值,所述测试单元具体用于:
    在调用所述至少一个外部接口函数中的至少部分对所述功能模块进行测试之前,确定所述参数值与所述取值范围信息匹配。
  13. 根据权利要求8至12中任一项所述的控制装置,其特征在于,所述第二获取单元具体用于:
    获取外部接入设备发送的所述测试命令行。
  14. 根据权利要求13所述的控制装置,其特征在于,所述装置还包括:
    发送单元,用于向所述外部接入设备发送对所述功能模块的测试结果。
  15. 一种控制装置,其特征在于,包括:
    存储器,用于存储计算机指令;
    处理器,用于执行所述存储器中存储的计算机指令,以使得所述装置执行如权利要求1至7中任一项所述的方法。
  16. 一种微控制单元,其特征在于,包括如权利要求8至15中任一项所述的控制装置。
  17. 一种计算机存储介质,其特征在于,所述计算机存储介质中存储有计算机指令,所述指令在计算机上执行时,使得所述计算机执行如权利要求1至7中任一项所述的方法。
  18. 一种芯片,其特征在于,包括处理器,所述处理器用于执行如权利要求1至7中任一项所述的方法。
  19. 一种计算机程序产品,其特征在于,所述计算机程序代码或指令在计算机上执行时,使得所述计算机执行如权利要求1至7中任意一项所述的方法。
CN202280004994.7A 2022-04-12 2022-04-12 一种测试方法和控制装置 Pending CN117222983A (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2022/086219 WO2023197128A1 (zh) 2022-04-12 2022-04-12 一种测试方法和控制装置

Publications (1)

Publication Number Publication Date
CN117222983A true CN117222983A (zh) 2023-12-12

Family

ID=88328667

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202280004994.7A Pending CN117222983A (zh) 2022-04-12 2022-04-12 一种测试方法和控制装置

Country Status (2)

Country Link
CN (1) CN117222983A (zh)
WO (1) WO2023197128A1 (zh)

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101620536B (zh) * 2009-08-17 2012-11-14 用友软件股份有限公司 一种调用功能函数的方法和装置
CN101847100B (zh) * 2010-06-08 2012-12-05 用友软件股份有限公司 扩展软件应用的方法和装置
CN114116246A (zh) * 2020-08-31 2022-03-01 华为技术有限公司 一种功能调用方法和装置
CN114237774B (zh) * 2022-02-14 2022-05-31 北京华御数观科技有限公司 一种解除功能模块依赖的内部调用方法

Also Published As

Publication number Publication date
WO2023197128A1 (zh) 2023-10-19

Similar Documents

Publication Publication Date Title
CN107241315B (zh) 银行网关接口的接入方法、装置及计算机可读存储介质
JP2001166939A (ja) 複合インタフェース記述言語
US7353498B2 (en) Multi-process debugger
CN113467980B (zh) 日志输出方法、装置及系统和嵌入式设备
CN112306889B (zh) 充电桩的测试方法、装置、存储介质及处理器
CN102707712B (zh) 电子装备故障诊断方法和系统
Mahmood et al. A model-based security testing approach for automotive over-the-air updates
CN115546927A (zh) 一种基于autosar标准的uds诊断自动化测试系统
CN113133041B (zh) 动态间隔列控车载中车车通信功能的测试方法及装置
CN113360386B (zh) 交换芯片驱动测试方法、装置、电子设备和存储介质
CN108959488B (zh) 维护问答模型的方法及装置
KR20200062594A (ko) 차량용 디버깅 시스템의 동작 방법
CN117222983A (zh) 一种测试方法和控制装置
WO2020000810A1 (zh) 应用组件构建打包方法、装置及计算机存储介质
KR102279776B1 (ko) 오토사 베이직 소프트웨어 테스팅 자동화 시스템 및 그 방법
CN111737933A (zh) 一种soc原型验证方法、系统、设备及介质
CN106250123B (zh) 一种系统测试模式和运行模式兼容方法
US11899561B2 (en) Method for operating a control unit when testing software of the control unit, and method for operating a test computer when testing software of a control unit
US20160224456A1 (en) Method for verifying generated software, and verifying device for carrying out such a method
CN111221728B (zh) 用于轨道交通自动控制软件的自适应测试脚本系统及方法
CN113341767A (zh) 用于自动化测试的方法、系统和计算机可读存储介质
CN112947988B (zh) 大型机的持续集成方法及相关装置、计算机存储介质
Stojanović et al. Source code generators for ADAS feature deployment in context of ROS and adaptive AUTOSAR applications
CN116991816B (zh) 日志输出方法、装置、电子设备和存储介质
CN116361150B (zh) 一种在整车模拟环境中进行车辆测试的方法、装置及系统

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination