掌桥专利:专业的专利平台
掌桥专利
首页

一种基于密文信息的众测工人推荐方法

文献发布时间:2024-04-18 20:01:23


一种基于密文信息的众测工人推荐方法

技术领域

本发明属于众包软件测试领域,尤其适用于众包软件测试中的众测工人推荐领域,其目的在于解决区块链隐私保护环境下现有众包软件测试工人推荐方法无法直接使用的问题,是一种帮助任务请求者寻找合适的众测工人,保证众测任务高质量完成的方法。

背景技术

众包任务是指一个公司或机构把过去由员工执行的工作任务,以开放自愿的形式外包给大众网络的做法。术语“众包软件测试”表示“支持软件测试的所有众包活动”,也就是说,所有支持软件测试的众包方法、技术、工具和平台都属于众包软件测试(以下简称众测)领域。众测活动中主要参与者包括任务请求者、众测工人和众测平台。其中,任务请求者发起测试请求,将待测软件和测试任务提交至众测平台;众测工人在众测平台接收任务,测试完成后提交测试报告;众测平台根据众测工人提交的报告进行审查和奖励,最终形成交付报告提供给任务请求者。基于区块链的众测平台主要包含五个角色,分别是登记机关、任务请求者、众测工人、评估工人和区块链平台。与基于中心化众包平台的众包软件测试相比,基于区块链的众测平台增加了区块链平台、评估工人和登记机关三个角色,去除了中心化的众测平台。其中区块链平台替代众包平台的角色,在区块链平台可以实现众测流程,为众测任务公平、公开、可信的推荐合适的众测工人;评估工人主要对众测工人提交的众测报告进行审核评估;登记机关主要负责用户身份的管理和认证。任务请求者发布众测任务旨在有限的预算内检测尽可能多的错误。然而,并不是所有的众测工人都擅长完成众测任务。合适的众测工人可以发现更多的错误,而不合适的众测工人可能会遗漏错误且雇用他们需要不小的花销。因此,为一项测试任务推荐一组合适的工人是必要的。

针对众测任务推荐合适的众测工人是一类重要的研究问题。可靠有效的众测工人推荐方法可以为众测任务推荐较少的众测工人,并且推荐的工人能够高质量完成该众测任务。关键字匹配是一类经典的众测工人推荐方法,该方法需要任务请求者和众测工人分别向众测平台指定任务具体信息和众测工人擅长领域。由于众测工人和众测平台存在雇佣关系,在中心化的众测平台执行推荐任务可能会存在不公平的现象。例如,众测平台把收益高、任务简单的众测任务推荐给指定的工人。区块链是一个去中心化的分布式技术,在区块链上我们可以通过智能合约自动、公开、公正的完成众测工人推荐,这解决了在中心化众测平台中执行推荐任务存在的不公平问题。由于区块链的透明性,众测用户(包括任务请求者和众测工人)在区块链存储的隐私信息会暴露给其他用户。为了避免隐私信息的泄漏,众测用户通常把隐私信息加密后存储到区块链上,这使得传统基于关键字匹配的众测任务推荐方法不再适用。因此,基于密文信息的众测工人推荐方法研究成为了一个重要的挑战。

对此,本发明提出了一种基于密文信息的众测工人推荐方法。本发明从众测工人擅长领域和众测任务信息的相似度以及众测工人历史行为两个维度来为众测任务推荐合适的众测工人。首先,为每位众测用户(包括众测工人和任务请求者)生成一个非对称加密公私钥对,通过密钥转换和内积匹配技术计算众测工人和众测任务的相似度,与众测任务相似度越高的众测工人越能胜任该众测任务;其次,使用信誉值来表征众测工人在历史众测任务的行为的好坏,信誉值较高表明该众测工人在历史任务中表现良好,能够诚实可信可信的完成众测任务,采用堆排序算法在匹配众测任务要求的工人中选取信誉值较高的工人作为最终推荐结果。

通过该方法,可以帮助任务请求者在区块链隐私保护环境下快速而准确地得到与众测任务相匹配的众测工人,进而高质量的完成众测任务。这不仅降低了在众测工人推荐过程中众测用户隐私泄漏的风险,还有效加快众包软件测试的流程,推动了众包软件测试的发展。

发明内容

本发明通过提供一种基于密文信息的众测工人推荐方法,来有效解决目前区块链隐私保护环境下现有众包软件测试工人推荐方法无法使用的问题。利用匹配相似度和信誉值,可以帮助任务请求者准确地寻找合适的众测工人,保障众测任务高质量的完成。

为达成上述目标,本发明提出了一种基于密文信息的众测工人推荐方法。首先,计算出众测工人集合中每个众测工人擅长领域expertise和众测任务的相似度match_degree,match_degree越高的众测工人越适合该众测任务;在此基础上,我们选取相似度match_degree较高的众测工人的ID数组IdArray;其次,我们从IdArray数组中寻找信誉值reputation_value高的工人ID,信誉值reputation_value较高表明该众测工人在历史任务中表现良好,能够诚实可信可信的完成众测任务,然后采用堆排序算法在匹配众测任务要求的工人中选取信誉值较高的工人作为最终推荐结果。具体而言,该方法包括下列步骤。

1)登记机构初始化。登记机构首先启动初始化阶段。需要向登记机构传入四个参数m,n,t,λ。其中,m,n用于生成解密加密内积的矩阵,整数t∈Z

2)众测用户注册。众测用户首先生成公私钥密码对,并把公私钥密码对上传至登记机构,登记机构使用主私钥对众测用户的pk进行签名并颁发证书Cert,注册用户凭借证书Cert加入区块链网络。加入到区块链网络后,登记机构为该注册用户计算相应的转换矩阵,该转换矩阵可以将相似度密文信息转换为基于密钥S

3)基于相似度的众测工人筛选。众测工人首先会进行擅长领域添加,将具体领域的关键字转化成一个向量Expertise

请求者进行任务发布时,首先使用uni-gram分词算法将任务信息转化成一个向量Task

请求者以Task′i作为参数调用智能合约,随后智能合约按照公式(4)依次计算Task′i与各Expertise

4)基于信誉值的众测工人排序。本步骤的目的是在前一步骤的基础上选取信誉值reputation_value更高的工人,基于此,首先对相似度符合要求的工人进行构建大顶堆,比较基准是工人的信誉值reputation_value,之后,依次取堆顶工人ID保存到数组中,每次取工人ID的时候需要对堆进行调整。将选取的工人ID数组作为最终的推荐结果推荐给任务请求者。

进一步,其中上述步骤1)的具体步骤如下:

步骤1)-1:起始状态;

步骤1)-2:输入四个整数m,n,t和λ;步骤1)-4:根据λ生成系统主密钥对

步骤1)-5:根据m和n生成一个m*(n-m)的初始矩阵Ts;

步骤1)-6:将矩阵Ts和单位矩阵E拼接生成解密矩阵Ss;

步骤1)-7:输出系统主密钥对,解密矩阵Ss和初始矩阵Ts;

步骤1)-8:结束状态。

进一步,其中上述步骤2)的具体步骤如下:

步骤2)-1:起始状态;

步骤2)-2:输入登记机构初始化生成的四元组

步骤2)-3:众测用户生成公私钥密码对并发送到登记机关;

步骤2)-4:登记机关使用系统主私钥msk对用户的公钥进行签名生成证书Cert;

步骤2)-5:判断注册用户的类型,如果是众测工人,则执行步骤2)-5,如果是任务请求者,则执行步骤2)-12;

步骤2)-6:定义任务请求者集合的循环变量i=0,该众测工人的下标为cur;

步骤2)-7:计算第i个任务请求者和当前注册众测工人的转换矩阵M

步骤2)-8:i=i+1;

步骤2)-9:判断i是否大于任务请求者的总数,如果是,则执行步骤2)-9,否则执行步骤2)-6;

步骤2)-10:众测工人凭借登记机构颁发的证书Cert加入到区块链网络;

步骤2)-11:众测工人总数加一;

步骤2)-12:区块链网络为该众测工人初始化一个私密信誉值0,下一步执行步骤2)-18;

步骤2)-13:定义众测工人集合的循环变量j=0,该任务请求者的下标为cur;

步骤2)-14:计算第j个众测工人和当前注册任务请求者的转换矩阵M

步骤2)-15:j=j+1;

步骤2)-16:j是否大于众测工人的总数,如果是,则执行步骤2)-16,否则执行步骤2)-13;

步骤2)-17:众测任务请求者凭借登记机构颁发的证书加入到区块链网络;

步骤2)-18:任务请求者总数加一;

步骤2)-19:输出众测用户集合;

步骤2)-20:结束状态。

进一步,其中上述步骤3)的具体步骤如下:

步骤3)-1:起始状态;

步骤3)-2:输入众测用户集合;

步骤3)-3:定义众测工人集合的循环变量i=0;

步骤3)-4:为众测工人Worker

步骤3)-5:i=i+1;

步骤3)-6:i是否大于众测工人的总数,如果是则执行步骤3)-6,否则执行步骤3)-3;

步骤3)-7:任务请求者Requester

步骤3)-8:定义相似度数组Array和最终相似度符合的众测工人ID数组Ids;

步骤3)-9:定义众测工人集合的循环变量i=0;

步骤3)-10:基于公式(4),计算每个众测工人擅长领域Expertise

步骤3)-11:将相似度密文通过转换矩阵M

步骤3)-12:使用私钥S

步骤3)-13:i=i+1;

步骤3)-14:判断i是否大于众测工人的总数,如果是则执行步骤3)-14,否则执行步骤3)-9;

步骤3)-15:对相似度数组进行降序排序;

步骤3)-16:输出相似度排序前2K的众测工人ID保存到ID数组Ids;

步骤3)-17:结束状态。

进一步,其中上述步骤4)的具体步骤如下:

步骤4)-1:起始状态;

步骤4)-2:输入相似度符合的众测工人ID的数组Ids;

步骤4)-3:定义变量i=K;

步骤4)-4:判断i是否小于等于2K,如果是则执行步骤4)-5,否则执行步骤4)-11;

步骤4)-5:定义变量t=i-1,l=2*i,r=2*i+1,largest=i;

步骤4)-6:判断r小于2K和工人Ids[r]的信誉值大于工人ID[i]的信誉值是否同时成立,如果是则执行步骤4)-7,否则执行步骤4)-8;

步骤4)-7:将r的值赋给largest;

步骤4)-8:判断l小于2K和工人Ids[l]的信誉值大于工人ID[i]的信誉值是否同时成立,如果是则执行步骤4)-9,否则执行步骤4)-10;

步骤4)-9:将l的值赋给largest;

步骤4)-10:判断largest的值是否等于i,如果是则执行步骤4)-11,否则交换Ids[i]和Ids[largest],并将largest的值赋给i,执行步骤4)-4;

步骤4)-11:将t的值赋给i;

步骤4)-12:判断i的值是否小于1,如果是则执行步骤4)-13,否则执行步骤4)-4;

步骤4)-13:定义一个长度为k的数组ids,指针变量index=0;

步骤4)-14:取堆顶元素Ids[0],放到ids[index]中;

步骤4)-15:index=index+1;

步骤4)-16:交换Ids[0]与Ids[2K-index],并将i的值修改为0;

步骤4)-17:判断i是否小于等于2K-index-1,如果是则执行步骤4)-18,否则执行步骤4)-24;

步骤4)-18:定义l=2*i,r=2*i+1,largest=i;

步骤4)-19:判断r小于2K和工人Ids[r]的信誉值大于工人Ids[i]的信誉值是否同时成立,如果是则执行步骤4)-20,否则执行步骤4)-21;

步骤4)-20:将r的值赋值给largest;

步骤4)-21:判断1小于2K和工人Ids[l]的信誉值大于工人ID[i]的信誉值是否同时成立,如果是则执行步骤4)-22,否则执行步骤4)-23;

步骤4)-22:将l的值赋给largest;

步骤4)-23:判断largest是否等于i,如果是则执行步骤4)-24,否则交换Ids[i]和Ids[largest],并将largest的值赋给i,执行步骤4)-17;

步骤4)-24:判断index是否小于K,如果是执行步骤4)-25,否则执行步骤4)-14;

步骤4)-25:输出保存工人ID的ids数组;

步骤4)-26:结束状态。

附图说明

图1为本发明实施中的一种基于密文信息的众测工人推荐方法的流程图。

图2为图1中登记机构初始化流程图。

图3为图1中众测用户注册流程图。

图4为图1中相似度计算并筛选流程图。

图5为图1中基于信誉值的众测工人排序流程图。

具体实施方式

为了更了解本发明的技术内容,特举具体实施例并配合所附图式说明如下。

图1为本发明实施的一种基于密文信息的众测工人推荐方法的流程图。

一种基于密文信息的众测工人推荐方法,其特征在于,包括下列步骤。

S1登记机构初始化,登记机构需要做一些初始化的工作,包括生成系统主公私密钥对和解密矩阵Ss。

S2众测用户注册,众测工人和任务请求者需要生成自己的公私密钥对并发送给登记机构,登记机构使用主私钥对用户的公钥进行签名颁发证书,该证书是用户加入区块链的唯一凭证。对于众测工人,登记机构需要计算该众测工人和每个任务请求者的转换矩阵;对于任务请求者,登记机构需要计算该任务请求者与每个众测工人的转换矩阵。随后,众测用户凭借证书加入区块链网络,如果众测工人加入区块链网络,区块链网路会为其分为初试的私密信誉值。

S3基于相似度的众测工人筛选,众测工人加入区块链网络之后需要手动补充擅长领域。当任务请求者发送众测任务时,会和每个众测工人计算相似度密文,然后通过转换矩阵转换成Ss可以解密的密文,之后通过Ss解密即可得到明文,然后对相似度进行排序并选取相似度高的作为筛选结果。

S4基于信誉值的众测工人排序,筛选出符合的众测工人之后,需要在这些工人里面选取信誉值较高的众测工人作为推荐结果。众测工人拥有越高的信誉值代表该众测工人在历史众测任务中发现更多的Bug。

图2为登记机构初始化。登记机构首先启动初始化阶段。需要向登记机构传入四个参数m,n用于生成解密加密内积的矩阵,一个整数t∈Z*用于整数向量加密和λ用于生成系统主公钥mpk和系统主密钥msk。随后登记机构选择一个矩阵T

步骤1:起始状态;步骤2:输入四个整数m,n,t和λ;步骤3:整数t用于整数向量加密;步骤4:根据λ生成系统主密钥对;步骤5:根据m和n生成一个m*(n-m)的初始矩阵Ts;步骤6:将矩阵Ts和单位矩阵E拼接生成解密矩阵Ss;步骤7:输出系统主密钥对,解密矩阵Ss和初始矩阵Ts;步骤8:结束状态;

图3为众测用户注册流程图。众测用户(包括众测工人和任务请求者)首先在生成公私钥密码对,并把公私钥密码对上传至登记机构,登记机构使用主私钥对众测用户的pk进行签名并颁发证书Cert,注册用户凭借证书Cert加入区块链网络,如果注册用户是众测工人,登记机构会计算其与所有任务请求者的转换矩阵,同理如果注册用户是任务请求者,登记机构会计算其与所有众测工人的转换矩阵。具体步骤如下:

步骤1:起始状态;步骤2:输入登记机构初始化生成的四元组

图4为基于相似度的众测工人筛选流程图。众测工人首先会进行擅长领域添加,然后,将众测任务加密后编译成智能合约发布在区块链上,随后,触发智能合约计算众测任务与各众测工人的相似度,最后将相似度高的众测工人作为筛选结果。具体步骤如下:

步骤1:起始状态;步骤2:输入众测用户集合;步骤3:定义众测工人集合的循环变量i=0;步骤4:为众测工人Worker

图5为基于信誉值的众测工人排序流程图。本步骤的目的是在前一步骤的基础上选取信誉值更高的工人,基于此,首先对相似度符合要求的工人进行构建大顶堆,比较基准是工人的信誉值,之后,依次取堆顶工人ID保存到数组中,每次取工人ID的时候需要对堆进行调整。具体步骤如下:

步骤1:起始状态;步骤2:输入相似度符合的众测工人ID的数组Ids;步骤3:定义变量i=K;步骤4:判断i是否小于等于2K,如果是则执行步骤5,否则执行步骤11;步骤5:定义变量t=i-1,l=2*i,r=2*i+1,largest=i;步骤6:判断r小于2K和工人Ids[r]的信誉值大于工人ID[i]的信誉值是否同时成立,如果是则执行步骤7,否则执行步骤8;步骤7:将r的值赋给largest;步骤8:判断1小于2K和工人Ids[l]的信誉值大于工人ID[i]的信誉值是否同时成立,如果是则执行步骤9,否则执行步骤10;步骤9:将l的值赋给largest;步骤10:判断largest的值是否等于i,如果是则执行步骤11,否则交换Ids[i]和Ids[largest],并将largest的值赋给i,执行步骤4;步骤11:将t的值赋给i;步骤12:判断i的值是否小于1,如果是则执行步骤13,否则执行步骤4;步骤13:定义一个长度为k的数组ids,指针变量index=0;步骤14:取堆顶元素Ids[0],放到ids[index]中;步骤15:index=index+1;步骤16:交换Ids[0]与Ids[2K-index],并将i的值修改为0;步骤17:判断i是否小于等于2K-index-l,如果是则执行步骤18,否则执行步骤24;步骤18:定义l=2*i,r=2*i+1,largest=i;步骤19:判断r小于2K和工人Ids[r]的信誉值大于工人Ids[i]的信誉值是否同时成立,如果是则执行步骤20,否则执行步骤21;步骤20:将r的值赋值给largest;步骤21:判断1小于2K和工人Ids[l]的信誉值大于工人ID[i]的信誉值是否同时成立,如果是则执行步骤22,否则执行步骤23;步骤22:将l的值赋给largest;步骤23:判断largest是否等于i,如果是则执行步骤24,否则交换Ids[i]和Ids[largest],并将largest的值赋给i,执行步骤17;步骤24:判断index是否小于K,如果是执行步骤25,否则执行步骤14;步骤25:输出保存工人ID的ids数组;步骤26:结束状态。

综上所述,本发明目的在于解决区块链隐私保护环境下现有众包软件测试工人推荐方法无法使用的问题。利用基于相似度的众测工人筛选和基于信誉值的众测工人排序,可以帮助任务请求者寻找合适的众测工人,保证众测任务高质量完成的方法。

相关技术
  • 空调循环系统、空调循环系统的控制方法及空调
  • 具有制冷剂循环系统的家用制冷器具和用于运行具有制冷剂循环系统的家用制冷器具的方法
  • 换热系统、循环系统以及循环系统的控制方法和相关设备
  • 换热装置、冷媒循环系统和换热装置的出风控制方法
技术分类

06120116547601