[发明专利]基于执行序列的JUnit测试用例化简方法有效
申请号: | 201010165343.5 | 申请日: | 2010-05-07 |
公开(公告)号: | CN101833508A | 公开(公告)日: | 2010-09-15 |
发明(设计)人: | 郝丹;张令明;张路;梅宏 | 申请(专利权)人: | 北京大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 北京万象新悦知识产权代理事务所(普通合伙) 11360 | 代理人: | 贾晓玲 |
地址: | 100871*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 执行 序列 junit 测试 用例化简 方法 | ||
1.一种JUnit测试用例化简方法,化简后的测试用例是化简前测试用例的真子集,化简后的测试用例的揭错能力与化简前接近,其特征在于:化简后的测试用例对方法调用顺序不当导致的故障的揭错能力与化简前相同;化简方法包括以下步骤:
第一步:把JUnit测试用例集合中的每条测试用例都表示成一个k-序列的集合;
第二步:对第一步中得到的k-序列集合进行化简。
2.如权利要求1所述的方法,其特征在于,第一步的实现方法为:先将每条JUnit测试用例拆分成多条k-序列,再将每条JUnit测试用例表示成多个k-序列构成的集合。
3.如权利要求1或2所述的方法,其特征在于,对形如JUnit的测试用例T=[m1,m2,,...,mn],表示测试用例T中有n个方法m1,m2,m3,...,mn被调用,它们的调用顺序是mi要比mj先被调用(i<j),则把它表示成k-序列形式的过程如下:
A.如果测试用例T只有1个方法被调用,即T=[m1],那么它的序列表示如下:
●如果k=1,T的k-序列表示为{[m1]};
●如果k>1,T的k-序列表示为
B.如果测试用例T只有2个方法被调用,即T=[m1,m2],那么它的序列表示如下:
●如果k=1,T的k-序列表示为{[m1],[m2]};
●如果k=2,T的k-序列表示为{[m1,m2]};
●如果k>2,T的k-序列表示为
C.否则,
●如果2≤k<k+1<n,那么,先将T拆分成k-序列:[m1,...,mk],[m2,...,mk+1],...,[mn-k+1...,mn],然后将T表示成{[m1,...,mk],[m2,...,mk+1],...,[mn-k+1...,mn]};
●如果2≤k<k+1=n,那么先将T拆分成k-序列:[m1,...,mk],[m2,...,mk+1],然后将T表示成{[m1,...,mk],[m2,...,mk+1]};
●如果2≤k=n,那么先将T拆分成k-序列:[m1,...,mk],然后将T表示成{[m1,...,mk]}。
●如果k=1,那么先将T拆分成k-序列:[m1],[m2],...,[mn],然后将T表示成{[m1],[m2],...,[mn]};
●如果k>n>3,那么先将T拆分成k-序列:然后将T表示成
4.如权利要求1所述的方法,其特征在于,第二步的实现步骤为:
1)根据JUnit测试用例包含的方法数将原测试用例集合T分成两个不相交的子集T1和T2,T1由方法数少于k的JUnit测试用例构成,T2由方法数不少于k的JUnit测试用例构成,初始时,化简后的测试用例集合T″为空;
2)对于T1中的测试用例,选择具有不同k-序列表示的JUnit测试用例来构造集合T3,即:如果有多条JUnit测试用例具有相同的k-序列表示,从中任选一条JUnit测试用例放入T3中;
3)对于T2中的测试用例,首先统计T2中的所有测试用例的k-序列表示包含的方法序列构成集合R,使用如贪心算法在内的任一化简算法,从T2中挑选出部分测试用例构成集合T4,使得R中任意方法序列都至少可以被T4中的某条测试用例对应的k-序列表示包含;
4)T3和T4两集合的并就是化简后的JUnit测试用例集合T″。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京大学,未经北京大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201010165343.5/1.html,转载请声明来源钻瓜专利网。