众包近年来引起了很多关注。维基百科定义众包为:“通过征集大量人群,特别是来自在线 区而非传统员工或供应商的贡献来获取所需服务,想法或内容的过程”。 这种新颖模型的显着例子包括Amazon Mechanical Turk,Threadless2 , InnoCentive,Wiki-pedia和Waze等等,所有这些系统都非常成功,这表明众包可以利用低成本的群体智慧,并获得丰厚的产出。
由于近年来智能手机功能的提升,包括可靠的GPS,功能强大的摄像头和高速 络环境,手机用户可以在没有任何进一步困难的情况下完成众包任务。 因此,出现了移动众包,移动众包是描述在智能手机或其他移动设备上处理的众包活动的术语。
将软件测试任务添加到移动众包中,将使测试人员完成群体测试任务变得更加方便。
通过移动众包测试,移动应用程序可以被众测,这些移动应用程序使用的Web服务也可以在不同的硬件环境, 络状况下进行测试。
为了使更多的人群参与软件测试,特别是移动应用程序和Web服务测试。我们提供了iTest:一个用于软件测试的移动测试平台。通过iTest,测试人员可以随时随地参与Web服务和移动应用程序测试任务。因此,我们可以在短时间内收集来自不同测试环境的更有用的测试结果。
关键问题
测试人员管理
在移动测试平台上需要进行测试人员管理,但是,这不是它唯一的责任。
测试人员管理子系统还应该存一些历史信息,包括测试人员什么时候参与了哪一个测试任务以及测试人员提供的测试 告的质量,这些历史信息可以用来分析测试人员的测试习惯,比如在哪个时间段他更喜欢接受测试任务,他对哪种测试任务感兴趣。
测试人员选择
测试人员选择的目标是确保每个测试任务都由合适的测试人员完成,他们可以很好地完成测试任务,同时减少总测试任务的数量并节省成本。
如果是一个应用程序或服务是专为特定人群而设计的,选择合适测试人员非常重要,
因为我们希望测试人员将像最终用户一样使用该应用程序。 如果被测软件用于更普遍的使用,应包括代表所有类型使用者的测试人员。
激励机制
在众包系统中,激励机制非常多。
这些系统的激励可以是金钱,乐趣, 交,赢得声望,利他主义,学习新事物,无意识
副产品,创造自利资源及其组合。 在这些激励措施中,金钱是最流行的方式。 如果奖金是太低,那么很少有测试人员会接受测试任务,但如果金钱奖励设置得太高,许多不熟练的测试人员会为了钱而蜂拥而至,无法保证质量。
测试结果聚合
所有测试人员的测试结果将提交给众包测试平台。 在移动领域众包测试平台,测试结果多为文本日志,有时还有应用程序的屏幕快照等等。不同测试人员的测试结果可能会发生冲突,
如何在不冲突的情况下将测试结果聚合在一起,并为应用程序或服务提供有用的分析也是对移动人群测试平台的挑战。
iTEST介绍
iTest的架构
基于对移动众包测试关键问题的理解,我们提供了一个移动测试框架:iTest
图1显示了iTest的架构,其中包含iTestClient,iTestServer以及目标Web服务和软件。
在iTestServer中,有两个存储库,分别用于存储软件信息和运行日志(或测试结果)。
我们已经收集了超过30,000个Web服务的WSDL地址和相关信息,存储在图1中的软件存储库中。此存储库维护了需要测试的所有服务和软件。
在客户端,我们开发了一个基于PhoneGap的Android应用程序(http://phonegap.com/)目前,我们只在Android平台上实现iTestClient,如图2所示。一旦iTestClient安装在Android手机上,该手机将作为一名被称为iTestWorker的移动软件测试志愿者注册到服务器端。
iTestServer负责管理所有注册的志愿者,安排测试任务和维护测试结果。
当iTestWorker上线时,它会通知iTestServer,后者将回复要测试的Web应用列表,然后用户可以选择要测试的Web应用。同时,手机的下载链接以及要测试的应用程序也会推送到iTestWorker。这些应用程序的运行日志将被收集并传输到iTestServer中的存储库。
ITEST工作流程
如图3所示,Web服务的测试工作流程分为5个步骤:
(1)登录和探测:首先,测试人员通过他们的用户名和密码登录。
登录的时候,计算登录请求与iTestServer的通信的往返时间成本。
(2)信息上传:计算了与iTestServer通信的时间成本后
iTestClient上传了这个时间成本与该测试者及其设备的其他基本信息包括用户名,位置, 络类型等。
(3)测试人员选择:在此步骤中,iTestServer基于每个Web服务,测试人员信息和现有测试结果选择正确的在线的测试人员
(4)调用Web服务:选择测试人员后,确定每个测试人员的服务并推送到相应的iTestClient。 然后测试人员可以选择Web服务
从列表中,阅读其描述并输入必要的内容
客户端获取服务的WSDL文件并解析需求参数后调用此Web服务。
(5)测试结果上传:测试结果信息,包括用户名,测试设备的当前位置,被测Web服务的WSDL地址,输入参数,调用时间,返回结果和往返时间成本,都提交给iTestServer存储到测试结果库中。然后可以将这些测试结果提供给服务开发人员改进他们的Web服务。
iTest测试人员选择算法
为避免在类似的运行环境下反复执行Web服务测试任务,减少测试成本。我们需要设计一种有效的测试人员选择算法,该算法仅将Web服务测试任务分配给一个具有相似的运行环境的测试人员,包括相同的 络类型和附近的地理位置。在陈述我们的算法之前,在这里提供两个定义:
定义1:我们假设,如果两个测试人员在一个地图上的位置小于某个距离R,那么他们将会提供同样的测试结果,所以我们只需要选择其中的一个测试人员即可。这个R被定义为有效的测试半径,在这里我们设置其为5公里。
定义2:假设对于每个在线的测试者T,他的位置是P。其他的测试者如果与P的距离小于R,则称他们是P的同类点,P被成为它们的中心点。
我们选择测试者的基本思想是,选择尽量小的中心点,因为每一个中心点都能代表其所有的同类点。这些中心点及其同类点的结合可以完全覆盖在线用户的位置。幸运的是,我们可以找到一个有效的贪婪算法,总能找到最佳或可接受的近似值来解决这个问题。
首先,我们需要过滤掉使用相同 络类型访问Internet的在线测试人员。
其次,应该从候选人中删除在现有测试 告位置附近的的测试人员。
然后,每个左候选集与其同类点划分为一组,因此我们得到| P’| 所有候选人的子集。
然后是关键步骤,我们的算法贪婪地找到在最后一步中获得的最大子集,并选择中心点(对应于测试者)作为当前Web服务的测试人员。
如果在找到最大子集时存在两个候选子集,则选择其中心点在探测时间上表现更好的那个子集。在从候选者中移除中心点及其同类点之后重复该步骤,直到不再有候选者为止
最后,我们可以为每个Web服务获取所选的测试人员,并将这些测试任务发送给相应的测试人员。
结论
致谢
此文由南京大学软件学院2018级硕士韦志宾翻译转述。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!