大卫,
我已经对这个确切的问题进行了很多思考,并且我很乐观地能够帮助分享一些您认为有用的技巧。不幸的是,几段的解释可能不足以详细回答您的问题。如果你想谈,我很乐意今天通过 Skype 谈;我将通过 LinkedIn 向您发送我的 Skype 详细信息。
您所描述的是组合爆炸;当配置设置和用户操作以及输入的数据等导致无法测试所有内容时,您如何聪明地选择测试子集,以便在有限数量的测试中尽可能彻底地测试 SUT。
它与测试 Google 地图的测试人员所面临的一般组合爆炸类型非常相似(无论它最初看起来是否相似)。
适用于许多团队(用于 Web 测试或几乎任何类型的测试)的建议方法的缩写版本如下:
在您探索系统并对其进行测试以找出“弱点在哪里”时,您可能会发现尽可能多地改变事物是有用的,尽可能少地重复您的操作。无论您是在进行相对非正式的、记录较少的探索性测试还是记录较多的测试脚本,这些观点都是正确的。此外,由于大部分缺陷可以由两个测试输入的交互触发,如果你有时间,测试涉及两个测试输入的每一个可能的组合会很好;这就是allpairs、pairwise 和正交基于数组的测试用例优先级方法背后的基本原理。
我强烈建议您查看此处的 Google 地图测试计划示例:https ://app.hexawise.com/share/94JBFALL ,然后尝试为您的 SUT 设计一组类似的草稿测试。
您创建的草稿测试会很好,但并不完美。它们会在相对较少的测试中涵盖很多内容,但建议您添加其他类型的测试,而不是依赖任何一种特定的测试策略。
不幸的是,需要登录我们的测试设计工具才能详细查看该 Google 地图示例。因此,我在 david.keaveny@stackexchange.com 为您创建了一个免费帐户(我知道这不是您的真实地址,但我不得不使用一些东西)。我已通过 LinkedIn 将您帐户的密码发送给您。
要为自己重新创建一个类似的 - 非常早期的草案 - 计划,我建议通过以下步骤将相对少量的信息丰富的端到端测试放在一起:
- 问当用户通过系统时会发生什么变化?考虑配置设置、用户操作、数据格式、数据范围等,甚至提出更多“创造性”的想法,如用户角色。让您的创造力和常识引导您。输入那些作为参数。
- 请问这些参数怎么改?(对于参数“浏览器”输入IE7,IE8,FF等)将它们作为值放在每个参数下(根据需要输入约束)
- 问这种变化重要吗?(例如,使用等价类并偏向于更少的值与更多的值 - 至少对于您的早期草稿测试)
- 询问您希望确保包含哪些贯穿系统的特殊路径?(最常见的快乐路径,触发某些业务规则的路径等)
单击“创建测试”按钮,您将立即获得一组非常漂亮的 DRAFT 入门级测试集。如果它们看起来比较有趣并且不会错过非常重要的东西,请开始非正式地执行它们,并且您一定会在处理系统的弱点时学到更多的东西,这些弱点会导致您回到那些DRAFT 测试并对其进行迭代以使它们更强大并覆盖更多。
不幸的是,这是一个相当“抽象”的例子,在本文中没有一个实际的例子。可以在 http://hexawise.com/case-studies/insurance 和 http://hexawise.com/case-studies/mortgage 找到一些可能使这种方法更加“真实”的示例。如果您有兴趣并且想多谈,我很乐意解释您如何尝试将此方法应用于您的特定 SUT。
我希望这有帮助。不过,同样,它可能会给您留下比答案更多的问题。如果您觉得它有用,我很乐意通过 Skype 交谈。