[发明专利]基于符号执行的GUI程序测试用例扩增方法在审
申请号: | 201410712797.8 | 申请日: | 2014-11-28 |
公开(公告)号: | CN104536880A | 公开(公告)日: | 2015-04-22 |
发明(设计)人: | 徐宝文;周骏贵;张智轶;杨薇然;陈振宇;张驰;濮力;程秀才;谢佩章;王婧宇 | 申请(专利权)人: | 南京大学;江苏苏测软件检测技术有限公司 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 南京天翼专利代理有限责任公司 32112 | 代理人: | 奚铭 |
地址: | 210093 江*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 符号 执行 gui 程序 测试 扩增 方法 | ||
技术领域
本发明属于软件测试技术领域,尤其是软件测试中测试用例扩增领域,用于GUI程序测试用例的扩增。
背景技术
软件测试是一项旨在帮助软件从业者评估被测软件的质量状况的探究性活动。软件项目工作者通过软件测试活动对项目所开发产品的质量与可用性进行评估,从而获得具有借鉴意义的评估结果。在完整的软件开发流程中,软件测试活动贯穿始终,占据了软件开发项目的大部分时间,需要大量的人力物力资源投入。由此可见,在软件项目的开发中,以保障软件产品的质量为目的的软件测试占据着极其重要的地位。优秀、成功的软件测试过程能够找出被测试软件产品中存在的错误、缺陷、失效和事故,从而帮助软件产品开发者对软件产品进行合理有效的修复与改善,并提高软件产品的质量,缩短开发出的软件产品与产品需求之间的差距,将开发出的软件产品的质量与功能偏差控制在可接受范围以内。
测试用例是软件测试的重要组成部分,从软件测试活动的本质来说,软件测试就是针对待测软件设计并开发出多个测试用例。在世界各地的研究学者对软件测试技术进行深入研究的同时,各种通过改变测试用例来提高软件测试效率的技术也相继被提出,例如,通过对测试用例进行优化选择提高测试活动效率、通过自动化生成测试用例以减少测试活动中的资源耗费等技术。
在软件测试过程中,设计并开发出高效的测试用例对于软件测试人员来讲,并不是一项轻松的工作。在测试图形用户界面(GUI)软件产品时,软件测试工作者不仅应该熟悉被测软件的各种功能如何使用,还需要熟悉软件产品的后台实现逻辑,从而设计出高覆盖、高效率的测试用例。但是从工业界中软件开发活动与测试活动由不同人员组织进行的情况来看,测试人员难以充分了解软件程序的后台处理逻辑,导致测试活动不充分。为了减少人力与财物资源消耗,一些软件开发公司会招收经验不足的软件从业者进行软件测试活动,这样会增多开发测试用例所耗费的时间,降低生成的测试用例的测试效率。
发明内容
本发明要解决的问题是:在图形用户界面软件测试中,针对后台处理程序测试的测试用例生成不仅需要耗费大量资源,且生成的测试用例并不足以保证其分支覆盖率和有效性。
本发明的技术方案为:基于符号执行的GUI程序测试用例扩增方法,对于一个GUI待测程序,使用工具Java Path Finder,简称JPF,为待测程序源代码创建“.jpf”文件,并静态分析待测程序代码,获取JPF符号执行分析后产生的有效输入值;确定已有测试用例中需要修改的参数,然后根据控件的名字属性作为关键字搜索与定位到待测程序中所述需要修改的参数对应的位置,得到修改参数有效输入值,再用所述修改参数有效输入值替换已有测试用例原脚本中对应位置的输入值,生成新的测试用例,所述新的测试用例用于扩增原测试用例集。
按照以下步骤生成“.jpf”文件并进行符号执行:
1)扫描待测程序中包含的待测类,并确定其中的程序方法及输入参数的个数;
2)对每个输入参数,随机产生参数值;
3)对于每个待测类,自动生成包含main()方法的java文件,即“.jpf”文件,main()方法中包含待测类中所有的方法;
4)根据新生成的java文件设定JPF执行时的参数,包括target、classpath、symbolic.method、listener、search.multiple_errors和vm.storage.class这6个执行参数:
target:指定新生成的包含待测类的java文件的名字;
classpath:指定新生成的定包含待测类的java文件编译后的bin文件所在目录;
symbolic.method:指定待测类中的待测方法,如果待测类中的一个方法是被另一个方法调用的,则只将进行调用的方法作为待测方法的候选,忽略被调用的方法;
listener:指定JPF中针对符号执行的监控器,设为.symbc.SymbolicListener;
search.multiple_errors:包含True和False两种值,True指在符号执行过程中即使碰到错误仍会继续执行,False指在符号执行过程中碰到错误时停止执行,默认值为True;
vm.storage.class:用于存储状态的类,设为nail,即空;
5)根据步骤4)设定的JPF的执行参数,用JPF执行新生成的包含待测类的java文件,获得该类的符号执行结果,得到有效输入值。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京大学;江苏苏测软件检测技术有限公司;,未经南京大学;江苏苏测软件检测技术有限公司;许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410712797.8/2.html,转载请声明来源钻瓜专利网。
- 上一篇:基于频繁子图挖掘的错误定位方法
- 下一篇:一种基于混合策略的测试数据生成方法