CN103885876B - 测试方法及设备 - Google Patents
测试方法及设备 Download PDFInfo
- Publication number
- CN103885876B CN103885876B CN201210564597.3A CN201210564597A CN103885876B CN 103885876 B CN103885876 B CN 103885876B CN 201210564597 A CN201210564597 A CN 201210564597A CN 103885876 B CN103885876 B CN 103885876B
- Authority
- CN
- China
- Prior art keywords
- test
- test case
- program
- available
- measured
- 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)
- Tests Of Electronic Circuits (AREA)
Abstract
本发明实施例提供一种测试方法及设备。本发明实施例通过根据预先设置的蜕变关系,生成与可用的测试用例对应的蜕变的测试用例,进而利用所述可用的测试用例运行所述待测程序,以生成第一测试结果,以及利用所述蜕变的测试用例运行所述待测程序,以生成第二测试结果,使得能够根据所述第一测试结果、所述第二测试结果和所述蜕变关系,对所述待测程序进行验证,以确定所述待测程序是否正确,无需操作人员参与测试过程,操作简单,且正确率高,从而提高了测试操作的效率和可靠性。
Description
【技术领域】
本发明涉及测试技术,尤其涉及一种测试方法及设备。
【背景技术】
在软件测试过程中,诸多中间环节都需要操作人员进行手动控制。例如,在测试用例的设计阶段,操作人员可以根据具体的测试需求,设计测试用例;或者再例如,在测试结果的预期阶段,操作人员可以利用设计的测试用例,运行待测程序,计算出预期的测试结果。
然而,现有的测试操作的操作复杂,且容易出错,从而导致了测试操作的效率和可靠性的降低。
【发明内容】
本发明的多个方面提供一种测试方法及设备,用以提高测试操作的效率和可靠性。
本发明的一方面,提供一种测试方法,包括:
利用自适应随机测试算法,生成至少两个测试用例;
利用贪婪算法,对所述至少两个测试用例进行搜索,以选择所述至少两个测试用例中可用的测试用例;
根据预先设置的蜕变关系,生成与所述可用的测试用例对应的蜕变的测试用例,所述蜕变关系用于指示测试用例的变化与利用所述变化之前和所述变化之后的测试用例对待测程序进行测试所生成的测试结果的变化的对应关系;
利用所述可用的测试用例运行所述待测程序,以生成第一测试结果;
利用所述蜕变的测试用例运行所述待测程序,以生成第二测试结果;
根据所述第一测试结果、所述第二测试结果和所述蜕变关系,对所述待测程序进行验证。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述利用自适应随机测试算法,生成至少两个测试用例,包括:
利用自适应随机测试算法,以及根据预先设置的覆盖阈值,生成至少两个测试用例,所述至少两个测试用例对所述待测程序的覆盖情况大于或等于所述覆盖阈值。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述利用贪婪算法,对所述至少两个测试用例进行搜索,包括:
依次从所述至少两个测试用例中除了之前选择的N-1个可用的测试用例之外其它的测试用例中,选择第N个可用的测试用例,直到所述N个可用的测试用例的覆盖情况大于或等于预先设置的覆盖阈值,所述N为大于或等于1的整数;其中,
所述待测程序包含之前选择的N-1个可用的测试用例已经覆盖的第一程序和之前选择的N-1个可用的测试用例没有覆盖的第二程序;
所述第N个可用的测试用例对第二程序的覆盖情况大于所述至少两个测试用例中除了之前选择的N-1个可用的测试用例之外的其它测试用例对第二程序的覆盖情况。
本发明的另一方面,提供一种测试设备,包括:
生成单元,用于利用自适应随机测试算法,生成至少两个测试用例;
搜索单元,用于利用贪婪算法,对所述至少两个测试用例进行搜索,以选择所述至少两个测试用例中可用的测试用例;
所述生成单元,还用于根据预先设置的蜕变关系,生成与所述可用的测试用例对应的蜕变的测试用例,所述蜕变关系用于指示测试用例的变化与利用所述变化之前和所述变化之后的测试用例对待测程序进行测试所生成的测试结果的变化的对应关系;
测试单元,用于利用所述可用的测试用例运行所述待测程序,以生成第一测试结果;以及利用所述蜕变的测试用例运行所述待测程序,以生成第二测试结果;
验证单元,用于根据所述第一测试结果、所述第二测试结果和所述蜕变关系,对所述待测程序进行验证。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述生成单元,具体用于
利用自适应随机测试算法,以及根据预先设置的覆盖阈值,生成至少两个测试用例,所述至少两个测试用例对所述待测程序的覆盖情况大于或等于所述覆盖阈值。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述搜索单元,具体用于
依次从所述至少两个测试用例中除了之前选择的N-1个可用的测试用例之外其它的测试用例中,选择第N个可用的测试用例,直到所述N个可用的测试用例的覆盖情况大于或等于预先设置的覆盖阈值,所述N为大于或等于1的整数;其中,
所述待测程序包含之前选择的N-1个可用的测试用例已经覆盖的第一程序和之前选择的N-1个可用的测试用例没有覆盖的第二程序;
所述第N个可用的测试用例对第二程序的覆盖情况大于所述至少两个测试用例中除了之前选择的N-1个可用的测试用例之外的其它测试用例对第二程序的覆盖情况。
由上述技术方案可知,本发明实施例通过根据预先设置的蜕变关系,生成与可用的测试用例对应的蜕变的测试用例,进而利用所述可用的测试用例运行所述待测程序,以生成第一测试结果,以及利用所述蜕变的测试用例运行所述待测程序,以生成第二测试结果,使得能够根据所述第一测试结果、所述第二测试结果和所述蜕变关系,对所述待测程序进行验证,以确定所述待测程序是否正确,无需操作人员参与测试过程,操作简单,且正确率高,从而提高了测试操作的效率和可靠性。
【附图说明】
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明一实施例提供的测试方法的流程示意图;
图2为本发明另一实施例提供的测试设备的结构示意图。
【具体实施方式】
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
另外,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
图1为本发明一实施例提供的测试方法的流程示意图,如图1所示。
101、利用自适应随机测试(Adaptive Random Testing,ART)算法,生成至少两个测试用例。
102、利用贪婪(Greedy)算法,对所述至少两个测试用例进行搜索,以选择所述至少两个测试用例中可用的测试用例。
103、根据预先设置的蜕变关系,生成与所述可用的测试用例对应的蜕变的测试用例,所述蜕变关系用于指示测试用例的变化与利用所述变化之前和所述变化之后的测试用例对待测程序进行测试所生成的测试结果的变化的对应关系。
104、利用所述可用的测试用例运行所述待测程序,以生成第一测试结果。
105、利用所述蜕变的测试用例运行所述待测程序,以生成第二测试结果。
106、根据所述第一测试结果、所述第二测试结果和所述蜕变关系,对所述待测程序进行验证。
其中,104与105的执行可以没有固定的顺序,本实施例对此不进行限定。
这样,通过根据预先设置的蜕变关系,生成与可用的测试用例对应的蜕变的测试用例,进而利用所述可用的测试用例运行所述待测程序,以生成第一测试结果,以及利用所述蜕变的测试用例运行所述待测程序,以生成第二测试结果,使得能够根据所述第一测试结果、所述第二测试结果和所述蜕变关系,对所述待测程序进行验证,以确定所述待测程序是否正确,无需操作人员参与测试过程,操作简单,且正确率高,从而提高了测试操作的效率和可靠性。
可选地,在本实施例的一个可能的实现方式中,通过执行101,能够自动化的生成具有一定差异化的测试用例。
具体地,首先,根据预先输入的输入数据格式和数据生成规则,随机生成第1个测试用例T1,并记录T1对待测程序的覆盖情况。
然后,再随机生成n(n为大于或等于2的整数)个备选的测试用例,并,并记录它们对待测程序的覆盖情况,以及,计算n各备选的测试用例与T1之间的距离,选择距离最大的备选的测试用例作为第2个测试用例T2。其中,所述距离可以理解为备选的测试用例与测试用例之间的差异性的量化标准。
计算这个距离的方法可以有很多种。例如,将备选的测试用例对待测程序覆盖情况与测试用例对待测程序的覆盖情况的差值取绝对值,然后再相加。假设所述待测程序包含3行,测试用例T1对待测程序的覆盖情况是101,备选的测试用例t1对待测程序的覆盖情况是001,备选的测试用例t2对待测程序的覆盖情况是011,其中,1表示覆盖,0表示未覆盖。那么,t1与T1之间的距离为|0-1|+|0-0|+|1-1|=1,t2与T1之间的距离为|0-1|+|1-0|+|1-1|=2。
或者再例如,将备选的测试用例对待测程序的覆盖情况与测试用例对待测程序的覆盖情况的并集除以备选的测试用例对待测程序的覆盖情况与测试用例对待测程序的覆盖情况的交集。假设所述待测程序包含3行,测试用例T1对待测程序的覆盖情况是101即覆盖2行,备选的测试用例t1对待测程序的覆盖情况是001即覆盖1行,备选的测试用例t2对待测程序的覆盖情况是011即覆盖2行,其中,1表示覆盖,0表示未覆盖。那么,t1与T1之间的距离为2/1=2,t2与T1之间的距离为3/1=3。
等等,还有很多其他方法可以用于计算所述距离,本实施例对此不进行限定。
接着,再随机生成n(n为大于或等于2的整数)个备选的测试用例,并,并记录它们对待测程序的覆盖情况,以及,计算n各备选的测试用例与T1、T2之间的距离,选择最小距离最大的备选的测试用例作为第3个测试用例T3。其中,最小距离为备选的测试用例与T1之间的距离,与,最小距离为备选的测试用例与T2之间的距离中较小的距离。
以此类推,循环执行上述操作,以生成M(M为大于或等于2的整数)个测试用例,直到该M个测试用例对所述待测程序的覆盖情况大于或等于预先设置的覆盖阈值,或者M为达到预先设置的数目阈值,为止。
可选地,在本实施例的一个可能的实现方式中,在102中,所使用的所述贪婪算法的选择策略是依次选择出对当前没有被覆盖的待测程序的覆盖情况最大的测试用例,作为可行的测试用例。具体地,具体可以依次从所述至少两个测试用例中除了之前选择的N-1个可用的测试用例之外其它的测试用例中,选择第N个可用的测试用例,直到所述N个可用的测试用例的覆盖情况大于或等于预先设置的覆盖阈值,所述N为大于或等于1的整数;其中,
所述待测程序包含之前选择的N-1个可用的测试用例已经覆盖的第一程序和之前选择的N-1个可用的测试用例没有覆盖的第二程序;
所述第N个可用的测试用例对第二程序的覆盖情况大于所述至少两个测试用例中除了之前选择的N-1个可用的测试用例之外的其它测试用例对第二程序的覆盖情况。
具体地,可以根据预设策略,反复执行,例如,直到所述N个可用的测试用例的覆盖情况大于或等于预先设置的覆盖阈值指定此处,例如,1次或2次。
例如,假设待测程序即待测软件***(System Under Test,SUT)包括以下11行,即
01:if a>b:
02:if a>b+1:
03:do something
04:else:
05:do something
06:elif a=b:
07:do something
08:else a<b:
09:do something
10:if a==b+2:
11:do something
通过执行101,生成以下测试用例:
T1:a=3,b=1;
T2:a=3,b=2;
T3:a=3,b=3;
T4:a=4,b=4;
T5:a=3,b=4。
从所述测试用例可以看到,T1覆盖了1、2、3、10和11行,T2覆盖了1、4和5行,T3覆盖了6和7行,T4覆盖了6和7行,T5覆盖了8和9行。
首先,选择覆盖率最高的T1,这样还剩下4、5、6、7、8和9行没有被覆盖。然后,再搜索覆盖这些行的覆盖率最高的,发现T2、T3、T4和T5都是2。可以采用某种策略,例如,顺序选择一个T2,还剩下6、7、8和9行没有被覆盖。同理选择T3,剩下8和9没有被覆盖,选择T5,之后所有行均被覆盖,则剩下T4则被淘汰或放在下轮中再被选择。
本实施例中,通过根据预先设置的蜕变关系,生成与可用的测试用例对应的蜕变的测试用例,进而利用所述可用的测试用例运行所述待测程序,以生成第一测试结果,以及利用所述蜕变的测试用例运行所述待测程序,以生成第二测试结果,使得能够根据所述第一测试结果、所述第二测试结果和所述蜕变关系,对所述待测程序进行验证,以确定所述待测程序是否正确,无需操作人员参与测试过程,操作简单,且正确率高,从而提高了测试操作的效率和可靠性。
另外,采用本实施例提供的技术方案,由于无需操作人员参与测试过程,还可以进一步减少人工成本,大大提高测试稳定性,减少测试风险。
另外,采用本实施例提供的技术方案,由于采用了蜕变关系,对所述待测程序进行验证,使得无需关注待测程序的内部实现流程,只需要关注可用的测试用例与蜕变的测试用例的变化、以及各自对应的测试结果的变化,是否满足所述蜕变关系即可,从而节省了验证成本,尤其对于复杂的待测程序效果尤为明显。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
图2为本发明另一实施例提供的测试设备的结构示意图,如图2所示。本实施例的测试设备可以包括生成单元21、搜索单元22、测试单元23和验证单元24。其中,生成单元21,用于利用自适应随机测试算法,生成至少两个测试用例;搜索单元22,用于利用贪婪算法,对所述至少两个测试用例进行搜索,以选择所述至少两个测试用例中可用的测试用例;所述生成单元21,还用于根据预先设置的蜕变关系,生成与所述可用的测试用例对应的蜕变的测试用例,所述蜕变关系用于指示测试用例的变化与利用所述变化之前和所述变化之后的测试用例对待测程序进行测试所生成的测试结果的变化的对应关系;测试单元23,用于利用所述可用的测试用例运行所述待测程序,以生成第一测试结果;以及利用所述蜕变的测试用例运行所述待测程序,以生成第二测试结果;验证单元24,用于根据所述第一测试结果、所述第二测试结果和所述蜕变关系,对所述待测程序进行验证。
这样,通过生成单元根据预先设置的蜕变关系,生成与可用的测试用例对应的蜕变的测试用例,进而由测试单元利用所述可用的测试用例运行所述待测程序,以生成第一测试结果,以及利用所述蜕变的测试用例运行所述待测程序,以生成第二测试结果,使得验证单元能够根据所述第一测试结果、所述第二测试结果和所述蜕变关系,对所述待测程序进行验证,以确定所述待测程序是否正确,无需操作人员参与测试过程,操作简单,且正确率高,从而提高了测试操作的效率和可靠性。
可选地,在本实施例的一个可能的实现方式中,生成单元21通过执行对应的操作,能够自动化的生成具有一定差异化的测试用例。
具体地,首先,所述生成单元21根据预先输入的输入数据格式和数据生成规则,随机生成第1个测试用例T1,并记录T1对待测程序的覆盖情况。
然后,所述生成单元21再随机生成n(n为大于或等于2的整数)个备选的测试用例,并,并记录它们对待测程序的覆盖情况,以及,计算n各备选的测试用例与T1之间的距离,选择距离最大的备选的测试用例作为第2个测试用例T2。其中,所述距离可以理解为备选的测试用例与测试用例之间的差异性的量化标准。
所述生成单元21计算这个距离的方法可以有很多种。
例如,所述生成单元21将备选的测试用例对待测程序覆盖情况与测试用例对待测程序的覆盖情况的差值取绝对值,然后再相加。假设所述待测程序包含3行,测试用例T1对待测程序的覆盖情况是101,备选的测试用例t1对待测程序的覆盖情况是001,备选的测试用例t2对待测程序的覆盖情况是011,其中,1表示覆盖,0表示未覆盖。那么,t1与T1之间的距离为|0-1|+|0-0|+|1-1|=1,t2与T1之间的距离为|0-1|+|1-0|+|1-1|=2。
或者再例如,所述生成单元21将备选的测试用例对待测程序的覆盖情况与测试用例对待测程序的覆盖情况的并集除以备选的测试用例对待测程序的覆盖情况与测试用例对待测程序的覆盖情况的交集。假设所述待测程序包含3行,测试用例T1对待测程序的覆盖情况是101即覆盖2行,备选的测试用例t1对待测程序的覆盖情况是001即覆盖1行,备选的测试用例t2对待测程序的覆盖情况是011即覆盖2行,其中,1表示覆盖,0表示未覆盖。那么,t1与T1之间的距离为2/1=2,t2与T1之间的距离为3/1=3。
等等,所述生成单元21还有很多其他方法可以用于计算所述距离,本实施例对此不进行限定。
接着,所述生成单元21再随机生成n(n为大于或等于2的整数)个备选的测试用例,并,并记录它们对待测程序的覆盖情况,以及,计算n各备选的测试用例与T1、T2之间的距离,选择最小距离最大的备选的测试用例作为第3个测试用例T3。其中,最小距离为备选的测试用例与T1之间的距离,与,最小距离为备选的测试用例与T2之间的距离中较小的距离。
以此类推,所述生成单元21循环执行上述操作,以生成M(M为大于或等于2的整数)个测试用例,直到该M个测试用例对所述待测程序的覆盖情况大于或等于预先设置的覆盖阈值,或者M为达到预先设置的数目阈值,为止。
也就是说,所述生成单元21,具体可以利用自适应随机测试算法,以及根据预先设置的覆盖阈值,生成至少两个测试用例,所述至少两个测试用例对所述待测程序的覆盖情况大于或等于所述覆盖阈值。
可选地,在本实施例的一个可能的实现方式中,所述搜索单元22所使用的所述贪婪算法的选择策略是依次选择出对当前没有被覆盖的待测程序的覆盖情况最大的测试用例,作为可行的测试用例。具体地,所述搜索单元22,具体可以用于依次从所述至少两个测试用例中除了之前选择的N-1个可用的测试用例之外其它的测试用例中,选择第N个可用的测试用例,直到所述N个可用的测试用例的覆盖情况大于或等于预先设置的覆盖阈值,所述N为大于或等于1的整数;其中,
所述待测程序包含之前选择的N-1个可用的测试用例已经覆盖的第一程序和之前选择的N-1个可用的测试用例没有覆盖的第二程序;
所述第N个可用的测试用例对第二程序的覆盖情况大于所述至少两个测试用例中除了之前选择的N-1个可用的测试用例之外的其它测试用例对第二程序的覆盖情况。
具体地,所述搜索单元22可以根据预设策略,反复执行,例如,直到所述N个可用的测试用例的覆盖情况大于或等于预先设置的覆盖阈值指定此处,例如,1次或2次。
例如,假设待测程序即待测软件***(System Under Test,SUT)包括以下11行,即
01:if a>b:
02:if a>b+1:
03:do something
04:else:
05:do something
06:elifa=b:
07:do something
08:else a<b:
09:do something
10:if a==b+2:
11:do something
通过执行101,生成以下测试用例:
T1:a=3,b=1;
T2:a=3,b=2;
T3:a=3,b=3;
T4:a=4,b=4;
T5:a=3,b=4。
从所述测试用例可以看到,T1覆盖了1、2、3、10和11行,T2覆盖了1、4和5行,T3覆盖了6和7行,T4覆盖了6和7行,T5覆盖了8和9行。
首先,所述搜索单元22选择覆盖率最高的T1,这样还剩下4、5、6、7、8和9行没有被覆盖。然后,所述搜索单元22再搜索覆盖这些行的覆盖率最高的,发现T2、T3、T4和T5都是2。所述搜索单元22可以采用某种策略,例如,顺序选择一个T2,还剩下6、7、8和9行没有被覆盖。同理所述搜索单元22选择T3,剩下8和9没有被覆盖,所述搜索单元22选择T5,之后所有行均被覆盖,则剩下T4则被淘汰或放在下轮中再被选择。
本实施例中,通过生成单元根据预先设置的蜕变关系,生成与可用的测试用例对应的蜕变的测试用例,进而由测试单元利用所述可用的测试用例运行所述待测程序,以生成第一测试结果,以及利用所述蜕变的测试用例运行所述待测程序,以生成第二测试结果,使得验证单元能够根据所述第一测试结果、所述第二测试结果和所述蜕变关系,对所述待测程序进行验证,以确定所述待测程序是否正确,无需操作人员参与测试过程,操作简单,且正确率高,从而提高了测试操作的效率和可靠性。
另外,采用本实施例提供的技术方案,由于无需操作人员参与测试过程,还可以进一步减少人工成本,大大提高测试稳定性,减少测试风险。
另外,采用本实施例提供的技术方案,由于验证单元采用了蜕变关系,对所述待测程序进行验证,使得无需关注待测程序的内部实现流程,只需要关注可用的测试用例与蜕变的测试用例的变化、以及各自对应的测试结果的变化,是否满足所述蜕变关系即可,从而节省了验证成本,尤其对于复杂的待测程序效果尤为明显。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的***,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本发明所提供的几个实施例中,应该理解到,所揭露的***,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (4)
1.一种测试方法,其特征在于,包括:
利用自适应随机测试算法,生成至少两个测试用例;
利用贪婪算法,对所述至少两个测试用例进行搜索,以选择所述至少两个测试用例中可用的测试用例;
根据预先设置的蜕变关系,生成与所述可用的测试用例对应的蜕变的测试用例,所述蜕变关系用于指示测试用例的变化与测试结果的变化的对应关系;所述测试结果为利用所述变化之前和所述变化之后的测试用例对待测程序进行测试所生成的;
利用所述可用的测试用例运行所述待测程序,以生成第一测试结果;
利用所述蜕变的测试用例运行所述待测程序,以生成第二测试结果;
根据所述第一测试结果、所述第二测试结果和所述蜕变关系,对所述待测程序进行验证;其中,
所述利用贪婪算法,对所述至少两个测试用例进行搜索,包括:
依次从所述至少两个测试用例中除了之前选择的N-1个可用的测试用例之外其它的测试用例中,选择第N个可用的测试用例,直到之前选择的N-1个可用的测试用例的覆盖情况与所述第N个可用的测试用例的覆盖情况之和大于或等于预先设置的覆盖阈值,所述N为大于或等于1的整数;其中,
所述待测程序包含之前选择的N-1个可用的测试用例已经覆盖的第一程序和之前选择的N-1个可用的测试用例没有覆盖的第二程序;
所述第N个可用的测试用例对第二程序的覆盖情况大于所述至少两个测试用例中除了之前选择的N-1个可用的测试用例之外的其它测试用例对第二程序的覆盖情况。
2.根据权利要求1所述的方法,其特征在于,所述利用自适应随机测试算法,生成至少两个测试用例,包括:
利用自适应随机测试算法,以及根据预先设置的覆盖阈值,生成至少两个测试用例,所述至少两个测试用例对所述待测程序的覆盖情况大于或等于所述覆盖阈值。
3.一种测试设备,其特征在于,包括:
生成单元,用于利用自适应随机测试算法,生成至少两个测试用例;
搜索单元,用于利用贪婪算法,对所述至少两个测试用例进行搜索,以选择所述至少两个测试用例中可用的测试用例;
所述生成单元,还用于根据预先设置的蜕变关系,生成与所述可用的测试用例对应的蜕变的测试用例,所述蜕变关系用于指示测试用例的变化与测试结果的变化的对应关系;所述测试结果为利用所述变化之前和所述变化之后的测试用例对待测程序进行测试所生成的;
测试单元,用于利用所述可用的测试用例运行所述待测程序,以生成第一测试结果;以及利用所述蜕变的测试用例运行所述待测程序,以生成第二测试结果;
验证单元,用于根据所述第一测试结果、所述第二测试结果和所述蜕变关系,对所述待测程序进行验证;其中,
所述搜索单元,具体用于
依次从所述至少两个测试用例中除了之前选择的N-1个可用的测试用例之外其它的测试用例中,选择第N个可用的测试用例,直到之前选择的N-1个可用的测试用例的覆盖情况与所述第N个可用的测试用例的覆盖情况之和大于或等于预先设置的覆盖阈值,所述N为大于或等于1的整数;其中,
所述待测程序包含之前选择的N-1个可用的测试用例已经覆盖的第一程序和之前选择的N-1个可用的测试用例没有覆盖的第二程序;
所述第N个可用的测试用例对第二程序的覆盖情况大于所述至少两个测试用例中除了之前选择的N-1个可用的测试用例之外的其它测试用例对第二程序的覆盖情况。
4.根据权利要求3所述的设备,其特征在于,所述生成单元,具体用于
利用自适应随机测试算法,以及根据预先设置的覆盖阈值,生成至少两个测试用例,所述至少两个测试用例对所述待测程序的覆盖情况大于或等于所述覆盖阈值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210564597.3A CN103885876B (zh) | 2012-12-21 | 2012-12-21 | 测试方法及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210564597.3A CN103885876B (zh) | 2012-12-21 | 2012-12-21 | 测试方法及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103885876A CN103885876A (zh) | 2014-06-25 |
CN103885876B true CN103885876B (zh) | 2018-01-05 |
Family
ID=50954784
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210564597.3A Active CN103885876B (zh) | 2012-12-21 | 2012-12-21 | 测试方法及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103885876B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104572462B (zh) * | 2014-12-31 | 2017-10-03 | 中国人民解放军理工大学 | 一种基于自适应随机策略的蜕变测试用例生成方法 |
CN106547695B (zh) * | 2016-10-26 | 2019-03-05 | 中广核工程有限公司 | 一种规模软件的测试***及方法 |
CN106897217A (zh) * | 2017-02-13 | 2017-06-27 | 北京趣拿软件科技有限公司 | 测试方法和测试装置 |
CN107704393B (zh) * | 2017-09-29 | 2018-08-21 | 武汉斗鱼网络科技有限公司 | 数据测试方法、装置及电子设备 |
CN109783753A (zh) * | 2018-12-14 | 2019-05-21 | 平安普惠企业管理有限公司 | 网站链接树状图生成方法、装置、设备及存储介质 |
CN110823226B (zh) * | 2019-10-30 | 2021-04-30 | 北京航空航天大学 | 一种基于蜕变测试技术的无人机智能航路规划测试方法 |
CN117827667A (zh) * | 2021-01-25 | 2024-04-05 | 杭州衣科信息技术股份有限公司 | 测试覆盖率提高装置 |
CN116126698B (zh) * | 2022-12-29 | 2023-08-01 | 中国人民解放军国防科技大学 | 一种基于蜕变测试的运行时配置更新缺陷检测方法 |
CN117056203B (zh) * | 2023-07-11 | 2024-04-09 | 南华大学 | 一种基于复杂性的数值表达式型蜕变关系选择方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101916225A (zh) * | 2010-09-02 | 2010-12-15 | 于秀山 | 图形用户界面软件功能覆盖测试方法 |
CN102170378A (zh) * | 2011-04-22 | 2011-08-31 | 北京科技大学 | 一种无需预期的Web服务测试方法 |
CN102253889A (zh) * | 2011-08-07 | 2011-11-23 | 南京大学 | 一种回归测试中基于分布的测试用例优先级划分方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020155587A1 (en) * | 2001-04-20 | 2002-10-24 | Sequenom, Inc. | System and method for testing a biological sample |
-
2012
- 2012-12-21 CN CN201210564597.3A patent/CN103885876B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101916225A (zh) * | 2010-09-02 | 2010-12-15 | 于秀山 | 图形用户界面软件功能覆盖测试方法 |
CN102170378A (zh) * | 2011-04-22 | 2011-08-31 | 北京科技大学 | 一种无需预期的Web服务测试方法 |
CN102253889A (zh) * | 2011-08-07 | 2011-11-23 | 南京大学 | 一种回归测试中基于分布的测试用例优先级划分方法 |
Non-Patent Citations (1)
Title |
---|
软件测试用例自动生成算法综述;聂鹏等;《计算机应用研究》;20120228;第1-6页 * |
Also Published As
Publication number | Publication date |
---|---|
CN103885876A (zh) | 2014-06-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103885876B (zh) | 测试方法及设备 | |
Wang et al. | Multi-objective approaches to optimal testing resource allocation in modular software systems | |
US9300134B2 (en) | Methods and systems for power restoration planning | |
CN105260534B (zh) | 用于超大规模芯片验证的回归测试用例维护方法及*** | |
CN102999320B (zh) | 测试用例自动生成方法和*** | |
CN110046101A (zh) | 页面自动化测试方法、装置及计算机存储介质 | |
CN109886661A (zh) | 跨链数字货币兑换方法、装置、计算机***及存储介质 | |
CN105225125B (zh) | 信息校验方法及设备 | |
CN106980571A (zh) | 一种测试用例集的构建方法和设备 | |
CN109413202A (zh) | 区块链交易信息的排序***及方法 | |
CN106257507A (zh) | 用户行为的风险评估方法及装置 | |
CN106657399A (zh) | 基于中间件实现的后台服务器选择方法及装置 | |
CN107864187A (zh) | 终端设备联机任务执行方法及服务器 | |
CN103631714A (zh) | 基于矩阵重复度的最小组合测试用例生成方法 | |
Park et al. | Practical Human Resource Allocation in Software Projects Using Genetic Algorithm. | |
Alsewari et al. | One-parameter-at-a-time combinatorial testing strategy based on harmony search algorithm OPAT-HS | |
Abd Halim et al. | Similarity distance measure and prioritization algorithm for test case prioritization in software product line testing | |
CN109165947A (zh) | 账户信息确定方法、装置及服务器 | |
Doungsa-Ard et al. | GA-based automatic test data generation for UML state diagrams with parallel paths | |
WO2011114135A1 (en) | Detecting at least one community in a network | |
CN105630680B (zh) | 一种随机测试程序生成方法 | |
CN109977005A (zh) | 端到端测试方法、介质、装置和计算设备 | |
CN110413287A (zh) | 软件的部署方法和装置 | |
Balint et al. | A novel approach to combine a SLS-and a DPLL-solver for the satisfiability problem | |
CN108494589A (zh) | 一种分布式Nginx服务器的管理方法和*** |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
EXSB | Decision made by sipo to initiate substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |