在让某人进行测试之前,请确保您满足测试要求。您至少需要:
规范:关于应用程序应该做什么的一些权威来源。这可能是一位专家,可以回答有关应用程序应该做什么的任何和所有问题,但是写得越多,定义越正式越好。
时间:测试需要时间。您不能在应用程序上线前 30 分钟将应用程序交给测试人员并期待任何有价值的结果。如果您正在进行瀑布式开发,那么测试最终将需要大量时间。许多其他开发模型让测试与开发并行运行,从而节省了大量时间,但无论您使用哪种模型,测试都需要比不测试更多的时间。
如果你没有这两件事,质量保证只是一个白日梦。
现在,如果您确实遇到了这些,并且您正在尝试培训某人进行测试,那么这是我的测试速成课程。
从根本上说,测试应用程序意味着您试图确保两件事:
程序做它应该做的事情。
该程序不做它不应该做的事情。
这是我使用的核心思维方式。以此为基础,我从行动的角度来处理事情,并尝试验证:
- 具有预期前提条件的预期动作会产生预期效果。
- 具有意外先决条件的预期操作不会产生任何效果或得到适当处理。
- 意外的操作不会产生任何效果或得到适当的处理。
- 不会出现意想不到的效果。
第 1 项直接来自规范:您确保程序执行它应该执行的操作。
第 2 项和第 3 项是测试艺术的用武之地。我可以执行哪些意外操作和先决条件?我可以尝试输入错误的密码。我可以尝试直接输入一个所谓的安全页面的 URL。我可以尝试将奇怪的 unicode 字符粘贴到文本字段中。我可以尝试将 SQL 或 javascript 代码放入文本字段。
第 4 项是测试的无限无人区,使完整测试成为不可能的部分。(2 和 3 也是无限的,但考虑起来并不那么令人沮丧。)这并不意味着你忽略它。你总是留意任何不寻常的事情。此外,有时灵感来袭,您会想到一种可能的方式来产生意想不到的效果:“如果我在每个月的第三个星期二晚上 11:59:59 和上午 12:00:00 之间登录会发生什么?哦,看,它使我是管理员。” 技术知识和对黑匣子的窥探有助于想出这样的场景。
关于测试还有很多话要说,但这是我能想到的最低限度:技术要求和解决问题的方法。