一种基于事件响应函数树的GUI软件测试用例生成方法技术

技术编号:15009231 阅读:134 留言:0更新日期:2017-04-04 14:55
一种基于事件响应函数树模型的GUI软件测试用例生成方法,包括:分析GUI软件的函数调用关系,并构造其函数调用图;根据所构造的软件函数调用图提取所有的事件响应函数,并录制事件响应函数相应的操作,生成脚本文件;通过函数调用图,分析出各个事件响应函数之间的主从关系,从而构造事件响应函数树;遍历步骤3所生成的事件响应函数树,找出所有从根节点出发到叶子结点截止的路径,根据这些路径,按照事件响应函数的先后顺序,依次组合所录制的相应操作脚本,最终组成测试用例。该方法构造了事件响应函数树,可以自动分析事件之间的可达关系,进而生成有效的测试用例。

【技术实现步骤摘要】

本专利技术涉及一种GUI软件测试用例生成方法,特别是一种基于事件响应函数树模型的GUI软件测试用例生成方法。该方法属于软件测试

技术介绍
图形用户界面(GraphicalUserInterface,GUI)的使用在当今的软件系统中变得越来越普遍,通常,在一个软件系统中,GUI部分占据一半以上的代码,因此软件系统GUI部分的正确性是确保整个系统操作正确的关键。为了确保软件GUI部分的正确性,一个较为常见的方式就是GUI测试。GUI软件测试用例的获取一般都是很耗费资源的,涉及到大量的人力参与。尽管一些研究者提出了一些GUI测试用例自动生成方法,但是由于各种原因,在现实中测试用例的生成使用的依旧是录制/回放工具。在使用这些工具时,首先测试人员与待测软件进行交互,然后工具的录制模块会把用户的这些交互记录下来并保存到脚本文件中,最后工具的回放模块能够在无人干涉的情况下运行这些脚本文件。一般情况下,使用这些录制回放工具录制一个具有50个事件的测试用例就需要花费20-30分钟,由于花费的时间比较多,测试人员一般只会为一个应用软件生成100-300个测试用例,因此每一个测试用例都是十分宝贵的。同时,由于后期界面的变动,还会导致测试用例失效,需要进行修复,有时候修复一个测试用例反而比重新录制这个测试用例花费更多的时间。近年来,GUI测试用例的生成受到了许多学者的关注,并提出了各种方法,其中最为出名的是国外的研究者AtifMemon及其团队,他们提出了一种事件流图(EventFlowGraph,EFG)模型,在EFG中,事件代表节点,事件之间的可达关系代表边。从节点nx到节点ny的边,表示节点ny所代表的事件可以在节点nx所代表的事件执行之后立即执行。如图1所示,是一个微软记事本软件,其中E1~E8表示了一些可以进行的一些操作,比如E1代表单击“文件”菜单,E8表示单击“取消”按钮。图2表示了由这些事件所组成的EFG,图中节点表示各个事件,边代表事件之间的先后关系。当然这里为了显示方便,只选取了其中标出的8个事件,事实上,一个完整的EFG应该包括GUI软件中所有的事件。在这个局部EFG中,事件E8(点击“取消”按钮)可以在事件E7(点击“查找下一个(F)”按钮)执行之后立即执行,事件E2(点击“新建”菜单)、事件E4(点击“换行”菜单)等可以在它自己之后立即执行,但是事件E7(点击“查找下一个(F)”按钮)不能在事件E8(点击“取消”按钮)执行之后立即执行,因为事件E8会关闭查找对话框,使“查找下一个(F)”按钮对用户不可见。最后,通过图论的方法,遍历EFG图即可生成相应的测试用例,根据其所覆盖的事件个数可以将其分为2-way(覆盖2个事件),3-way…multi-way的测试用例。基于这种模型,Memon团队开发了一套名叫“GUITAR”的工具套件,专门用于GUI测试用例的生成。但是这种方法也存在很大的不足,一方面由于EFG模型的复杂性,随着测试用例所覆盖的事件个数的增长,测试用例的规模将呈指数增长,生成2-way,3-way的测试用例规模已很庞大,生成multi-way甚至4-way的测试用例都将变得不可能;另一方面EFG模型属于一种黑盒模型,没有结合源代码所能提供的信息,进行测试用例的精简比较困难。
技术实现思路
为了弥补上述模型的不足,本专利技术提出了一种事件响应函数树的模型,这一模型属于EFG模型的子集,一方面简化了EFG模型,另一方面结合了源码信息,为测试用例的精简提供了帮助。根据本专利技术的一个方面,提供了一种基于事件响应函数树模型的GUI软件测试用例生成方法,以克服现有方法中模型复杂且无法结合源码对测试用例进行精简的缺点,提供一种基于事件响应函数树模型的GUI软件测试用例生成方法。根据本专利技术的一个进一步的方面,提供了一种基于事件响应函数树模型的GUI软件测试用例生成方法,包括:首先提取GUI软件的事件响应函数,然后将事件响应函数构造成树形模型,再遍历此树形模型生成测试用例,其中,由于事件响应函数结合了用户操作与底层代码,因此能够为测试用例的精简提供更多的信息。根据本专利技术的一个更具体的方面,提供了一种基于事件响应函数树模型的GUI软件测试用例生成方法,包括:第一步分析程序源代码,构造函数调用图。通过分析GUI软件源代码,可以提取出各个函数之间的相互调用图,GUI软件一般用面向对象的编程语言编写而成,这里的函数调用图表示各个“类中”方法以及“类间”方法之间的相互调用关系图。第二步根据函数调用图,提取事件响应函数,并录制事件响应函数相应的测试脚本。事件响应函数能够连接用户操作和程序底层代码,用录制的事件响应函数测试脚本来模拟用户的操作。第三步利用函数调用图,分析事件响应函数主从关系,构造事件响应函数树。一些事件响应函数在其他事件响应函数触发之后才能触发,通过函数调用图,可以分析出事件响应函数之间的先后顺序,从而能够提供相应信息,有利于构造有效的测试用例。第四步遍历事件响应函数树,组合测试脚本,生成测试用例。通过遍历事件响应函数树,可以获得所有合法的测试用例。这样的遍历方法有很多种,其中最简单且最容易实现的一个遍历方法是:首先找出所有从根节点出发到叶子结点截止的路径,根据这些路径,按照事件响应函数的先后顺序,依次组合所录制的相应操作脚本,最终组成测试用例。本专利技术与现有方法相比较的优点在于:本专利技术所提出的模型简化了EFG模型,使模型更加简明,并且能够结合源码信息,为测试用例的精简提供参考信息,提高测试效率,方法简单,容易实现。附图说明图1用于说明本专利技术的实施例的一个示例性的Windows记事本程序相关操作示例。图2用于说明本专利技术的实施例的一个示例性的记事本程序EFG模型示例。图3用于说明本专利技术的实施例的一个示例性的Java编写的GUI软件函数调用图示例。图4用于说明本专利技术的实施例的一个示例性的Windows记事本程序事件响应函数树示例。图5用于说明本专利技术的实施例的一个示例性的TerpPaint界面截图。图6是根据本专利技术的一个实施例的GUI软件测试用例生成方法的流程框图。图7为根据本专利技术的一个实施例的GUI软件测试用例生成方法中利用BCEL模块提取的TerpPaint函数调用图局部。图8为根据本专利技术的一个实施例的TerpPaint整体函数调用图。图9本文档来自技高网
...
一种<a href="http://www.xjishu.com/zhuanli/55/CN105677570.html" title="一种基于事件响应函数树的GUI软件测试用例生成方法原文来自X技术">基于事件响应函数树的GUI软件测试用例生成方法</a>

【技术保护点】
一种基于事件响应函数树模型的GUI软件测试用例生成方法,其特征在于包括:A)分析程序源代码,构造函数调用图,其中通过分析GUI软件源代码,提取出各个函数之间的相互调用图,B)根据函数调用图,提取事件响应函数,并录制事件响应函数相应的测试脚本,其中事件响应函数能够连接用户操作和程序底层代码,用录制的事件响应函数测试脚本来模拟用户的操作,C)利用函数调用图,分析事件响应函数主从关系,构造事件响应函数树,D)遍历事件响应函数树,组合测试脚本,生成测试用例。

【技术特征摘要】
1.一种基于事件响应函数树模型的GUI软件测试用例生成方法,
其特征在于包括:
A)分析程序源代码,构造函数调用图,其中通过分析GUI软件源
代码,提取出各个函数之间的相互调用图,
B)根据函数调用图,提取事件响应函数,并录制事件响应函数相应
的测试脚本,其中事件响应函数能够连接用户操作和程序底层代码,用
录制的事件响应函数测试脚本来模拟用户的操作,
C)利用函数调用图,分析事件响应函数主从关系,构造事件响应函
数树,
D)遍历事件响应函数树,组合测试脚本,生成测试用例。
2.根据权利要求1所述的方法,其特征在于进一步包括:
当GUI软件用面向对象的编程语言编写而成时,函数调用图表示各
个“类中”方法以及“类间”方法之间的相互调用关系图。
3.根据权利要求1或2所述的方法,其特征在于所述步骤D)的遍
历方法包括:
首先找出所有从根节点出发到叶子结点截止的路径,
根据所述路径,按照事件响应函数的先后顺序,依次组合所录制的
相应操作脚本,最终组成测试用例。
4.根据权利要求1或2所述的方法,其特征在于
利用ApacheCommonsBCEL(以后简写为BCEL)库对Java字
节码进行操作,BCEL库为遍历Java软件所有的类提供了了一个
org.apache.bcel.classfile.JavaClass模块,利用此模块能够遍历Java
代码中所有的类,
利用BCEL库所提供的一个org.apache.bcel.generic.EmptyVisitor
访问者模块,通过继承此模块,然后重载其中的visitInvokeInstruction
方法,能够找出所有的函数调用关系,进而构造出软件的函数调用图。
5.根据权利要求1或2所述的方法,其特征在于:
事件响应函数直接由系统调用,在所述步骤A)中所构造的函数调
用图中并没有包含系统调用,所以事件响应函数在函数调用图中“入度”
为零,即没有函数...

【专利技术属性】
技术研发人员:殷蓓蓓王宾方蕴宇蔡开元
申请(专利权)人:北京航空航天大学
类型:发明
国别省市:北京;11

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

1