面向众包测试的统一任务分配系统

面向众包测试的统一任务分配系统
文章图片
一、项目背景与意义
随着互联网时代的飞速前进 , 众包测试作为群体智能发展到一定新高度后诞生的新兴领域 , 其具有十分广阔的未来前景 。 众包软件测试通过在线招募未知工作者群体,采用众包模式来进行分布式测试 , 这在很大程度上弥补了传统软件测试所面临的用户多样性不足、反馈较少等问题 。 但在目前的测试实践中 , 众包工人主要是通过浏览的方式找寻自己感兴趣的测试任务并拉取执行 , 这导致存在很大部分测试任务长期不能被执行或未被执行从而使得整体的测试需求覆盖率较低 。 此外 , 测试任务的执行者通常由一组随机人员组成 , 不合适的测试人员可能会引入虚假的Bug , 降低整体测试质量 。 如何将任务分配给合适的工人执行以提升测试质量 , 实现更为高效的群体智能模式仍然是当前互联网众测平台所面临的巨大挑战 。
为了解决上述问题 , 本文从群体智能的角度考虑测试任务与测试人员之间的适配对众包测试的质量控制作进行探索思考 , 综合团队与个人这两种参与方式的共同特性 , 对任务分配过程进行建模 , 设计出一种面向众包测试的统一任务分配系统 , 综合多方因素 , 给出最佳的任务分配方式 , 并制定相应的任务分配机制 , 通过采取一定的激励措施来减少用户的流失量 , 进一步提高有效缺陷检测率和测试需求覆盖度 , 这对提高整体测试质量 , 提升平台的运行效率具有重要意义 。
二、项目内容与技术路线
作为协作式众测平台下的一子系统 , 任务分配系统作用于在众包测试中的任务执行过程 , 通过分析任务与工作者的特性 , 制定合理在线任务分配策略 , 并有针对性地将任务分配给工人 , 可以提高任务完成结果的质量 。
面向众包测试的统一任务分配系统
文章图片
图1.系统流程图
本系统为基于任务优先级的多目标动态任务分配处理流程(系统整体工作流程如图1所示) , 主要包括任务的适配、动态任务分配与测试任务的定价 。 具体来说 , 待分配的任务为经线下分解处理的由测试需求构成的任务集合 , 到达众测平台的工人进行拉取任务 , 系统首先结合任务对候选众包工人在能力、经验、意愿度、信誉度等多维度的需求进行全面考虑 , 并采用测试需求广度优先遍历与计时器方法实现推拉式结合的任务分配机制 , 使得所有测试需求尽可能被覆盖 , 并保证了可以让工人按个人意愿决定是否执行被分配的工作任务 , 且未被执行的任务将被重新回收进行二次分配 , 这样可以保证在不影响工人正常执行任务的情况下使得众包测试系统的任务分配更人性化 , 促进系统灵活性的提升;除此之外 , 通过设计基于用户选择的任务定价机制以激励众包工人的工作积极性 , 高质量地完成任务 。 在经过上述一系列举措 , 任务分配系统这旨在提高有效缺陷检测率以及测试需求关键点覆盖度 , 进而解决传统众包测试效率低下的问题 , 提升众测平台的运行效率 。 综上所述 , 本系统主要通过设计以下四个功能模块实现众测平台中的任务分配机制 。
测试任务适配模块 。 众测平台上的都保存着每个众测工人的身份信息(工人姓名 , 所属单位等)以及历史测试提交数据(新注册用户除外) , 如测试报告得分 , 测试报告提交时间 , 报名与实际参加任务次数等 , 并通过这些数据的计算来从能力 , 经验 , 意愿度 , 信誉度四个维度来进行刻画众包工人画像 , 并以上述四种适配因素为评估度量计算得出最终综合评估值用来衡量具体候选众包工人对应于待执行测试任务的综合匹配度 , 将其作为任务分配的基础工作 。
动态任务分配模块 。 在测试过程中 , 以众包工人到达众包平台拉取任务作为触发任务分配的事件 , 在任务与工人适配成功后 , 即工人对任务的综合评估值达到了任务发包方的预计要求 , 系统将以广度优先测试遍历为目标 , 从任务优先队列中挑选取优先级最高的测试任务推送给该工人 。 若工人在规定时间内执行测试 , 计时器失效;否则 , 任务将被系统回收;若工人拒绝任务并拉取新任务时 , 任务定价机制被触发 , 执行任务的奖励积分(又称 , “执行积分”)被重新设定 , 该任务将被系统回收 , 等待下一次分配 。
测试任务定价模块 。 对于众包模式而言,任务定价是其核心要素 。 为了激励众包工人更加积极主动地完成被分配的测试任务 , 系统为每个测试任务设定一定份额的执行积分进行鼓励 。 当众包工人接受系统分配的待执行测试任务并在一定时间内顺利完成时 , 其将获取相应执行积分;否则 , 如果众包工人某一次拒绝了测试任务 , 此任务的执行积分将被重新计算以增加再次分配时被工人接受的可能性 , 使得众包测试系统的任务分配更人性化 。
众包工人执行状态记录模块 。 工人每次拉取任务时系统经过适配后会为其分配任务 , 测试任务的分配记录以及其被执行的次数系统都将进行保存 。 与此期间 , 系统对众包工人在分配到测试任务之后采取的决策措施(接受/拒绝)进行监督并记录 , 以此统计任务分配的完成率等系统评估指标作为对任务分配系统进行有效性验证的衡量依据 。 本模块采取与其它三个模块异步进行的方式在整个众包测试过程中不间断运作 。
为了保证系统的高可用 , 高性能与高并发特性 , 本系统采用前后端分离的模式 , 前端利用Angular框架实现 , 后端通过SpringBoot微服务框架实现 。 系统使用关系型数据库MySQL进行存储各类数据 , 包括用户基础数据 , 过程数据和结果数据等 , 同时利用Redis作为分布式缓存以实现无状态服务 。
三、项目案例成效
为验证任务分配系统的可靠性 , 以及系统相关算法设计的有效性 , 本节将从依托本平台进行的三个众包测试案例进行分析 , 通过对众包工人行为的记录数据进行多维度对比 , 完成对系统的评估工作 。 三件案例皆以全国大学生软件测试大赛为背景 , 报名人员为来自国内各大高校的学生 。
表1.测试案例数据统计表
面向众包测试的统一任务分配系统
文章图片
记录工人执行操作并做数据统计 , 结果如表1所示 。 从指标任务完成率上看 , 三个案例的完成度分别为43.7%、55.7%和87.3% , 任务的完成比例逐渐增加 , 且增长率从12%到31.6%出现显著提升;从有效缺陷检测率上看 , 在案例一中有效检测率只有29.8% , 而在案例三中已经高达68.5%;最后是测试需求覆盖率 , 案例一的覆盖程度只有一半左右 , 案例二中需求的覆盖就已经突破了90% , 而在案例三中测试需求已实现100%全覆盖 。 结合表数据进行分析可以很容易发现 , 任务完成率、有效缺陷检测率和测试需求覆盖率三者系统评估指标在每一次众包测试案例中都出现较大幅度的提升 , 这是因为系统在适配过程中 , 需要以工人们的历史测试数据为依据 , 随着数据累计的增多 , 系统为工人们分配的任务将更加精确从而提高测试效率 。
从另外一方面来看 , 评估指标的增长意味着任务分配系统中存在的“老”用户也是逐渐增多 。 结合参赛数据统计进行分析 , 案例一中报名参赛人数为168人 , 提交测试报告为61人 , 案例二中报名参赛人数为384人 , 提交测试报告为171人 , 无论是报名人数还是实际参与率(报名人数中提交测试报告人数的比例)存在明显增加 。 而案例三中报名人数只有85人 , 考虑到该次比赛于8月举办 , 学生们几乎都已放假在家 , 因此愿意花费额外时间参加比赛的人员比例太低 , 但具有历史测试记录有36人 , 实际参与率为42.4% , 与案例二中的实际参与率44.5%相差不大 。
综上所述 , 任务分配系统在完成任务的合理分配和提高整体测试效率方面取得了良好的成果 , 同时能够帮助众包工人对众测平台的粘性培养 , 降低测试成本有着积极的促进作用 , 符合预期 。
四、致谢
本文由南京大学软件学院智能软件工程实验室2018级硕士许金撰写
【面向众包测试的统一任务分配系统】感谢国家自然科学基金项目:基于可理解信息融合的人机协同移动应用测试研究(61802171) , 国家重点研发计划:信息产品及科技服务集成化众测服务平台研发与应用(2018YFB1403400)的支持


    推荐阅读