CN103309805B - xUnit框架下面向对象软件中测试目标的自动化选择方法 - Google Patents
xUnit框架下面向对象软件中测试目标的自动化选择方法 Download PDFInfo
- Publication number
- CN103309805B CN103309805B CN201310146574.5A CN201310146574A CN103309805B CN 103309805 B CN103309805 B CN 103309805B CN 201310146574 A CN201310146574 A CN 201310146574A CN 103309805 B CN103309805 B CN 103309805B
- Authority
- CN
- China
- Prior art keywords
- class
- node
- test
- xunit
- crucial
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种xUnit框架下面向对象软件中测试目标的自动化选择方法,其步骤是:1)收集软件代码,分析对象类之间的依赖关系,以类为节点、依赖关系为边构建类依赖图;2)根据测试需求和类依赖图,选择影响范围最大的关键节点集合,映射为关键类集合;3)将关键类集合中的类作为测试目标,按照xUnit框架设计和执行测试用例。本发明能够以较少的测试用例数量达到较高的软件测试覆盖率,提高软件缺陷检测的几率;适用于不同类型的面向对象编程语言以及不同规模的软件,具有扩展性和适应性;能提高软件测试的性能和效率,或者在满足测试需求的前提下,减少软件测试成本和时间。
Description
技术领域
本发明涉及面向对象软件的自动化测试中,关键测试目标的识别和选择、以及测试用例设计问题;特别针对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);然后以每一个类为单位,根据类定义和类方法实现,分析类之间的依赖关系,确定类之间的关联;最后将解析出的类映射为节点,关联映射为有向边,构建类依赖图,该依赖图为简单的有向图。
任意两个类之间的依赖关系定义分6种情况,假设给定两个不同的类c1和c2:
情况1.类c1继承(inherit)或实现(implement)了类c2;
情况2.类c1中的一个或多个域变量(field)的定义类型是类c2;
情况3.类c1中一个或多个方法(method)的返回值类型是类c2;
情况4.类c1中某一个方法的一个或多个参数(parameter)类型是类c2;
情况5.类c1中某一个方法的实现中,存在一个或多个局部变量(variable)的定义类型是类c2;
情况6.类c1中某一个方法的实现中,调用了类c2中的一个或多个方法;
如果存在这6种依赖关系之一,则定义两个类之间的关联<c1,c2>;类之间的关联是有向的,<c1,c2>和<c2,c1>是两个不同的关联。
上述步骤2)的处理流程是:首先根据测试需求设定关键节点集的规模,如可定为节点总数的10%,允许根据测试成本和时间上下浮动;然后计算每一个节点的关键度指标κ,为从该节点出发,两跳可达集内的节点数量;接下来开始迭代,每次选择一个关键节点,直到选择出足够数量的关键节点为止;最后将所选关键节点对应的类输出为关键类集合。
其中一次迭代选择一个关键节点的处理流程是:考虑已经被选中的节点,计算候选节点关键度指标的折扣值δ;给定候选节点vi,令两跳可达集内已被选中的节点数量是ti1,同vi直接相邻的父节点(定义为终止节点为vi之有向边的起始节点)中已被选中的节点数量是ti2;令p为影响概率,一般可设置为0.05;节点vi的折扣值δi计算如下:
δi=ti1+(κi-ti1)×ti2×p
候选节点的权重w定义为关键度指标和折扣值的差,即节点vi的权重wi的计算如下:
wi=κi-δi
根据节点权重,找出候选节点中权重最大的节点,作为本次迭代所选择的关键节点。
上述步骤3)过程为:对于关键类集中的每一个关键类,首先根据关键类中的每一个公共方法(public)编写对应的测试方法;然后采用随机测试或符号执行方法达到既定的测试覆盖要求
具体过程为:当给定关键类c1,要求对以c1为起始节点的所有关联覆盖至少n次,n根据测试需求和测试成本决定,一般设定为n=2;如果关联对应不止1个依赖关系,则要求对所有相应的依赖关系覆盖至少1次;达到测试覆盖要求,所有关键类处理完毕后,在xUnit框架支持下执行测试用例,完成自动化测试。
上述对类之间关联的覆盖,由类之间的依赖关系决定,对应依赖关系的6种情况;给定关联<c1,c2>,关联覆盖(依赖关系覆盖)定义如下:
情况1.对类c1进行实例化;
情况2.对类c2实例化,赋予类c1中相应的域变量(field);
情况3.执行类c1中的相应方法,返回非空(null)的类c2对象实例;
情况4.对类c2实例化,在调用类c1中相应方法时,赋予类型为c2的参数;
情况5.对类c2实例化,赋予类c1相应方法实现中类型为c2的局部变量;
情况6.调用类c1中的相应方法,执行其中的针对类c2方法的调用语句。
本发明方法针对面向对象软件,基于xUnit框架,以对象类作为测试目标,构建类依赖图;从依赖图中选择关键节点集合;将对应的对象类作为测试目标集,设计和执行相应的测试用例。理论分析和实践证明,同传统自动化测试方法相比较,采用本发明方法选择的测试目标能够关联到尽可能大的软件代码范围;能够以较少的测试用例数量达到较高的软件测试覆盖率,提高软件缺陷检测的几率。本发明方法计算简单,适用于不同类型的面向对象编程语言,以及不同规模的计算机软件,具有扩展性和适应性;能够在有限的软件测试成本和时间下,完成更充分的测试;或者在满足测试需求的前提下,减少软件测试成本和时间。
附图说明
图1是基于xUnit框架的面向对象软件测试目标自动化选择方法的总体框架;
图2是解析被测软件源代码构建类依赖图的处理流程;
图3是Java代码和对应的类依赖图的一个示例;
图4是根据类依赖图选择关键类集合的处理流程;
图5是计算类依赖图中节点关键度指标和折扣值的一个示例;
图6是按照xUnit框架基于关键类集设计测试用例的处理流程;
图7是根据图3中Java代码设计的测试用例代码的一个示例。
具体实施方式
图1所示为基于xUnit框架的面向对象软件中测试目标自动化选择方法的总体技术框架。方法的输入是待测试的计算机软件的源代码,方法的输出是按照xUnit框架,针对所选择的测试目标集合设计的测试用例。本发明方法包含三个模块:首先根据软件代码分析对象类之间的依赖关系,构建类依赖图;然后根据测试需求和类依赖图,选择影响范围最大的关键节点集合,映射为关键类集合;最后根据关键类集合,选择其中每一个对象类作为测试目标,按照xUnit框架设计和执行测试用例。
本发明方法的第一个模块是构建类依赖图,执行过程如图2所示。首先获取被测软件的源代码,解析其中所有的对象类(Class)。然后以每一个类为单位,分析类之间的依赖关系;分析依赖关系时需要分别解析类的定义、以及类中每一个方法的实现。例如对于C++语言,类定义在头文件(.h文件)中,类方法实现在代码文件(.cpp文件)中;而对于Java语言,类定义和方法实现包含于同一个代码文件(.java文件)中。
给定两个不同的类c1和c2,c1和c2之间的依赖关系定义分以下6种情况:
情况1.类c1继承(inherit)或实现(implement)了类c2;
情况2.类c1中的一个或多个域变量(field)的定义类型是类c2;
情况3.类c1中一个或多个方法(method)的返回值类型是类c2;
情况4.类c1中某一个方法的一个或多个参数(parameter)类型是类c2;
情况5.类c1中某一个方法的实现中,存在一个或多个局部变量(variable)的定义类型是类c2;
情况6.类c1中某一个方法的实现中,调用了类c2中的一个或多个方法。
如果存在这6种依赖关系之一,则定义两个类之间的关联<c1,c2>。类之间的关联是有向的,<c1,c2>和<c2,c1>是两个不同的关联。
将解析出的每一个类作为节点,将每一个关联作为边,可以构建一个类依赖图G=(V,E),其中V包含被测软件中所有类对应的节点;E包含所有类之间关联对应的有向边。图G是一个有向图,同时也是一个简单图:其一图中不存在起始节点和终止节点相同的环形边;其二对于任意两个节点v1和v2,从v1到v2最多只存在一条边。
图3以一段Java语言代码为例,给出了构建类依赖图的一个示例。图3中的Java代码一共定义了4个类Cls1~Cls4:类Cls1中定义了类型为Cls2的域变量a,由此存在关联<Cls1,Cls2>;类Cls2继承了类Cls1,由此存在关联<Cls2,Cls1>;另外类Cls2的一个方法定义中有类型为Cls4的参数b,由此存在关联<Cls2,Cls4>;类Cls3是一个接口类,其中的一个方法的返回值类型是Cls2,由此存在关联<Cls3,Cls2>;类Cls4实现了类Cls3,由此存在关联<Cls4,Cls3>;类Cls4的一个方法实现中定义了类型为Cls1的局部变量d,同时调用了类Cls2的方法,由此存在关联<Cls4,Cls1>和<Cls4,Cls2>。值得注意的是,类Cls2中存在一个方法的返回值类型是Cls2自己,但是按照类依赖图要求,<Cls2,Cls2>不是合法的关联;另外,类Cls4中一个方法的返回值类型是Cls2,但是关联<Cls4,Cls2>已经存在,不会再额外定义关联。将类Cls1~Cls4映射为节点v1~v4,将关联映射为有向边,所得到的类依赖图是一个简单的有向图,如图3的右侧所示。
本方法的第二个模块是选择关键类集合,执行过程如图4所示。关键类由类依赖图中的关键节点所对应;首先根据测试需求设定关键节点集的规模,一般可定为节点总数的10%,根据测试成本和时间上下浮动。然后选定关键节点集,是一个迭代过程,每一次迭代选择一个关键节点,直到选择出足够数量的关键节点为止。
在迭代开始之前先计算每一个候选节点的关键度指标κ。给定候选节点vi,其关键度指标κi定义为:从vi出发,两跳可达集内的节点数量。在每次迭代中,考虑已经被选中的节点,计算候选节点关键度指标的折扣值δ。给定候选节点vi,令两跳可达集内已被选中的节点数量是ti1,同vi直接相邻的父节点(定义为终止节点为vi之有向边的起始节点)中已被选中的节点数量是ti2;令p为影响概率,取值范围是0.01~0.1,一般可设置为0.05;节点vi的折扣值δi按公式(1)计算:
δi=ti1+(κi-ti1)×ti2×p (1)
候选节点的权重w定义为关键度指标和折扣值的差,即节点vi的权重wi的计算如公式(2)所示:
wi=κi-δi (2)
根据节点权重,选择候选节点中权重最大的节点,作为本次迭代选择的关键节点。关键节点集选择完毕,所对应的对象类集即为输出的关键类集合。
图5所示为计算类依赖图中候选节点v1的关键度指标κ1、折扣值δ1、以及权重w1的一个示例。按照图5,除了节点v1~v5外,所显示的其他节点都是v1两跳可达的节点,由此关键度指标κ1等于8;令图5中置灰的节点为已选中的关键节点,则节点v1有1个父节点已选中,两跳可达集中有2个节点已选中;按照公式(1),折扣值为:δ1=2+(8-2)×1×0.05=2.3;因此节点v1的权重为:w1=8-2.3=5.7。
本发明方法的第三个模块是根据关键类集设计测试用例,执行过程如图6所示。按照xUnit框架,以关键类集中的每一个关键类为测试目标,设计对应的测试用例。首先根据关键类中的每一个公共方法(public),编写对应的测试方法;然后采用随机测试、符号执行等技术达到既定的测试覆盖要求。测试覆盖要求指满足给定数量的关联覆盖,后者根据类之间的依赖关系定义;给定关联<c1,c2>,对应依赖关系的6种情况,关联覆盖定义如下:
情况1.对类c1进行实例化;
情况2.对类c2实例化,赋予类c1中相应的域变量(field);
情况3.执行类c1中的相应方法,返回非空(null)的类c2对象实例;
情况4.对类c2实例化,在调用类c1中相应方法时,赋予类型为c2的参数;
情况5.对类c2实例化,赋予类c1相应方法实现中类型为c2的局部变量;
情况6.调用类c1中的相应方法,执行其中的调用类c2方法的语句。
给定关键类c1,要求对以c1为起始节点的所有关联覆盖至少n次,n根据测试需求和测试成本决定,一般定为n=2。如果关联<c1,c2>对应不止1个依赖关系,则要求对所有相应的依赖关系覆盖至少1次。达到测试覆盖要求,所有关键类处理完毕后,在xUnit框架支持下执行测试用例,完成自动化测试。
图7所示是针对图3中的Java代码,为类Cls4设计的测试用例代码。令关联覆盖次数n=2;图7中为类Cls4的方法“func()”设计了2个测试方法。由于“setUp()”方法在每个测试方法执行前都被调用,保证了类Cls4至少实例化2次,以确保关联<Cls4,Cls3>的覆盖次数;关联<Cls4,Cls2>对应了两种情况(情况3和情况6)的依赖关系:对于情况3,每一个测试方法中都调用了方法“func()”,返回类Cls2的对象实例;对于情况6,则确保语句“Cls2.func(this)”得到执行;因此可保证关联<Cls4,Cls2>的覆盖要求;针对关联<Cls4,Cls1>的覆盖,要求方法“func()”中的局部变量d被赋予类Cls1的对象实例至少2次,需要由随机测试和符号执行等技术予以保证。
本发明方法针对面向对象软件,基于xUnit框架,以对象类作为测试目标,构建类依赖图;从依赖图中选择关键节点集合;将对应的对象类作为测试目标集,设计和执行相应的测试用例,达到既定的测试覆盖要求。理论分析和实践证明,同传统方法相比较,采用本发明方法选择的测试目标能够关联到尽可能大的软件代码范围;能够以较少的测试用例数量达到较高的软件测试覆盖率,提高软件缺陷检测的几率。本发明方法计算简单,适用于不同类型的面向对象编程语言,以及不同规模的计算机软件,具有扩展性和适应性;能够在有限的软件测试成本和时间下,完成更充分的测试;或者在满足测试需求的前提下,减少软件测试成本和时间。
本发明具体应用途径很多,以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进,这些改进也应视为本发明的保护范围。
Claims (6)
1.一种xUnit框架下面向对象软件中测试目标的自动化选择方法,其特征在于包含以下步骤:
1)基于xUnit框架,以被测软件中的对象类作为测试目标;通过分析对象类之间的依赖关系构建类依赖图;其具体过程为:首先获取被测软件的源代码,解析其中所有的类(Class);然后以每一个类为单位,根据类定义和类方法实现,分析类之间的依赖关系,确定类之间的关联;最后将解析出的类映射为节点,关联映射为有向边,构建类依赖图,该依赖图为简单的有向图;任意两个类之间的依赖关系定义分6种情况,假设给定两个不同的类c1和c2:
情况1. 类c1继承(inherit)或实现(implement)了类c2;
情况2. 类c1中的一个或多个域变量(field)的定义类型是类c2;
情况3. 类c1中一个或多个方法(method)的返回值类型是类c2;
情况4. 类c1中某一个方法的一个或多个参数(parameter)类型是类c2;
情况5. 类c1中某一个方法的实现中,存在一个或多个局部变量(variable)的定义类型是类c2;
情况6. 类c1中某一个方法的实现中,调用了类c2中的一个或多个方法;
如果存在这6种依赖关系之一,则定义两个类之间的关联<c1, c2>;类之间的关联是有向的,<c1, c2>和<c2, c1>是两个不同的关联;
2)根据类依赖图和测试需求,基于节点的两跳可达集,选择影响范围最大的关键节点集合;
3)将关键节点集合映射为关键类集合,以关键类集合中的对象类作为测试目标,再按照xUnit框架设计和执行相应的测试用例。
2.根据权利要求1所述的xUnit框架下面向对象软件中测试目标的自动化选择方法,其特征在于,步骤2)具体过程为:首先根据测试需求设定关键节点集的规模,然后计算每一个节点的关键度指标κ,关键度指标κ为从该节点出发,两跳可达集内的节点数量;接下来开始迭代,每次选择一个关键节点,直到选择出符合前述规模的足够数量的关键节点为止;最后将所选关键节点对应的类输出为关键类集合。
3.根据权利要求2所述的xUnit框架下面向对象软件中测试目标的自动化选择方法,其特征在于,一次迭代选择一个关键节点的处理流程是:考虑已经被选中的节点,计算候选节点关键度指标的折扣值δ;给定候选节点v i ,令两跳可达集内已被选中的节点数量是t i1,同v i 直接相邻的父节点中已被选中的节点数量是t i2,前述父节点定义为终止节点为v i 之有向边的起始节点;令p为影响概率;节点v i 的折扣值δ i 计算如下:
候选节点的权重w定义为关键度指标和折扣值的差,即节点v i 的权重w i 的计算如下:
根据节点权重,找出候选节点中权重最大的节点,作为本次迭代所选择的关键节点。
4.根据权利要求3所述的xUnit框架下面向对象软件中测试目标的自动化选择方法,其特征在于,步骤3)过程为:对于关键类集中的每一个关键类,首先根据关键类中的每一个公共方法(public)编写对应的测试方法;然后采用随机测试或符号执行方法达到既定的测试覆盖要求。
5.根据权利要求4所述的xUnit框架下面向对象软件中测试目标的自动化选择方法,其特征在于,达到既定的测试覆盖的具体过程为:当给定关键类c1,要求对以c1为起始节点的所有关联覆盖至少n次,n根据测试需求和测试成本决定;如果关联对应不止1个依赖关系,则要求对所有相应的依赖关系覆盖至少1次;达到测试覆盖要求,所有关键类处理完毕后,在xUnit框架支持下执行测试用例,完成自动化测试。
6.根据权利要求5所述的xUnit框架下面向对象软件中测试目标的自动化选择方法,其特征在于对类之间关联的覆盖,由类之间的依赖关系决定,对应依赖关系的6种情况;给定关联<c1, c2>,关联覆盖定义如下:
情况1. 对类c1进行实例化;
情况2. 对类c2实例化,赋予类c1中相应的域变量(field);
情况3. 执行类c1中的相应方法,返回非空(null)的类c2对象实例;
情况4. 对类c2实例化,在调用类c1中相应方法时,赋予类型为c2的参数;
情况5. 对类c2实例化,赋予类c1相应方法实现中类型为c2的局部变量;
情况6. 调用类c1中的相应方法,执行其中的针对类c2方法的调用语句。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310146574.5A CN103309805B (zh) | 2013-04-24 | 2013-04-24 | xUnit框架下面向对象软件中测试目标的自动化选择方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310146574.5A CN103309805B (zh) | 2013-04-24 | 2013-04-24 | xUnit框架下面向对象软件中测试目标的自动化选择方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103309805A CN103309805A (zh) | 2013-09-18 |
CN103309805B true CN103309805B (zh) | 2015-09-16 |
Family
ID=49135052
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310146574.5A Active CN103309805B (zh) | 2013-04-24 | 2013-04-24 | xUnit框架下面向对象软件中测试目标的自动化选择方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103309805B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105022689B (zh) * | 2015-07-02 | 2017-11-28 | 北京理工大学 | 一种发现大型面向对象软件系统关键测试函数的方法 |
DE102017200161A1 (de) * | 2017-01-09 | 2018-07-12 | Robert Bosch Gmbh | Verfahren zum Erfassen von Signalen |
CN109739526A (zh) * | 2017-10-30 | 2019-05-10 | 北京京东尚科信息技术有限公司 | 代码更新方法和装置 |
CN108255734A (zh) * | 2018-02-01 | 2018-07-06 | 中国工商银行股份有限公司 | 测试覆盖分析方法及系统 |
CN109871318B (zh) * | 2019-01-14 | 2022-05-17 | 浙江工商大学 | 一种基于软件运行网络的关键类识别方法 |
CN117076332B (zh) * | 2023-10-13 | 2024-01-23 | 博智安全科技股份有限公司 | 一种测试用例的测试方法、装置、电子设备及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101546290A (zh) * | 2009-04-30 | 2009-09-30 | 上海交通大学 | 提高面向对象型软件中类阶层质量预测准确度的方法 |
CN102736980A (zh) * | 2012-06-29 | 2012-10-17 | 南京大学 | 一种面向Java程序的随机测试用例生成方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4172807B2 (ja) * | 2006-09-08 | 2008-10-29 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 障害発生の原因箇所の発見を支援する技術 |
US9009682B2 (en) * | 2010-12-13 | 2015-04-14 | Sap Se | Enhanced unit test framework |
-
2013
- 2013-04-24 CN CN201310146574.5A patent/CN103309805B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101546290A (zh) * | 2009-04-30 | 2009-09-30 | 上海交通大学 | 提高面向对象型软件中类阶层质量预测准确度的方法 |
CN102736980A (zh) * | 2012-06-29 | 2012-10-17 | 南京大学 | 一种面向Java程序的随机测试用例生成方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103309805A (zh) | 2013-09-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103309805B (zh) | xUnit框架下面向对象软件中测试目标的自动化选择方法 | |
CN105389262B (zh) | 一种针对界面测试生成测试建议的方法和装置 | |
CN103116540A (zh) | 基于全局超级块支配图的动态符号执行方法及其装置 | |
CN107798245B (zh) | 一种基于组件依赖图的软件安全漏洞预测方法 | |
Zhonglin et al. | An improved method of acquiring basis path for software testing | |
CN105095464B (zh) | 一种检索系统的检测方法和装置 | |
CN109002712B (zh) | 一种基于值依赖图的污染数据分析方法、系统与电子设备 | |
CN102508977B (zh) | 用于模拟电路移植的电路优化方法和装置 | |
CN106021101A (zh) | 对移动终端进行测试的方法及装置 | |
CN109948338A (zh) | 基于静态分析的安卓应用敏感路径触发方法 | |
CN106021113A (zh) | 一种精准测试的实现方法 | |
CN105335379A (zh) | 突变测试中对突变、测试用例、随机种子的组合排序的方法和设备 | |
CN109408385A (zh) | 一种基于缺陷规则和分类反馈的缺陷发现方法 | |
Gezici et al. | Explainable AI for software defect prediction with gradient boosting classifier | |
CN109933515B (zh) | 一种回归测试用例集的优化方法和自动优化装置 | |
Aho et al. | Making GUI testing practical: Bridging the gaps | |
CN111898134B (zh) | 基于LSTM和BiLSTM的智能合约漏洞检测方法和装置 | |
CN113722711A (zh) | 基于大数据安全漏洞挖掘的数据添加方法及人工智能系统 | |
CN105843744A (zh) | 用于并行程序蜕变测试的蜕变关系优先级排序方法 | |
CN103914380B (zh) | 结构测试中的边界值测试方法及其系统 | |
CN106528179B (zh) | 一种Java类依赖关系的静态识别方法 | |
CN104021083A (zh) | 测试方法及装置 | |
CN102789417B (zh) | 一种移动智能终端上的定向符号执行程序检测系统及方法 | |
CN115408700A (zh) | 基于二进制程序模块化的开源组件检测方法 | |
Perez et al. | Predicate callback summaries |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |