当前位置: 首页 > 专利查询>于秀山专利>正文

一种检测软件异常输入处理正确性的方法技术

技术编号:7786363 阅读:191 留言:0更新日期:2012-09-21 07:24
本发明专利技术公开了一种检测软件异常输入处理正确性的方法,通过词法和语法分析,得到被测软件源代码的抽象语法树和符号表;遍历所述抽象语法树和符号表,得到所述被测软件源代码中的输入控件,所述输入控件为允许用户输入数据的控件;对所述输入控件进行辨识,找出未判断异常输入的输入控件。本发明专利技术技术方案能够检测软件是否对异常输入进行了处理。

【技术实现步骤摘要】

本专利技术涉及软件测试领域,尤其是指通过分析源程序代码,检查软件对各种异常输入是否进行了正确处理的方法。
技术介绍
软件输入是软件的“门户”,是软件的驱动源,软件输入包括正常输入和异常输入,正常输入处理不当将直接影响软件功能,异常输入处理不当将影响软件容错性,导致软件出现各种错误。据统计,由于软件异常输入处理不当而造成的软件错误占软件错误的70%以上,由此可见,检查软件是否对各种异常输入进行了处理是发现软件错误的一个 重要方法。基于源程序代码分析的静态测试是软件测试的一个重要研究领域,通过静态测试,可以有效发现程序在编程规则、内存管理、指针使用、程序结构、控制流、数据流等方面存在的缺陷。静态测试是国内外开展较早的研究领域之一,目前已取得适用性成果,有代表性的有英国LARA公司的TestBed工具、Klocwork公司的Klocwork工具。这些工具根据不同的程序设计语言标准,通过对源程序代码分析,找出程序在符号使用、变量初始化、函数返回值、内存管理、缓冲区使用、指针使用等方面存在的缺陷。这些工具功能强大,使用方便,在软件静态测试中发挥了很好作用,但在软件异常输入检测方面欠缺,不能够对软件输入是否进行了异常处理进行分析。在软件异常输入检测方面,目前主要是通过人工输入各种异常值,动态执行软件的方式检查软件异常输入处理情况。这种方法一方面需要测试人员掌握软件输入的边界值和类型等信息才能设计出合理的测试用例;另一方面测试工作量大,对于数据库类等输入字段众多的软件,需要测试人员逐一验证各个字段异常处理的正确性。综上所述,在软件异常输入处理检测方面,无论是静态测试还是动态测试都存在不足,需要研究一种全新的方法解决这个问题。
技术实现思路
本专利技术所解决的技术问题是提供,能够对软件异常输入处理情况进行检测。技术方案如下,包括通过词法和语法分析,得到被测软件源代码的抽象语法树和符号表;遍历所述抽象语法树和符号表,得到所述被测软件源代码中的输入控件,所述输入控件为允许用户输入数据的控件;对所述输入控件进行辨识,找出未判断异常输入的输入控件。进一步采用类编译原理技术,对所述被测软件源代码进行词法和语法分析,通过分析得到所述抽象语法树和符号表。进一步在获取所述输入控件过程中,以深度优先方法遍历所述抽象语法树,如果某个叶子节点是变量,通过查找符号表得到该变量类型;如果所述变量类型是输入控件类型,则说明该变量所描述的是一个输入控件。进一步所述输入控件变量采用变量声明和变量定义的定义方式,在对所述输入控件进行辨识过程中,通过在所述抽象语法树进行搜索,同时结合符号表中的内容,辨识出所述被测软件源代码中所有的输入控件及其变量。进一步对所述输入控件进行辨识,查找输入控件列表中的每个输入控件,然后以深度优先方法遍历抽象语法树,检查其中是否有对输入进行异常判断的语句,如果没有,则所述输入控件就属于未判断异常的输入控件。进一步所述输入控件包括文本输入控件、列表控件、可输入列表控件、表格控件、树形控件、表格树控件、弹出式列表控件或者样式文本控件。技术效果包括软件异常输入是导致软件出现错误的主要原因之一,本专利技术的最 大优点在于如何检测是否对异常输入进行了判断。通过识别输入控件,根据不同输入控件异常判断语言特征,找出未进行异常判断的控件,据此,开发人员可以方便地修改软件;测试人员可以设计出针对该控件的测试用例,从而大大提高测试的有效性和充分性。附图说明图I是本专利技术中检测软件异常输入处理正确性的方法的工作流程图;图2是本专利技术中词法和语法分析的工作流程图;图3是本专利技术中代码片段的部分抽象语法树示意图;图4是本专利技术中输入控件辨识工作流程图;图5是本专利技术中未判断异常输入的输入控件识别的工作流程图;图6是本专利技术中示例代码段对应的软件界面示意图;图7是本专利技术中经过词法和语法分析后示例代码段的部分抽象语法树结构示意图。具体实施例方式本专利技术针对已有方法存在的问题,采用源代码分析技术,主要解决如何找出程序中没有对各种异常输入进行处理的输入控件问题,从而提高测试充分性,减少测试工作量。下面参考附图和优选实施例,对本专利技术技术方案作详细描述。如图I所示,是本专利技术中检测软件异常输入处理正确性的方法的工作流程图,本方案的执行过程如下。一、词法和语法分析该步骤的主要目的是得到被测软件源代码的抽象语法树和符号表。采用类编译原理技术,对被测软件源代码进行词法和语法分析,通过分析,得到抽象语法树和符号表。定义I :抽象语法树是一棵树T =〈V,E>,其中V是树的节点,由源代码中的各种语法结构组成;E是树的边,负责连接各种语法结构。定义2 :符号表是一个表形数据结构,词法分析过程中产生的标识符作为符号表的入口,后续分析得到的信息,如标识符的类型、使用方式、存储空间等都可以根据需要加入到表中。如图2所示,是本专利技术中词法和语法分析的工作流程图。词法和语法分析是生成代码与界面控件映射关系的基础。本方案采用通用的方法对被测软件的源代码进行词法和语法分析,由算法I描述。算法 I. Lexical_Syntax_Analyze (P)输入P :源代码输出(AST,SymTable) P的抽象语法树和符号表I. TokenStream < -Lexical_Analyze(P)2. (AST, ) SymTable) < -Syntax_Analyze (TokenStream)3. Return (AST, SymTable)源代码在经过词法和语法分析后,将得到其抽象语法树和符号表。算法I的第I步对源代码P进行词法分析,得到P的标记流TokenStream ;第2步以标记流为基础进行语法分析,得到P的抽象语法树AST和符号表SymTable ;第3步将AST和SymTable返回。下面是一个Java Swing的示例代码片段。I、javax. swing. JMenufileMenu = new javax. swing. JMenu();2、javax. swing. JMenuItemopenFileMenuItem = new javax. swing.JMenuItemO ;3、fileMenu. add(openFileMenuItem);表I是代码对应的符号表本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种检测软件异常输入处理正确性的方法,包括 通过词法和语法分析,得到被测软件源代码的抽象语法树和符号表; 遍历所述抽象语法树和符号表,得到所述被测软件源代码中的输入控件,所述输入控件为允许用户输入数据的控件; 对所述输入控件进行辨识,找出未判断异常输入的输入控件。2.如权利要求I所述的检测软件异常输入处理正确性的方法,其特征在于采用类编译原理技木,对所述被测软件源代码进行词法和语法分析,通过分析得到所述抽象语法树和符号表。3.如权利要求I所述的检测软件异常输入处理正确性的方法,其特征在于在获取所述输入控件过程中,以深度优先方法遍历所述抽象语法树,如果某个叶子节点是变量,通过查找符号表得到该变量类型;如果所述变量类型是输入控件类型,则说明该变量所描述的是ー个输入控件。4.如...

【专利技术属性】
技术研发人员:于秀山于长钺杜旭涛杨豹黄忠见迟芳吴玲
申请(专利权)人:于秀山
类型:发明
国别省市:

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

1