我如何像真正的测试人员一样系统地测试和思考

bre*_*ett 5 testing

我的朋友今天问我这个问题.如何测试自动售货机并告诉我它的测试用例.我能够给出一些测试用例,但这些是一些随意的想法.我想知道如何系统地测试产品或软件.有很多测试,如单元测试,功能测试,集成测试,压力测试等.但我想知道如何像真正的测试人员一样系统地测试和思考?有人可以解释我如何区分所有这些测试,以及哪一个可以应用于真实场景.例如,测试文件系统.

Mer*_*ham 6

即使是长期受到尊重的专业测试人员也会告诉你:这不仅仅是一门科学,而是一门艺术.

我设计新测试用例的技巧从你提到的各种类型的测试开始,它必须包括所有那些要彻底的测试,但我试图找到一个列表,列出我可以与代码/产品交互的所有方法.

对于自动售货机的例子,里面和外面都有大量的零件.

简单的测试,因为产品设计工作,提供了大量的案例

  • 它是否给出了正确的改变
  • 它处理请求的速度有多快
  • 如果商品缺货怎么办?
  • 如果它被过度填充怎么办?
  • 如果更换抽屉已满,该怎么办?
  • 如果物品太大或太脏了怎么办?
  • 如果用户投入的钱太少,该怎么办?
  • 如果它没有变化怎么办?

然后是有趣的案例,普通用户不会考虑.

  • 如果你试图翻过来怎么办?
  • 给它一个假硬币
  • 偷了它
  • 用一根绳子放入一枚硬币
  • 给它有趣的变化
  • 给它半撕钞票
  • 用撬棍撬开它
  • 喂它坏电/掉电
  • 在各种操作过程中将其关闭

像测试人员一样思考的方法是找出可以攻击它的每种可能方式,从通常场景中的所有"有趣案例"到完全超出应该如何使用的所有方法.任何输入点,包括你可能认为开发者/所有者可以控制的点,都是公平的游戏.

您还可以使用许多自动化测试工具,例如成对测试选择,基于模型的测试工具包,或用于软件,各种压力/负载和安全工具.


我觉得这个答案是一个好的开始,但我现在意识到这只是故事的一半.

通过各种方式,您可以测试系统非常重要.您需要学习如何扩展想象力,问题分解技能,对功能/失败链的理解,以及您正在测试的领域的知识.这是我试图在上面提出的观点.凭借正确的思维方式和足够的警惕性,这些技能将在一年内或几年内(取决于领域的复杂性)迅速提高.

成为一个非常称职的测试人员的第二个层次是确定你应该关心哪些测试.您将始终能够以各种不同的方式打破每个系统.这些失败是否重要是一个更有趣的问题,而且通常要难以回答.但是,回答这个问题的好处是双重的.

首先,如果您知道为什么修复破坏系统(或跳过修复它们!)的重要性,那么您就可以了解应该集中精力的地方.你知道你能花多少时间花更少的时间进行测试,以及你必须花更多的时间.

其次,更重要的是,你会帮助你的团队暴露他们应该集中自己的努力.您将开始发现被称为"二阶未知数"的事物.你的团队不知道它不知道的是什么.

帮助你实现这一目标的主要技巧是总是问"为什么?",直到你提出的任何问题都难倒.

一个例子:

问:为什么要这个测试?

答:因为我想在系统中运用所有功能.

问:为什么这个系统以这种方式运行?

答:由于程序员根据产品规格做出的决定.

问:为什么我们的产品规格要求这个?

答:因为我们正在编写软件的公司要求软件以这种方式工作.

问:为什么我们要签约的那家公司补充说这是一项要求?

答:因为他们的用户需要这样做:事:

问:为什么用户需要这样做:东西:?

答:因为他们正在努力实现:xyz:

问:为什么他们需要完成:xyz:

答:因为他们通过这样做来省钱:abc:

问:他们为什么选择:xyz:解决:abc:?

A: ......好问题.

问:他们可以做些什么呢?

答: ......现在我想起来了,有很多选择!也许其中一个效果更好?

通过练习,您将开始了解要询问的具体"为什么"问题,以及要关注哪些问题.您还将学习如何从链条中深入开始,并在您的方法中减少机械性.

这不仅仅是确保产品符合dev,pm,customer或最终用户提供的规范.它还有助于确定您提供的解决方案是否是您的团队可以提供的最高质量的解决方案.

对此的一个隐藏要求是,您必须了解作为测试人员的一半工作是始终提出问题.您可能会认为您的队友会对此感到恼火,但希望我已经证明这对您的开发和您正在测试的产品的质量至关重要.关心产品(不忙沮丧)的聪明而好奇的队友会喜欢你的问题.