我注意到,用于“自动测试”标记的wiki包含以下一句话:“通常,测试自动化涉及自动化已经存在的使用正式测试过程的手动过程。”
这可能很常见,但它好吗?
直接自动化手动测试脚本有哪些缺陷,特别是那些编写自动化的人对系统或领域一无所知的情况?最初设计为手动运行的测试是否会成为自动化的良好设计?
发布于 2011-05-29 22:11:54
对此,我深思熟虑的回答是“不”,我会更进一步,因为我认为盲目地自动化手动测试可能是一种自动化的测试反模式。
手动测试脚本由能够做出决策、判断和评估的测试人员执行。因此,手动测试通常能够覆盖被测试系统的大部分区域,达到大量的测试条件。手动测试很容易成为一个庞大的、覆盖应用程序许多领域的描述,这可能是一个非常有用的手动测试。然而,对于自动化测试来说,这并不是一个可取的设计。
试图覆盖手动测试所涵盖的每一点的自动化测试往往是脆弱的。他们倾向于更频繁地崩溃,而且还会让人恼火的是,当自动测试遇到故障或错误时,它通常会完全停止,这意味着以后的步骤不会运行。这可能意味着,为了完成测试运行,需要解决更大脚本的一些小问题。根据我的经验,在单独的测试中使用这些断言要容易得多,这样其他测试就可以独立运行。随着时间的推移,我发现,试图复制手动测试脚本的大型自动化测试,已经成为一个相当棘手的维护问题。特别是,当你真的想要运行它们时,它们往往会掉下来。这种挫折感可能会导致对自动化测试本身的重大失望。
盲目地尝试自动化整个手动测试也会阻碍从测试自动化工作中获得最大利益。手动测试本身可能并不容易自动化--但是它的各个部分可能是自动化的,并且通过自动化这些部分,手动测试脚本的大小可以减少。
在尽可能短的时间内访问尽可能多的应用程序区域时,手动测试脚本往往是最有效的。相反,自动化测试脚本在按需要访问应用程序的少数区域时往往会更高效。
可以说,自动化常常“涉及自动化已经到位的使用正式测试过程的手动过程”的原因之一是,自动化常常首次引入到已经进行手动测试的现有项目中,这可能不可避免地导致简单地自动化现有的手动脚本。不过,我会问自己,如果测试从一开始就被自动化了,我是否会像手工测试一样设计测试?--我觉得我诚实的回答是“不”。
因此,尽管现有的手动测试显然可以成为自动化测试的有用文档,因为它们可以显示当前正在测试的内容以及如何测试,但它们不应该规定自动化测试本身的设计。在我看来,好的手工测试设计向人类解释了如何最有效地测试应用程序的特性;良好的自动化测试设计使机器逻辑更容易快速地执行重要功能,在我看来,这些都是非常不同的工程问题。
发布于 2011-05-24 15:00:46
@testerab
不一定。以下是自动化手动测试可能不可取的一些原因:
我希望这个答案有所帮助;我请其他人改进这一不完整的清单。
相反,手动测试可能有助于直接自动化的迹象是:
请也改进这个不完整的列表!
发布于 2011-05-24 16:35:45
简单地自动化一组手动测试用例没有什么好处,特别是在没有领域知识的情况下。
决定是否自动化的一些因素是:
最终,我们的目标应该是首先确定适合自动化的测试用例(在任何涉及税收计算的情况下,自动化开始看起来非常有吸引力并不需要很长时间!),并根据上面的列表以及您的组织和应用程序需求不断地重新评估。
我不会提倡由没有领域知识的人实现自动化,因为领域知识对于决定什么应该自动化至关重要。如果一个没有领域专业知识的人正在自动化,我希望他们能和一个领域专家一起来决定什么是自动化的。
https://sqa.stackexchange.com/questions/783
复制相似问题