微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于仿真的嵌入式软件白盒覆盖测试系统设计

基于仿真的嵌入式软件白盒覆盖测试系统设计

时间:08-26 来源:单片机与嵌入式系统应用 点击:

语句覆盖是软件测试中最基木的覆盖标准,因此在测试时应将每个语句至少执行1次。在 T estImp系统中得到语句覆盖率的算法流程如图3所示,通过词法分析后,读单独的词语,如遇到能产生分支的关键词(for .if .else .switch .goto .return .break .continue .do :`{"和"}’,)则继续往卜判断,否则返回继续读词语。如果是能产生分支的关键词,则将关键词对应的当前标号(flagif }flagelse .flagwhile,flagfor }flagswitch)推进栈中的account单元保存,并将当前标号加1。当读取到关键词之后第1个气"时,标志fflag加1,且判断是否大于1:如果大于1,则将此时的行号推入到栈当前位置中的mine单元中保存;否则直接返回读词。如果是+}"标号,则判断链表的节点是否大于。,如果是且为1,则用"}"当前行数减去保存栈中"{"的行数,然后减去最近嵌套内层的总行数即得到该层对应行数;如果链表节点大于1,则判断链表节点数与对应层数是否相等,如果相等则计算出该层的总行数,即用此时+}"行数减去栈中保存"{"的总行数,然后保存该层总行数,并用总行数减去最近嵌套内层行数之和,即得到该层行数对应记录。如果链表节点数与对应层数不相等,则将对应层数加1循环作判断。当所有的词语全部读取完毕后,读取动态执行时写入的插装文件,读取关键词标号,取对应关键词链表中的行数与总行数变量相加,直至插装文件读取完毕,此时可以输出被覆盖语句数。

2.4.2分支覆盖率算法分析

分支覆盖率的计算一般也需要达到一定的指标。在T estImp系统中得到分支覆盖率的算法流程如图4





该系统实现如下几个模块:

①分析模块。用打开文件菜单选择要分析的源文件,并进行词法分析。在词法分析过程中,对关键词、符号擞字变量等用不同的标记,并去除源文件中的注释,给出每个词的行数和列数。语法分析并没有生成可见的语法树,只是形成提供插装的结构信息。

②插装模块。选择自动插装菜单,系统会读取词法语法分析的结果,根据图2算法流程实现对源程序的自动插装,插装点有for ,if ,else ,case ,goto ,return ,break ,con-tinue .do ,while语句后及程序开始与结束处插入记录函数指针,并在程序最后插入插装函数体。

③编译器配置模块。根据不同嵌入式软件选择不同的编译环境,该部分需在使用该系统之前对各种嵌入式编译软件进行配置,在木系统中有Visual C + + ,ARM编译器ADS ,Keil环境沛福环境,Borland C环境,DSP编译器CCS。

④覆盖率报告。木系统已实现的覆盖率报告有语句覆盖与分支覆盖,并将覆盖率通过二维图形形式体现。后续将实现条件覆盖、多条件判定覆盖、多条件覆盖,M C/DC潞径覆盖等覆盖率报告。

C服告生成及帮助文档。将测试覆盖结果与测试前生成设定的覆盖率指标进行比较得到测试结果。如果覆盖率没有达到要求,则继续增加测试用例,以提高测试覆盖率。另外有帮助文档,提供使用说明、注意事项及应用范围等。

4实验结果

在实验中,采用1个AT 89C51单片机键盘识别系统作为实验对象。在该系统中,通过AT 89C51的P1口连接1个4x4的知阵键盘,并通过P0. 4 } P0. 6所连接的74LS138扩展连接到型号位7SEG-MPXGCA的6位LED选通端上,可以显示所按卜键盘的编号,将RXD和T XD连接到串口。

实验过程中,将测试源程序进行分析并自动插装,然后通过单片机的Keil编译器对插装后的源程序进行编译,得到.hex文件,添加到Proteus6. 9仿真软件原理图中的AT 89C51单片机中,点击运行按钮后可以执行程序。此时可以在Proteus6. 9界而中输入生成的测试用例。本实例中的测试用例是键盘按键的输入,只需点击Proteus6. 9原理图中的键盘。此时插装后的程序会将插装的信急通过串口传送到TestImp测试系统的联机串口传送界而中,并将其保存在指定文件中,为覆盖测试做准备。

为该系统设计的基木测试用例是按卜单个1号键。在此测试用例卜,手工运行推算出语句覆盖率和分支覆盖率分别为55. 6%和42. 80}0 ,在测试系统运行后,得出的语句覆盖率和分支覆盖率分别为55. 6%和42. 8 0}o。测试结果如图5所示。

实验结果表明:在特定的测试用例卜,对嵌入式系统应用木文设计的基于仿真嵌入式软件白盒覆盖测试系统与理论上推导出来的语句和分支覆盖率指标完全相同。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top