测试中的众包



回归测试是产品质量工作中非常重要的一部分。 而且,产品越多,开发速度越快,则需要付出更多的努力。

Yandex学习了如何使用评估员来扩展大多数产品的手动测试任务-远程员工按时兼职工作,如今,除常规测试员外,数百名评估员还参加了Yandex产品测试。

这篇文章说:

  • 您如何设法使手动测试任务尽可能正规化,并培训数百名远程员工?
  • 您如何设法将流程置于工业轨道上,如何在各种环境中进行测试,并在速度和质量上都能承受SLA;
  • 他们遇到了什么困难以及如何解决(有些还没有决定);
  • 评估人员的测试对Yandex产品的开发做出了哪些贡献,如何影响发布的频率和通过的错误数量。

文本基于我们的May Heisenbug 2018 Piter会议上Olga Megorskaya的报告的笔录:



从报告发布之日起,一些数字就发生了变化,在这种情况下,我们在括号中指出了实际数据。 以下是第一人称视角:

今天,我们将讨论使用众包技术来扩大手动测试任务。

我的职位很奇怪:专家评估部门主管。 我将尝试举例说明我的工作。 在Yandex中,我有两个主要的责任载体:



一方面,这与众包有关。 我负责我们的众包平台Yandex.Tolok。

另一方面,如果您尝试给出一个通用定义,则可以将这些团队归因于“大量非生产性职位空缺”。 它包括许多不同的事物,包括我们最近的项目之一:在人群的帮助下进行手动测试,我们称之为“评估者测试”。

我在Yandex中的主要活动是将图片中的左右两列放在一起,并尝试使用众包优化批量生产中的任务和流程。 今天,我们将仅以测试任务为例进行讨论。

什么是众包?


让我们从众包开始。 我们可以说,这是在专家的专业技能非常昂贵或难以扩展的情况下,用所谓的“人群智慧”代替一位特定专家的专业技能。

众包已在各个领域积极使用了很多年。 例如,NASA非常喜欢众包项目。 在那里,在“人群”的帮助下,他们探索并发现了银河系中的新天体。 这似乎是一项非常艰巨的任务,但是在众包的帮助下,它可以简化为一个相当简单的任务。 在一个特殊的站点上,张贴了由太空望远镜拍摄的成千上万张照片,它们会问任何想要在其中搜索某些物体的人。 并且当许多人发现与他们所需的对象可疑相似时,那么高级专家已经建立联系并开始进行探索。

一般而言,众包是一种方法,当我们执行一些大型的高级任务并将其分为许多简单且同质的子任务,许多独立执行者将这些任务聚集到一起时。 每个表演者都可以解决一个或几个这些小任务,最终他们共同为一个大的共同事业工作,并为一项高级任务收集了丰硕的成果。

Yandex众包


我们已经开始几年来开发我们的众包系统。 最初,它用于与机器学习有关的任务:收集训练数据,配置神经网络,搜索算法等。



我们的众包生态系统如何工作? 首先,我们有Yandex.Toloka 。 这是一个开放的众包平台,任何人都可以在该平台上注册为客户(发布任务,为他们定价,收集数据)或注册为执行者(找到有趣的任务,完成任务并获得小额奖励)。 几年前,我们推出了天花板。 现在,我们有超过一百万的注册艺术家(我们称他们为艺术家),并且系统中每天大约有17,000人完成任务。

自从我们最初着眼于与机器学习相关的任务创建Toloka以来,传统上习惯于由toloker执行的大多数任务对于一个人来说都是非常简单和琐碎的任务,但是对于算法而言仍然非常困难。 例如,查看一张照片并说出它是否包含成人内容,或者收听录音并解密您听到的内容。

就性能和有助于收集的数据量而言,Toloka是一个非常强大的工具,但使用起来却并非易事。 图片中的人穿着黄色巴拉克拉法帽,因为托洛克的所有表演者都是匿名的,顾客也不知道。 要管理成千上万的匿名者,要确保它们完全满足您的需要,并不是一件容易的事。 因此,到目前为止,我们并没有解决所有的任务,而是要依靠这一绝对“狂热”的人群来解决。 尽管我们为此奋斗,但我稍后会再详细说明。

因此,对于更高级别的任务,我们有更高级别的执行者。 这些人就是我们称为评估员的人。 “评估者”这个词可能有点奇怪。 它来自“评估”一词,也就是“评估”,因为最初我们使用评估师来收集对搜索结果质量的主观评估。 然后将此数据用作机器学习搜索排名功能的目标。 从那时起,很多时间过去了,评估人员开始执行许多其他任务,所以现在这是家喻户晓的词:任务已更改,但该词仍然存在。

实际上,我们的评估员是Yandex的全职员工,但是却是兼职和完全远程的。 这些人是在自己的设备上工作。 我们仅与他们进行远程交互:我们选择他们,进行远程培训,与他们进行远程合作,并在必要时进行远程解雇。 对于其中大多数人,我们在生活中从未与人相交。 他们按照白天或晚上对自己方便的时间表进行工作:他们的最低标准相当于每周大约10-15个小时,并且这次可以以适合自己的方式进行锻炼。 评估员解决了各种问题:他们与搜索,技术支持,一些低级翻译和测试有关,我们将在后面讨论。

通常,无论我们承担什么任务,最有才华的人总是在评估工作组中脱颖而出,他们的工作表现更好,对他们而言,这项工作更有趣。 我们将他们挑出来,给他们赋予超级扬声器的冠名,这些家伙已经在执行策展人的更高级别的职能:他们检查其他人的工作质量,向他们咨询,支持他们,等等。

而且只有在金字塔的最顶端,我们才有第一位全职员工坐在办公室并管理这些流程。 这样的人才已经很少了,他们已经处于更高的水平,并且具有很强的技术和管理技能,实际上很少。 这样的系统使我们得出的结论是,这些“高级”人员的单位建立了管道并管理着生产链,其中涉及数十,数百甚至数千人。

就其本身而言,这种方案并不新鲜,但是成吉思汗成功地应用了它。 她具有一些我们尝试使用的有趣属性。 第一个特性是可以理解的-这样的方案很容易扩展。 如果一项任务需要突然开始做更多的事情,那么我们就不需要在办公室中寻找额外的空间来在某个地方安置一个人。 总的来说,我们几乎不会考虑什么:只需投入更多的钱,聘请更多的艺术家使用这笔钱,并且可能会从这些艺术家中培养出更多有才华的人才,并且整个系统将继续扩展。
第二个特性(令我惊讶的是),无论应用了哪个主题领域,这种金字塔都能很好地复制。 这也适用于我们今天要讨论的领域-手动测试任务。

人群测试


当我们在人群的帮助下开始测试过程时,最大的问题是缺少肯定的参考。 没有经验可以参考,他们说:“好吧,这些家伙做到了,他们已经在人群的帮助下进行了与我们非常相似的赛道测试,那里一切都很好,这意味着我们一切都会很好。” 因此,我们只需要依靠自己的个人经验,这些经验与测试的主题领域是分开的,而与建立类似的生产过程有关,而在其他领域。

因此,我们必须尽我们所能。 我们该怎么办? 从本质上讲,将一项任务分解为不同难度级别的任务,并将其分散在金字塔的各个楼层。 让我们看看我们得到了什么。

首先,我们查看了Yandex中测试人员忙于完成的任务,并要求他们有条件地将这些任务分散在不同的难度级别。 这是“医院平均值”:



他们估计只有57%的时间花在复杂的高级任务上,大约20%的时间花在每个人都想摆脱的非常低级的例程上,以及花在更复杂的任务上,这些任务也可以委派。 受这些数据的鼓舞,表明几乎有一半的工作可以转移到某个地方,我们着手进行人群测试。

我们的目标是什么?

  • 发布准备就绪时,使测试不再是生产过程中定期出现的瓶颈,而是等待测试通过。
  • 释放我们日常工作中出色,非常聪明的高级专家(专职测试人员),让他们从事真正有趣的高级任务。
  • 增强我们测试产品的各种环境。
  • 学习处理峰值负载是因为我们的测试人员说它们经常承受不均匀的负载。 即使平均而言,一个团队可以应付任务,但是当出现高峰时,要花很长时间就可以解决。
  • 由于在Yandex中我们仍然在某些项目上花费大量资金进行外包测试,因此我们认为我们希望用所花费的资金获得更多的结果,以优化我们的外包支出。

我要强调的是,在这些目标中,没有任务要用人群代替测试人员,以某种方式侵犯了测试人员等等。 我们要做的只是帮助测试团队,消除了底层程序。

让我们看看最终的结果。 我将立即说,测试的主要任务现在不是由最低级别的“金字塔”执行,而是由托克们执行,而是由评估员(我们的全职员工)执行。 此外,除了最后,我们将主要讨论它们。

评估人员现在正在为我们执行回归测试的任务,并且他们在进行各种民意测验,例如“查看此应用程序并留下您的反馈”。 现在大约有300人有资格完成全面的追索任务( 请注意:自报告成为500人以来 )。 但是这个数字是有条件的,因为我们建立的系统可以为任意数量的人工作:我们需要的数量。 现在,我们的生产需求已经覆盖了大约这么多人。 这并不意味着他们随时准备着执行任务:由于评估员的工作时间表很灵活,因此随时都有100-150人准备联系。 但是表演者的数量差不多。 当您只需要收集用户的非正式反馈时,诸如民意测验之类的简单任务,我们就会遇到更多的人:成千上万的评估者参与了此类民意测验。

由于这些人使用自己的设备工作,因此每个评估员都有自己的个人设备。 默认情况下,这是台式机和某种移动设备。 因此,我们在评估员的个人设备上测试我们的产品。 但是很显然,它们没有所有可能的设备,因此,如果我们需要在一些罕见的环境中进行测试,则可以通过设备场使用远程访问。

现在,人群测试已作为约40个( 约:现在60个 )Yandex服务和团队的标准生产过程使用:邮件,磁盘和浏览器(移动和台式机),地图和搜索,以及许多很多谁 这很好奇。 当我们为2017年秋天的第三季度末制定计划时,我们有一个雄心勃勃的目标:至少以某种方式(即使是通过欺诈,甚至通过贿赂)吸引至少五个团队,这些团队将在人群的帮助下使用我们的测试流程。 我们非常有说服力的每个人都说:“不要害怕,来吧,试试看!” 但是仅仅几个月之后,我们就拥有了数十个团队。

现在,我们正在解决另一个问题:如何设法连接越来越多希望加入这些流程的新团队。 因此,我们可以假设现在这已经成为Yandex中的标准做法,并且进展顺利。

我们在生产指标方面做了什么? 现在我们每天要进行约3,000例回归测试( 注意:截至2018年10月,已经有7,000例 )。 根据大小,测试运行需要几个小时到(高峰)2天。 大多数通过一天之内的几个小时。 与使用外包期间相比,引入这种系统使我们可以将成本降低约30%。 这使团队平均可以多次发布很多次,因为这些发布开始以开发可用的速度通过,而不是有时会成为瓶颈的测试速度。

现在,我将尝试说明我们通常如何构建生产流程,这使我们可以采用此方案。

基础设施


让我们从技术基础架构开始。 那些已经将Toloka视为平台的人,可以想象一下它的界面是什么样的:您可以登录系统,选择您感兴趣的任务,然后完成它们。 对于内部员工,我们有一个Toloka内部实例,除其他外,我们在其中为评估人员分配各种类型的任务。



图为该界面的外观。 在这里,您可以看到评估者可用的任务:这里有一些测试任务和几种不同类型的任务,本例中的评估者也知道如何执行。 这样,该人来到了,看到了当前可供他使用的任务,单击“继续”,接收了测试用例以进行分析,然后开始执行它们。

农场是我们基础设施的重要组成部分。 并非所有设备都在手边,因此实际上的任务是一对:一个测试用例和一个需要检查它的环境。 当某人单击“继续”按钮时,系统将检查是否有可测试的环境。 如果存在,那么该人员只需承担任务并在个人设备上对其进行测试。 如果不是,则我们通过远程访问将其发送到服务器场。



该图以移动服务器场为例,显示了外观。 因此,一个人可以远程连接到位于我们农场的办公室中的手机。 对于Android,我们使用OpenSTF开源解决方案。 对于iOS来说,没有很好的解决方案-就我们已经开发出自己的解决方案而言(但我们下次会详细讨论),因为我们找不到开源或购买有意义的产品。 显然,如果我们没有配备正确设备的人员,则该服务器场很有用。 它的另一个重要优点是该农场具有很高的利用率:无论何时何地有人进来,我们都可以随时将其发送到该农场。 这比亲自交出设备要好,因为交还给某人的设备仅在该人准备工作时才可用。

我们从技术的角度讨论了如何将其用于评估人员,现在对我来说最有趣的部分是:如何组织此作品的原则。

人群中生产组织的原则


对于我来说,在这个项目中,有趣的是,主题领域似乎非常具体,但是组织生产的所有原则都是相当普遍的:与组织其他主题领域的大规模生产所使用的原则相同。

1.形式化


第一项原则(不是最重要的原则,而是最重要的一项,我们的“鲸,象和乌龟”之一)是任务的形式化。 我想你们所有人都自己知道这一点。 几乎所有任务都是最容易做的。 与坐在房间旁边您旁边的同事解释比较困难,这样他才能完全满足您的需求。 并且任务是确保数百名您从未见过的,可以在任意时间远程工作的艺术家能够准确地完成您对他们的期望-这个任务要复杂几个数量级,并且意味着进入的门槛很高开始这样做。 在测试任务的上下文中,与我们有关的任务当然是需要传递和处理的测试用例。

为了能够在人群测试中使用它们,应该使用哪些测试用例?

首先-事实证明这根本不是事实-测试用例通常应该如此。有时候有团队来找我们,要求评估人员进行测试,我们说:“太好了,带上您的测试用例,我们将通过他们!”此时此刻,客户很难过,离开了,并不总是回来。经过几次这样的呼吁,我们意识到在这个地方我可能需要帮助。因为如果某个服务团队的测试人员自己定期测试其服务,那么他实际上并不需要完整的,描述良好的测试用例。而且,如果我们想将此任务委托给大量执行者,那么我们就不能没有它。

但是,即使在完全有测试用例的情况下,它们也几乎总是只有那些深深地沉浸在服务中的人才能理解。和所有其他不在上下文中的人一样,很难理解这里正在发生什么以及需要做什么。因此,重要的是修改测试用例,以使那些不了解上下文的人可以理解它们。

最后一件事:如果将测试任务简化为严格通过正式案例,则确保不断更新,更新这些案例非常重要。

我会举几个例子。



例如,上图显示了我们本地的Tolok服务的一个很好的案例,在该案例中,您需要检查艺术家个人资料的正确性。一切都按步骤分解。有每一个步骤。期望每一步都会发生什么。任何人都清楚这种情况。



这是一个不那么成功的例子。通常,尚不清楚发生了什么。描述似乎在那里,但实际上-它是什么,您想从我这里得到什么?这种情况-并非马上就过去,它们通过得非常糟糕。

我们如何建立测试用例的形式化流程,以便首先,使它们全都不断出现并得到补充,其次,它们对于评估者来说是足够容易理解的?

通过反复试验,我们得出了这个方案:



我们的客户,即某种服务或团队,以方便他的任意形式来描述他所需要的那些测试用例。

之后,我们的精明评估师将审视此自由编写的文本,并将其转换为格式正确的测试用例,这些用例格式良好并以小细节绘制。为什么这个评估师很重要?因为他本人就是那些从完全不同的领域接受测试用例的人,并且了解测试用例应有多详细才能让同事理解。

在那之后,我们运行一个案例:我们给评估员分配任务并收集反馈。该过程经过组织,因此,如果一个人不了解测试用例中对他的要求,则可以跳过该过程。通常,在第一次之后,通过率会很高。无论如何,无论我们在上一阶段对测试用例进行形式化的程度如何,都永远不可能猜测出人们将难以理解的东西。因此,首次运行几乎始终是测试版本,其最重要的功能是收集反馈。在收集反馈后,收到评估者的意见,了解他们的理解和不理解,我们重写并再次追加测试用例。经过几次迭代,我们得到了很酷的,非常明确制定的测试用例,每个人都可以理解。

这种整理有一个有趣的副作用。首先,事实证明,对于许多团队来说,这通常是一个杀手feature。每个人都来找我们说:“您真的可以为我编写测试用例吗?”这是我们吸引客户最重要的事情。第二个效果,对我来说是意外的-测试用例中的顺序还有其他挂起的效果。例如,我们有技术写手来编写用户文档,并且在这样精心设计且易于理解的测试用例的基础上进行编写对于他们而言要容易得多。以前,他们不得不分散服务以找出需要描述的内容,但是现在我们可以使用清晰明了的测试用例。

我举一个例子。



这是测试用例通过我们的绞肉机之前的样子:非常少,描述字段没有填写,它说“好吧,看一下应用程序中的屏幕截图”,就是这样。



这就是他改写后的样子-在每一步都增加了步骤和期望。已经好了很多。使用这样的测试用例会更加令人愉快。

2.可扩展的学习


在我看来,下一个任务是我最喜欢的,最有创意的。 这是一个可扩展的学习任务。 为了使我们能够以这样的数量运作-“这里有200名评估员,这里有1000名评估员,这里通常每天有17,000名代工工作”-重要的是要能够快速且可扩展地培训人员。


当您花更多的时间在培训任意数量的人员而不是培训特定的专家上时,进入这样的系统非常重要。 例如,这就是我们在外包时遇到的问题。 专家们很酷,但是为了使他们沉浸在工作环境中,服务花费了很多时间,因此在产出方面,我们仍然只有一个人沉浸在环境中六个月。 这是一个非常可扩展的方案。 事实证明,接下来的每个人都需要在任务环境中沉浸另外六个月。 并且有必要扩大这个瓶颈。

对于任何大量空缺,我们不仅通过测试,还通过多种渠道招募人员。 对于测试,我们这样做。 首先,我们吸引了原则上对测试任务感兴趣的人员,即初级测试人员级别的人员,对于他们来说,这是一个很好的开始,让他们沉浸在主题领域中。 但是,市场上此类人员的数量仍然有限,我们需要在雇用人员方面没有任何限制,以使我们永远不依赖表演者的数量。

因此,除了寻找专门针对这些任务的测试人员之外,我们还聘请了一些仅对评估人员的一般职位做出回应的人员。 我们正在推广这种方法:无论您雇用什么人,如果有很多人,您都可以构建一个流程,以便选择最有能力的人,并指导他们解决所追求的问题。 在测试的上下文中,我们进行培训,以便使甚至对测试一无所知的任意人至少可以教一些最低限度的基础知识,以便他们开始了解一些东西。 由于采用了这种方法,我们永远不会遇到绩效低下的人,并且为我们完成这些任务的人数也会减少,这全都取决于我们愿意花多少钱来解决。

我不知道您遇到这个主题的频率,但是在各种流行的科学文章中,尤其是关于机器学习和神经网络的文章中,通常都写道机器学习与人类训练非常相似。 我们给孩子看10张带有球像的卡片,而这是他第11次会明白并说:“哦! 这是一个球!” 实际上,计算机视觉和任何其他机器学习技术在本质上也起作用。

我想谈谈相反的情况:可以用与培训机器相同的正式方式来构建培训人员。 为此我们需要什么? 我们需要一套培训-一套预先标记好的示例,可以在该示例上对某人进行培训。 我们需要一个控制集,我们可以在该控制集上检查他的学习是否良好。 就像在机器学习中一样,您需要一个测试集,我们可以在该测试集上了解我们的功能通常如何工作。 我们需要一个正式的指标来衡量所执行工作的质量。 正是基于这些原则,我们在最简单的回归测试任务中进行了培训。


图为这次培训对我们的看法。 它由几个部分组成。 首先是理论,然后是实践,然后是考试,我们在考试上检查一个人是否了解问题的实质或不了解。



让我们从理论开始。 显然,对于评估者执行的任何任务,我们都有一条庞大,沉重,功能齐全的指令,其中包含大量示例,其中详细介绍了所有内容。 但是没有人读。

因此,为了验证理论知识实际上已经摆在一个人的脑海中,我们总是提供使用说明的权限,但是在此之后,我们使用我们有条件地称为“理论检验”的方法。 这是一个测试,我们在其中预载了重要的问题和正确的答案。 问题可能是最愚蠢的。 我认为对于您来说,这些将是可笑的例子,但是对于那些一生中第一次面临测试任务的人来说,这些根本不是显而易见的事情。 例如:“如果遇到几个错误,我是否需要启动几张票(每个错误一张)或将所有内容一堆丢掉?” 或:“如果我想截取屏幕截图,但屏幕截图对我不起作用怎么办?”

这些问题可以是非常不同的,任意低级的问题,对于我们来说重要的是,一个人在研究理论的阶段要独立地处理这些问题。 因此,理论测试包含以下类型的问题:“我发现了几个错误,我应该买一张还是几张?” 如果一个人选择了错误的答案,就会出现红色错误,说:“不,等等,正确的答案有所不同,请注意。” 即使一个人没有阅读说明,他也无法通过该测试。



下一点是练习。 如何确保对测试一无所知并且对测试员的空缺没有特别反应的人理解下一步该怎么做? 在这里,我们来谈谈这套训练课程。 我认为您会立即发现这张图中的大量错误。 这就是评估者的培训任务的样子:这是您面前的屏幕快照,查找其中的所有错误。 怎么了 计算器伸出来了。 还有什么 布局去了。



或者这是一个更复杂的示例,带有星号。 主要收件人的邮箱已打开,我是这封信的发件人。 所以我看到这样的照片在我面前。 这里的错误是什么? 这里最大的问题是显示了密件,作为信件的收件人,我看到了密件中的身份。

在通过了几十个这样的示例之后,即使是一个距离测试无穷远的人,在通过测试用例时,也已经开始了解它是什么以及对他的进一步要求。 实际部分是一组示例,在这些示例中,我们已经知道错误了; 我们请该人找到他们,最后我们给他看:“看,虫子在这里”,以便他将自己的猜测与我们的正确答案相关联。



最后一部分就是所谓的考试。 我们有一个特殊的测试程序集,我们已经知道了该程序集的错误,然后请人员进行检查。 在这里,我们不再向他显示正确和错误的答案,而只是看看他能找到什么。

该系统的优点及其可扩展性在于,所有这些过程都是绝对自主地进行的,而无需经理的参与。 我们可以随心所欲地管理所有人员:每个想要阅读说明的人,每个想要进行理论测试的人,每个想要进行练习的人-所有这些操作都只要按一下按钮就可以自动进行,而我们一点也不担心。

最后一部分-考试-也由所有想要参加的人通过,然后,我们终于开始仔细研究它们。 由于这是一个测试程序集,并且我们事先知道所有错误,因此我们可以自动确定一个人发现错误的百分比。 如果它很低,那么我们就不用再看了,我们会写一个自动节拍:“非常感谢您的努力!” -请勿让此人进入战斗任务。 如果我们发现几乎所有的bug都已被发现,那么那时候一个已经在联系的人正在研究如何正确发行票证,从我们的指示来看,根据该程序正确完成了多少事情。

如果我们发现一个人独立地掌握了理论和实践,并且顺利通过了考试,那么我们就将这些人放到了我们的生产过程中。 该方案的好处在于它不取决于我们经过的人数。 如果我们需要更多的人,我们只会在入口处淹没更多的人,而在出口处得到更多。

这是一个很酷的系统,但是,当然相信您之后已经可以使用现成的测试仪,这是很天真的。 即使是已经成功完成我们培训的人,也有很多问题需要快速帮助。 在这里,我们面临着许多意想不到的问题。

人们问了很多问题。 此外,这些问题可能是如此奇怪,以至于您一生中都不会想到,应将这些问题的答案添加到说明书中,在测试或类似说明中进行描述。 如果您考虑一下,这是正常情况。 当我们每个人都处于自己不认识的领域时,我们每个人都不太可能提出对专家而言似乎很愚蠢的问题。

在这里,这样的事实加剧了这一事实,因为我们有数百人,即使我们每个人都问一个特定的人,问一个愚蠢问题的可能性也很低,总的来说:“啊! 天哪 这是怎么回事? 它使我们不知所措!”

有时问题似乎很奇怪。 例如,一个人写道:“我不明白“点击撤消”是什么意思。” 他们对他说:“朋友! 这与单击“取消”按钮相同。” 他:“哦! 谢谢你 现在我明白了一切。”

或另一个人说:“一切似乎都很好,但是有些地方有些破损,我不知道这是不是一个错误。” 但是片刻之后,他本人就知道他从哪里开始了测试任务。 损坏的照片可能不是很正常。 他在这里明白了,很好。

或者这是一个很有趣的例子,它使我们长期陷入研究的深渊。 一个男人来说:



每个人都不知道发生了什么事,他来自哪里-我们非常努力,描述了测试用例-直到我们发现他有一些特殊的浏览器扩展程序,该扩展程序从俄语翻译成英语,然后从英语译成俄语,最后我们得到了一些异端。

实际上,存在许多这样的问题,对每个问题的研究都花费一些非零的时间。 在某个时候,我们的客户-使用评估人员进行测试的Yandex团队服务-开始大声疾呼:“听着,如果我们自己测试所有这些,与坐在这些聊天室里回答问题相比,我们将花费更少的时间这些奇怪的问题。”

因此,我们来到了一个两级聊天系统。 有条件的洪水泛滥,我们的评估人员与策展人沟通,这些“戴着帽子的人” – 90%的问题在此得到解决。 而且只有最重要和最复杂的问题才会升级为服务团队坐在的专用聊天室。 这极大地便利了所有团队的生活,每个人都从容地叹了口气。



我正在谈论的这些恐怖不是那么可怕。 好消息是所有这些过程都非常迅速地融合在一起。 任何首次启动总是非常糟糕的。 在上图中,可以看到6个连续的相同回归起点。

看看工作人员在回答问题上花了多少时间,这是评估人员第一次不了解他们在说什么以及他们希望从他们那里得到什么。 他们发现了一些错误,他们开了很多票,根本没有。 因此,第一次是恐怖-恐怖-恐怖,第二次是恐怖-恐怖,到第三次,所有过程的百分之八十会聚在一起。 然后是一个很酷的工作流程:评估人员习惯了新任务,每次启动之后,我们都会收集反馈,补充测试用例并整理出一些东西。 事实证明,这是一个很酷的工厂,只需单击一个按钮即可工作,不需要任何专职专家的参与。

3.质量控制


质量控制是一个非常重要的要点,否则所有这些都将不起作用。

我们的评估员按计件工资工作:他们的所有任务都得到了非常清晰的监管和量化,每个工作单元都有自己的标准费率,并且他们为完成的单元数收取报酬。 托洛卡(Toloka)的工作方式完全相同,一般而言,它适合任何人群。 该系统具有许多优点,非常灵活,但是也有其缺点。 在计件工资制中,任何承包商都将尝试优化其工作-在任务上花费尽可能少的时间和精力,以使每单位时间获得更多的金钱。 因此,任何基于众包的系统都可以保证以您允许的最低质量运行。 如果您无法控制质量,那么它将下降到可能下降的最低水平。

好消息是您可以战斗,可以控制。 如果我们可以量化工作质量,那么任务就可以归结为一个相当简单的任务。 从理论上讲。 实际上,它并不是那么简单,尤其是在测试任务中。 因为测试不同于我们在评估员的帮助下解决的许多其他繁重任务,所以它处理罕见事件,并且各种统计数据在这里都表现得很差。 如果原则上很少有错误,很难理解一个人实际发现错误的频率。 因此,我们必须一次变态并使用几种质量控制方法,这些方法将共同为我们提供表演者所用质量的某种画面。

首先是检查重叠部分。 “重叠”意味着我们将每个任务分配给几个人。 我们自然会这样做,因为每个测试用例都需要在几种环境中进行测试。 因此,事实证明,在环境A,B和C中检查了相同的测试用例。我们从三个人那里得到了三个结果-通过了相同的测试用例。 然后我们看结果是否有分歧。

有时,可能会在一个环境中发现一个错误,而在另外两个环境中却没有发现。 也许是真的,或者是某个人的错误:一个人发现了一个额外的错误,或者这两个人被骗了却找不到任何东西。 无论如何,这是一个可疑的情况。 如果遇到这种情况,那么我们将发送额外的重新检查,以确保并检查谁是对的,谁应该受到指责。 这样的计划使我们能够抓住那些例如在不需要的地方开了额外票,或者在需要的地方错过了票的人。 同时,我们查看票证的打开方式是否正确,是否一切都与该过程是否相符:是否添加了屏幕截图,是否必要(是否添加了清晰的说明)等等。

除此之外-特别是仅涉及票证的正确性-自动控制某些似乎很琐碎但会严重影响工作流程的事情很好且方便。 因此,我们会自动检查故障单是否存在应用程序,是否添加了屏幕截图,故障单中是否有评论,或者只是关闭了它而无需查看花费了多少时间来识别可疑案件。 在这里,您可以提出许多不同的启发式方法并将其应用。 这个过程几乎是无止境的。

检查重叠是否是一件好事,但由于我们仅检查有争议的案例,因此它给出的评估有些偏颇。 有时您想进行诚实的抽查。 为此,我们使用测试运行。 在培训阶段,我们专门组装了测试程序集,其中我们事先知道哪里有错误,哪里没有错误。 我们使用类似的启动程序进行质量控制,并检查一个人发现了多少个错误以及错过了多少个。 这是一种很酷的方法,它提供了最完整的世界图景。 但是使用起来非常昂贵:尽管我们仍在收集新的测试程序集……每隔几个月,我们很少使用这种方法。

最后一个重要点:即使我们已经完成了所有工作,我们也必须明确分析为什么跳过了这些错误。 我们通过测试案例的步骤检查是否有可能找到该错误。 如果有可能,但是那个人错过了,那么那个人就是一个杯子,你需要对他产生一些影响。 如果不存在这种情况,则需要以某种方式补充,更新测试用例。

结果,我们将所有质量指标简化为评估者的单个评分,这会影响他们的职业和我们系统中的命运。 一个人的评分越高,他越会收到更多困难的任务和奖品领取。 评估者的等级越低,被解雇的可能性就越大。 当一个人的工作稳定且评分较低时,我们最终会与他分手。

4.委派


我想谈谈我们的可扩展金字塔方案的最后一个支柱是委托任务。



我会再次提醒我们手动测试任务的金字塔外观。 我们有“高级”人员-这些人员是专职测试人员,服务团队代表,他们为他们需要测试的服务编写培训计划,为需要测试的内容制定策略,以自由形式编写主要的测试用例。

此外,我们拥有最有才华的评估人员,可以将测试用例从自由形式转换为正式形式,帮助其他评估者,在聊天室为他们提供支持,并进行交叉检查和选择性质量控制。
此外,我们的许多表演者都在一步步地进行回归分析。

接下来,我们有Toloka,我们没有忘记它。现在我们处于实验阶段:我们知道可以为Toloka中的非个人人群提供最简单的测试案例。它将更加便宜和快捷,因为那里有更多的表演者。但是,在我们构建此系统的过程中。现在,我们只给出最简单的方法,但是我希望在几个月后,我们会得出一个事实,那就是我们将在此进行更多的委派。



监视此金字塔的正确发展非常重要。首先(这些问题经常被问到我,因此我想主动回答),众包不是拒绝支持人群的高级专家的工作,而是一种扩展工具。我们不能拒绝这个金字塔的顶端,我们的“头”,我们只能使用众包向该系统添加更多的人手,因此几乎免费地扩展它确实非常容易。

其次,这不是火箭科学,但您需要不断记住这一点:如果在每个级别上解决了该级别最困难的任务,那么整个故事将正常运行。粗略地说,如果可以在金字塔的多个级别上完成同一操作,则必须在最低级别上完成。这不是一个静态的故事,而是一个动态的故事。我们从这样一个事实开始,只有“高级”人员才能完成某些任务,逐步完善流程并在下面降低这些任务,从而扩大规模并降低整个流程的成本。

我经常听到这样的话:“为什么要打扰这个花园,最好是使一切自动化并在上面花精力。”但是众包并不能代替自动化,而是一件平行的事情。除了自动化之外,我们还这样做。这样的系统一方面使我们可以腾出时间从事自动化工作的工人,另一方面,可以很好地使流程正式化,从而使自动化更加容易。


最后,我会再次提醒我们整个故事的样子。我们从获取自由形式的测试用例开始。我们通过评估员几次运行它们,收集反馈,指定它们。之后,我们变得很酷,已经舔了测试用例。与此同时,我们招募了许多人,使他们接受自动培训系统的训练,而在出口处,我们只让那些能够自己应付所有步骤并意识到我们向他想要的人。我们得到了训练有素的人群。他在形式化测试用例上为我们工作,我们控制其质量:我们不断对其进行检查,分析遗漏错误的用例,以改善流程。

这样的系统对我们有效。我不知道从现实的角度来看,我的故事现在是否对某人有用,但我希望它可以使我们思考的范围更广,并认为可以用这种方式解决某些任务。因为-我们经常碰到这一点-你们中的一个人可能已经意识到:“嗯,也许这在某个地方可行,但绝对不适合我。我的任务如此艰巨,以至于根本与我无关。”但是我们的经验表明,几乎所有主题领域的任何任务,如果正确分解,形式化并纳入清晰的流程,都可以在人群的帮助下进行至少部分扩展。

Heisenbug 2018 Piter , : 6-7 Heisenbug , , .

Source: https://habr.com/ru/post/zh-CN425247/


All Articles