发明名称 一种基于判定识别的图像类软件单元测试方法
摘要 本发明公开了一种基于判定识别的图像类软件单元测试方法,该方法首先通过词法分析识别测试对象中所有判定条件,在不影响实际运行结果的基础上,给每个判定条件进行编号,完整的运行一幅图像测试用例,记录这些判定条件真假分支的覆盖情况并输出到文件,分析各判定条件的真假分支覆盖情况,获得测试的覆盖性,从而解决了输入数据量大循环次数多导致无法进行单元测试的问题,充分验证软件的相关功能,提高软件质量。该方法已在嫦娥三号基于双目立体视觉导航算法的单元测试及覆盖率分析中得到了应用,确保充分验证了该算法,提高了软件质量。
申请公布号 CN103593285B 申请公布日期 2016.03.02
申请号 CN201310488254.8 申请日期 2013.10.17
申请人 北京控制工程研究所 发明人 党纪红;陈朝晖;万丽景;高进;杨彬;刘建军;李化云
分类号 G06F11/36(2006.01)I 主分类号 G06F11/36(2006.01)I
代理机构 中国航天科技专利中心 11009 代理人 臧春喜
主权项 一种基于判定识别的图像类软件单元测试方法,其特征在于步骤如下:(1)对测试对象进行词法分析,识别测试对象中的关键字;(2)提出关键字后的判定条件,并插桩;(3)利用插桩的代码替换关键字后的判定条件;(4)运行图像测试用例,对测试对象进行单元测试;(5)利用插桩的代码自动记录单元测试过程中判定条件真假分支的覆盖情况;(6)根据判定条件真假分支的覆盖情况,计算得出分支覆盖率;(7)如果覆盖率不满足要求,重复执行步骤(4)至(6);如果覆盖率满足要求,单元测试完成并退出;所述步骤(1)—(6)的具体实现方式为:采用预编译后的星上代码进行词法分析,找出预编译后被测对象源码的所有判定条件;对所有判定条件插桩,并给每个判定条件赋一个唯一的标识,桩模块用于记录各判定条件真假分支执行情况;将闭环仿真系统中的测试对象替换为插桩后的测试对象;最后完整地运行一组图像测试用例,桩模块记录了各判定条件的覆盖情况;关键字提取:分析出测试对象中所有包含判定条件的关键字,包含判定条件的关键字有条件判定关键字if;循环判断关键字while,for;分支选择关键字switch‑case;三目运算关键字?:;所述插桩的代码,即条件编号为:条件判定关键字if;循环判断关键字while,for;三目运算关键字?:;直接取出关键字中所包含的每个判定条件st,并替换为SET_UNITEST(st,funnum stnum,),其中:(1)st为取出的判定条件;(2)stnum为条件编号,由词法分析工具自动赋值;(3)funnum为函数编号,由词法分析工具自动赋值;(4)SET_UNITEST定义为:st?(cover[stnum][funnum][0]=1,TRUE):(cover[stnum][funnum][1]=1,FALSE);(5)cover[stnum][funnum][0]初始化为0,用于记录判定条件真分支覆盖,为1为覆盖;(6)cover[stnum][funnum][1]初始化为0,用于记录判定条件假分支覆盖,为1为覆盖。
地址 100080 北京市海淀区北京2729信箱