自动化测试用例排序(三个算法随机、贪心、额外贪心)

接着前面自动化测试的测试用例生成和收集,下面我们就需要做的是对测试用例进行排序,简单来说就是达到语句的全部覆盖。说到排序就涉及到三个算法,下面就是我对三个算法的阐述及代码实现。咱们由易入难。

 

1’自动用例生成(使用Randoop)>

2‘评价(对用例筛选冗余)>功能覆盖、语句覆盖(一般用后者)

           >插桩  (插入语句)

              用Javassist实现自动插入语句

3’测试用例排序排序>三种算法实现测试用例排序

    1‘  随机算法:测试用例会排序就是生成一个用例序列,随机算法就是随机生成一个测试用例序列

      下面是对序列进行打乱随机排序的两种方法:

//(1)利用math的random方法
List l=new ArrayList( input); //将input数组放入arraylist,input为集合 List res=new ArrayList(); //用来存放随机产生元素的结果 Random r=new Random();//随机数 int size=l.size(); for(int i=0;i<size;i++){ res.add(l.remove( r.nextInt(l.size()))); //为了保证不重复,每次随机产生后都删除该元素。 } //此时res中存放的就是随机排序的结果。
//(2)利用collections的buffle方法
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
 public class Test {
   
   
List list = new LinkedList(); public static void main(String[] args) { List list = new LinkedList(); for ( int i = 0 ; i < 9 ; i ++ ) { list.add( " a " + i); } Collections.sort(list); // 顺序排列 System.out.println(list); Collections.shuffle(list); //随机打乱一个序列 System.out.println(list); Collections.reverse(list); // 倒序排列 System.out.println(list); System.out.println(Collections.binarySearch(list, " a5 " )); // 折半查找 }

     对此我简单的用list输入一个测试用例序列并进行随机排序,输出结果:   

package testpaixu;

import java.util.*;

public class randomA {
	public static void main(String args[]){
		//测试用例数目
		int N=6;	
		List<Integer> lis=new ArrayList<Integer>();	
		//添加测试用例1,2,3,4,5,6为序列
		for(int i=1;i<=N;i++){
			lis.add(i);
		}
		//输出原测试用例序列
		System.out.println("测试用例序列:"+lis);
		//随机排序
		Collections.shuffle(lis);
		System.out.println("随机排序后测试用例序列:"+lis);		
	}
}

    结果显示:

    

 

    2’·  贪心算法:

      一种能够得到某种度量意义下的最优解的分级处理方法,它总是做出在当前看来是最优的选择,也就是说贪心策略并不是从整体上加以考虑,它所做出的选择只是在某种意义上的局部最优解算法。   

      该算法存在问题:
1. 不能保证求得的最后解是最佳的;
2. 不能用来求最大或最小解问题;
3. 只能求满足某些约束条件的可行解的范围。
      实现该算法的过程:
从问题的某一初始解出发;
while 能朝给定总目标前进一步 do
 求出可行解的一个解元素;
由所有解元素组合成问题的一个可行解;      

    

现在我用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值