文章

单元测试的7境界

1         以各种借口拒绝单元测试Unit Test,比较常用的是“你没有足够的时间(进行单元测试)”。

2         尝试单元测试并且立刻开始在自己的博客商鼓吹单元测试和测试驱动开发Test Driven Development的好处。

3         单元测试一切。为了能够完成单元测试,而将私有private的方法和属性修改为内部internal;为了达到单元测试覆盖率100%而测试getter() 和 setter() 属性(方法)。

4         无法忍受脆弱的单元测试,在没有弄明白是什么的时候,就匆忙转向“集成测试” integration test。

5         发现了一种模拟 mocking 框架,并且乐于使用强制语义(strict semantics)。

6         模拟mock所有可能模拟mocked的对象。

7         开始真正有效单元测试

解读TDD的五大误区

摘要:所谓TDD简单地说就是以下两个步骤:确保所有的需求都能被照顾到;在代码不断增加和重构的过程中,可以检查所有的功能是否正确。本文我们一起来看下关于TDD的五大误区。 Read more

敏捷开发中的持续集成

在过去十年或更长的时间中,软件开发团队一直受益于敏捷开发方法。他们采用这些迭代和增量开发实践,通过协作式开发推动解决方案的发展。传统的、非敏捷的软件创建方法通常依赖于一个更严格管制的开发流。瀑布流程就是这方面的一个示例,其中需求、设计、开发和测试的每个活动都是连续执行的。 Read more

敏捷方法介绍:极限编程的12个实践

极限编程是一个轻量级的、灵巧的软件开发方法;同时它也是一个非常严谨和周密的方法。它的基础和价值观是交流、朴素、反馈和勇气;即,任何一个软件项目都可以从四个方面入手进行改善:加强交流;从简单做起;寻求反馈;勇于实事求是。XP是一种近螺旋式的开发方法,它将复杂的开发过程分解为一个个相对比较简单的小周期;通过积极的交流、反馈以及其它一系列的方法,开发人员和客户可以非常清楚开发进度、变化、待解决的问题和潜在的困难等,并根据实际情况及时地调整开发过程。 Read more

使用模拟对象(Mock Object)技术进行测试驱动开发

利用伪对象 (Mock Obect) 实现接口测试
在实施测试驱动开发过程中,我们可能会发现需要和系统内的某个模块或系统外某个实体交互,而这些模块或实体在您做单元测试的时候可能并不存在,比如您遇到了数据库,遇到了驱动程序等。这时开发人员就需要使用 MO 技术来完成单元测试。
最开始,Mock Object 是完全由测试者自己手工撰写的。在这里我们可以举个简单的例子。 Read more

测试驱动开发简介

背景
一个高效的软件开发过程对软件开发人员来说是至关重要的,决定着开发是痛苦的挣扎,还是不断进步的喜悦。国人对软件蓝领的不屑,对繁琐冗长的传统开发过程的不耐,使大多数开发人员无所适从。最近兴起的一些软件开发过程相关的技术,提供一些比较高效、实用的软件过程开发方法。其中比较基础、关键的一个技术就是测试驱动开发(Test-Driven Development)。虽然TDD光大于极限编程,但测试驱动开发完全可以单独应用。下面就从开发人员使用的角度进行介绍,使开发人员用最少的代价尽快理解、掌握、应用这种技术。下面分优势,原理,过程,原则,测试技术,Tips等方面进行讨论。 Read more

矛盾:全部测试,除了Accessor类?

在Raikes学院的敏捷开发者技能课程上,我说我们通常不测试Accessor。但是我们不是可以测试所有的吗,这是不是很矛盾啊?
上周,我和切特, Cheezy参加内布拉斯加大学(林肯)Raikes学院的CSM 课程和一节敏捷开发者技能课。真是很有意思。在快结束的时候,大家提到一件关心的事,我决定提笔写写这个。 Read more

我的TDD经验

在我的职业生涯刚开始的时候,我曾经是一个编码人员,虽然我被叫做开发人员。我通常参与开发中小型项目和产品。在刚开始的几年,我把大部份时间都花在写代码和实现功能上面。虽然我尽了自己一切努力,但是我依然经常在项目上线或者交付给QA测试后,要经历一段十分艰苦的修BUG时期。结果,我开始和其他团队成员一起延长工作时间,然后挣扎着尝试把这些似乎永无止境的BUG修完。我们没日没夜地工作,甚至周末也需要加班,但是产出却总不尽如人意,可以说是非常糟糕。在每个版本发布后,开发团队总是会有很大的压力。 Read more

极限编程实践

极限编程实践
完整团队            用户故事            短交付周期       验收测试            结对编码            测试驱动开发

集体所有权       持续集成            可持续的开发速度        开放的工作空间             计划游戏

简单设计            重构      隐喻
Read more

什么是测试驱动开发(TDD)

“只有不断地写代码来修复一次失败的测试。”这就是测试驱动开发,或简称为TDD。我们先编
写一个测试,然后写代码来使这个测试通过。我们会发现我们所能做的最好设计依赖于现有
的能让我们不破坏事情的测试。这个用于构建软件的方法鼓励好的设计、产出可测试的代码
并且使我们免于由于有缺陷的假设而过度工程化我们的系统。所有这些是由可执行测试的方
法来驱动我们设计的每一步这一简单动作来完成的,这样能够推动我们达到最终的实现。
Read more