软件自动化测试成功之道_是什么使测试自动化成功?
软件自动化测试成功之道
测试是软件开发的一个重要但经常被低估的部分。 从定义上说,测试是具有挑战性的。 如果容易发现错误,那么它们就不会存在。 测试人员必须跳出框框思考,以发现其他人遗漏的错误。 在许多情况下,了解应用程序的业务领域对于有效测试至关重要,这是对应用程序本身的详细了解。
在开源项目中,质量通常由贡献者和协调架构师来解决。 单元,组件和服务的测试通常有效且自动化良好。 即使做出了许多贡献,这也使项目得以前进。 具有足够范围和深度的全面自动化测试有助于保持产品稳定。
尽管一些开源项目是通过分散人员的积累来开发的,但面向DevOps的项目可能会采用Scrum或看板方法,其中包括同步开发和发布。 此过程还严重依赖于测试的全面性及其无缝自动化。 每当有新版本时(它可以像检入单个源文件一样小),测试应该能够验证系统没有损坏。 同时,这些测试也不应自行中断,对于基于UI的测试而言,这并非微不足道。
迈克·科恩(Mike Cohn)在他的书《 成功与敏捷》中提出的测试金字塔将UI定位为测试的最小部分。 大多数测试应集中在单元和服务或组件级别。 它使更好地设计测试变得更加容易,并且在单元或组件/服务级别的自动化趋向于变得更加容易和稳定。
我同意这是一个好策略。 但是,从我在各种项目中观察到的结果来看,UI测试仍然是重要的一部分。 例如,在网络世界中,诸如Ajax和AngularJS之类的技术的可用性使设计人员能够创建有趣且高度交互的用户体验,其中应用程序的许多部分都经过测试。 UI权限Web应用程序的最终示例是单页应用程序 ,其中所有或大部分应用程序功能都在单个页面中呈现给用户。 UI的复杂性可以与更传统的客户端服务器应用程序相媲美。
因此,我想在图片顶部留出更多空间,使其看起来像这样:
即使对于UI自动化,技术方面也可能非常简单。 有简单的开源工具(如Selenium )和更全面的商业工具(如我们自己的TestArchitect) ,它们可以与UI交互,从而模仿用户对被测应用程序的行为。 通过UI进行的测试通常还与非UI操作(例如服务调用,命令行命令和SQL查询)混合在一起。
UI测试的问题来自维护。 UI设计或UI行为的微小变化会淘汰大量与之交互的自动化测试。 常见原因是无法找到界面元素或UI响应操作的意外等待时间。 然后,由于错误的原因而避免了UI自动化:无法使其正常运行。
让我描述一些可以减轻这些问题的步骤。 测试设计是成功实现自动化的良好基础。 设计测试的方式对其自动化有很大影响。 换句话说,成功的测试自动化并不是技术挑战,而是测试设计挑战。 正如我所看到的,一个好的测试设计有两个主要层次:
- 测试的总体结构
- 个别测试用例的设计
对于测试的结构,我们遵循模块化方法,这与应用程序的设计方式类似。 测试用例在测试模块中组织。 像书中的章节一样思考它们。 我们有一些详细的模板来做到这一点,但是至少您应该尝试区分业务测试和交互测试。 业务测试将查看业务对象和业务流程,并隐藏任何UI(或API)导航详细信息。 交互测试着眼于用户或其他系统是否可以与被测应用程序进行交互,因此关注UI详细信息。 关键目标是避免将交互测试和业务测试混在一起,因为交互测试的详细级别将使它们难以理解和维护。
一旦确定了测试模块,便可以随时开发它们。 通常,业务测试可以尽早开发,因为它们更多地取决于业务规则和事务,而不是应用程序如何实现它们。 当团队定义UI和API时,可以创建交互测试。
另一有效的步骤是使用域语言方法,例如行为驱动开发(BDD)或操作(关键字)。 在BDD中,方案以接近自然语言的格式编写。 “操作”是预定义的操作和检查,描述了测试中要采取的步骤。 在我们的基于动作的测试(ABT)方法中,它们以电子表格格式编写,以使其比用编程语言编写的测试更易于阅读和维护。 由于我注意到动作比句子更具体,更易于管理,因此我创建了一种工具,可以灵活地在两种格式之间来回转换,并结合了两种优势。 您可以在我为Techwell Insights撰写的文章中了解有关BDD和操作的更多信息。
此图概述了如何在ABT中组织测试,以及测试模块及其中的操作。 注意交互测试和业务测试的区别。 自动化专门专注于自动化操作。
定义自动化成功的另一个主要因素是可测试性。 您的应用程序应该将测试作为一项关键功能而变得容易。 敏捷团队特别适合实现这一目标,因为产品所有者,开发人员,质量保证人员和自动化工程师可以合作。 但是,开源项目不一定有这样的团队,产品所有权必须定义可测试性。
有关可测试性的更多信息,请查看我为TechWell Insights撰写的这篇文章 。 如此处所述,可测试性的主要方面是:
- 应用程序的总体设计(具有清晰的组件,层,服务等)
- 特定功能(例如API挂钩或“就绪”属性,以帮助进行计时,UI元素的清晰且唯一的标识属性,以及白盒访问数据和事件,甚至不显示它们)
自动化尤其是通过UI可能具有挑战性。 但是,由于它很困难,因此不能避免,也不应该避免。 项目中所有参与者之间的合作可以带来稳定,可维护且效率不高的良好结果。
翻译自: https://opensource.com/business/16/4/what-makes-test-automation-successful
软件自动化测试成功之道
更多推荐
所有评论(0)