帮助我了解QA如何在Scrum中工作

显然我们使用Scrum开发方法。 这里总的来说是这样的:

开发人员试图完成他们的任务。 一般来说,任务需要大部分的冲刺才能完成。 QA pterters Dev发布一些他们可以testing的东西,Dev最终会在Sprint结束之前的一两天内向QA抛出一些错误的代码,并花费其余的时间修复QA发现的错误。 QA永远无法按时完成任务,冲刺难以及时发布,开发者和QA在冲刺结束后的几天内都会感到痛苦。

当可释放的开发任务占用大部分的冲刺时,Scrum应该如何工作?

谢谢大家参加讨论。 因为这是一个相当开放的问题,似乎没有一个“答案” – 下面有很多好的build议。 我将尝试总结一些“带回家”的观点并作出一些澄清。

(顺便说一句 – 这是放这个还是放在'答案'中的最好的地方?)

要点思考/采取行动:

  • 需要确保开发人员的任务尽可能小(粒度)。
  • 短跑长度应该根据平均任务长度适当地进行(例如,1周任务的短跑应该至less4周)
  • 团队(包括质量保证)需要在估算时变得更加准确。
  • 考虑同时做一个单独的质量保证冲刺,但是如果这对团队来说是最好的
  • unit testing!

我的意见是,你有一个估计问题。 看起来testing每个function的时间已经不存在了,规划冲刺时只考虑了build筑部分。

我并不是说这是一个容易解决的问题,因为它比任何事情都更为常见。 但是,可以帮助的事情是:

  • 将QA视为开发团队的成员,并将其纳入冲刺计划和估算中。

  • “可开发的开发任务”不应占用大部分的冲刺。 完整的工作特点应该。 尝试收集每种任务的开发时间与QA时间的度量标准,并在估算未来冲刺时使用这些度量标准。

  • 你可能需要检查你的积压,看看你是否有非常粗糙的纹理特征。 尝试将它们分成较小的任务,这些任务可以轻松进行估算和testing。

总之,你的团队似乎还没有find真正的速度,因为在进行短跑的估算和规划时,有些任务没有被考虑。

但最终,估算不准确是您在基于敏捷或基于瀑布的项目中发现的艰难的项目pipe理问题。 祝你好运。

这里的晚会有点迟,但这是我写的内容。

现在,Scrum是一种项目pipe理方法,而不是开发方法。 但在我看来,制定发展进程至关重要。 没有一个,你花大部分时间来反应,而不是build立。

我是一个testing第一人。 在我的开发过程中,我首先构buildtesting来执行需求和devise决策。 你的团队如何执行这些? 我试图在这里指出的是,你根本不能“把东西扔在围墙上”,并期待什么,但没有发生。 testing团队要么失败,要么testing得不好,从而让问题无法解决,或者开发人员(通过不构build解决问题的产品)。 我并不是说你必须先写testing – 我不是一个好战分子或者一个testing先行的传道者 – 但是我说你必须有一个合适的stream程来制作质量好,testing好的,可以随时生产的代码达到迭代的目的。

我已经在这个我称之为死亡螺旋方法的开发方法论中。 我以这样的模式为政府(美国)build立了多年的软件。 这样做效果不好,花了很多钱,产生的代码太晚,代码不好,对士气也没有任何作用。 当你花时间去修复你本可以避免的错误的时候,你无法取得任何进展。 我被这件事绝对打败了。

您不希望质量检查发现您的问题。 你真想把他们弄出去工作 我的目标是让QA大放光彩,因为一切正常。 当然,这是一个目标。 在实践中,他们会find东西。 我不是超人类 我犯错了。

回到调度…

在我目前的工作中,我们做Scrum,我们就是不这样说。 我们不是在这里贴标签,而是按时生产高质量的代码。 每个人都在船上。 我们告诉QA什么时候准备好testing什么。 如果他们提早两周来敲门,他们可以和手交谈。 每个人都知道时间表,每个人都知道发布会是什么,每个人都知道,产品在进行质量保证之前必须按照广告的方式工作。 那么这是什么意思? 你告诉QA:“不要打扰XYZ的testing – 它被破坏了,直到C版本才会被修复”,如果他们去testing这个,你就把它指回去,告诉他们不要浪费你的时间。 也许是苛刻的,但有时是必要的。 我不是粗鲁的,但每个人都需要知道“规则”,什么应该被testing,什么是“已知问题”。

你的pipe理必须在船上。 如果他们不是你会有麻烦。 QA无法运行显示,开发组也无法完全运行。 所有的团体(即使这些团体只是每个团队中的一个人,或者戴着几个帽子的人)都必须位于同一个页面:客户,testing团队,开发人员,pipe理层和其他任何人。 通常,一半以上的战斗是交stream。

也许你在冲刺中比咬得更厉害。 情况可能如此。 你为什么这样做? 要符合时间表? 如果是这样,pipe理层需要介入并解决问题。 如果你给QA的错误代码,期待他们折腾回来。 最好给他们三件事情比八件事情还未完成。 我们的目标是在每次迭代中生成一些完全实现的function集合,而不是把大量的半做的东西放在一起。

我希望这是收到的,因为它的目的是 – 作为一种鼓励而不是咆哮。 就像我刚才提到的那样,我一直在你身边,这不是很有趣。 但是有希望。 你可以在短跑中转身,也许两个。 也许你不会在下一个冲刺中添加任何新的function,只是修复了什么是坏的。 你必须作为一个团队来决定。

另一个用于编写testing代码的小插件:自从采用“先写testing”的方法后,我发现自己对产品的放松程度和自信度都更高。 当我的所有考试都通过了,我有一定的信心,没有他们就没有了。

祝你好运!

在我看来,在需要进行QAfunctiontesting的场景中存在一个资源分配问题,以便在sprint内部完成某个特定function。 在目前为止我发现的与QA相关的Scrum讨论中似乎没有人能解决这个问题,而且这里的原始问题几乎是相同的(至less是相关的),所以我想提供一个部分的答案,并且稍微扩展一下问题。

关于完全冲刺的开发任务的具体原始问题 – 如果通过QA进行functiontesting是“完成”定义的一部分,那么对这些任务进行缓解的一般build议似乎是有意义的。 鉴于可以说4周的冲刺,如果需要大约一周的时间来testing多个开发人员的多个function,那么开发任务大约需要3周的时间,接下来需要花费大约1周的时间才能完成testing任务。 质量保证当然会尽快开始,因为我们认识到,从最后一套交付的function,将有大约一个星期的滞后。 我意识到我们希望尽快获得QA的function,所以在sprint中没有这种类似瀑布的场景,但实际情况是开发通常无法获得真正的价值,直到进入1到3周冲刺。 当然,这里和那里都有点点滴滴,但是大部分的工作是2-3周的发展,然后大约一周的testing剩下的。

所以这里是资源分配问题,我对这个问题的扩展 – 在上面的场景中,QA有时间来testingsprint的计划function(3周的开发任务,上个星期去testing最后提供的function)。 也让我们假设QA在开发1周后开始获得一些可testing的function – 但是QA的第一周以及第四周的开发是什么?

如果QAfunctiontesting是冲刺中function的“完成”定义的一部分,那么看起来这种低效是不可避免的。 QA在第一周将大部分闲置,第四周的开发将基本处于闲置状态。 当然,这个时候自然会有一些东西填满,比如bug修复和validation,devise/计划等等,但是我们基本上以75%的容量来模拟我们的资源。

显而易见的答案似乎是重叠冲刺的发展和质量保证,因为现实是质量保证总是滞后于一定程度的发展。 对产品所有者和其他人的演示将遵循QA冲刺,因为我们希望在显示之前对function进行testing。 这样似乎可以更有效地利用开发和QA,因为我们没有太多浪费时间。 假设我们想让开发人员继续开发和testingtesting,我看不到更好的实际解决scheme。 也许我已经错过了一些东西,我希望有人能为我澄清一些事情 – 否则看起来这个僵硬的方法是错误的。 谢谢。

希望通过在每个冲刺中解决更less的开发任务来解决这个问题。 这导致了以下问题:谁的设置dev的目标? 为什么Dev始终不能达到这些目标呢?

如果开发者不设定自己的目标,那就是为什么他们总是迟到。 这不是实践Scrum的理想方式。 这只是一个渐进的发展过程,需要大量的期限驱动的交付成果,开发人员也没有实际的利益相关者责任。

如果开发商因为知识不够而无法设定自己的目标,那么他们就必须更多地参与其中。

敏捷宣言中概述了四个基本原则。

  1. 相互作用很重要 – 这意味着开发人员,质量保证,项目pipe理人员和最终用户需要多谈多谈。 软件是以计算机的神秘语言编码知识的过程。 为了编码知识,开发人员必须具备这些知识。 [你为什么认为我们称之为“代码”?] Scrum不是一个“写规范 – 抛开横梁”的方法。 这是反 – “写规范 – 扔横梁”

  2. 工作软件很重要 – 这意味着每件开发工具必须导致工作发布。 没有一套错误修复质量保证摔跤,但工作的软件。

  3. 客户协作 – 这意味着开发人员必须与业务分析师,最终用户,企业所有者以及能够帮助他们了解他们正在构build的所有人协作。 截止date与交给客户的下一件事情无关。 如果客户需要X,这是每个人都要做的最重要的事情。 如果项目计划说build立Y,这是一个malarkey的负载。

  4. 响应变化 – 这意味着客户可以重新安排以下冲刺的优先级。 他们不能重新整理冲刺过程(这是疯狂的),但以下所有冲刺都是改变优先事项的候选人。

如果客户开车,那么截止date变得不那么人为的“项目里程碑”,更多的“我们先需要X,然后是Y,而这个东西在Z部分,我们不再需要了,现在有了W,Z就是多余的“。

Scrum规则规定,所有Sprint项目在Sprint结束时需要被“完全testing,可能实现的function”被认为是完整的。 Sprint总是按时结束,团队没有获得信贷,也不允许在Sprint评估中提交任何不完整的内容,包括质量保证。

从技术上讲,这就是你应该需要的。 一个团队承诺进行一定的工作,最终在Sprint结束前两天将其交给QA,QA不及时完成。 所以Sprint的输出是零,他们必须走在客户面前,承认他们在一个月的工作中没有任何performance。

下一次,你会打赌,他们会select较less的工作,并找出如何得到质量保证,以便能够按时完成。

作为一名从事敏捷项目2.5年的QA,这是一个非常困难的问题,我仍然没有全部的答案。

我作为“三联”(两个开发人员配对+一个QA)的一部分工作,我参与了两周迭代开始时的任务和计划会议。 正如阿德里安(Adrianh)上面提到的,QA必须在最初的冲刺计划中听到他们的声音。 特别是如果你和开发人员一起工作的人非常强大,这可能是困难的,但是QA必须坚持自己的真正意思(即不是侵略性或强制性的,但是要尊重真理/ PO和开发人员/技术专家,理解)。 我主张在计划中首先制定质量保证任务,鼓励一种以testing为动力的心态 – 质量保证部门可能必须从字面上推动自己的努力。 有多less人认为软件开发工作,但有几个原因支付股息是相反的;

  1. 质量保证被听到,而不是被问到“那么你将如何testing?” 在Devs之后说了他们的片断(瀑布心态)。

  2. 它允许质量保证部门提出testing想法,同时在真相/采购订单出现时检查验收标准的可testing性(我确实说过,他们必须出席计划会议,而不是我?)填补任何理解上的空白。

  3. 它为testing驱动的方法提供了基础 – 在testing方法被阐明并且任务之后,Devs可以考虑他们将如何产生代码来通过这些testing。

  4. 如果步骤1 – 3是您在迭代的其余时间唯一的TDD活动,那么您仍然比Steve在第一篇文章中假设的情景好一百万倍; “开发人员试图完成他们的任务,通常这些任务需要完成大部分的冲刺任务,QA为开发者释放一些他们可以testing的东西,开发人员在冲刺结束之前的一两天内将一些错误的代码提交给QA,剩下的时间修复QA发现的错误“

毋庸置疑,这有QA的一些警告;

  1. 他们必须准备好将自己的想法提供给Devs和Truth / PO挑战并达成妥协; “QA警察”的态度不会在一个敏捷的团队里洗。

  2. 质量保证任务必须达到一个难以兼顾的平衡,既不能太详细也不能太通用(任务可以写在卡片上,放在“散热器板”上,并在日常会议上讨论 – 需要从“进行中”移动到“完成”在迭代期间)。

  3. QA需要准备计划/评估会议。 不要指望能够出现在用户看不见的用户故事的头顶上,并产生一个testing方法! 开发人员似乎能够做到这一点,因为他们的任务往往更加清晰 – 例如“更改x模块与z组件的接口”或“重构y方法”。 作为质量保证,您需要熟悉在规划之前引入/更改的function,以便了解testing的范围和您可能应用的testingdevise技术。

  4. 自动化testing几乎是必不可less的,并且在迭代的前两天或三天内写入和“失败”,或者至less在开发人员准备好代码时共同参与。 然后,您可以运行testing并查看是否按预期通过(适当的QA TDD)。 这是你如何避免迭代结束时的迷你瀑布。 在开始编码之前,你应该真的向开发者演示testing,以便他们知道瞄准什么。

  5. 我说4是“几乎是必不可less的”,因为有时可以通过人工清单(敢于说脚本!)成功实现预期的行为 – 关键是要提前与开发人员分享这个问题。 跟他们说话

关于上面关于任务主题的第2点,我已经尝试创build一个粒度为半小时到2小时的任务,每个任务对应一个可certificate的工作,例如“添加检查不正确的密码到自动testing-2小时”。 虽然这有助于我组织工作,但是由于其他团队成员的批评过于详细,而且在站在我的立场上,无论是从前一天移动多个任务到完成,还是根本无法移动任何任务,我还没有到他们呢。 人们确实希望每天看到稳定的进步,所以在半天或者一天的时间内创build任务会更有帮助(但是您可以保留自己的“微观任务”清单,以便完成你用来传达整体进展的更大的任务)。

关于上面的第4点和第5点, 您早期准备的自动化testing或人工清单应该只涵盖快乐path或关键接受标准。 一旦这些通过,你可以计划一个额外的任务,最后一轮“探索性testing”在迭代结束时检查边缘情况。 Devs在那段时间所做的事情是有问题的,因为就他们而言,他们是“代码完整的”,除非和直到你发现一个bug。 一些敏捷实践者主张首先尝试边缘案例,尽pipe这也可能是有问题的,因为如果你用完了时间,你可能不会保证接受的标准已经交付。 这是那些取决于用户故事环境和作为质量保证体验的精细平衡决策之一!

正如我刚开始所说的,我仍然没有全部的答案,但是希望以上提供的一些经验值得一读!

听起来像你的开发团队在发布QA之前可能没有做足够的testing。 如果所有的unit testing都通过了,QA周期应该是比较顺利的,不是吗? 他们会发现一些整合错误,但不应该有很多这样的错误,对吧?

我认为这里有几个问题。 首先,我认为开发者的任务可能不够细,或者估计不好,或者两者兼而有之。 Scrum中sprint的全部目的是能够在sprint结束时演示可行的代码。 我提到的两个问题都可能导致错误的代码。

如果开发人员在短跑结束时发布bug代码,我还会看看:

  • 产品所有者是否真的让开发成员负责完成任务? 这就是采购订单的工作,如果没有发生,那么开发商就会松懈。
  • 是开发者使用任何types的TDD。 如果没有,那可能会有很大的帮助。 让开发者习惯于testing他们的代码。 在我工作的地方,我们有这个问题,我的团队专注于在重要的地方做TDD,以便我们不必以后有别人去做
  • 任务/用户故事是否过于一般? 在任务细分中摆动的空间会导致开发者sl </s>不驯。 这又是一个PO问题。

我曾经听到过的一个想法是使用质量保证人作为scrummaster。 他们将出席日常的立场,并能了解开发者所处的位置。 他们可以解决采购订单的问题(假设采购订单可以充分地完成工作)。

我不禁感到,你需要在QA和你的Scrum团队之间进行更多的合作。 这听起来像只在最后发生testing,这是一个问题。 让QA成为团队的一员将有助于识别可以更早更好地testing的事物。

我也觉得你对产品所有者有问题。 他们必须在那里确保每个人都在推动正确的方向。 他们应该确保不仅QA和开发者之间,而且开发者之间有良好的合作。

“当可开发的开发任务占用大部分冲刺时,Scrum应该如何工作?”

正如你已经发现的那样 – 它不能很好地工作:-)你描述的过程听起来不像Scrum,至less不像Scrum那样好。

我不确定你所描述的QA人员是否属于团队的一员,或者是一个单独的团队。

如果他们是一个单独的组,那么这可能是问题的一个重要部分。 他们不会参与团队对完成任务的承诺 – 以及与产品所有者的相关范围谈判。 我从来没有见过一个敏捷团队没有在团队中成为QA技能就能成功。 要么让开发人员拥有大量的testing/质量保证技能 – 要么拥有一个embedded式QA人员,或者拥有三名团队成员。

如果他们在队伍中,那么他们需要在最初的冲刺计划中听到更多的声音。 到目前为止,产品所有者和团队应该清楚你是否过分。

如果是我,我会尝试几件事:

  • 如果他们不在那里,那么就得到团队中的QA /testing人员
  • 与产品所有者和团队长期聊聊什么才算“完成”。 这听起来像是一些开发者仍然处于“交付QA”前的Scrum思维模式。
  • 将故事分解成更小的块 – 可以更容易地发现估计错误
  • 考虑跑短跑 – 因为越来越容易跟踪和学习。

你也可以find这些关于平滑有用的Scrum的技巧 。

我们解决了这个问题,如下所示: – 产品待办事项中的每个项目都必须有合适的标准或接受标准,没有这些标准,我们不会开始冲刺 – testing人员是我们团队的一部分,对于每个产品积压项目,他创buildtesting基于验收标准的任务(1个或更多,连同validation标准)以及要testing的项目的链接 – 在每日scrum期间,所有完成的任务都被放置在“To Test”列中 – 我们从不执行任务花费16个小时以上; 估计时间更长的任务是分开的

将任务分解为更小的任务。

另外,QA可以为Dev开发testing用例来testing。

要考虑的一个想法是让QA在主要开发背后进行一次迭代。 这在我们的环境中运作良好。

在这里,我会说,一个尺寸不适合所有。 每个团队都以不同的方式交付QA 这很大程度上取决于你正在进行的项目,无论是小的还是大的。 是否需要大量的回归,用户接受度和探索性testing,或者有很less的场景需要testing。 让我重申一下,在敏捷方面,通才是首选专家。 那是什么? 因为项目中没有任何东西需要testing,所以那时你可能还在做别的事情。 即使你是一个核心程序员,你也可能正在做testing。

我们如何处理? 我们有定期的2周冲刺。 开发人员在本周完成的任务后,会在一周后开始testing。 现在,testing人员不断向我们的问题跟踪器添加问题,而完成了他们的短跑任务的开发人员开始挑选这些问题。 在冲刺结束的时候,我们大部分都是通过我们的冲刺任务以及所有重要的和主要的漏洞完成的。

那么在短跑的第一个星期里,testing者二是什么?

那么,总有事情要考验。 我们在积压testing任务,可能包括一些探索性testing。 许多人不重视探索性testing,但这对build立高质量的产品极为重要。 好的testing人员为自己创造任务,find出现问题的可能性并对其进行testing。

希望有所帮助!