有时人们将自动化测试的概念理解得过于狭窄,只关心由工具或编程产生的测试脚本。实际上自动化一词包含了更为广阔的含义。看看一个Quality Engineering团队在构建一套自动化测试准则时对自动化测试的这个定义:
在我们的环境中,"自动化"指的是对策略、工具和工件的使用,它增加或减少了手工或人为参与或干预非技巧性、重复或冗长工作的需要。
除该定义之外,准则还为该团队提供了应用自动化方法的例子。表1列举了一些。
这个小例子让您换个角度看待自动化了吗?现在,定义自动化对于您和您的团队意味着什么是至关重要的。然后您就可以使用该定义开始构建一套自动化准则,从而团队中的每个人都可以使用相同的方法、快速评诂一项任务是否适合应用自动化。
创建自动化测试准则
此处列举了您定义自动化和制订准则时可以考虑的一些策略和事项:
确定自动化测试的"用武之地"
将所有工作中的特定部分作为应用自动化的候选对象。
从高度冗余的任务或场景开始考虑。
将乏味且人工容易出错的工作进行自动化。
优先选择应用中相对稳定的部分,而非易变的部分。
通过使用数据驱动的测试技术来提高自动化功效(增加测试覆盖的深度和广度)。
指派几位专家负责自动化,不要让测试团队的每个人都做这项工作。
牢记不要追求100%的自动化,手工测试仍然至关重要。
计划进行更多的测试
将重复的测试自动化,为其他方法的测试赢得更多时间。
增加试探性测试。
增加配置测试。
构建更多的自动化测试。
进行更多的人工测试,特别是在高风险特性方面。
谨慎规划:将人工测试和自动测试分工,不能全盘自动化。
每一次设计都要设计所有的测试和文档。如果某项自动化测试无法运行,确保它能够手工完成。
将自动化视为一种投资
训练使用者充分利用自动化工具。
构建一个可重用代码库。
保持测试模块化,大小控制在一定范围内,这样易于维护。
文档化测试脚本(代码),以备校验和重用。
强化备份过程。
利用源代码控制。
认识到自动化是一项软件开发工作,通常需要代码生成。
逐步实施自动化测试
不要尝试一天内实现所有测试的自动化。积累经验,循序渐进。
从整个测试计划的一小部分开始,逐步添加至自动化测试集合。(即以实际的、受控的方式递增)
自动化还能为我做什么?
更高质量的软件-因为您能够花费更少的时间和资源进行更多的测试。
更完备的测试覆盖的潜力。
更多的时间投入到其他测试活动中,包括:
详细计划。
精心地设计测试。
构建更复杂的测试(数据驱动,增加用于条件分支和特殊报告的代码等)
更多的人工测试,不是更少!
自动化测试还为您提供无形价值,它能给测试人员带来:
获取新技能的机会(即建立技能和学习技能的机会)。
在测试中了解更多关于系统的知识的机会,因为自动化能揭示系统内部状况,如对象属性和数据。(对系统的更多理解造就更好的测试人员)
现在您已知道什么是自动化测试以及它能胜任哪些工作,我希望您能运用这些知识为您的产品进行更多更好的测试。尽管自动化测试不是银弹,但它仍不失为一件优秀工具;如果能够将其应用于适合的工作,将为您带来巨大收益。
参考资料
您可以参阅本文在 developerWorks 全球站点上的 英文原文。
关于本文部分主题的更多信息,请参阅Cem Kaner的网站上的下列文章。网址:http://www.kaner.com/articles.html
1. "Architectures of Test Automation"
2. "Improving the Maintainability of Automated Test Suites"
3. "Avoiding Shelfware: A Manager's View of Automated GUI Testing"
致谢
感谢Cem Kaner提供参考链接中文章。 同样感谢IBM Rational的Ted Squire,和Satisfice, Inc.的James Bach仔细评阅本文,并在写作中给予帮助。关于Satisfice及其广受赞誉的测试讲座的更多信息,请访问www.satisfice.com。
关于作者
Dawn Haynes,技术专员,IBM Rational
文章来源于领测软件测试网 https://www.ltesting.net/