我是软件测试的新手,但对其背后的思想并不陌生。
我当了十年警察,然而大约一年前,我成为了一名软件测试员。这是我职业生涯中所做的最大改变,离不开我妻子的帮助和支持。
当我进入测试的第一个问题是:我是否为之努力。答案来于我发现测试仅通过探索和实验来了解产品并评估产品的过程时。如果测试只是提问和调查,我知道如何做。
软件如人一样:它试图只向你展示“美好的一面”,但是一旦你开始问问题,美丽的一面将会改变,真相将浮出水面。朋友建议,如果我明确列出新旧职业之间的相似之处,那会更快地在这个领域获得自信(并找到我自己的“签名”式测试方式)。很快,我发现测试和警察工作之间有许多相似之处。
测试和警察工作都需具备高度探索性
作为检查,我每天都在探索这个世界。警察的工作集中在眼下正在发生的事情,探索人们对不同变化和情况的反应是我工作的一部分。人们以奇怪的方式做出反应,即使没有传达这种反应。警察需要准备好侦查,预测和预防犯罪,并重现犯罪发生前后所采取的步骤。我的思维必须保持敏锐,因此我必须倾听每个重要的人的意见。
记得在一个星期天早上六点左右,我和同事正在巡逻。我们注意到有些人向我们招手以引起我们的注意。我们停了车,然后去看看发生了什么。原来,有两个敌对帮派在打斗。他们一见到我们就停了下来。我们立即认为这太容易处理了,这让我们更加怀疑:为什么他们停下来?这就像看到一条关键错误消息,宣布该应用已崩溃,但随后该消息消失,应用似乎一切正常。
我们仔细观察,看到其中一个人大汗淋漓,所以即使战斗结束,我们也决定将他们全部逮捕。我们想要更详细地分析其背后的原因。随后我们了解到,其中一名是已经潜逃六年的通缉犯。帮派成员停止战斗,是希望我们不要过于密切地关注他们。
这种经验很容易转移到测试中。在探索软件时,浅层测试并不充分。 要找到真正危险的源头,需要投入更多的精力。软件本身不会说话。它不会告诉你可能出现问题的地方。大多数时候,它不会提供很多关于问题如何出现的线索,如果你不记得发现问题的步骤,那它会试图隐藏。因此,团队合作并与同事分享调查进展至关重要。
测试员和警察都知道变化可能导致问题
作为一名警察,我必须了解可能影响我的行动的新法规或其他相关事项。有时,改变可能会使事情变得不清楚或者让人困惑。
例如,一项法律修订为“司机在开车时需随时随身携带两张身份证明。”看到此,我首先想知道为什么。这对我没有任何意义,但我不能忽视法律,所以每次拦停司机时,我都必须遵守它并要求出示第二种形式的身份证。立法的变化使我在交通执法中对司机进行例行核查时加上了“测试用例”。
同样地,对于某些人来说,他们的面部表情会背叛他们(我有能力“读”一张脸),软件如出一辙。即使我能够转移这项技能,但我需要对代码更加怀疑。看着它,我的第一个问题需要是“为什么”和“如果有什么”,但审讯过程并不止于此。我们需要继续用问题,假设和场景轰炸软件,也许在某个时候它会“崩溃”。
收集有关不断变化的世界的信息并询问有关这些变化的问题是我工作的关键部分,作为软件测试员,它们采用回归测试的形式。
测试员和警察的工作都基于事实
每一个行为的背后都有原因,需要发现、观察和报告这个原因。它看似微不足道或复杂无关紧要,那是因为你无法一开始就知道什么样的证据将来会有用。警察和测试人员都是如此。
如果没有全局了解,就无法在代码中找到真正的“犯罪”或根本问题。这意味着犯罪发生的原因和地点以及某个人参与的动机。例如,如果我不得不去法院提出有人犯罪的证据,我必须收集所有让我肯定地证明我找到罪犯的信息,以及找到为什么他这样做了的动机。
在测试中,在找到并报告bug后,有人确认问题存在并且可能会“骚扰”某人。在描述生命事件或错误报告时准确、清晰是必须的。一个含糊的问题可以以一种意想不到的方式改变最终的决定。
测试人员和警察必须进行系统分析
在做警察时,我经常要绘制车祸的原理图。原理图通常是对事故发生地点和方式的图示。如何象征汽车在后面,前面,右手边等等都有明确的规则。这些示意图需要明确,以便我的同事需要重新开案或跟进,他们在理解和“再现”情景方面没有任何问题。
在测试中一样,一旦我发现bug,我需要报告它,并发现它如何影响软件及成因。这项工作完成后,并不意味着结束。我需要检查修复后的bug是否正确实现,并不再出错。当我保持简单时,我发现测试更容易:以清晰明了描述bug时,再现bug将很容易。
测试和警察工作都需要纪律
在调查结束时提交所有文件和报告可能有点无聊,但正如我需要清楚地了解问题一样,认可的机构也需要这样的图片。他们需要所有的文件来推动案件的进展。
十年来我一直致力于一份教会我如何思考,如何在不同情况下采取行动和做出反应,如何与人交往,如何阅读人们的意图以及如何行动的工作。当下,所有相同的技能我用在软件测试上。测试在很多方面类似于警察工作 - 但压力要小得多!
本文译自 Adrian Oniga 的《The Quality Police: Testing like a Law Enforcement Officer》一文。