当前位置: 首页 > 专利查询>王彤专利>正文

程序逻辑结构图示方法及程序路径统计方法技术

技术编号:2845650 阅读:320 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种程序逻辑结构图示方法,其技术方案包括步骤:A.生成一个顶层分支对象;B.在任意层次的分支对象中嵌套分支树对象和/或语句块对象;C.计算上述各对象的尺寸及位置并画出其图示。本发明专利技术还公开了一种程序路径统计方法,其技术方案是:用统计程序路径的步骤代替上述技术方案中的步骤C。本发明专利技术使用结构对象作为绘图单位,对象的尺寸和位置自动计算,可以快速画出程序逻辑结构图,该逻辑结构图可以直观表现程序的执行路径。本发明专利技术提出的程序路径统计方法,自动统计程序路径,依据统计结果即可设计路径覆盖测试用例。

【技术实现步骤摘要】

本专利技术涉及软件开发领域,具体地说,涉及软件开发领域的详细设计和程序测试领域,更具体地,涉及详细设计和程序测试领域的程序逻辑结构图示方法,以及程序测试领域的程序路径统计方法。
技术介绍
详细设计和程序测试是软件开发过程的两个重要阶段。详细设计针对目标系统进行比较详细的说明;程序测试一般分为黑盒测试和白盒测试,其中白盒测试依据程序的内部逻辑结构设计测试用例进行测试。虽然目前很多软件从总体上来说是面向对象的,但其局部代码还是结构化的,详细设计和白盒测试常常需要画出局部程序的逻辑结构的图示。目前常用的程序逻辑结构图示方法是利用绘图工具软件,使用逻辑结构图的图形符号,画出程序逻辑结构图。常用的逻辑结构图有三种,程序流程图、盒图(N-S图)、PAD图,它们常用的部分图形符号如图2所示,其中图2A是程序流程图的部分图形符号,201为选择(分支),202为处理,203为开始或停止,204为预先定义的处理,205为输入输出,206为控制流;图2B是盒图的部分图形符号,211为顺序,212为条件,213为循环,214为调用子程序A;图2C是PAD图的部分图形符号,221为顺序,222为循环(WHILE C DO P),223为选择(IFC THEN P1 ELSE P2),224为定义。图3是对应于图1A所示的示例代码的程序流程图。程序流程图是历史最悠久、使用最广泛的描述程序过程的工具,具有不利于逐步求精、不利于遵循结构程序设计的精神、不易表示数据结构等缺点。图4是对应于图1A所示的示例代码的盒图。盒图具有功能域明确、不可能任意转移控制、容易确定局部和全部数据的作用域、容易表现嵌套关系和模块的层次结构等特点,但当程序结构较复杂时,盒图的绘制比较困难。图5是对应于图1A所示的示例代码的PAD图。PAD是问题分析图(problem analysis diagram)的英文缩写,它用二维树形结构的图来表示程序的控制结构,将这种图翻译成程序代码比较容易,并且结构清晰、易读易懂易记,支持自顶向下、逐步求精的设计方法。上述的程序逻辑结构图示方法使用图形符号画出程序逻辑结构图,效率较低,尤其是程序逻辑较复杂时,需要花费较长的绘图时间,修改逻辑结构图也比较麻烦。另一方面,所获得的逻辑结构图在用于程序测试时有较大缺陷,都难于描述程序路径,也难于自动统计程序路径。目前的测试工作中,当要分析程序路径时,一般要另外画出控制流图,增加了工作量。另外,控制流图在描述程序路径时也不够直观,并且不便于自动统计路径。白盒测试方法针对代码的内部逻辑结构设计测试用例,使用逻辑覆盖作为测试度量,逻辑覆盖有语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、路径覆盖等。不同的逻辑覆盖具有不同的测试完整性,其中路径覆盖是白盒测试最为经典的问题,具有很好的测试完整性。由于程序中含有循环结构时,一个很简单的程序都可能产生大量的路径,完全的路径覆盖在实际的测试工作中不具实用性,因此,统计路径时一般不考虑循环的实际次数,只考虑执行循环体和不执行循环体两种情况,这种简化的路径覆盖又叫Z路径覆盖,由于完全的路径覆盖不具实用性,我们所说的路径覆盖是指Z路径覆盖。路径覆盖具有很好的测试完整性,但在实际测试中却很少使用,主要原因是测试成本太高,造成测试成本高的原因主要有两点缺少自动统计路径的方法和工具;由于任何分支都可能使路径数量倍增,当程序较复杂时路径的数量巨大。关于路径统计,《软件测试技术概论》(39-40页,上海艾微软件技术有限公司主编,清华大学出版社出版,2004年4月第一版)一书中提到一种统计方法用路径树来表示程序的所有路径,然后从根结点开始,一次遍历,再回到根结点后,把所经历的叶结点名排列起来,就得到一个路径,如果设法遍历了所有的叶结点,就得到了所有的路径。该书未详细说明具体的实施步骤。路径树常用于在网络技术中计算路由,例如描述数据包在网络中的树形转发路径。依据该书所述的方法,人工画出路径树,并设法用人工计算路径,可能是可行的,但工作量较大。我们未检索到依据程序代码自动生成路径树的方法,目前软件市场上也未发现依据程序代码自动生成路径树的工具,也没有检索到进一步自动统计程序路径的方法,也未在软件市场上发现自动统计程序路径的工具。关于程序较复杂时路径数量巨大,导致路径覆盖难于实施的问题,现有技术中没有较好的解决办法。如上所述,目前的程序逻辑结构图示方法效率较低,所得到的逻辑结构图在用于程序测试时具有较大缺陷。目前路径覆盖测试缺少自动统计路径的方法,也存在当程序较复杂时路径数量过大的问题。
技术实现思路
本专利技术要解决的技术问题是针对上述的程序逻辑结构图示方法的不足之处,提出一种新的程序逻辑结构图示方法。本专利技术要解决的另一个技术问题是提出一种程序路径自动统计方法。为了解决上述第一个技术问题,本专利技术提出了如下技术方案一种程序逻辑结构图示方法,其特征在于,包括步骤A.生成一个顶层分支对象;B.在任意层次的分支对象中嵌套分支树对象和/或语句块对象;C.计算上述各对象的尺寸及位置并画出其图示。还可以进一步包括用于在分支树对象中添加分支的步骤;用于在分支树对象中删除选定分支的步骤;用于修改分支判定的步骤;用于编辑语句块对象的代码的步骤;用于隐藏对象和/或显示对象的步骤;用于由逻辑结构图生成程序代码的步骤。为了解决上述另一个技术问题,本专利技术提出了如下技术方案一种统计程序路径的方法,其特征在于,用统计程序路径的步骤代替上述技术方案中的步骤C。本专利技术提出的程序结构图示方法,使用结构对象作为绘图单位,通过添加结构对象即可以堆砌出逻辑结构图,对象的尺寸和位置自动计算,可以快速设计出程序逻辑结构图,逻辑结构图便于修改,并与代码可以双向生成。该逻辑结构图可以直观表现程序的执行路径,还可直接用于统计程序路径,程序测试时无须另画其他图示,减少了工作量。本专利技术提出的程序路径统计方法,自动统计程序路径,依据统计结果即可设计路径覆盖测试用例。当程序较复杂时,可以隐藏部分对象,统计路径时忽略已隐藏的对象,以压缩路径数量,提高路径覆盖测试的实用性。附图说明下面结合附图对本专利技术的具体实施方式作进一步详细的说明图1是示例代码及示例代码的结构划分示意图和代码片划分示意图,其中图1A是示例代码,图1B是示例代码的结构划分示意图,图1C是示例代码的代码片划分示意图。图2是
技术介绍
中所述三种逻辑结构图的部分图形符号。其中图2A是程序流程图的部分图形符号;图2B是盒图的部分图形符号;图2C是PAD图的部分图形符号。图3是对应于图1A所示的示例代码的程序流程图。图4是对应于图1A所示的示例代码的盒图。图5是对应于图1A所示的示例代码的PAD图。图6是本专利技术的一个实施例的总体流程图。图7是在本专利技术的一个实施例,各结构对象的内部数据构成示意图及结构对象树示意图,其中图7A是语句块对象的内部数据构成示意图,图7B是分支树对象的内部数据构成示意图,图7C是分支对象的内部数据构成示意图,图7D是结构对象树示意图。图8是在本专利技术的一个实施例,各结构对象的图示的示意图,其中图8A是分支对象的图示的示意图,图8B是另一种分支对象的图示的示意图,图8C、图8D、图8E、图8F、图8G、图8H是分支树对象的图示的示意图,图8I是语句块对象的图示本文档来自技高网
...

【技术保护点】
一种程序逻辑结构图示方法,其特征在于,包括步骤:    A.生成一个顶层分支对象;    B.在任意层次的分支对象中嵌套分支树对象和/或语句块对象;    C.计算上述各对象的尺寸及位置并画出其图示。

【技术特征摘要】
1.一种程序逻辑结构图示方法,其特征在于,包括步骤A.生成一个顶层分支对象;B.在任意层次的分支对象中嵌套分支树对象和/或语句块对象;C.计算上述各对象的尺寸及位置并画出其图示。2.根据权利要求1所述的程序逻辑结构图示方法,其特征在于,将程序逻辑结构分为顺序结构和分支结构;所述语句块对象用于描述顺序结构,所述分支树对象用于描述分支结构,所述分支对象用于描述顶层分支或分支结构的一个分支;每一所述分支树对象至少嵌套了两个分支对象。3.根据权利要求1所述的程序逻辑结构图示方法,其特征在于,所述嵌套包括被嵌套的对象的范围至少在一个方向上落在嵌套它的对象的范围之内。4.根据权利要求1所述的程序逻辑结构图示方法,其特征在于,用细化的分支树对象描述不同的分支结构。5.根据权利要求1所述的程序逻辑结构图示方法,其特征在于,所述步骤B所述分支树对象和/或语句块对象由用户指定。6.根据权利要求5所述的程序逻辑结构图示方法,其特征在于,嵌套所述分支树对象和/或语句块对象的分支对象由用户指定。7.根据权利要求1所述的程序逻辑结构图示方法,其特征在于,所述步骤B所述分支树对象和/或语句块对象依据程序代码生成。8.根据权利要求7所述的程序逻辑结构图示方法,其特征在于,所述步骤B具体包括解析程序代码的逻辑结构,依据程序代码的分支结构生成对应的分支树对象及对应的分支对象,依据程序代码的顺序结构生成对应的语句块对象,并将所述分支树对象和所述语句块对象嵌套于对应层次的分支对象中。9.根据权利要求1至8任一权利要求所述的程序逻辑结构图示方法,其特征在于,所述各对象的尺寸包括各对象的宽度和高度。10.根据权利要求9所述的程序逻辑结构图示方法,其特征在于,所述步骤C包括步骤C1.从顶层分支对象开始,针对每一对象,先递归计算各子对象的宽度和高度,再根据子对象的宽度和高度计算该对象的宽度和高度,进一步包括依下述公式计算语句块对象的宽度和高度宽度=S1;高度=S2;其中,S1为语句块对象的宽度,S2为语句块对象的高度;依下述公式计算分支对象的宽度和高度宽度=S1+2*S6 (N=0);宽度=∑W+(N+1)*S6 (N>0);高度=S3+S4(N=0);高度=Hm+S3+S4 (N>0);其中,N为该分支对象的子对象数量,S1为语句块对象的宽度,S6为左右方向连接的两个对象之间的距离,∑W为所有子对象的宽度之和,S3为分支标注的高度,S4为分支标注与分支的距离,Hm为高度最大的子对象的高度;依下述公式计算分支树对象的宽度和高度宽度=Wm;高度=∑H+(N-1)*S5;其中,Wm为最宽子对象的宽度,∑H为所有子对象的高度之和,N为子对象数量,S5为两条分支之间的距离。11.根据权利要求10所述的程序逻辑结构图示方法,其特征在于,所述各对象的尺寸进一步包括各分支树对象的入口线高度。12.根据权利要求11所述的程序逻辑结构图示方法,其特征在于,所述步骤C1进一步包括计算各对象的底座高度;依下述公式计算分支树对象入口线高度入口线高度=B1+(Hn-Bn)+∑(H2...Hn-1)+(N-1)*S5;其中,B1为第一子对象底座高度,Hn为最末子对象高度,Bn为最末子对象底座高度,∑(H2...Hn-1)为除第一子对象和最末子对象以外的其他子对象的高度之和,N为子对象数量,S5为两条分支之间的距离。13.根据权利要求12所述的程序逻辑结构图示方法,其特征在于,所述计算各对象的底座高度具体包括从顶层分支对象开始,针对每一对象,先递归计算各子对象的底座高度,再根据各子对象的底座高度计算该对象的底座高度,进一步包括依下述公式计算语句块对象的底座高度底座高度=S2/2;其中S2为语句块对象的高度;依下述公式计算分支对象的底座高度底座高度=0(N=0);底座高度=Bm (N>0);其中,N为子对象数量,Bm为底座高度最大的子对象的底座高度;依下述公式计算分支树对象的底座高度底座高度=[B1+(Hn-Bn)+∑(H2...Hn-1)+(N-1)*S5]/2+Bn;其中,B1为第一子对象底座高度,Hn为最末子对象高度,Bn为最末子对象底座高度,∑(H2...Hn-1)为除第一子对象和最末子对象以外的其他子对象的高度之和,N为子对象数量,S5为两条分支之间的距离。14.根据权利要求1至8任一权利要求所述的程序逻辑结构图示方法,其特征在于,所述各对象的位置包括各对象的入口点坐标。15.根据权利要求14所述的程序逻辑结构图示方法,其特征在于,所述步骤C包括步骤C2.从顶层分支对象开始,针对每一对象,先计算该对象的入口点坐标,再根据该对象的位置递归计算各子对象的入口点坐标,进一步包括依下述公式计算顶层分支对象的入口点坐标X=0;Y=H-B;其中,X为入口点横坐标,向右为正,Y为入口...

【专利技术属性】
技术研发人员:王彤
申请(专利权)人:王彤
类型:发明
国别省市:81[中国|广州]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1