CN111813670B - 一种非侵入式mc/dc覆盖率统计分析方法 - Google Patents

一种非侵入式mc/dc覆盖率统计分析方法 Download PDF

Info

Publication number
CN111813670B
CN111813670B CN202010635114.9A CN202010635114A CN111813670B CN 111813670 B CN111813670 B CN 111813670B CN 202010635114 A CN202010635114 A CN 202010635114A CN 111813670 B CN111813670 B CN 111813670B
Authority
CN
China
Prior art keywords
information
branch
source code
code
expression
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.)
Active
Application number
CN202010635114.9A
Other languages
English (en)
Other versions
CN111813670A (zh
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.)
Beijing Institute of Computer Technology and Applications
Original Assignee
Beijing Institute of Computer Technology and Applications
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 Beijing Institute of Computer Technology and Applications filed Critical Beijing Institute of Computer Technology and Applications
Priority to CN202010635114.9A priority Critical patent/CN111813670B/zh
Publication of CN111813670A publication Critical patent/CN111813670A/zh
Application granted granted Critical
Publication of CN111813670B publication Critical patent/CN111813670B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3676Test management for coverage analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3664Environments for testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/75Structural analysis for program understanding

Abstract

本发明涉及一种非侵入式MC/DC覆盖率统计分析方法,其中,包括:建立嵌入式软件虚拟化仿真运行环境;循环读取源码并通过分析去除源码中的注释部分,并解析源文件分支信息和逻辑表达式信息;获取逻辑表达式的目标码信息;仿真运行,读取指令、翻译指令以及执行当前指令,记录MC/DC覆盖率,并将覆盖率信息以特定的格式写入到指定路径的文件中;进行MC/DC覆盖率执行结果判读及反馈。本发明通过嵌入式软件虚拟化仿真运行环境,分析不同处理器架构下目标文件的类型和调试信息格式的类型并解析源文件分支信息和逻辑表达式信息,在此基础上获取逻辑表达式对应的目标码信息,并在仿真运行过程中获取MC/DC覆盖率信息,能够满足多种场景下MC/DC覆盖率统计分析的需求。

Description

一种非侵入式MC/DC覆盖率统计分析方法
技术领域
本发明涉及覆盖率统计分析技术,特别涉及一种非侵入式MC/DC覆盖率统计分析方法。
背景技术
修正条件/判定覆盖(MC/DC)需要足够多的测试用例来确定每个条件能够影响到包含的判定的结果。这种度量方式最早是由波音公司创建并被用于航空软件中RCTA/DO-178B标准中。有以下基本要求:
当所有的测试用例执行完毕,至少需要调用一次每个函数的入口地址和出口地址,对于需要测试的逻辑表达式的判定结果至少要发生一次改变。
被测试逻辑表达式被分解为逻辑符号(AND,OR)链接的逻辑表达式,每一个条件对于判定的结果值是独立的,或者说每一个条件的改变导致结果的改变。
MC/DC基本概念前已叙述,关于覆盖率测试用例的设计方案主要有两种,唯一原因法和屏蔽法。这两方法都能设计出满足要求的测试用例集合。两种测试用例集设计方案的核心思想是确定独立逻辑影响单元,通过真值分析找到独立影响单元的最小用例集合。
在唯一原因法中,MC/DC只关心能独立影响逻辑表达式结果的判定条件,并保持其它独立影响单元不变。在表达式Y=(A&&B)||(C&&D)中,真值表如下表所示:
表1唯一原因法测试用例设计真值表编号1-7
Figure GDA0003585220380000011
Figure GDA0003585220380000021
表2唯一原因法测试用例设计真值表编号8-16
Figure GDA0003585220380000022
要想满足MC/DC的测试要求,所有独立影响单元必须影响一次结果的判断,由表可知:(13,14),(14,10),(10,12),(12,11)四个测试用例对共五个测试用例,就能满足MCDC测试要求。这样的测试用例设计保证需要的最大测试用例个数为独立影响单元的两倍,最好情况下测试用例个数比独立影响单元个数多一个。
现有覆盖率统计分析工具存在对MC/DC覆盖率支持不够的问题,无法满足多种场景下MC/DC覆盖率统计分析的需求
发明内容
本发明的目的在于提供一种非侵入式MC/DC覆盖率统计分析方法,用于解决现有覆盖率统计分析工具对MC/DC覆盖率支持不够的问题。
本发明一种非侵入式MC/DC覆盖率统计分析方法,其中,包括:建立嵌入式软件虚拟化仿真运行环境;循环读取源码并通过分析去除源码中的注释部分,并解析源文件分支信息和逻辑表达式信息;获取逻辑表达式目标码的信息,包括:根据目标文件结构,确定调试信息,解析调试信息,获取源文件代码和目标码之间的对应关系信息,构建源代码和目标码对应关系查询信息表;通过源文件分支信息和逻辑表达式信息,在源代码和目标码对应关系查询信息表中标记源代码的分支信息,并将分支类型、独立影响单元个数以及独立影响单元表达式记录到信息表中;仿真运行,读取指令、翻译指令以及执行当前指令,记录MC/DC覆盖率,并将覆盖率信息以特定的格式写入到指定路径的文件中;进行MC/DC覆盖率执行结果判读及反馈。
根据本发明的非侵入式MC/DC覆盖率统计分析方法的一实施例,其中,进行MC/DC覆盖率执行结果判读及反馈包括:解析MC/DC覆盖率信息记录文件,根据唯一原因法,判断该独立影响单元是否满足MC/DC覆盖,在该独立影响单元的表达式对应其他独立影响单元判断值不变条件下,该影响单元判断条件的改变是否引起独立影响单元的表达式判断值的改变;根据判断结果,将不满足MC/DC测试条件的结果反馈给用户,并计算满足条件逻辑影响单元占比,计算MC/DC覆盖率。
根据本发明的非侵入式MC/DC覆盖率统计分析方法的一实施例,其中,建立嵌入式软件虚拟化仿真运行环境包括:目标处理器内核指令集仿真、嵌入式系统外设仿真以及仿真过程控制;其中,目标处理器内核指令集仿真采用基于LLVM的动态二进制编译方法,实现目标指令在Windows和Intel宿主机架构下的异构执行,目标代码脱离原始硬件执行环境;嵌入式系统外设仿真用于实现目标处理器外围设备的仿真,包括RS-422、RS-485串口设备仿真、开关量设备仿真以及存储系统仿真;仿真过程控制采用统一的时钟调度算法实现虚拟环境各组成部分的执行控制与协同运行。
根据本发明的非侵入式MC/DC覆盖率统计分析方法的一实施例,其中,解析源文件分支信息和逻辑表达式信息包括:(1)获取源代码路径,并获取该源代码路径下的文件信息;(2)读取源文件,读入一行源代码到缓存区中;(3)判断该行源代码是否存在注释开始标志,若存在注释开始标志,执行步骤(4);否则执行步骤(7);(4)判断注释开始标识是否是//,若是,执行步骤(5),否则执行步骤(6);(5)判断注释开始标识是否在该行开始位置,若是,该行代码为注释,否则,将缓存buffer中注释标识//后的内容擦除,执行步骤(8);(6)判断该行源代码是否存在注释结束标志,若是,则该行代码为注释,执行步骤(7),否则该行源代码为注释,继续执行步骤(6);(7)读取一行源代码;(8)判断当前源代码是否是分支语句,若不是分支语句,转回执行步骤(7),否则执行步骤(9);(9)获取分支类型标识符的位置,设置分支语句获取标志Flag=0,顺序匹配每个字符,如当前字符为左括号,Flag加一,如当前字符为右括号,Flag减一,直到该行源代码结束或Flag值为零,记录最后一个右括号的位置,获取完整的分支表达式内容;(10)判断当前分支类型是否是for分支类型,若是执行步骤(11),否则执行步骤(12);(11)解析分支表达式内容,获取两个分号、之间的逻辑表达式;(12)将分支表达式的内容作为逻辑表达式;(13)解析逻辑表达式,获取逻辑表达式中的独立影响单元,并记录独立影响单元的信息,构建独立影响单元查询信息表。
根据本发明的非侵入式MC/DC覆盖率统计分析方法的一实施例,其中,独立影响单元的信息包括文件名、函数名、行号、分支类型、独立影响单元个数以及独立影响单元表达式。
根据本发明的非侵入式MC/DC覆盖率统计分析方法的一实施例,其中,获取逻辑表达式目标码信息的步骤具体包括:a.根据目标文件结构,确定调试信息类型并读取调试信息;b.解析调试信息格式获取源代码行号信息,获取源代码和目标码的对应关系,建立源代码和目标码对应关系查询信息表;c.根据源代码和目标码对应关系及构建独立影响单元查询信息表,在源代码和目标码对应关系查询信息表中标记源代码的分支信息,并将分支类型、独立影响单元个数以及独立影响单元表达式记录到信息表中;d.读取源代码和目标码对应关系信息表中的调试信息节点,并判断该节点对应的源码是否是分支语句,若是,执行步骤e,否则执行步骤d;e.根据源代码目标码对应关系,从该行源代码对应的目标码开始地址到目标码结束地址,读取指令,解析指令类型,汇编代码在没有开优化的条件下,目标码分支指令和独立影响单元一一对应,获取每个独立影响单元对应的目标码分支类型及地址,并记录到源代码目标码对应关系信息表中。
根据本发明的非侵入式MC/DC覆盖率统计分析方法的一实施例,其中,获取MC/DC覆盖率的方法具体包括:构建嵌入式软件仿真虚拟化运行环境;A1.运行嵌入式仿真环境并加载目标文件到模拟内存中;A2.仿真运行,读取指令、翻译指令并执行当前指令,判断当前指令是否为分支指令,若不是分支指令,重新执行步骤A2,若是执行步骤A3;A3.查询当前分支指令对应的源代码是否是分支语句,若不是分支语句,转回步骤A2,若是执行步骤A4;A4.若最后一个独立影响单元对应的分支指令没有跳转,表示该源代码分支语句对应的分支表达式为真,否则为假;根据源代码包含的独立影响单元个数及其对应的目标码地址,记录该行源代码包含的独立影响单元的分支信息,包含每个分支指令的判断条件真假及分支表达式的真假;A5.生成覆盖率时,将记录的MC/DC覆盖率分支信息以特定的格式写入到指定路径的文件中,并暂停仿真执行。
根据本发明的非侵入式MC/DC覆盖率统计分析方法的一实施例,其中,MC/DC覆盖率信息输出格式为:{文件名:函数名:源码行数:执行次数k:{第0次:独立影响单元个数:表达式值:分支指令地址:判断条件:…}:{第1次:……}:……:{第k次:……}}。
根据本发明的非侵入式MC/DC覆盖率统计分析方法的一实施例,其中,进行MC/DC覆盖率执行结果判读及反馈包括:解析MC/DC覆盖率信息记录文件,根据唯一原因法,判断该独立影响单元是否满足MC/DC覆盖,在该表达式对应其他独立影响单元判断值不变条件下,该影响单元判断条件的改变引起了表达式判断值的改变,该独立影响单元才满足MC/DC测试要求;根据判断结果,将不满足MC/DC测试条件的结果反馈给用户,并计算满足条件逻辑影响单元占比,计算MC/DC覆盖率。
本发明的一种针对多种嵌入式处理器架构的非侵入式MC/DC覆盖率统计分析方法,通过嵌入式软件虚拟化仿真运行环境,分析不同处理器架构下目标文件的类型和调试信息格式的类型并解析源文件分支信息和逻辑表达式信息,在此基础上获取逻辑表达式对应的目标码信息,并在仿真运行过程中获取MC/DC覆盖率信息,满足多种场景下MC/DC覆盖率统计分析的需求。
附图说明
具体实施方式
为使本发明的目的、内容、和优点更加清楚,下面结合实施例,对本发明的具体实施方式作进一步详细描述。
本发明一种非侵入式MC/DC覆盖率统计分析方法,包括:
设置嵌入式软件虚拟化仿真运行环境:
嵌入式软件仿真运行环境采用虚拟化仿真技术实现目标系统的高精度高性能仿真,提供嵌入式软件的虚拟化运行环境,并提供指令执行过程及状态的监测手段,是嵌入式软件异常处理测试用例的执行平台,主要包括:目标处理器内核指令集仿真、嵌入式系统外设仿真以及仿真过程控制。
其中,目标处理器内核指令集仿真采用基于LLVM的动态二进制编译方法实现目标指令在Windows/Intel宿主机架构下的异构执行,实现目标代码脱离原始硬件执行环境;嵌入式系统外设仿真用于实现目标处理器外围设备的仿真,包括RS-422、RS-485串口设备仿真、开关量设备仿真、存储系统仿真等,支持数据激励的注入与采集;仿真过程控制采用统一的时钟调度算法实现虚拟环境各组成部分的执行控制与协同运行。
解析源文件分支信息和逻辑表达式信息,包括:
循环读取源码并通过分析去除源码中的注释部分,并源文件分支信息和逻辑表达式信息;
逻辑表达式目标码信息获取包括:
通过调试信息格式的解析,获取源文件代码和目标码之间的对应关系信息,构建源代码和目标码对应关系查询信息表;通过源文件分支信息和逻辑表达式信息,在源代码和目标码对应关系查询信息表中标记源代码的分支信息,并将分支类型、独立影响单元个数、独立影响单元表达式记录到信息表中。
MC/DC覆盖率执行信息获取包括:
仿真运行,读取指令、翻译指令、执行当前指令,记录MC/DC覆盖率,并将覆盖率信息以特定的格式写入到指定路径的文件中。
MC/DC覆盖率执行结果判读及反馈包括:
解析MC/DC覆盖率信息记录文件,根据唯一原因法,判断该独立影响单元是否满足MC/DC覆盖,即在该表达式对应其他独立影响单元判断值不变条件下,该影响单元判断条件的改变是否引起表达式判断值的改变,存在两种情况,只有当两种情况同时满足条件下,该独立影响单元才满足MC/DC测试要求;根据判断结果,将不满足MC/DC测试条件的结果反馈给用户,并计算满足条件逻辑影响单元占比,计算MC/DC覆盖率。
对于嗯发明一种基于嵌入式虚拟化仿真平台的非侵入式MC/DC覆盖率统计分析方法的另一具体实施例,其步骤为:
第一步嵌入式软件虚拟化仿真运行环境
嵌入式软件仿真运行环境采用虚拟化仿真技术实现目标系统的高精度高性能仿真,提供嵌入式软件的虚拟化运行环境,并提供指令执行过程及状态的监测手段,是嵌入式软件异常处理测试用例的执行平台,主要包括:目标处理器内核指令集仿真、嵌入式系统外设仿真以及仿真过程控制。
其中,目标处理器内核指令集仿真采用基于LLVM的动态二进制编译方法实现目标指令在Windows/Intel宿主机架构下的异构执行,实现目标代码脱离原始硬件执行环境;嵌入式系统外设仿真用于实现目标处理器外围设备的仿真,包括RS-422、RS-485串口设备仿真、开关量设备仿真、存储系统仿真等,支持数据激励的注入与采集;仿真过程控制采用统一的时钟调度算法实现虚拟环境各组成部分的执行控制与协同运行。
第二步解析源文件分支信息和逻辑表达式信息
(1)获取源代码路径,并获取该路径下的文件信息;
(2)读取源文件,读入一行源代码到缓存区中;
(3)判断该行源代码是否存在注释开始标志,比如//、/*、#if0等,若是注释开始标志,执行步骤(4);否则执行步骤(7);
(4)判断注释开始标识是否是//,若是,执行步骤(5),否则执行步骤(6);
(5)判断注释开始标识是否在该行开始位置,若是,该行代码为注释,否则,将缓存buffer中注释标识//后的内容擦除,执行步骤(8);
(6)判断该行源代码是否存在注释结束标志,比如*/、#endif(与#if0对应),若是,则该行代码为注释,执行步骤(7),否则该行代码为注释,继续执行步骤(6);
(7)读取一行源代码;
(8)判断当前源代码是否是分支语句(if、else if、while、for、switch),若不是分支语句,继续执行步骤(7),否则执行步骤(9);
(9)获取分支类型标识符的位置,设置分支语句获取标志Flag=0,顺序匹配每个字符,当前字符为左括号(,Flag加一,当前字符为右括号,Flag减一,直到该行结束,直到Flag值为零,记录最后一个右括号的位置,获取完整的分支表达式内容。
(10)判断当前分支类型是否是for分支类型,若是执行步骤(11),否则执行步骤(12);
(11)解析分支表达式内容,获取两个分号(;)之间的逻辑表达式;
(12)将分支表达式的内容作为逻辑表达式;
(13)解析逻辑表达式,获取逻辑表达式中的独立影响单元,并记录独立影响单元的信息,包括文件名、函数名、行号、分支类型、独立影响单元个数、独立影响单元表达式等,构建独立影响单元查询信息表。
第三步逻辑表达式目标码信息获取
(14)根据目标文件结构,确定调试信息类型并读取调试信息;
(15)解析调试信息格式获取源代码行号信息,获取源代码和目标码的对应关系,建立源代码和目标码对应关系查询信息表;
(16)根据源代码和目标码对应关系及构建独立影响单元查询信息表,在源代码和目标码对应关系查询信息表中标记源代码的分支信息,并将分支类型、独立影响单元个数、独立影响单元表达式记录到信息表中。
(17)读取源代码和目标码对应关系信息表中的调试信息节点,并判断该节点对应的源码是否是分支语句,若是,执行步骤(18),否则执行步骤(17);
(18)根据源代码目标码对应关系,从该行源代码对应的目标码开始地址到目标码结束地址,读取指令,解析指令类型,汇编代码在没有开优化的条件下,目标码分支指令和独立影响单元一一对应,获取每个独立影响单元对应的目标码分支类型及地址,并记录到源代码目标码对应关系信息表中;
第四步MC/DC覆盖率执行信息获取
(19)构建嵌入式软件仿真虚拟化运行环境;
(20)运行嵌入式仿真环境并加载目标文件到模拟内存中;
(21)仿真运行,读取指令、翻译指令、执行当前指令,并判断当前指令是否为分支指令,若不是分支指令,执行步骤(21),若是执行步骤(22);
(22)查询当前分支指令对应的源代码是否是分支语句,若不是分支语句,执行步骤(21),若是执行步骤(23);
(23)若最后一个独立影响单元对应的分支指令没有跳转,表示该源代码分支语句对应的分支表达式为真,否则为假;根据源代码包含的独立影响单元个数及其对应的目标码地址,记录该行源代码包含的独立影响单元的分支信息,包含每个分支指令的判断条件真假及分支表达式的真假;
(24)生成覆盖率时,将记录的MC/DC覆盖率分支信息以特定的格式写入到指定路径的文件中,并暂停仿真执行,MC/DC覆盖率信息输出格式为:{文件名:函数名:源码行数:执行次数k:{第0次:独立影响单元个数:表达式值:分支指令地址:判断条件:…}:{第1次:……}:……:{第k次:……}};
第五步MC/DC覆盖率执行结果判读及反馈
(23)解析MC/DC覆盖率信息记录文件,根据唯一原因法,判断该独立影响单元是否满足MC/DC覆盖,即在该表达式对应其他独立影响单元判断值不变条件下,该影响单元判断条件的改变是否引起表达式判断值的改变,存在两种情况,只有当两种情况同时满足条件下,该独立影响单元才满足MC/DC测试要求;
(24)根据判断结果,将不满足MC/DC测试条件的结果反馈给用户,并计算满足条件逻辑影响单元占比,计算MC/DC覆盖率。
本发明的一种针对多种嵌入式处理器架构的非侵入式MC/DC覆盖率统计分析方法,通过嵌入式软件虚拟化仿真运行环境,分析不同处理器架构下目标文件的类型和调试信息格式的类型并解析源文件分支信息和逻辑表达式信息,在此基础上获取逻辑表达式对应的目标码信息,并在仿真运行过程中获取MC/DC覆盖率信息,满足多种场景下MC/DC覆盖率统计分析的需求。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。

Claims (7)

1.一种非侵入式MC/DC覆盖率统计分析方法,其特征在于,包括:
建立嵌入式软件虚拟化仿真运行环境;
循环读取源码并通过分析去除源码中的注释部分,并解析源文件分支信息和逻辑表达式信息;
获取逻辑表达式的目标码的信息,包括:
根据目标文件结构,确定调试信息,解析调试信息,获取源文件代码和目标码之间的对应关系信息,构建源代码和目标码对应关系查询信息表;通过源文件分支信息和逻辑表达式信息,在源代码和目标码对应关系查询信息表中标记源代码的分支信息,并将分支类型、独立影响单元个数以及独立影响单元表达式记录到信息表中;
仿真运行,读取指令、翻译指令以及执行当前指令,获取并记录MC/DC覆盖率,并将覆盖率信息以特定的格式写入到指定路径的文件中;
进行MC/DC覆盖率执行结果判读及反馈;
其中,获取MC/DC覆盖率的方法具体包括:
构建嵌入式软件仿真虚拟化运行环境;
A1.运行嵌入式仿真环境并加载目标文件到模拟内存中;
A2.仿真运行,读取指令、翻译指令并执行当前指令,判断当前指令是否为分支指令,若不是分支指令,重新执行步骤A2,若是执行步骤A3;
A3.查询当前分支指令对应的源代码是否是分支语句,若不是分支语句,转回步骤A2,若是执行步骤A4;
A4.若最后一个独立影响单元对应的分支指令没有跳转,表示该源代码分支语句对应的分支表达式为真,否则为假;根据源代码包含的独立影响单元个数及其对应的目标码地址,记录该源代码包含的独立影响单元的分支信息,包含每个分支指令的判断条件真假及分支表达式的真假;
A5.生成覆盖率时,将记录的MC/DC覆盖率分支信息以特定的格式写入到指定路径的文件中,并暂停仿真执行。
2.如权利 要求1所述的非侵入式MC/DC覆盖率统计分析方法,其特征在于,进行MC/DC覆盖率执行结果判读及反馈包括:
解析MC/DC覆盖率信息记录文件,根据唯一原因法,判断该独立影响单元是否满足MC/DC覆盖,在该独立影响单元的表达式对应其他独立影响单元判断值不变条件下,该独立影响单元判断条件的改变是否引起独立影响单元的表达式判断值的改变;根据判断结果,将不满足MC/DC测试条件的结果反馈给用户,并计算满足条件逻辑影响单元占比,计算MC/DC覆盖率。
3.如权利 要求1所述的非侵入式MC/DC覆盖率统计分析方法,其特征在于,建立嵌入式软件虚拟化仿真运行环境包括:
目标处理器内核指令集仿真、嵌入式系统外设仿真以及仿真过程控制;
其中,目标处理器内核指令集仿真采用基于LLVM的动态二进制编译方法,实现目标指令在Windows和Intel宿主机架构下的异构执行,目标代码脱离原始硬件执行环境;嵌入式系统外设仿真用于实现目标处理器外围设备的仿真,包括RS-422、RS-485串口设备仿真、开关量设备仿真以及存储系统仿真;仿真过程控制采用统一的时钟调度算法实现虚拟环境各组成部分的执行控制与协同运行。
4.如权利 要求1所述的非侵入式MC/DC覆盖率统计分析方法,其特征在于,解析源文件分支信息和逻辑表达式信息包括:
(1)获取源代码路径,并获取该源代码路径下的文件信息;
(2)读取源文件,读入一行源代码到缓存区中;
(3)判断该行源代码是否存在注释开始标志,若存在注释开始标志,执行步骤(4);否则执行步骤(7);
(4)判断注释开始标识是否是//,若是,执行步骤(5),否则执行步骤(6);
(5)判断注释开始标识是否在该行开始位置,若是,该行代码为注释,否则,将缓存buffer中注释标识//后的内容擦除,执行步骤(8);
(6)判断该行源代码是否存在注释结束标志,若是,则该行代码为注释,执行步骤(7),否则该行源代码为注释,继续执行步骤(6);
(7)读取一行源代码;
(8)判断当前源代码是否是分支语句,若不是分支语句,转回执行步骤(7),否则执行步骤(9);
(9)获取分支类型标识符的位置,设置分支语句获取标志Flag=0,顺序匹配每个字符,如当前字符为左括号,Flag加一,如当前字符为右括号,Flag减一,直到该行源代码结束或Flag值为零,记录最后一个右括号的位置,获取完整的分支表达式内容;
(10)判断当前分支类型是否是for分支类型,若是执行步骤(11),否则执行步骤(12);
(11)解析分支表达式内容,获取两个分号、之间的逻辑表达式;
(12)将分支表达式的内容作为逻辑表达式;
(13)解析逻辑表达式,获取逻辑表达式中的独立影响单元,并记录独立影响单元的信息,构建独立影响单元查询信息表。
5.如权利 要求1所述的非侵入式MC/DC覆盖率统计分析方法,其特征在于,独立影响单元的信息包括文件名、函数名、行号、分支类型、独立影响单元个数以及独立影响单元表达式。
6.如权利 要求1所述的非侵入式MC/DC覆盖率统计分析方法,其特征在于,获取逻辑表达式目标码信息的步骤具体包括:
a.根据目标文件结构,确定调试信息类型并读取调试信息;
b.解析调试信息格式获取源代码行号信息,获取源代码和目标码的对应关系,建立源代码和目标码对应关系查询信息表;
c.根据源代码和目标码对应关系及构建独立影响单元查询信息表,在源代码和目标码对应关系查询信息表中标记源代码的分支信息,并将分支类型、独立影响单元个数以及独立影响单元表达式记录到信息表中;
d.读取源代码和目标码对应关系信息表中的调试信息节点,并判断该节点对应的源码是否是分支语句,若是,执行步骤e,否则执行步骤d;
e.根据源代码目标码对应关系,从该源代码对应的目标码开始地址到目标码结束地址,读取指令,解析指令类型,汇编代码在没有开优化的条件下,目标码分支指令和独立影响单元一一对应,获取每个独立影响单元对应的目标码分支类型及地址,并记录到源代码目标码对应关系信息表中。
7.如权利 要求1所述的非侵入式MC/DC覆盖率统计分析方法,其特征在于,进行MC/DC覆盖率执行结果判读及反馈包括:
解析MC/DC覆盖率信息记录文件,根据唯一原因法,判断该独立影响单元是否满足MC/DC覆盖,在该独立影响单元的表达式对应其他独立影响单元判断值不变条件下,该独立影响单元判断条件的改变引起表达式判断值的改变,该独立影响单元才满足MC/DC测试要求;
根据判断结果,将不满足MC/DC测试条件的结果反馈给用户,并计算满足条件逻辑影响单元占比,计算MC/DC覆盖率。
CN202010635114.9A 2020-07-03 2020-07-03 一种非侵入式mc/dc覆盖率统计分析方法 Active CN111813670B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010635114.9A CN111813670B (zh) 2020-07-03 2020-07-03 一种非侵入式mc/dc覆盖率统计分析方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010635114.9A CN111813670B (zh) 2020-07-03 2020-07-03 一种非侵入式mc/dc覆盖率统计分析方法

Publications (2)

Publication Number Publication Date
CN111813670A CN111813670A (zh) 2020-10-23
CN111813670B true CN111813670B (zh) 2022-06-24

Family

ID=72855793

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010635114.9A Active CN111813670B (zh) 2020-07-03 2020-07-03 一种非侵入式mc/dc覆盖率统计分析方法

Country Status (1)

Country Link
CN (1) CN111813670B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112799942B (zh) * 2021-01-28 2023-08-22 上海航天计算机技术研究所 基于Keil C51的软件源码和目标码覆盖率分析方法和系统
CN117056237B (zh) * 2023-10-10 2023-12-08 北京云枢创新软件技术有限公司 验证集成电路代码覆盖率的方法、电子设备和介质
CN117112447B (zh) * 2023-10-17 2023-12-22 北京开源芯片研究院 一种数据传输方法、装置、电子设备及可读存储介质

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104461906B (zh) * 2014-12-30 2017-08-25 中国科学院软件研究所 一种基于代码转换的mc/dc覆盖准则的软件测试数据生成方法
CN106326107B (zh) * 2016-07-27 2019-03-08 北京计算机技术及应用研究所 基于仿真环境的非侵入式嵌入式软件异常处理验证方法

Also Published As

Publication number Publication date
CN111813670A (zh) 2020-10-23

Similar Documents

Publication Publication Date Title
CN111813670B (zh) 一种非侵入式mc/dc覆盖率统计分析方法
CN103853532B (zh) 用于函数调用的方法和装置
JP4157016B2 (ja) コンパイラ装置及びコンパイル方法
JP2002099449A (ja) ユーザに固有のインスツルメンテーションを支援する方法とシステム
KR20110070468A (ko) 인스트루먼테이션 실행 장치 및 방법
US20070011664A1 (en) Device and method for generating an instruction set simulator
CN113641701B (zh) 一种数据查询方法、系统、异构加速平台及存储介质
US20110047531A1 (en) Methods and apparatuses for selective code coverage
CN104375875B (zh) 用于应用程序的编译优化的方法以及编译器
US20040210883A1 (en) Method and apparatus for building executable computer programs using compiled program libraries
CN111813672B (zh) 一种针对多种处理器架构的非侵入式覆盖率统计方法
US7240334B1 (en) Methods, systems, and computer program products for deferred computer program tracing
KR101979329B1 (ko) 바이너리의 취약점을 유발하는 입력데이터 위치 추적 방법 및 그 장치
CN115686631B (zh) 一种基于知识基的随机指令生成方法、装置及存储介质
CN113342654A (zh) 脚本语言代码调试方法及装置、可读存储介质及电子设备
US10839124B1 (en) Interactive compilation of software to a hardware language to satisfy formal verification constraints
CN116661808B (zh) 二进制翻译方法、装置、电子设备及存储介质
US20030229740A1 (en) Accessing resources in a microprocessor having resources of varying scope
US7318221B2 (en) Windows™ F-language interpreter
JP3049814B2 (ja) マイクロコンピュータの言語処理装置
CN108228239B (zh) 基于快速模拟器qemu的分支指令抓取方法和装置
JP2002014847A (ja) プログラム検査装置、プログラム検査方法及び検査を行うためのプログラムを格納した記録媒体
CN115470151B (zh) 一种应用运行分析方法、计算设备及存储介质
CN117008972B (zh) 一种指令分析方法、装置、计算设备及存储介质
CN117075912B (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
GR01 Patent grant
GR01 Patent grant