首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >自动化测试:解释其业务价值

自动化测试:解释其业务价值
EN

Software Engineering用户
提问于 2011-06-30 10:30:19
回答 11查看 3.9K关注 0票数 26

首先,我不认为这是重复 of 其他问题 on 单元测试。我所寻求的帮助是向一个由程序员、分析师、经理和测试人员组成的团队阐述其价值。通过自动测试,我不认为我需要区分单元测试(例如JUnit)、BDD (例如JBehave、Fitness)和UI (Selenium,Watir),因为我认为它们都提供了相似的价值(但可以自由地写出不同意的答案:)

下面是我确定的列表,我正在寻找有助于扩展或改进的答案:

  1. 节省时间/成本:编写自动化测试可能比编写测试用例花费更多的时间。但是,考虑到测试是多次运行的,执行自动化测试的边际工作量(即成本/时间)要少几个数量级。自动化测试运行成本低廉,这有助于随着时间的推移而更改系统。
  2. 文档:没有比测试更真实的方法来了解系统是如何工作的。任何其他文档通常在编写的那一刻就过时了,但是测试(至少是那些通过的测试)揭示了事情是如何工作的。对于最终用户和API文档来说都是如此。
  3. 代码质量:测试编写迫使您:
    • 考虑客户端,因为测试是客户端。
    • 打破依赖关系,使代码可测试通常意味着弄清楚如何使该代码不需要其他大型系统可用。
EN

回答 11

Software Engineering用户

回答已采纳

发布于 2011-06-30 15:39:59

我的一些想法:

  1. 老实说,编写自动化测试需要更多的时间。如果您正在进行单元级的TDD (如果您打算投资于自动化测试,我建议将其作为起点),您可以预期编写特性所需的额外时间约为30%。这里的关键是解释这个额外的30% (当你的团队开始学习如何编写好的测试时,这个比例可能高于30% )是一种投资,目的是随着时间的推移节省成本。至少对于单元级的TDD,系统的设计是松散耦合的,并且具有高度的凝聚力,这使得您的系统能够适应随时间变化的变化。新的需求和意外的错误总是需要对您的系统进行更改,因此,将您的系统保持在一个易于更改的状态(来自TDD的良好设计)和安全(一组不断验证系统的自动化测试)意味着进行这些更改所需的费用将更低。
  2. 考虑到编写这些测试所需的时间、运行它们所需的时间以及它们所需的维护量,对于验收级别和UI级测试的价值存在着很多争论。我建议阅读James的“这篇文章”。
  3. 在自动化测试的世界里,有好的方法,也有不好的方法。如果您正在向管理层介绍自动化测试,我将向您介绍您计划如何让您的团队在编写好的测试方面进行培训。Roy的“单元测试的艺术”、Michael的“有效地使用遗留代码”和James的“敏捷开发的艺术”都是直接或间接处理这些主题的伟大书籍。你也应该考虑一些教练或正规的训练。这是个大变化。
  4. 就商业价值而言,上面的第2和第3点实际上是为你的第一点服务的,所以我会重温第1点,并讨论#2和#3如何提供更大的价值。文档使您的系统更容易理解,从而使您的团队工作得更快。代码质量使您的系统能够适应更改,从而使您的团队工作速度更快。对于业务人员来说,这一切都是为了最大限度地发挥价值流,从一个想法被提出到该想法作为工作软件交付的时间。
票数 22
EN

Software Engineering用户

发布于 2011-06-30 12:31:18

有一点是有一定价值的:自动化测试可以连续运行,比如在重建或类似的过程中每小时一次。这样做会迫使程序员在几个小时或几天内迅速打开错误的代码,从而使上下文切换更加容易。持续测试的第二个好处是它迫使您将测试保持在工作状态;没有什么比花费测试周期的第一周修复所有过期测试更乏味的了。如果您可以自动化它们,那么您可以随时运行它们&通过定期运行它们,您可以在测试中捕获bug或快速编写代码。

票数 9
EN

Software Engineering用户

发布于 2011-06-30 23:55:09

测试费用

一旦编写了自动测试,计算机就可以以几焦耳的代价运行它。等效的手动测试要求薪资上的人员编写一份指令列表。

试验可靠性

每次都可以信任计算机忠实地执行相同的测试过程。人容易犯错误而变得懒惰。

计算机的测试故障模式也更加明显--它崩溃了(测试报告停止出现),它有一个小错误导致了一个错误的测试结果(再次运行一个确定性的测试,结果不同)。如果一个人错过了一步,并检查了"OK",我们怎么知道呢?

试验耐久性

自动化测试必须是一个具体的工件(例如,一段代码)才能运行,并且自然包含在其他软件开发构件--源存储库中。手工测试可以由测试人员在一张便笺纸上进行,但永远不会正式化。企业更有可能需要适当的流程来确保这种情况不会发生。

测试值

计算机可以编程,以一致的,容易分析的形式输出测试结果。该人员要么正在进行数据输入以生成相同的内容,要么正在记录需要分析人员、开发人员或经理消化的免费格式注释。

票数 7
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/90015

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档