1.一种基于决策树的EFSM测试用例排序方法,其特征在于:包括如下步骤:(1)提取EFSM的测试用例集中每条测试用例的标签值;
(2)提取EFSM的测试用例集中每条测试用例的特征值;
(3)训练针对该EFSM的测试用例排序模型;
(4)提取新测试用例集的特征值信息,得到测试数据;
(5)将测试数据输入到已训练好的测试用例排序模型中,得到排序结果。
2.根据权利要求1所述的一种基于决策树的EFSM测试用例排序方法,其特征在于:所述步骤(1)具体如下:当进行测试用例的标签值提取时,需要处理EFSM的测试用例集TS,最终得到该测试用例集的标签值集合labellist;首先,向EFSM的源代码中注入一些已知错误,完整执行一遍测试用例,以得知每个测试用例都能发现哪些错误;接着,初始化标签值集合labellist,判断测试用例集TS是否为空;如果TS不为空,则找到TS中能发现最多错误的测试用例t,执行t后将其从TS中删除,并从错误列表中删除t发现的错误;之后,设置t的标签值为其执行顺序的倒数,并将t的标签值添加进labellist中;如果TS为空,则输出labellist。
3.根据权利要求1所述的一种基于决策树的EFSM测试用例排序方法,其特征在于:所述步骤(2)具体如下:当进行测试用例的特征提取时,需要处理EFSM的测试用例集TS,最终得到该测试用例集的特征数组集合featurelist;首先,初始化特征数组集合featurelist;之后,判断测试用例集TS是否为空,如果不为空,那么循环遍历测试用例集TS中的每个测试用例t,以获取其变迁种类数量、长度、最多变迁数量以及最少变迁数量这4个特征值;将t的4维特征数组添加进featurelist中,并从测试用例集TS中删除t;如果测试用例集TS为空,那么输出featurelist,测试用例的标签值和特征值一起构成训练数据集。
4.根据权利要求1所述的一种基于决策树的EFSM测试用例排序方法,其特征在于:所述步骤(3)具体如下:当在训练测试用例排序模型时,需要处理由步骤(1)和步骤(2)产生的数据集D,最后输出决策树的根结点;首先,初始化树结点列表nodelist;之后,初始化决策树的根结点root,并将其添加进nodelist中,判断nodelist的长度是否大于0,如果大于0,那么提取并删除nodelist的首位结点node;接着,再判断node所包含的数据集Dnode是否可以再分,如果可以再分,那么找到最佳划分点bestsplit将Dnode划分为两个子集,并创建node的两个子结点node.left和node.right,分别包含划分出的两个子数据集,最后将node.left和node.right添加进nodelist中,如果node所包含的数据集Dnode不可再分,那么接着判断nodelist的长度是否大于0;当nodelist的长度等于0时,输出决策树的根结点root,通过root结点遍历整个决策树,生成的决策树即为该EFSM训练好的测试用例排序模型。
5.根据权利要求4所述的一种基于决策树的EFSM测试用例排序方法,其特征在于:通过限制最大叶子数来限制决策树的大小,在训练阶段每个叶子节点i的分数通过公式计算;其中,标签l∈{1,2,…n},p(l|leaf)表示当前叶子节点leaf上标签l出现的频率;最后,在应用阶段使用公式计算第j个测试用例tj对应于错误组合c的预测分数。
6.根据权利要求1所述的一种基于决策树的EFSM测试用例排序方法,其特征在于:所述步骤(4)具体如下:当获取测试数据时,需要处理EFSM新的测试用例集TS,以得到该测试用例集的测试数据;使用特征数组集合作为测试数据,其获取方式和步骤(2)相同。
7.根据权利要求1所述的一种基于决策树的EFSM测试用例排序方法,其特征在于:所述步骤(5)中当获取排序结果时,需要将步骤(4)中获得的测试数据输入到步骤(3)中训练好的测试用例排序模型中;新测试用例集的排序结果是一个实数的集合,每个实数代表该测试用例的得分,得分越高的测试用例将越早执行。