单元测试 – 单元测试/ TDD的有用设计模式?

前端之家收集整理的这篇文章主要介绍了单元测试 – 单元测试/ TDD的有用设计模式?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
Reading this question帮助我巩固了我一直在使用单元测试的一些问题,TDD等。

自从开发TDD方法以来,我知道这是正确的道路。阅读各种教程帮助我了解如何做一个开始,但他们一直很简单 – 不是真正的东西,一个可以应用于一个活动的项目。我管理的最好的是在我的代码的小部分,例如图书馆,主要应用程序使用,但没有以任何方式集成的书写测试。虽然这是有用的,它相当于约5%的代码库。有很少的关于如何去下一步,帮助我得到一些测试进入主要的应用程序。

诸如“Most code without unit tests is built with hard dependencies (i.e.’s new’s all over the place) or static methods.”和“…it’s not rare to have a high level of coupling between classes,hard-to-configure objects inside your class […] and so on.”的注释使我意识到下一步是理解如何解耦代码以使其可测试。

我应该怎么看,帮助我这样做?是否有一组特定的设计模式,我需要了解和开始实现,这将允许更容易的测试?

这里,Mike Clifton描述了2004年的24个测试模式。它在设计单元测试时是一个有用的启发式。

http://www.codeproject.com/Articles/5772/Advanced-Unit-Test-Part-V-Unit-Test-Patterns

通过/失败模式

这些模式是你的第一道防线(或攻击,取决于你的观点),以保证良好的代码。但是请注意,他们在他们告诉你有关代码的时候是欺骗性的。

>简单测试模式
>代码路径模式
>参数范围模式

数据事务模式

数据事务模式是开始涉及数据持久性和通信的问题。有关此主题的更多内容将在“模拟模式”中讨论。此外,这些模式有意忽略压力测试,例如,在服务器上加载。这将在“压力测试模式”下讨论。

>简单数据I / O模式
>约束数据模式
>回滚模式

集合管理模式

很多应用程序都是管理信息集合。虽然程序员可以使用各种集合,但重要的是要验证(并记录)代码正在使用正确的集合。这会影响顺序和约束。

>收集 – 订单模式
>枚举模式
>集合约束模式
>集合索引模式

性能模式

单元测试不应只关心功能,而应关注形式。被测试代码执行其功能的效率如何?多快?它使用多少内存?它是否折衷数据插入有效地进行数据检索?它是否正确释放资源?这些都是单元测试范围内的所有东西。通过在单元测试中包括性能模式,实现者有一个目标达到,这导致更好的代码,更好的应用程序和更快乐的客户。

>性能测试模式

过程模式

单元测试旨在测试,好的单元…应用的基本功能。可以说,测试过程应该归入验收测试程序,但我不会接受这个论点。一个过程只是一种不同类型的单元。使用单元测试器的测试过程提供了与其他单元测试相同的优点 – 它记录了过程的工作方式,并且单元测试器可以通过不按顺序测试过程来帮助实施者,快速识别潜在的用户界面问题好。术语“过程”还包括状态转换和业务规则,两者都必须被验证。

>过程 – 序列模式
>过程状态模式
>过程规则模式

模拟模式

数据事务很难测试,因为它们通常需要预设配置,开放连接和/或在线设备(仅举几例)。 Mock对象可以通过模拟代码正在处理的数据库,Web服务,用户事件,连接和/或硬件来解决。 Mock对象还具有创建在现实世界中非常难以再现的故障条件的能力 – 有损连接,慢服务器,故障网络集线器等。

>模拟对象模式
>服务模拟模式
>位错误模拟模式
>组件模拟模式

多线程模式

单元测试多线程应用程序可能是最困难的事情之一,因为您必须设置一个条件,它的本质是意图是异步的,因此是非确定性的。这个主题本身可能是一篇主要的文章,所以我在这里只提供一个非常通用的模式。此外,为了正确地执行许多线程测试,单元测试器应用必须自己作为单独的线程执行测试,使得当一个线程结束处于等待状态时单元测试器不被禁用

>信号模式
>死锁分辨率模式

压力测试模式

大多数应用程序都在理想的环境中测试 – 程序员使用一个具有很少网络流量的快速机器,使用小数据集。现实世界是非常不同的。在完全中断之前,应用程序可能遭受降级,并且对用户响应差或错误。验证代码在压力下的性能的单元测试应该在理想环境下与单元测试相同的热度(如果不是更高)。

>批量数据应力测试模式
>资源压力测试模式
>加载 – 测试模式

表示层模式

单元测试的最具挑战性的方面之一是验证信息在表示层本身得到用户的权利,并且应用程序的内部工作正确地设置表示层状态。通常,表示层与业务对象,数据对象和控制逻辑纠缠在一起。如果您计划对表示层进行单元测试,您必须意识到,清晰地分离问题是必须的。解决方案的一部分涉及开发适当的模型 – 视图 – 控制器(MVC)架构。 MVC架构提供了一种在使用表示层时开发良好设计实践的方法。但是,它很容易被滥用。需要一定的规程来确保你事实上正确地实现了MVC架构,而不仅仅是一个字。

>视图状态测试模式>模型状态测试模式

猜你在找的设计模式相关文章