[发明专利]xUnit框架下面向对象软件中测试目标的自动化选择方法有效
申请号: | 201310146574.5 | 申请日: | 2013-04-24 |
公开(公告)号: | CN103309805A | 公开(公告)日: | 2013-09-18 |
发明(设计)人: | 顾庆;陈道蓄 | 申请(专利权)人: | 南京大学镇江高新技术研究院 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 江苏圣典律师事务所 32237 | 代理人: | 贺翔 |
地址: | 212000 江苏省镇*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | xunit 框架 面向 对象 软件 测试 目标 自动化 选择 方法 | ||
技术领域
本发明涉及面向对象软件的自动化测试中,关键测试目标的识别和选择、以及测试用例设计问题;特别针对xUnit框架,以对象类为测试目标,在大量的对象类中选择出关键的测试目标集合,据以设计测试用例,提高软件测试性能和效率。
背景技术
xUnit框架又称为单元测试框架,最初用于设计单元测试工具SUnit,测试面向对象编程语言SmallTalk所编写的软件。其后制作者将SUnit移植到Java语言,开发出著名的Java软件单元测试框架JUnit。随着JUnit的成功应用和推广,xUnit框架被广泛用于设计和开发各种编程语言的单元测试工具,其中包括AUnit、CUnit和CppUnit等,分别对应Ada语言、C语言和C++语言等。xUnit框架还推广到Python、JavaScript、以及PHP等脚本语言。虽然被称为单元测试框架,但是xUnit框架的功能并不局限于单元测试,可以拓展到集成测试甚至系统测试。目前xUnit框架已成为测试驱动开发理念的重要支持设施之一。
按照xUnit框架要求,测试人员或者开发人员编写可以自动运行的测试用例(TestCase)。每一个测试用例针对一个测试目标;例如JUnit中的一个TestCase类对应被测Java软件的一个对象类。测试用例中包含多个测试方法(TestMethod),针对测试目标中的组成元素;例如JUnit中TestCase类的每一个TestMethod方法对应Java类中定义的一个或多个方法。测试方法是最基本的执行单元,其中的重要成分是断言(Assertion),用于判定测试用例执行是通过还是未通过。测试断言根据测试目标的状态来设定谓词条件,测试时基于谓词条件的判定值决定测试结果。多个测试用例组合在一起构成测试用例集(TestSuite)。xUnit框架以测试用例集为单位调度和执行测试用例,其中需要编写测试代码构建测试环境(TestContexts),主要完成多个测试目标的实例化和初始化。xUnit框架为测试人员和开发人员的有效合作提供便利,能够提升软件测试自动化程度,减少软件测试的时间和成本。
目前软件自动化测试技术主要分三大类,分别是随机测试、基于搜索的测试、以及符号执行。其中随机测试技术通过随机地选择函数/过程/方法调用序列和随机确定输入参数值来生成测试用例;可以增加测试用例的多样性并保证测试结果的无偏性,但是不能保证软件测试的覆盖率,使得软件缺陷检测的几率过低。基于搜索的测试将待覆盖的测试目标转换为目标函数,例如代码距离等;采用启发式搜索方法,例如遗传算法、模拟退火等,搜索确定输入参数值,进而生成测试用例。符号执行技术将软件中的变量转换为符号变量,将待覆盖的测试目标转换为路径表达式,即路径上分支谓词的组合;通过求解路径表达式生成对应的测试用例。这些自动化测试方法都需要考虑测试目标的设定问题。对于较大规模的计算机软件,测试目标动辄上千,各个测试目标之间的依赖关系复杂;针对一个测试目标设计的测试用例,通常能够覆盖与其关联的其他测试目标。另一方面,测试时间和成本有限,测试用例生成数量受到限制,不可能对所有测试目标设计和执行测试用例。有鉴于此,需要考虑测试目标的合理选择问题:不应对所有测试目标一视同仁,而应该确定测试目标的优先级和排序,选择关键测试目标集来设计和执行测试用例。
发明内容
本发明所要解决的技术问题是提供一种xUnit框架下面向对象软件中测试目标的自动化选择方法,该方法是在xUnit框架下对面向对象软件实施自动化测试时,选择关键测试目标集,并据以设计测试用例;从而以较少的测试用例数量达到较高的软件测试覆盖率,提高软件缺陷检测的几率,使得自动化测试更具有导向性和目的性;有效提高软件测试的性能和效率。。
本发明所述的一种xUnit框架下面向对象软件中测试目标的自动化选择方法,其包含以下步骤:
1)基于xUnit框架,以被测软件中的对象类作为测试目标;通过分析对象类之间的依赖关系构建类依赖图;
2)根据类依赖图和测试需求,基于节点的两跳可达集,选择影响范围最大的关键节点集合;
3)将关键节点集合映射为关键类集合,以关键类集合中的对象类作为测试目标,再按照xUnit框架设计和执行相应的测试用例。
上述步骤1)具体过程为:首先获取被测软件的源代码,解析其中所有的类(Class);然后以每一个类为单位,根据类定义和类方法实现,分析类之间的依赖关系,确定类之间的关联;最后将解析出的类映射为节点,关联映射为有向边,构建类依赖图,该依赖图为简单的有向图。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京大学镇江高新技术研究院,未经南京大学镇江高新技术研究院许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310146574.5/2.html,转载请声明来源钻瓜专利网。