一种基于xgboost的移动应用众包测试任务推荐方法
文献发布时间:2023-06-19 09:44:49
技术领域
本发明涉及一种基于xgboost的移动应用众包测试任务推荐方法。
背景技术
移动应用众包测试是一种分布式问题解决方案,将移动应用测试任务以自由自愿的方式外包给匿名网络用户。与传统测试方法相比,众包测试具有自由、高创新度、低成本等优势。但由于现有众包测试平台普遍缺乏有效的众包测试任务个性化推荐机制,导致任务与众包测试人员之间匹配度低,不仅影响测试效率和测试质量,同时也抑制了众包测试人员积极性。
现有主流众包平台通常为众包人员提供了初步的测试人员排序和搜索机制。CloudCorwd、AMT、脑力库等支持对众包测试任务的时间和价格排序,并支持对任务的关键字检索。猪八戒、三打哈等平台则增加了基于地域和类别的任务搜索。但这种传统的测试人员排序和搜索方法,使得众包人员很难快速找到感兴趣的测试任务,也难以保证测试质量。
发明内容
要解决的技术问题
移动应用众包测试任务推荐存在着一些关键问题迫切需要研究和解决。主要解决的问题有:1)绝大部分众包平台则只能提供众包任务列表,缺乏个性化推荐机制;2)众包任务列表数量众多且通常采用的分页设定:
1绝大部分众包平台则只能提供众包任务列表
目前现有的众包平台大多采用众包人员主动拉取众包任务的方式,而且支持任务搜索的程度也不高,绝大部分众包平台则只能提供众包任务列表。众包人员则被限制在有限的任务列表中搜寻与自己兴趣相关的任务,而不能根据自己的兴趣去主动地查找。
2众包任务列表数量众多且通常采用的分页设定
由于众包任务列表数量众多而采用的分页设定,这意味着任务如果出现在第四页或更靠后的页面,则将很难被众包人员浏览和参与,再者众包人员往往会选择参与排序靠前的任务,这就很容易产生某些任务很久没人参与完成的情况。
技术方案
为解决现有技术存在的问题,本发明采用经典机器学习算法-xgboost,结合移动应用众包测试场景,选取合适的特征,对移动应用众包测试人员进行任务的实时个性化推荐,能有效提升测试质量,缩短测试人员搜索任务花费的时间。
本发明的技术方案为:
所述一种基于xgboost的移动应用众包测试任务推荐方法,包括以下步骤:
步骤1:数据获取与标注:
步骤1.1:获取移动应用众包测试平台历史数据:
从移动应用众包平台随机选择N位测试人员作为数据采集对象,获取他们的个人信息及他们的任务历史数据;
步骤1.2:特征选取:
从步骤1.1采集的数据中选择特征数据组成数据集;所述特征数据为:
基本信息:用户年龄、性别、学历;
个人活跃度:响应速度、任务邀请接受率、参与任务类型数、月均参与任务数、参与任务总数;
测试能力:测试结果接受率、平均测试结果得分、平均加权bug数;
个人诚信度:任务完成率、诚信保障金;
步骤1.3:对数据集进行标注:
将任务类型分为兼容性测试,性能测试,压力测试、UI测试、安全性测试、功能测试和其他类型测试,分别用1,2,…,6,7作为类别编号;
将步骤1.2中得到的数据集中的任务按照任务类型进行编号,再将任务对应的编号作为标签,对步骤1.2得到的数据集进行标注,得到带标签的数据集;
步骤1.4:将步骤1.3得到的带标签的数据集划分为训练集与测试集;
步骤1.5:数据清洗:
对数据集中的脏数据进行清洗,确保数据的准确与可靠性;
步骤1.6:数据重采样
对步骤1.5得到的训练集中具有相同编号的训练样本个数进行统计,如果不同编号之间的数据量比例超出设定值,则对数据量少的样本进行上采样和/或对数据量大的样本进行下采样;
步骤2:模型的训练与评价
步骤2.1:模型建立:采用Xgboost算法建立众包测试任务推荐模型;
步骤2.2:采用步骤1处理后的训练集数据对众包测试任务推荐模型进行训练;
步骤2.3:采用AUC作为评价指标对步骤2.2训练得到的模型进行评价,如果AUC达到0.7,则该模型满足上线标准;当AUC小于0.7时,表明模型仍需优化;
步骤3:模型应用
对于满足上线标准的模型进行应用的过程为:
获取待推荐任务的用户的特征信息,将这些信息作为输入,输入上线模型中,得到对不同任务的打分,按照打分从高到低的顺序对任务进行排序,实现众包测试任务在线个性化推荐。
进一步的,步骤1.1中,数据采集对象个数N不小于1万人。
进一步的,步骤1.1中,对数据缺失值进行均值填充。
进一步的,步骤1.4中,按照测试集:训练集=2:8的数量比例对步骤1.3得到的带标签的数据集进行划分。
进一步的,步骤1.5中,所述脏数据包括数据格式非法的数据,逻辑上不合理的数据,以及众包平台开发人员用于测试该平台某项功能是否正确而提交的测试数据。
进一步的,步骤1.6中,数据量比例设定值为10:1。
进一步的,步骤2.2中,模型的损失函数取GBDT损失函数与正则项之和。
进一步的,步骤2.3中,对AUC小于0.7的模型进行优化的方案包括:增加数据集中的样本量、修改xgboost模型中的最大树深度或者结合实际场景增加更多的特征。
有益效果
本发明针对现阶段移动应用众包测试网站对测试人员任务推荐缺乏个性化,众包测试人员难以快速找到适合自己的任务;且若任务推荐与测试人员的能力、兴趣不匹配,将导致任务质量难以保证,降低平台整体任务完成质量。本发明采用经典机器学习算法-xgboost,结合移动应用众包测试场景,对移动应用众包测试人员进行任务的实时个性化推荐,能有效提升测试质量,缩短测试人员搜索任务花费的时间。
本发明的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:
图1:众包测试人员兴趣与能力特征。
具体实施方式
下面详细描述本发明的实施例,所述实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。
本发明基于经典机器学习算法-xgboost,结合移动应用众包测试实际场景,选取合适的特征,对不同用户进行不同任务的个性化精准推荐。
Xgboost是eXtreme Gradient Boosting的简称,是传统boosting方法的一种。对于包含n个样本m个特征的训练集Data={(xi,yi)},i=1,2,...,N,Xgboost预测值由多个分类回归树(classification and regression tree,CART)构成的集成模型所得。Xgboost算法中模型学习的目标函数考虑损失函数和正则项两部分,正则项用于控制模型复杂度,避免过拟合。结合移动应用众包测试实际场景,Xgboost算法综合考虑多种用户及待推荐任务的特征,且随着这些特征(如用户年龄,用户学历,用户历史任务完成情况)等值的改变,模型易于迭代,易于实时更新,且针对不同的用户、不同的阶段能做到完全智能化的个性化推荐。
本发明的详细步骤描述如下:
步骤1:数据获取与标注:
1.1移动应用众包测试平台历史数据获取
通过python脚本爬虫的方式,在移动应用众包平台--Test i n中随机选取10万位测试人员作为数据集,将他们的个人信息(包含学历、性别、职业、所在地区、年龄、专业、个人研究方向等数据)及他们完成的历史任务、任务完成效果等相关历史数据全部获取,并对部分缺失值进行均值填充。
1.2特征选取
特征选择方法是在不更改原始特征的前提下从原始数据集中选择有代表性的特征子集,防止模型过拟合,减少计算量。在本方法中,结合移动应用众包测试的特点与专家的经验,对步骤1.1中获取的数据集进行特征人为选择,经过特征提取后得到了新的数据集。特征选择主要是通过皮尔森相关系数、随机森林模型等选择充分代表数据集的特征,减少特征的数量,以实现降维的目的,因此,减少了过度拟合的风险,提高了模型的泛化能力本方法结合移动应用测试的特性,基于现有移动应用众包测试平台人员组织管理方法,得出了如图1所示的能表示众包测试人员兴趣与能力的全部特征,包括:基本信息:用户年龄、性别、学历;个人活跃度:响应速度、任务邀请接受率、参与任务类型数、月均参与任务数、参与任务总数;测试能力:测试结果接受率、平均测试结果得分、平均加权bug数;个人诚信度:任务完成率、诚信保障金。
1.3数据集的标注
由于本发明要解决的问题是对移动应用众包测是任务进行个性化推荐,实际上为多分类问题,即对用户进行与任务之间的匹配(分类)。在本发明中,根据任务类型,将任务分为兼容性测试,性能测试,压力测试、UI(User Interface)测试、安全性测试和功能测试和其他类型,分别作为类别1,2,…,6,7。根据步骤1.2得到的数据集中的任务所属类型进行编号,再将任务对应的编号作为标签,对步骤1.2得到的数据集进行标注,得到新的带标签的数据集。
1.4训练集与测试集的划分
在本发明中,使用训练集的数据来训练模型,然后用测试集上的误差作为最终模型在应对现实场景中的泛化误差。有了测试集,想要验证模型的最终效果,只需将训练好的模型在测试集上计算误差,即可认为此误差即为泛化误差的近似,只需让训练好的模型在测试集上的误差最小即可。在本发明中,按照测试集:训练集=2:8的数量比例对步骤1.3得到的数据集进行划分。
1.5数据清洗
为了保证模型的训练效果,对数据中的脏数据进行清洗,确保数据的准确与可靠性。在本方法中,将脏数据定义为数据格式非法,逻辑上不合理的数据,以及该众包平台开发人员用于测试该平台某项功能是否正确而提交的测试数据。如“用户年龄352岁”等数据为脏数据,需要将该类数据从步骤1.4得到的数据集进行清洗,得到新的数据集,以保证模型的准确性。
1.6数据重采样
为了保证分类模型训练的准确性,对步骤1.5得到的训练集中具有相同编号的样本个数进行统计,如果不同l abe l之间的数据量差距过大,超过10:1,则对数据量少的样本进行上采样,对数据量大的样本进行下采样。
步骤2:模型的训练与评价
2.1模型建立
在本发明中,采用Xgboost算法对测试任务进行推荐。Xgboost算法是经典机器学习算法,属于boost ing算法的一种。Boost ing算法的思想是将许多弱分类器集成在一起形成一个强分类器。XGBoost是一种提升树模型,它是将许多树模型集成在一起,形成一个很强的分类器,所用到的树模型则是CART回归树模型。
XGBoost算法思想就是不断地添加树,不断地进行特征分裂来完成一棵树的构建。每次添加一个树,实际上是学习一个新函数,去拟合上次预测的残差。我们训练完成时会得到k棵树。当预测一个样本的分数时,根据这个样本的特征,在每棵树中会落到对应的一个叶子节点,每个叶子节点就对应一个分数,最后只需要将每棵树对应的分数加起来就是该样本的预测值。
在本方法中,将推荐问题映射为分类问题,即要把用户分在最适合的任务类别中。通过步骤1.6得到的数据集,xgboost中的决策树不断拟合真实结果,进而对某个任务进行打分。常见的机器学习分类算法还有Logi st ic Regress ion,SVM,深度神经网络等。由于xgboost算法相对于以上算法具有无需人工特征交叉、可解释性强、无需计算发杂的核函数等优势,故本发明基于xgboost算法对众包测试任务推荐模型进行建模。
2.2模型训练
损失函数用来评价模型的预测值和真实值不一样的程度,损失函数越好,通常模型的性能越好。在本方法中,损失函数如下:
其中,
2.3模型评价
本发明中,采用AUC(Area Under Curve)作为评价指标。AUC被定义为ROC曲线下与坐标轴围成的面积,显然这个面积的数值不会大于1。又由于ROC曲线一般都处于y=x这条直线的上方,所以AUC的取值范围在0.5和1之间。AUC越接近1.0,检测方法真实性越高;等于0.5时,则真实性最低,无应用价值。在本场景中,AUC达到0.7即可满足上线标准;当AUC小于0.7时,表明模型仍需迭代,具体提升方法可以从以下方案中选择:
(1)增加数据集中的样本量,
(2)修改xgboost模型中的最大树深度,防止过拟合,
(3)结合实际场景,增加更多的特征。
步骤3:模型应用
在模型满足上线要求,即AUC大于等于0.7时,可用于任务推荐。具体过程为,获取待推荐任务的用户的相关信息,即步骤1.2中所列出的特征,将这些信息作为输入,放入步骤2.3中训练好的xgboost模型中,将会得到对不同任务的打分,按照打分从高到低的顺序对任务进行排序,即可实现众包测试任务在线个性化推荐。
尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在不脱离本发明的原理和宗旨的情况下在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。
- 一种基于xgboost的移动应用众包测试任务推荐方法
- 基于学生能力匹配的众包测试任务分配方法