在使用UI自动化工作了一段时间之后,我不得不维护许多系统测试(从软件安装到通过UI进行测试的整个过程都是从端到端的大型测试),我终于意识到拥有许多UI测试是一项糟糕的投资。我在过去看到了一些图表,显示了单元/集成/系统级别上应该存在多少测试(大约70/25/5)。
问:如果你要为管理层找到正确而有力的论据,说服他们不要在UI自动化上投入太多,而是更多地投资于单元/集成测试,那么你会使用哪些论据(也许是一些案例研究、测试手册等的链接)?
发布于 2014-04-22 15:26:30
我假设您的意思是在减少全系统自动化测试的数量和增加低级测试的数量方面进行倒退。我已经在我的组织里推动了一段时间同样的事情,所以我有一些轶事的建议。
我认为测试金字塔是最好的起点。你听起来很熟悉,所以我会继续谈这个。如果您需要更多的背景知识,Martin写了一篇关于它的好文章http://martinfowler.com/bliki/TestPyramid.html
最近,我一直在问人们,他们认为不同类型测试的目的是什么。如果您有一个相当不错的测试金字塔,您基本上知道您的应用程序运行正常。那么,自动化UI测试实际上是什么呢?根据我的经验,他们主要是测试应用程序部署/安装是否正确,并且实际上正在运行。
我非常喜欢的另一个概念就是测试深度。如果您正在通过UI进行全部或大部分测试,那么您的测试就不可能有任何有用的焦点。这降低了测试的有用性,因为当一个测试失败时,导致失败的原因还不清楚。
除此之外,我想说的是,测试的有用性随着运行时间的增加而呈指数级下降。这更多地关系到测试运行的频率,而不是实际测试的执行时间,尽管它们通常是相关的。单元测试非常有用,因为它们运行得很快,而且开发人员已经习惯于运行它们。集成测试应该运行得相当快,因此开发人员在签入之前运行这些测试的障碍应该不会很痛苦。也许他们不想每次编译时都运行它们。自动化的UI测试,尤其是很多测试,都需要10分钟的时间,所以您不想那么频繁地运行它们,如果有的话。这使得测试变得不那么有用,因为它提供的反馈与它应该测试的实际更改有很大的脱节。
发布于 2014-04-22 17:10:29
这往往是一个很难的论点,尤其是因为它经常将“测试”责任转移到开发人员身上,他们可能不希望处理编写单元或集成测试的问题,并且认为两者都没有价值。
我在这里发现以下几点是有帮助的:
简短的版本是,如果您正在运行大量UI测试来验证业务逻辑,那么这些测试将更好地作为单元测试或集成测试来处理,以提高时间、成本和有效性。
发布于 2014-04-24 13:56:05
主要的事情可以是最初的成本。但是为什么我们应该忽视自动化,如果有同样的技术,并且可以简化工作。我支持自动化,尽管我们不能仅仅依赖于任何一个工具,因为这可能不能提供精确性。
https://sqa.stackexchange.com/questions/8354
复制相似问题