发明名称 一种基于逻辑执行块的嵌入式软件测试插桩方法
摘要 本发明公开了一种基于逻辑执行块的嵌入式软件测试插桩方法。首先根据不同的覆盖测试类型,对被测程序进行预处理。接着分析被测程序结构,获得语句类型、层级关系、嵌套关系等信息。根据这些信息和逻辑执行关系对被测程序分块,每个逻辑执行块入口和出口位置插入探针函数。运行插桩后的被测程序,收集桩信息,统计插桩点语句的执行次数。最后根据插桩点语句类型和被测程序层级关系、嵌套关系,确定每段代码块中语句的执行次数。该方法能厘清程序层级关系、嵌套关系,计算包括语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖在内的多种覆盖率。该方法基于代码块插桩,大大降低程序插桩后的膨胀率,减小海森堡效应对实时性测试的影响。
申请公布号 CN102521123B 申请公布日期 2016.04.06
申请号 CN201110379877.2 申请日期 2011.11.24
申请人 西安邮电大学 发明人 王忠民;霍艺伟;梁琛;王文浪;范琳
分类号 G06F11/36(2006.01)I 主分类号 G06F11/36(2006.01)I
代理机构 代理人
主权项 一种基于逻辑执行块的嵌入式软件测试插桩方法,包括如下步骤:(1)根据不同的覆盖测试类型,对被测程序进行不同的预处理,具体包括补全每个逻辑执行块的起始和终止大括号,使程序的逻辑执行结构易于分析处理;根据不同的覆盖测试类型,处理程序中的分支语句和循环语句;将原分支体、循环体中的语句抽象为一个函数,便于在条件拆分后的各个分支中调用,以减少代码量;预处理可能变动了程序语句所在的行号,所以生成预处理前后程序的行号对应关系表;(2)分析预处理后被测程序的结构,获得被测程序语句类型、层级关系、嵌套关系信息,具体包括以超前搜索的方式,从语句中识别出每种类型的标志字符串,从而得到语句的类型,确定语句的可执行性为可执行或非可执行;在分析过程中,用一个数组记录插桩相关的语句信息,包括语句类型、语句所处的嵌套层级以及语句的执行次数,数组元素的下标对应该语句的行号;其中嵌套层级初始化为0,在程序分块过程中填充;可执行语句的执行次数初始化为‑1,非可执行语句的执行次数初始化为‑2,在执行次数统计过程中计算;根据配对的大括号将程序划分为不同的逻辑执行块,逻辑执行块以左大括号为入口,以右大括号为顺序出口,以跳转语句为非顺序出口;一个逻辑执行块有且只有一个入口和一个顺序出口,但是可以有多个非顺序出口;根据逻辑执行块入口和顺序出口可以确定该块所处的嵌套层级;(3)在结构分析的基础上,对被测程序按逻辑执行关系分块,每个逻辑执行块作为一个插桩单位,将其入口、顺序出口和非顺序出口定为插桩点;(4)初始化探针函数及插桩环境,在插桩点插入探针函数,探针函数设计为发送当前插桩点的位置信息;(5)运行插桩后的被测程序,每经过一次插桩点,由探针函数发送该插桩点的位置信息,统计接收到的桩信息,来更新语句信息中相应行号的执行次数,从而计算出各插桩点的执行次数;(6)根据步骤(2)中记录的被测程序语句类型、层级关系、嵌套关系信息,遍历语句信息,用栈结构来匹配逻辑执行块的入口、顺序出口和非顺序出口,按照逻辑执行块所处的嵌套层级及其入口、顺序出口和非顺序出口,计算每个逻辑执行块中所有语句的执行次数,进而计算出覆盖率。
地址 710121 陕西省西安市长安区西长安街路西安邮电大学