安全失败实验

阅读数:280 2017 年 4 月 16 日

话题:文化 & 方法

在复杂的环境中,可以使用安全失败实验探测、感知和响应。你必须知道成功和失败分别是什么样子,为了应对潜在的失败,你需要能够抑制或增强探测的效果。安全失败实验可以帮助你处理风险和不确定性,了解并保留选择的余地。

Liz Keogh 是一名独立的精益 & 敏捷顾问。在2017 欧洲测试大会上,她谈论了安全失败。InfoQ 正以 Q&A、综述和文章的形式对大会进行报道。

在开始阶段,Keogh 简要介绍了 Cynefin。她指出,大多数 IT 活动都处于一个你可以使用安全失败方法的复杂领域里。对于这种方法,她在博文“面向开发人员的 Cynefin”中介绍过:

在一个复杂的环境中,你探测、感知和响应。你安全地做一些可能会失败的事情,那会让你了解你需要作出响应的环境,并改变环境。这是高效反馈、风险与创新之地。

在这个领域中,由于我们探寻的结果一直处于变化之中,我们不能仅仅套用我们的专家实践就期待着成功。我们必须根据我们了解到的情况修改我们使用的实践方法。在这个领域中,我们有突发实践。

敏捷选择就是因为这个领域出现的。我们无法提前将一切都准备就绪,因此,取而代之,我们开始在我们的流程中创建反馈循环。

在 InfoQ 的综述报道“使用行为驱动开发进行实验”中,Keogh 说明了如何测量复杂度并划分成 1 到 5 五个等级:

5. 以前没有任何人做过;

4. 其他组织的人以前做过(可能是竞争对手);

3. 本公司的人以前做过;

2. 本团队的人以前做过;

1. 我们都知道怎么做。

你可以将这些复杂度等级映射到 Cynefin 上。等级 1 属于容易领域,等级 2 和 3 属于复杂领域,而等级 4 和 5 属于困难领域。

Keogh 建议,我们从最新的、有风险的东西开始。这种方法可以帮助你在你和利益干系人之间建立信任,因为他们通常都担心风险,并希望看到它们被解决。如果你的利益干系人不信任你,那么,Keogh 建议,为了取得他们的信任,你可以出色的完成一项复杂度为 3 的任务,而不是复杂度为 4 或 5 的任务。

安全失败探测需要一种机制,可以了解什么成功执行,什么正在衰退。按照 Keogh 的说法,因为你不知道将会发生什么,所以你必须能够抑制或增强探测的效果。安全失败不是要完全地避免失败,但你需要能够处理潜在的失败。

早些时候,InfoQ 采访了 Tiago Garcez,请他介绍了安全失败实验:

(……)在开始任何存在一定风险的活动之前,务必使用你知道成功什么样失败什么样的受控实验,那样你就可以评估潜在的解决方案或者推进方法。这种方法可以避免高昂的失败成本或者关键任务失败,同时,它还提供了学习的机会(你是否用一致的方法构造了实验)。

Keogh 表示,在存在高度不确定性的场景中,提供一致性,而不是各种测试。在这种情况下,“测试”存在不确定性;它们是可能会发生什么的例子。但是,测试人员仍然要非常擅长提出这样的例子,那种心态至关重要。

Keogh 提到了 Olav Maassen 和 Chris Matts 在其著作“Commitment”中所描述的有关“真实选项(Real Options)”的工作。按照 Keogh 的说法,实验是一种保留选择余地的好方法。例如,当出现问题时,回滚就是一个选项。

Keogh 还提到了 Pachinsky 原则:

  • 发现新思路,尝试新东西;
  • 在尝试新东西时,务必在失败不易造成破坏的范围内进行;
  • 寻求反馈,并在这个过程中从失败中学习。

在总结她的演讲时,Keogh 提出了两项寻找安全失败方法的建议:

  • 使用 Cognitive Edge 提出的“仪式性异议(ritual dissent)”,这是一种通过质疑检验和强化想法的技术;
  • 如果你想知道某个东西是否是失败安全的,就“请教测试人员”。测试人员在这方面非常擅长。

查看英文原文Doing Safe-to-Fail Experiments