下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

软件设计:【测试驱动】什么是测试驱动开发及其重要性

作者:CTO老王     来源: https://www.cnblogs.com/Javame/p/12531677.html点击数:972发布时间: 2020-04-11 21:07:18

标签: 软件工程师软件开发Python

  数据驱动测试,即黑盒测试(Black-boxTesting),又称为功能测试,是把测试对象看作一个黑盒子。利用黑盒测试法进行动态测试时,需要测试软件产品的功能,不需测试软件产品的内部结构和处理过程。

  测试是任何软件开发项目中最重要的步骤之一。如果跳过此过程,则结果可能是灾难性的-对项目和公司而言。但是什么时候应该对软件进行测试?在项目完成后进行测试似乎是合乎逻辑的。但是,经典测试过程的功能是有限的。如果您先编写代码,然后再测试实现,则可能会遇到一些问题,即过度研发,设计偏离,可测试性问题。幸运的是,有一种方法可以应对这些挑战,它被称为–测试驱动开发。

  什么是TDD或测试驱动开发?

  TDD是测试驱动开发的缩写,它指的是设计范例,其中软件组件测试用于指导整个开发过程。要了解TDD的工作原理,首先,最好定义其重要概念之一-单元测试。

  什么是软件单元测试?

  单元测试是一种将代码分解成小的独立单元的方法。单元测试的主要目的是独立评估每个组件的行为,以验证它们是否正常运行。单元测试通常由开发人员执行,但也可以由质量经理执行。一些软件开发人员认为单元测试是浪费时间,但是实践表明情况恰恰相反。

  在系统测试,集成测试和Beta测试阶段,忽略单元测试会导致更高的错误修复成本。同时,单元测试允许在开发生命周期的早期阶段检测错误和错误,从而在将来节省您的时间和金钱。

  什么是TDD?

  测试驱动开发是一种软件开发技术,其中单元测试是最重要的问题。简而言之,测试驱动的开发都与“测试优先”方法有关,这意味着测试是在代码实现之前编写的。无论是谈论Python中的测试驱动开发还是java中的测试驱动开发,TDD编程实践始终旨在编写有效的干净代码。

  我们可以将TDD视为一种设计策略。因为测试是首先编写的,所以要测试的组件的接口在存在之前已经被使用。因此,开发人员应尽快获得有关设计可用性的反馈。

  TDD的三个原则:

  1除非要通过失败的单元测试,否则不允许编写任何生产代码。

  2您不能编写超出失败所需的单元测试。只需要实现最少的代码,就可以完成单元测试。

  3TDD的过程通常被描述为一个红绿色重构周期-该周期对每个书面单元测试执行一次。

  每个阶段是什么意思?

  在TDD中,在实现实际功能之前就编写了功能的单元测试。由于缺少功能,因此测试失败。由于错误通常在IDE中标记为红色,因此测试驱动开发的这一阶段称为“红色”。

  在第二阶段,开发人员编写足以使测试通过的代码。由于绿色表示成功,因此该阶段称为“绿色”。绿阶段不需要优化。下一个任务是重构代码。重构阶段的主要思想是使代码更好,尤其是消除代码重复。重复这些阶段,直到修复了错误,代码具有所需的功能并且没有测试失败为止。

  测试驱动开发的好处

  TDD似乎很难遵循,但是您付出的额外努力将为您的项目带来很多好处。有关TDD影响的研究表明,这种做法有助于将软件缺陷减少40%到60%。对于想要将更好的产品推向市场的企业主来说,TDD的一大优势是质量保证,可以在持续的过程中得到保证。

  显然,通过从代码的第一行进行连续测试,错误和意外事件的发生可能性较小。在质量方面,进一步的优势包括更多的深思熟虑的代码以及无需运行整个程序即可测试某些功能的能力,这对于大型项目而言非常重要。

  您发现错误的时间越晚,错误将给您带来更多的损失。最重要的是,TDD是一个很好的机会,可以快速检测到错误和崩溃并立即解决问题。如果以后发现错误,则可以减少繁琐调试的后续成本。此外,TDD有助于降低支持和缺陷管理领域的成本。专家强调,TDD提供了绝佳的机会来缩短学习代码行为所需的时间和成本。使用TDD时,您还可以指望减少计划外成本。

  如果您在开发期间不使用测试,则最终用户可能是第一个面临软件缺陷的用户。因此,除了修复错误的成本外,您还可能失去客户的信任。另一方面,TDD使您可以避免这些问题。测试驱动的开发还有助于优化开发人员的工作。如果出现问题,程序员会立即知道出了点问题,因为应用程序没有通过测试。这使开发人员可以专注于代码的特定部分,而不必考虑整个系统的后果。

  TDD也可以用作改进纸质文档的工具。对于程序员来说,书面测试比数百页的需求更有意义。可以说,测试充当了客户愿景与程序员必须做的事情之间的沟通桥梁。

  最后的想法

  使用TDD方法有很多优点,从有机会尽早解决bug到不太明显的bug,例如有机会确保客户长期满意。即使不应将TDD视为旨在解决任何开发问题的灵丹妙药,但如果要节省资源并优化软件项目的工作流程,则应考虑使用此选项。

  数据驱动测试注重于测试软件的功能性需求,也即数据驱动测试使软件工程师派生出执行程序所有功能需求的输入条件。数据驱动测试并不是白盒测试的替代品,而是用于辅助白盒测试发现其他类型的错误。

赞(10)
踩(0)
分享到:
华为认证网络工程师 HCIE直播课视频教程