CN108710567A - 一种似然蜕变关系构造方法 - Google Patents
一种似然蜕变关系构造方法 Download PDFInfo
- Publication number
- CN108710567A CN108710567A CN201810402135.9A CN201810402135A CN108710567A CN 108710567 A CN108710567 A CN 108710567A CN 201810402135 A CN201810402135 A CN 201810402135A CN 108710567 A CN108710567 A CN 108710567A
- Authority
- CN
- China
- Prior art keywords
- input
- relationship
- output
- subset
- target program
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种似然蜕变关系构造方法,该方法包括:将目标程序的输入数据作向量的笛卡尔乘积,获得输入集合;在预设输入关系库中查找与输入集合匹配的输入关系;在输入集合中确定出满足输入关系的输入子集,并在目标程序的输出数据中确定出输入子集对应的输出子集;在预设输出关系库中查找与输出子集匹配的输出关系;将输入关系与输出关系之间的对应关系确定为目标程序的似然蜕变关系。构造的似然蜕变关系有利于进一步发现更多的蜕变关系,而蜕变关系越多越有利于对目标程序进行蜕变测试,以便发现深层次缺陷,有助于提升目标程序质量。本发明还公开了一种似然蜕变关系构造装置、设备及可读存储介质,具有相应的技术效果。
Description
技术领域
本发明涉及软件蜕变测试技术领域,特别是涉及一种似然蜕变关系构造方法、装置、设备及可读存储介质。
背景技术
蜕变测试技术是一种缓解软件测试判定难题(test oracle problem)的技术。该技术应用于测试的关键在于找出程序的蜕变关系。蜕变测试技术中的蜕变关系可以从已经存在测试用例(original test cases)来生成衍生测试用例(follow-up test cases)。进一步通过衍生测试用例来进行测试,揭示程序中潜藏的缺陷。
对于简单函数的计算程序的蜕变关系,通过数学分析其函数的性质得到蜕变关系,比如sin函数的性质sin(x)=sin(π-x)反应了程序不同输入及其结果之间的关系,就是程序的一条蜕变关系。但是,对于复杂函数的计算程序,通过分析其函数的性质得到蜕变关系是极其困难的。
综上所述,如何有效地解决复杂程序的蜕变关系构造等问题,是目前本领域技术人员急需解决的技术问题。
发明内容
本发明的目的是提供一种似然蜕变关系构造方法、装置、设备及可读存储介质,该似然蜕变关系构造方法是由程序已有的成功测试用例数据中找出似然蜕变关系,这些似然蜕变关系可以帮助发现程序的更多的蜕变关系,从而更好地用于程序测试。
为解决上述技术问题,本发明提供如下技术方案:
一种似然蜕变关系构造方法,包括:
将目标程序的输入数据作向量的笛卡尔乘积,获得输入集合;其中,所述输入数据为所述目标程序成功测试用例中的输入数据;
在预设输入关系库中查找与所述输入集合匹配的输入关系;
在所述输入集合中确定出满足所述输入关系的输入子集,并在所述目标程序的输出数据中确定出所述输入子集对应的输出子集;其中,所述输出数据为所述目标程序成功测试用例中的输出数据;
在预设输出关系库中查找与所述输出子集匹配的输出关系;
将所述输入关系与所述输出关系之间的对应关系确定为所述目标程序的似然蜕变关系。
优选地,所述在预设输入关系库中查找与所述输入集合匹配的输入关系,包括:
对所述预设输入关系库进行查找,直到找到符合所述输入集合中的预设数目的元素均对应的输入关系,并将所述输入关系确定为所述输入集合匹配的输入关系。
优选地,所述在预设输入关系库中查找与所述输入集合匹配的输入关系,包括:
遍历所述预设输入关系库,对每一个预设输入关系符合的所述输入集合中的元素数目进行标注;
将标注的元素数目最大的输入关系确定为所述输入集合匹配的输入关系。
优选地,所述在预设输出关系库中查找与所述输出子集匹配的输出关系,包括:
在预设输出关系库中查找,并将满足所述输出子集中的所有元素的输出关系确定为所述输出子集匹配的输出关系。
优选地,所述在预设输出关系库中查找与所述输出子集匹配的输出关系,包括:
当遍历所述预设输出关系库之后,未找到与所述输出子集匹配的输出关系时,重复执行所述在预设输入关系库查找与所述输入集合匹配的输入关系的步骤。
优选地,在将所述输入关系与所述输出关系之间的对应关系确定为所述目标程序的似然蜕变关系之后,还包括:
对所述似然蜕变关系进行修正。
优选地,在所述将目标程序的测试数据中的输入数据作向量的笛卡尔乘积,获得输入集合之前,还包括:
创建基本形式库和测试数据库;其中,所述测试数据库中存储了目标程序成功测试获得的测试用例数据,所述基本形式库包括输入关系库和输出关系库。
一种似然蜕变关系构造装置,包括:
输入集合确定模块,用于将目标程序的输入数据作向量的笛卡尔乘积,获得输入集合;其中,所述输入数据为所述目标程序成功测试用例中的输入数据;
输入关系确定模块,用于在预设输入关系库中查找与所述输入集合匹配的输入关系;
输出子集确定模块,用于在所述输入集合中确定出满足所述输入关系的输入子集,并在所述目标程序的输出数据中确定出所述输入子集对应的输出子集;
输出关系确定模块,用于在所述输入集合中确定出满足所述输入关系的输入子集,并在所述目标程序的输出数据中确定出所述输入子集对应的输出子集;其中,所述输出数据为所述目标程序成功测试用例中的输出数据;
似然蜕变关系确定模块,用于将所述输入关系与所述输出关系之间的对应关系确定为所述目标程序的似然蜕变关系。
一种似然蜕变关系构造设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现上述似然蜕变关系构造方法的步骤。
一种可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述似然蜕变关系构造方法的步骤。
应用本发明实施例所提供的方法,将目标程序的输入数据作向量的笛卡尔乘积,获得输入集合;其中,输入数据为目标程序成功测试用例中的输入数据;在预设输入关系库中查找与输入集合匹配的输入关系;在输入集合中确定出满足输入关系的输入子集,并在目标程序的输出数据中确定出输入子集对应的输出子集;其中,输出数据为目标程序成功测试用例中的输出数据;在预设输出关系库中查找与输出子集匹配的输出关系;将输入关系与输出关系之间的对应关系确定为目标程序的似然蜕变关系。
构造(发现)程序的蜕变关系是一项具有挑战性的工作。然而,在软件测试工作中值得注意的一个实际情况是,通常在构造蜕变关系之前,程序已经成功地通过了一系列测试,积累了大量成功的测试用例数据,由此可以为发现潜在的蜕变关系提供许多有价值的信息。本发明实施例提供的一种似然蜕变关系构造方法,该方法可从目标程序已经成功测试用例中挖掘出蜕变关系的启发信息,即似然蜕变关系。因为似然蜕变关系是基于成功测试用例构造的,而测试用例中的数据隐含了目标程序的蜕变关系。或者说,蜕变关系是似然蜕变关系集合中的子集,即目标程序的蜕变关系一定是似然蜕变关系。基于此,获得似然蜕变关系之后,可有助于发现目标程序的蜕变关系。也就是说,利用本发明实施例所提供的技术方案所确定的似然蜕变关系,可以为进一步发现目标程序的更多的蜕变关系提供启示或前提。需要说明的是,目标程序的蜕变关系越多,越有利于对目标程序进行更加充分的蜕变测试,从而发现深层次缺陷或错误,有助于提升目标程序的质量。
相应地,本发明实施例还提供了与上述似然蜕变关系构造方法相对应的似然蜕变关系构造装置、设备和可读存储介质,具有上述技术效果,在此不再赘述。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例一的一种似然蜕变关系构造方法的实施流程图;
图2为本发明实施例二的一种似然蜕变关系构造方法的实施流程图;
图3为本发明实施例四的一种似然蜕变关系构造方法的实施流程图;
图4为本发明实施例中一种似然蜕变关系构造装置的结构示意图;
图5为本发明实施例中一种似然蜕变关系构造设备的结构示意图。
具体实施方式
需要说明的是,确定、发现、构造程序的蜕变关系是一项具有挑战性的工作。一些简单函数的计算程序的蜕变关系通过数学分析其函数的性质得到蜕变关系。但是,对于复杂函数的计算程序,通过分析其函数的性质得到蜕变关系是及其困难的。需要注意的是,在软件测试工作中值得注意的一个实际情况是,通常在构造蜕变关系之前,程序已经成功地通过了一系列测试,积累了大量成功的测试用例数据。这些成功的测试用例数据的输入数据与输出数据之间蕴含该程序的蜕变关系。
本发明核心为提供一种似然蜕变关系构造方法,该方法基于成功的测试用例数据的数据挖掘出蕴含蜕变关系的启发信息,并将其作为该目标程序的似然蜕变关系。蜕变关系是似然蜕变关系集合的子集,蜕变关系一定是似然蜕变关系。所以,输入数据与输出数据之间的似然蜕变关系可以为进一步发现目标程序的蜕变关系给予启示。另外,因似然蜕变关系是基于成功的测试用例而产生的,从似然蜕变关系中进一步确定蜕变关系相较于基于程序的函数关系推导的蜕变关系更为全面。
本发明实施例还提供了一种似然蜕变关系构造装置、设备及可读存储介质,具有上述技术效果,在此不再赘述。
为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一:
请参考图1,图1为本发明实施例一的一种似然蜕变关系构造方法的流程图,该似然蜕变关系构造方法包括以下步骤:
S101、将目标程序的输入数据作向量的笛卡尔乘积,获得输入集合。
输入数据为目标程序成功测试用例中的输入数据。
在本实施例中,可以预先对目标程序进行测试,然后将成功的测试用例中的输入数据与输出数据进行存储。这里的输入数据即为对目标程序进行成功测试后得到的输入数据。其中,笛卡尔乘积是指在数学中,两个集合X和Y的笛卡尔乘积(Cartesian product),表示为X*Y。具体的,第一个对象是X的成员而第二个对象是Y的所有可能有序对的其中一个成员。例如:假设集合A={a,b},集合B={0,1,2},则两个集合的笛卡尔积为 {(a,0),(a,1),(a,2),(b,0),(b,1),(b,2)}。也就是说,将目标程序的输入数据作向量的笛卡尔乘积,最终获得的输入集合中的元素即为输入数据两两之间的有序数据对。例如,当输入数据为x1,x2,x3时,做向量的笛卡尔乘积之后,获得的输入集合为{(x1,x2),(x1,x3),(x2,x1),(x2,x3),(x3,x1),(x3,x2)},其中的(x1,x2),(x1,x3), (x2,x1),(x2,x3),(x3,x1),(x3,x2)分别为输入集合中的元素。
S102、在预设输入关系库中查找与输入集合匹配的输入关系。
其中,预设输入关系库为存储了包括线性关系、比较关系、函数关系等关系的关系库。其中,函数关系如绝对值、取负、求补、三角函数、指数函数、对等函数等一元函数。在预设输入关系库中查找出于输入集合匹配的输入关系。需要说明是,在查找输入集合的输入关系时,可以找出符合输入集合中的所有元素都满足的一个输入关系,也可以找出符合输入集合中的部分元素满足的一个输入关系作为输入集合匹配的输入关系。
具体的,查找确定与输入集合匹配的输入关系的界定条件可以预先设定,也可根据实际情况进行确定和调整。例如,当待确定似然蜕变关系的目标程序本身较为复杂或所需要的似然蜕变关系的准确率要求不高时,可将部分元素满足的一个输入关系作为输入集合匹配的输入关系。当待确定似然蜕变关系的目标程序本身较为简单或所需要的似然蜕变关系的准确率要求较高时,可将满足输入集合中所以元素均符合的输入关系作为输入集合匹配的输入关系。
其中,元素满足的输入关系,具体的,因本发明实施例中的输入关系中的元素是有序数据对,即一个元素为(xi、xj)其中的xi和xj均为输入数据,xi和xj之间满足输入关系,即表示xi与xj之间具有一种关系。例如,当xi>xj,则认为xi和xj之间满足的关系为“xi>xj”,即表明该元素(xi、xj)满足输入关系“xi>xj”。
S103、在输入集合中确定出满足输入关系的输入子集,并在目标程序的输出数据中确定出输入子集对应的输出子集。
其中,输出数据为目标程序成功测试用例中的输出数据。
确定出输入关系之后,确定出输入集合中符合该输入关系的元素的输入子集。即,该输入子集中的元素均满足该输入关系。因每一个输入数据均有与之对应的输出数据,所以可以在目标程序输出数据中确定出该输入子集对应的输出子集。
S104、在预设输出关系库中查找与输出子集匹配的输出关系。
同预设输入关系形式库一样,可预先将一些可能的输出关系存入预设输出关系库。在预设输出关系库中查找出该输出子集匹配的输出关系。需要说明是,该输出关系可以满足该输出子集中的所有元素或预设数目的元素的一种输出关系。
S105、将输入关系与输出关系之间的对应关系确定为目标程序的似然蜕变关系。
因该输入关系与输出关系分别对应输入数据和输出数据。而输出数据又是将输入数据输入目标程序蜕变后获得的。所以可以将输入关系与输出关系之间的对应关系直接确定为该目标程序的一种似然蜕变关系。得到似然蜕变关系之后,可基于蜕变关系为似然蜕变关系集合中的子集,进一步发现蜕变关系。具体的,可利用数学推导的方式对构造的多个似然蜕变关系进行验证,最终获得目标程序的蜕变关系。
应用本发明实施例所提供的方法,将目标程序的输入数据作向量的笛卡尔乘积,获得输入集合;其中,输入数据为目标程序成功测试用例中的输入数据;在预设输入关系库中查找与输入集合匹配的输入关系;在输入集合中确定出满足输入关系的输入子集,并在目标程序的输出数据中确定出输入子集对应的输出子集;其中,输出数据为目标程序成功测试用例中的输出数据;在预设输出关系库中查找与输出子集匹配的输出关系;将输入关系与输出关系之间的对应关系确定为目标程序的似然蜕变关系。
构造(发现)程序的蜕变关系是一项具有挑战性的工作。然而,在软件测试工作中值得注意的一个实际情况是,通常在构造蜕变关系之前,程序已经成功地通过了一系列测试,积累了大量成功的测试用例数据,由此可以为发现潜在的蜕变关系提供许多有价值的信息。本发明实施例提供的一种似然蜕变关系构造方法,该方法可从目标程序已经成功测试用例中挖掘出蜕变关系的启发信息,即似然蜕变关系。因为似然蜕变关系是基于成功测试用例构造的,而测试用例中的数据隐含了目标程序的蜕变关系。或者说,蜕变关系是似然蜕变关系集合中的子集,即目标程序的蜕变关系一定是似然蜕变关系。基于此,获得似然蜕变关系之后,可有助于发现目标程序的蜕变关系。也就是说,利用本发明实施例所提供的技术方案所确定的似然蜕变关系,可以为进一步发现目标程序的更多的蜕变关系提供启示或前提。需要说明的是,目标程序的蜕变关系越多,越有利于对目标程序进行更加充分的蜕变测试,从而发现深层次缺陷或错误,有助于提升目标程序的质量。
需要说明的是,基于上述实施例一,本发明实施例还提供了相应的改进方案。在后续实施例中涉及与上述实施例一中相同步骤或相应步骤之间可相互参考,相应的有益效果也可相互参照,在下文的改进实施例中不再一一赘述。各个实施例之间同样可相互参照。
实施例二:
请参考图2,该似然蜕变关系构造方法包括:
S201、创建基本形式库和测试数据库。
其中,测试数据库中存储了目标程序成功测试获得的测试用例数据,基本形式库包括输入关系库和输出关系库。
S202、将目标程序的输入数据作向量的笛卡尔乘积,获得输入集合。
其中,输入数据为目标程序成功测试用例中的输入数据。
S203、对预设输入关系库进行查找,直到找到符合输入集合中的预设数目的元素均对应的输入关系,并将输入关系确定为输入集合匹配的输入关系。
将输入集合中的每一个元素依次与输入关系库中的每一个输入关系进行匹配验证。当找到一种输入关系,输入集合中的每一个元素都满足该输入关系时,停止对预设输入关系库所进行的查找。然后将该输入关系确定为输入集合匹配的输入关系。
S204、在输入集合中确定出满足输入关系的输入子集,并在目标程序的输出数据中确定出输入子集对应的输出子集。
其中,输出数据为目标程序成功测试用例中的输出数据。
S205、在预设输出关系库中查找,并将满足输出子集中的所有元素的输出关系确定为输出子集匹配的输出关系。
优选地,当遍历预设输出关系库之后,未找到与输出子集匹配的输出关系时,重复执行S203的步骤。即,当遍历预设关系库之后,未能找到与输出子集对应的输出关系时,则重复执行对预设输入关系库进行查找,直到找到符合输入集合中的预设数目的元素均对应的输入关系,并将输入关系确定为输入集合匹配的输入关系的步骤。也就是说,重新确定输入关系,并基于该输入关系重新获得输出子集。让基于新的输出子集再次在输出关系库中查找并确定与新的输出子集匹配的输出关系。
S206将输入关系与输出关系之间的对应关系确定为目标程序的似然蜕变关系。
S207、对似然蜕变关系进行修正。
需要说明是,对于步骤S207所获得的似然蜕变关系还可以进行修正。例如,可以再次执行步骤S202至步骤S207,重新获得似然蜕变关系。然后将先后获得的似然蜕变关系进行比对,当先后获得的似然蜕变关系完全对应时,则将其作为目标程序的似然蜕变关系。
实施例三:
为了使得最终获得的似然蜕变关系更加符合目标程序本身的蜕变关系,在确定输入关系时,可执行以下步骤:
步骤一、遍历预设输入关系库,对每一个预设输入关系符合的输入集合中的元素数目进行标注;
步骤二、将标注的元素数目最大的输入关系确定为输入集合匹配的输入关系。
为便于描述,下面将上述两个步骤结合起来进行说明。基于输入数据仅是针对目标程序所进行的部分成功的测试用例,而不是全部的测试用例。所以,该输入数据可能存在一些偶然性因素导致输入集合可能在一定匹配程度范围内与多种输入关系均匹配的情况。例如,当确定输入关系的界定条件为输入集合中存在预设数目的元素满足该输入关系即将该输入关系作为输入集合匹配的输入关系时,此时可能查找到的输入关系并不是预设输入关系库中与输入集合最为匹配的输入关系。因此,可以遍历预设输入关系库,然后对每一个预设输入关系符合的输入集合中的元素数目进行标注。最终选择标注的元数数目最大的输入关系作为输入集合匹配的输入关系。如此,便可确定出与目标程序的似然蜕变关系最接近的输入关系。
实施例四:
下面以具体的构造似然蜕变关系为例,对本发明提供的技术方案进行详细描述。为了详细、清晰说明似然蜕变关系的构造过程,以简单的计算三角函数 f=sin(x)的程序p,以及程序p已成功测试用例数据为例进行相关说明。测试数据如表1所示(其中x表示输入数据,f表示输出数据):
表1
请参考图3,具体的构造过程包括如下步骤:
S301、设置关系形式库和测试数据库。
其中,该关系形式库包括输入关系形式库和输出关系形式库。测试数据库中存储程序已成功测试的测试用例数据。
具体的,即预先将似然蜕变关系的表现形式进行规定,然后将关系存入到关系形式库中。
似然蜕变关系的表示形式具体包括输入关系形式库(记为Dr),输出关系形式库(记为DR)。
为了便于例子展示清楚,关系形式设置为简单的线性关系,即 Dr={rp:xi+xj=C},DR={Rq:fi+fj=C}(其中C为常数)。
基本形式库如表2所示,需要说明是,在表2中仅列举部分关系形式,在实际应用中,关系形式还可参照常见的一些关系形式。即,本发明实施例中的关系形式并不仅限于表2所示的关系形式。
表2
S302、数据预处理。
其中,数据预处理为将程序已成功测试数据,以及关系形式库存入数据库。
具体过程如下;
步骤2-1、将程序已成功的测试数据(记为Tx)存储到MYSQL数据库表中的字段包含ID字段(测试用例编号)、X字段(输入参数x字段)、Y字段(输出参数f字段)。
步骤2-2、将基本形式库存储到数据库表中,字段包含D字段(输入关系形式Dr),Z字段(输出关系形式DR)。
S303、利用预设数据分析算法,从测试数据库和基本形式库中找出似然蜕变关系。具体过程如下:
步骤3-1、以测试数据Tx的输入数据x作向量的笛卡尔乘积,得到有序对 <xi,xj>的集合空间(记为T2x);
步骤3-2、根据预设形式库Dr,在T2x中搜索满足Dr中关系r′p:xi+xj=C的子集,若子集r′P的有序对数目不小于阈值K(为了方便例子的描述,取K=5),则标记r′P和满足r′P的子集(记为T2xKr′);其中,T2xKr′={<x′i,x′j>|<x′i,x′j>∈T2x},且元素个数为Q(为了便于描述,取Q=K=5);
假设根据预设的关系为r′p,对(xi,xj)(i,j=1,2,…,N)进行循环依次检查:
(x1,x1)确定r′p:xi+xj=3.735,但满足r′p的有序对个数为1,小于K;
(x1,x2)确定r′p:xi+xj=7.87143,但满足r′p的元组个数为1,也小于K;
……;
直至(x1,x56)确定出r′p:xi+xj=3.14159,进一步发现满足r′p的有序对个数Q>5,则标记r′P,T2xKr′。如下表3所示:
表3
步骤3-3、由集合T2xKr′映射得到输出的有序对集合(记为T2fKr′,其中 T2fKr′={<f′i,f′j>})。历遍输出基本形式库DR,验证这Q个有序对<f′i,f′j>是否满足某个输出关系形式R′q,标记R′q。
依据(f1,f56)确定出R′q:fi-fj=0,进一步检验这Q个有序对是否都满足R′q,如下表4所示:
表4
从表4可以看出,Q个有序对完全满足关系R′q:fi-fj=0,没有任何违例。标记R′q。如果不满足,则返回3-2)
步骤3-4、输出r′P,R′q,则(r′P,R′q)即为所构造的似然蜕变关系。
该似然蜕变关系即为(r′P,R′q),即对于三角函数f=sin(x)的程序p,其中x 为弧度制,输入关系:r′p:xi+xj=3.14159,输出关系:R′q:fi-fj=0。即r′p:xi+xj=3.14159 与R′q:fi-fj=0之间的对应关系即三角函数f=sin(x)的程序p的一种似然蜕变关系。对于同一个程序而言,可以有多种似然蜕变关系。得到似然蜕变关系之后,可以在这多种似然蜕变关系中可以确定出该程序的蜕变关系。
实施例五:
为便于本领域技术人员应用本发明实施例所构造的似然蜕变关系,该似然蜕变关系可以进一步获得程序的蜕变关系。下面将从构造似然蜕变关系至对程序进行蜕变测试的过程进行说明。
一般而言,蜕变测试过程可划分为以下几个阶段:
(1)、使用其他测试用例生产方式为待测程序生产原始测试用例;
(2)、若这些原始用例均通过测试,则利用本发明实施例所提供的似然蜕变关系构造方法,进一步确定蜕变关系;其中,通过似然蜕变关系进一步确定蜕变关系。具体的,测试人员可利用数学推导的方式对构造的多个似然蜕变关系进行验证和筛选,最终获得目标程序的蜕变关系。
(3)、基于该蜕变关系与原始用例衍生测试用例;
(4)、检测原始和衍生用例的输出是否满足该蜕变关系,得出测试结果。
以y=sin(x)函数的程序p为例,对上述蜕变测试过程进行说明。其中,对于具体如何获得原始测试用例,以及判定该原始测试用例是否通过测试的方式可参照现有技术,对此本实施例不作限定。
在测试计算y=sin(x)函数的程序p时,其中x为角度制,根据诸如分支覆盖之类的测试准则生成原始用例,且x=57.3°对应的输出结果为p(57.3°)=0.8415。由于sin(57.3°)的值难以确定,所以程序p的正确性不易判定。利用本发明实施例所提供的似然蜕变关系构造方法,可进一步确定程序p的蜕变关系为:sin(x)=sin(180°-x)。根据该蜕变关系可以获得衍生用例 x=180°-57.3°=122.7°,以x=122.7°为输入执行程序p,得到输出为 P(122.7°)=0.8402,通过比较p(57.3°)与P(122.7°),可以发现p(57.3°)与P(122.7°)不满足蜕变关系sin(x)=sin(180°-x),可见程序p中存在错误。
相应于上面的方法实施例,本发明实施例还提供了一种似然蜕变关系构造装置,下文描述的似然蜕变关系构造装置与上文描述的似然蜕变关系构造方法可相互对应参照。
参见图4所示,该装置包括以下模块:
输入集合确定模块101,用于将目标程序的输入数据作向量的笛卡尔乘积,获得输入集合;其中,输入数据为目标程序成功测试用例中的输入数据;
输入关系确定模块102,用于在预设输入关系库中查找与输入集合匹配的输入关系;
输出子集确定模块103,用于在输入集合中确定出满足输入关系的输入子集,并在目标程序的输出数据中确定出输入子集对应的输出子集;
输出关系确定模块104,用于在输入集合中确定出满足输入关系的输入子集,并在目标程序的输出数据中确定出输入子集对应的输出子集;其中,输出数据为目标程序成功测试用例中的输出数据;
似然蜕变关系确定模块105,用于将输入关系与输出关系之间的对应关系确定为目标程序的似然蜕变关系。
应用本发明实施例所提供的装置,将目标程序的输入数据作向量的笛卡尔乘积,获得输入集合;其中,输入数据为目标程序成功测试用例中的输入数据;在预设输入关系库中查找与输入集合匹配的输入关系;在输入集合中确定出满足输入关系的输入子集,并在目标程序的输出数据中确定出输入子集对应的输出子集;其中,输出数据为目标程序成功测试用例中的输出数据;在预设输出关系库中查找与输出子集匹配的输出关系;将输入关系与输出关系之间的对应关系确定为目标程序的似然蜕变关系。
构造(发现)程序的蜕变关系是一项具有挑战性的工作。然而,在软件测试工作中值得注意的一个实际情况是,通常在构造蜕变关系之前,程序已经成功地通过了一系列测试,积累了大量成功的测试用例数据,由此可以为发现潜在的蜕变关系提供许多有价值的信息。本发明实施例提供的一种似然蜕变关系构造方法,该方法可从目标程序已经成功测试用例中挖掘出蜕变关系的启发信息,即似然蜕变关系。因为似然蜕变关系是基于成功测试用例构造的,而测试用例中的数据隐含了目标程序的蜕变关系。或者说,蜕变关系是似然蜕变关系集合中的子集,即目标程序的蜕变关系一定是似然蜕变关系。基于此,获得似然蜕变关系之后,可有助于发现目标程序的蜕变关系。也就是说,利用本发明实施例所提供的技术方案所确定的似然蜕变关系,可以为进一步发现目标程序的更多的蜕变关系提供启示或前提。需要说明的是,目标程序的蜕变关系越多,越有利于对目标程序进行更加充分的蜕变测试,从而发现深层次缺陷或错误,有助于提升目标程序的质量。
在本发明的一种具体实施方式中,输入关系确定模块102,具体用于对预设输入关系库进行查找,直到找到符合输入集合中的预设数目的元素均对应的输入关系,并将输入关系确定为输入集合匹配的输入关系。
在本发明的一种具体实施方式中,输入关系确定模块102,包括:
标注单元,用于遍历预设输入关系库,对每一个预设输入关系符合的输入集合中的元素数目进行标注;
输入关系确定单元,用于将标注的元素数目最大的输入关系确定为输入集合匹配的输入关系。
在本发明的一种具体实施方式中,输出关系确定模块104,具体用于在预设输出关系库中查找,并将满足输出子集中的所有元素的输出关系确定为输出子集匹配的输出关系。
在本发明的一种具体实施方式中,输出关系确定模块104,具体用于当遍历预设输出关系库之后,未找到与输出子集匹配的输出关系时,重复执行在预设输入关系库查找与输入集合匹配的输入关系的步骤。
在本发明的一种具体实施方式中,还包括:
修正模块,用于在将输入关系与输出关系之间的对应关系确定为目标程序的似然蜕变关系之后,对似然蜕变关系进行修正。
在本发明的一种具体实施方式中,还包括:
基本形式库和测试数据库创建模块,用于创建基本形式库和测试数据库;其中,测试数据库中存储了目标程序成功测试获得的测试用例数据,基本形式库包括输入关系库和输出关系库。
相应于上面的方法实施例,本发明实施例还提供了一种似然蜕变关系构造设备,下文描述的一种似然蜕变关系构造设备与上文描述的一种似然蜕变关系构造方法可相互对应参照。
参见图5所示,该似然蜕变关系构造设备包括:
存储器D1,用于存储计算机程序;
处理器D2,用于执行计算机程序时实现上述方法实施例的似然蜕变关系构造方法的步骤。
相应于上面的方法实施例,本发明实施例还提供了一种可读存储介质,下文描述的一种可读存储介质与上文描述的一种似然蜕变关系构造方法可相互对应参照。
一种可读存储介质,可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述方法实施例的似然蜕变关系构造方法的步骤。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器 (RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的技术方案及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。
Claims (10)
1.一种似然蜕变关系构造方法,其特征在于,包括:
将目标程序的输入数据作向量的笛卡尔乘积,获得输入集合;其中,所述输入数据为所述目标程序成功测试用例中的输入数据;
在预设输入关系库中查找与所述输入集合匹配的输入关系;
在所述输入集合中确定出满足所述输入关系的输入子集,并在所述目标程序的输出数据中确定出所述输入子集对应的输出子集;其中,所述输出数据为所述目标程序成功测试用例中的输出数据;
在预设输出关系库中查找与所述输出子集匹配的输出关系;
将所述输入关系与所述输出关系之间的对应关系确定为所述目标程序的似然蜕变关系。
2.根据权利要求1所述的似然蜕变关系构造方法,其特征在于,所述在预设输入关系库中查找与所述输入集合匹配的输入关系,包括:
对所述预设输入关系库进行查找,直到找到符合所述输入集合中的预设数目的元素均对应的输入关系,并将所述输入关系确定为所述输入集合匹配的输入关系。
3.根据权利要求1所述的似然蜕变关系构造方法,其特征在于,所述在预设输入关系库中查找与所述输入集合匹配的输入关系,包括:
遍历所述预设输入关系库,对每一个预设输入关系符合的所述输入集合中的元素数目进行标注;
将标注的元素数目最大的输入关系确定为所述输入集合匹配的输入关系。
4.根据权利要求1所述的似然蜕变关系构造方法,其特征在于,所述在预设输出关系库中查找与所述输出子集匹配的输出关系,包括:
在预设输出关系库中查找,并将满足所述输出子集中的所有元素的输出关系确定为所述输出子集匹配的输出关系。
5.根据权利要求1至4任一项所述的似然蜕变关系构造方法,其特征在于,所述在预设输出关系库中查找与所述输出子集匹配的输出关系,包括:
当遍历所述预设输出关系库之后,未找到与所述输出子集匹配的输出关系时,重复执行所述在预设输入关系库查找与所述输入集合匹配的输入关系的步骤。
6.根据权利要求5所述的似然蜕变关系构造方法,其特征在于,在将所述输入关系与所述输出关系之间的对应关系确定为所述目标程序的似然蜕变关系之后,还包括:
对所述似然蜕变关系进行修正。
7.根据权利要求5所述的似然蜕变关系构造方法,其特征在于,在所述将目标程序的测试数据中的输入数据作向量的笛卡尔乘积,获得输入集合之前,还包括:
创建基本形式库和测试数据库;其中,所述测试数据库中存储了目标程序成功测试获得的测试用例数据,所述基本形式库包括输入关系库和输出关系库。
8.一种似然蜕变关系构造装置,其特征在于,包括:
输入集合确定模块,用于将目标程序的输入数据作向量的笛卡尔乘积,获得输入集合;其中,所述输入数据为所述目标程序成功测试用例中的输入数据;
输入关系确定模块,用于在预设输入关系库中查找与所述输入集合匹配的输入关系;
输出子集确定模块,用于在所述输入集合中确定出满足所述输入关系的输入子集,并在所述目标程序的输出数据中确定出所述输入子集对应的输出子集;
输出关系确定模块,用于在所述输入集合中确定出满足所述输入关系的输入子集,并在所述目标程序的输出数据中确定出所述输入子集对应的输出子集;其中,所述输出数据为所述目标程序成功测试用例中的输出数据;
似然蜕变关系确定模块,用于将所述输入关系与所述输出关系之间的对应关系确定为所述目标程序的似然蜕变关系。
9.一种似然蜕变关系构造设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至7任一项所述似然蜕变关系构造方法的步骤。
10.一种可读存储介质,其特征在于,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述似然蜕变关系构造方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810402135.9A CN108710567B (zh) | 2018-04-28 | 2018-04-28 | 一种似然蜕变关系构造方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810402135.9A CN108710567B (zh) | 2018-04-28 | 2018-04-28 | 一种似然蜕变关系构造方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108710567A true CN108710567A (zh) | 2018-10-26 |
CN108710567B CN108710567B (zh) | 2021-07-23 |
Family
ID=63867487
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810402135.9A Active CN108710567B (zh) | 2018-04-28 | 2018-04-28 | 一种似然蜕变关系构造方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108710567B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005003270A (ja) * | 2003-06-12 | 2005-01-06 | Babcock Hitachi Kk | ボイラ構造物の振れ止め装置の余寿命診断方法および装置と交換支援方法および装置 |
CN104572462A (zh) * | 2014-12-31 | 2015-04-29 | 中国人民解放军理工大学 | 一种基于自适应随机策略的蜕变测试用例生成方法 |
CN104598381A (zh) * | 2015-01-26 | 2015-05-06 | 中国人民解放军理工大学 | 一种蜕变测试中失效测试用例的定位方法 |
US20160180041A1 (en) * | 2013-08-01 | 2016-06-23 | Children's Hospital Medical Center | Identification of Surgery Candidates Using Natural Language Processing |
-
2018
- 2018-04-28 CN CN201810402135.9A patent/CN108710567B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005003270A (ja) * | 2003-06-12 | 2005-01-06 | Babcock Hitachi Kk | ボイラ構造物の振れ止め装置の余寿命診断方法および装置と交換支援方法および装置 |
US20160180041A1 (en) * | 2013-08-01 | 2016-06-23 | Children's Hospital Medical Center | Identification of Surgery Candidates Using Natural Language Processing |
CN104572462A (zh) * | 2014-12-31 | 2015-04-29 | 中国人民解放军理工大学 | 一种基于自适应随机策略的蜕变测试用例生成方法 |
CN104598381A (zh) * | 2015-01-26 | 2015-05-06 | 中国人民解放军理工大学 | 一种蜕变测试中失效测试用例的定位方法 |
Non-Patent Citations (1)
Title |
---|
张晶等: "基于蜕变关系的聚类程序测试方法", 《电子测量与仪器学报》 * |
Also Published As
Publication number | Publication date |
---|---|
CN108710567B (zh) | 2021-07-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Marques-Silva | Minimal unsatisfiability: Models, algorithms and applications | |
Gavai et al. | On the critical end point of QCD | |
Qian et al. | Hybrid approaches to attribute reduction based on indiscernibility and discernibility relation | |
Kang et al. | An approach for effective design space exploration | |
CN105824748B (zh) | 用于确定测试用例效率的方法和系统 | |
EP2960799A1 (en) | Defect localization in software integration tests | |
Abad et al. | Improving test generation under rich contracts by tight bounds and incremental SAT solving | |
CN103116540A (zh) | 基于全局超级块支配图的动态符号执行方法及其装置 | |
US10990510B2 (en) | Associating attribute seeds of regression test cases with breakpoint value-based fingerprints | |
CN108595336A (zh) | 一种基于以太网的计算机软件测试系统 | |
Coppa et al. | Rethinking pointer reasoning in symbolic execution | |
Marques-Silva | Computing Minimally Unsatisfiable Subformulas: State of the Art and Future Directions. | |
Ashraf et al. | WeFreS: weighted frequent subgraph mining in a single large graph | |
Lochmann | A benchmarking-inspired approach to determine threshold values for metrics | |
Pan et al. | Refactoring packages of object–oriented software using genetic algorithm based community detection technique | |
CN110502443A (zh) | 冗余代码检测方法、检测模块、电子设备及计算机存储介质 | |
CN104484554B (zh) | 一种获取课程关联度的方法及系统 | |
CN108710567A (zh) | 一种似然蜕变关系构造方法 | |
Cai et al. | Automatic software vulnerability detection based on guided deep fuzzing | |
Pan et al. | Recode: software package refactoring via community detection in bipartite software networks | |
CN105956275A (zh) | 一种基于逻辑Petri网计算最优校准的方法 | |
Pett | Stability of Product Sampling under Product-Line Evolution | |
Ghosh et al. | An empirical study of a hybrid code clone detection approach on java byte code | |
Barua et al. | A Systematic Derivation of Loop Specifications Using Patterns | |
Sinkala et al. | An Integrated Approach to Package and Class Code-to-Architecture Mapping Using InMap |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |