基于符号执行的gui程序测试用例扩增方法

文档序号:8223403阅读:381来源:国知局
基于符号执行的gui程序测试用例扩增方法
【技术领域】
[0001] 本发明属于软件测试技术领域,尤其是软件测试中测试用例扩增领域,用于GUI 程序测试用例的扩增。
【背景技术】
[0002] 软件测试是一项旨在帮助软件从业者评估被测软件的质量状况的探宄性活动。软 件项目工作者通过软件测试活动对项目所开发产品的质量与可用性进行评估,从而获得具 有借鉴意义的评估结果。在完整的软件开发流程中,软件测试活动贯穿始终,占据了软件开 发项目的大部分时间,需要大量的人力物力资源投入。由此可见,在软件项目的开发中,以 保障软件产品的质量为目的的软件测试占据着极其重要的地位。优秀、成功的软件测试过 程能够找出被测试软件产品中存在的错误、缺陷、失效和事故,从而帮助软件产品开发者对 软件产品进行合理有效的修复与改善,并提高软件产品的质量,缩短开发出的软件产品与 产品需求之间的差距,将开发出的软件产品的质量与功能偏差控制在可接受范围以内。
[0003] 测试用例是软件测试的重要组成部分,从软件测试活动的本质来说,软件测试就 是针对待测软件设计并开发出多个测试用例。在世界各地的研宄学者对软件测试技术进行 深入研宄的同时,各种通过改变测试用例来提高软件测试效率的技术也相继被提出,例如, 通过对测试用例进行优化选择提高测试活动效率、通过自动化生成测试用例以减少测试活 动中的资源耗费等技术。
[0004] 在软件测试过程中,设计并开发出高效的测试用例对于软件测试人员来讲,并不 是一项轻松的工作。在测试图形用户界面(GUI)软件产品时,软件测试工作者不仅应该熟 悉被测软件的各种功能如何使用,还需要熟悉软件产品的后台实现逻辑,从而设计出高覆 盖、高效率的测试用例。但是从工业界中软件开发活动与测试活动由不同人员组织进行的 情况来看,测试人员难以充分了解软件程序的后台处理逻辑,导致测试活动不充分。为了减 少人力与财物资源消耗,一些软件开发公司会招收经验不足的软件从业者进行软件测试活 动,这样会增多开发测试用例所耗费的时间,降低生成的测试用例的测试效率。

【发明内容】

[0005] 本发明要解决的问题是:在图形用户界面软件测试中,针对后台处理程序测试的 测试用例生成不仅需要耗费大量资源,且生成的测试用例并不足以保证其分支覆盖率和有 效性。
[0006] 本发明的技术方案为:基于符号执行的⑶I程序测试用例扩增方法,对于一个⑶I 待测程序,使用工具Java Path Finder,简称JPF,为待测程序源代码创建jpf"文件,并 静态分析待测程序代码,获取JPF符号执行分析后产生的有效输入值;确定已有测试用例 中需要修改的参数,然后根据控件的名字属性作为关键字搜索与定位到待测程序中所述需 要修改的参数对应的位置,得到修改参数有效输入值,再用所述修改参数有效输入值替换 已有测试用例原脚本中对应位置的输入值,生成新的测试用例,所述新的测试用例用于扩 增原测试用例集。
[0007] 按照以下步骤生成jpf"文件并进行符号执行:
[0008] 1)扫描待测程序中包含的待测类,并确定其中的程序方法及输入参数的个数;
[0009] 2)对每个输入参数,随机产生参数值;
[0010] 3)对于每个待测类,自动生成包含main()方法的java文件,即"? jpf"文件, main()方法中包含待测类中所有的方法;
[0011] 4)根据新生成的java文件设定JPF执行时的参数,包括target、classpath、 symbolic, method、listener、search. multiple_errors 和 vm. storage, class 这 6 个执行 参数:
[0012] target:指定新生成的包含待测类的java文件的名字;
[0013] classpath:指定新生成的定包含待测类的java文件编译后的bin文件所在目 录;
[0014] symbolic,method:指定待测类中的待测方法,如果待测类中的一个方法是被另一 个方法调用的,则只将进行调用的方法作为待测方法的候选,忽略被调用的方法;
[0015] listener:指定JPF中针对符号执行的监控器,设为.symbc.SymbolicListener;
[0016] search. multiple_errors :包含 True 和 False 两种值,True 指在符号执行过程 中即使碰到错误仍会继续执行,False指在符号执行过程中碰到错误时停止执行,默认值为 True;
[0017] vm. storage, class:用于存储状态的类,设为nail,即空;
[0018] 5)根据步骤4)设定的JPF的执行参数,用JPF执行新生成的包含待测类的java 文件,获得该类的符号执行结果,得到有效输入值。
[0019] 对于一个GUI待测程序,将其前端的输入域和后台代码的参数相对应,以便根据 名字属性确定更新输入值的位置。
[0020] GUI程序的测试用例主要针对程序界面进行测试。目前已有的基于符号执行的测 试用例扩增方法较少,且大部分方法针对命令行程序,并不能对GUI程序界面进行测试用 例扩增。主要原因是符号执行针对的是后台逻辑代码,直接用符号执行生成的测试用例并 不一定能够满足GUI程序的系统级需求或有效的查出GUI程序存在的问题。假设运用传统 的符号执行得到不同路径上的两个测试用例T和T',虽然T和T'的执行路径并不相同,但 这两条路径对应的界面可能是一样的。另外,对于某些CTI界面,并不能够确定其对应 程序路径,传统的符号执行无法进行。因此,单纯的使用已有的基于符号执行的测试用例扩 增方法并不能满足GUI软件扩增的测试需求。
[0021] 本发明提出了一种改进的基于符号执行的测试用例扩增方法,该方法在传统符号 执行的基础上进行改进,将GUI程序前台界面与后台逻辑代码相对应,以待测程序中控件 的名字属性作为关键字在待测程序的脚本中搜索与定位需要置入新输入值的位置,再运用 符号执行来生成扩增的测试用例集。
[0022] 本发明作为一种界面测试技术引入了符号执行技术,通过人工或自动手段, 将GUI程序前台界面与后台逻辑代码相结合,得到一条可以执行到待测界面的路径,使得 能够运用符号执行的方法完成对程序前台界面测试用例的扩增,让CTI程序前台界面 的测试更加充分,从而使得测试人员可以得到较充分的测试用例集,大大提高了 GUI程序 前台界面的测试效率。
【附图说明】
[0023] 图1为本发明实施例的主要流程图。
[0024] 图2为本发明方法的流程图。
[0025] 图3为符号执行的示例代码。
[0026] 图4为图3示例代码的控制流图。
[0027] 图5为图3示例代码的符号
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1