文章

持续交付的模式

当你有了持续集成需要的构建服务器和脚本之后,下一个问题肯定是:“我们该拿这些构建版本怎么办?”持续交付,以自动化或半自动化方式,将构建版本从一个环境提送(promote)到更接近实际生产的交付准备环境;这常常是公司在这方面演进的下一步。 Read more

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

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

什么时候该采用结对编程?

结对编程是构建软件系统的一种有效方法。采用结对编程,带来的显著效益:
• 更好的想法——持续不断的头脑风暴、更大的知识库、在理解上有更少的差异、有更多的脑力解决设计问题;
• 更好的质量——更少的漏洞、想法的即时认证、始终如一的方法并更加遵守团队会议中的要求; Read more

持续集成工具的选择

持续集成(continuous integration)作为敏捷编程的基石现在已经被绝大多数的开发团队所广泛采用。而持续集成的工具现如今也是百花齐放,各有千秋,本文主要对比了在Java领域中比较常见的几种CI server(因为公司要求统一整个公司的CI server)。如果想了解更多的工具,可以看这里:http://confluence.public.thoughtworks.org/display/CC/CI+Feature+Matrix,这个网页集中了决大多数比较流行的CI server,但是我发现很多的内容已经落后于实际产品的功能了,所以如果要对比的话,可能要实际到产品的站点去看一下,最好还是下载下来运行起来看。 Read more

敏捷工程实践之持续集成

持续集成的提出
  集成软件的过程不是新问题,如果项目开发的规模比较小,比如一个人的项目,如果它对外部系统的依赖很小,那么软件集成不是问题,但是随着软件项目复杂度的增加(即使增加一个人),就会对集成和确保软件组件能够在一起工作提出了更多的要求-要早集成,常集成。早集成,频繁的集成帮助项目在早期发现项目风险和质量问题,如果到后期才发现这些问题,解决问题代价很大,很有可能导致项目延期或者项目失败。 Read more

每日站会,自组织的量度

每日站会是指Scrum团队每天进行的15分钟左右的会议。其主要目的是给团队讨论每日的承诺和Sprint目标的进度的机会。Scrum Master Product Owner和所有团队成员都应该参加每日站会。每个团队成员在会议中都必须回答以下三个问题: Read more

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

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

我的TDD经验

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