主权项 |
一种基于判定识别的图像类软件单元测试方法,其特征在于步骤如下:(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为覆盖。 |