敏捷与测试的故事(3)-XP的神话

2010-05-25  欧阳辰 

敏捷与测试的故事(3)-XP的神话
by www.QAThinker.com
 
谈到敏捷,不能不提的就是极限编程(Extreme Programming,XP),因为XP是敏捷软件开发中最著名的敏捷方法之一,同时XP的价值观与敏捷开发的价值观非常类似,其原因也许是XP的发明人Kent Beck是敏捷宣言的17名宣言人中的核心成员。

再说说XP方法的来源吧,XP的历史比敏捷开发宣言(2001)的历史要久,Kent正式提出这个方法并且出版书籍的时间是1999年,书的名字叫做《极限编程解析-拥抱变化》(Extreme Programming Explained-Embrace Change),看过这本书的人都喜欢说“拥抱变化”,而不是通常的响应变化或则适应变化。

Extreme Programming Explained: Embrace Change

在Kent Beck正式提出这个方法之前,他曾负责克莱斯勒公司内部的一个薪酬管理系统,在这个项目中,他采用一些与传统软件工程”相悖”的实践,加速的项目的进度,得到一些好的效果。所以他在1999年将这些好的实践,总结为极限编程。有趣的是,他所做的酬管理系统在2000也因为业务原因取消了,其开发方法却一直流传至今,成为重要的敏捷开发方法。Kent Bech非常喜欢软件开发,并且涉猎颇广,他写过书籍包括SmallTalk,Refactor,设计模式,Eclipes开发原则,测试驱动的开发,XP等等。

那么什么是极限编程呢?下面就是一些从他书里找到的答案:

  • 一种社会性的变化机制
  • 一种开发模式
  • 一种改进的方法
  • 一种协调生产率和人性的尝试
  • 一种软件开发方法

    我总结了一下,就是一种人性化开发方法,用于快速响应变化的情景

    XP在内容形式上很复杂,他在软件开发都不同周期都有很多具体的实践

    1)小规模回馈(Fine Scale Feedback)

    • 测试驱动开发
    • 策划游戏
    • 全部人员的合作和反馈
    • 成对编程(peer programming)

    2) 持续的流程(Continuous process)

    • 持续集成
    • 重构和设计改进
    • 小型发布

    3)达成共识(Shared Understanding)

    • 简单的设计(Simple Design)
    • 系统隐喻 (System Metaphor)
    • 代码的集体负责制
    • 程序设计标准

    4)程序员的利益

    • 持续发展的步骤(例如每周40小时工作)

    那么在实践中具体实施的程度和效果如何呢?

    XP从实施的可行性来说,全面实施的可能性很小,因为XP的规则贯穿在整个开发周期,很多原则的具体操作性不是很强。比如说Refactor,XP强调了重构的重要性,但是它不可能告诉你什么时候做重构,如何做;再比如说”成对编程”,概念挺好的,但是不是每个公司运行好这种模式,而且这种模式最后往往简化成Code Review。再如系统隐喻(System Metaphor,简单说就是代码本身中的方法名,变量名很好的解释了其功能),众所周知,这是好的实践,但是如何保证它全面执行确实一个大难题。

    XP的执行,其实对软件测试是有很大的挑战的,其原因如下:

  • 在XP模式中,测试人员的定位模糊。 由于XP实际上大多都是开发的实践,其理念是将测试任务贯穿在开发过程中,尽量由开发人员完成,而不是专职的测试人员。这导致在执行当中,测试人员和开发人员的职责区分不是很明显。

  • XP强调的”拥抱变化“,实际上给测试进度和质量管理带来挑战。在很多应用下,虽然采用了XP开发方法,但是测试管理还是传统方式,导致管理上有很多不协调和冲突。

  • XP模式下,由于缺少专业测试人员的投入,软件的质量不容易把握。

  • 其它相关文章

    敏捷与测试的故事(2) -你今天Scrum了么?
    敏捷与测试的故事(1) -初识敏捷

    439°/4307 人阅读/9 条评论 发表评论

    曾晨  2010-05-25

    有听过张传波老师的超越极限编程 很受教~


    林子新  2010-05-25

    也谈谈敏捷的感受:敏捷是需要根据不同公司特点流程以及团队的特征而改造。敏捷的相互协作的感觉很多,各种环节不能出现任何纰漏。在使用敏捷的时候,并不能照搬国外的理论,因为有些在中国并不适合,比方说:Review的条件场地以及执行的章程,文档不足等等,这些是根据当下情况进行改进并实施。敏捷对于员工来说,其实若根据理论来执行的话,其实是很累的。


    金鑫  2010-05-25

    XP的执行对测试工作是有很大的挑战,定制周期性的测试计划,测试迭代,回归测试之类的传统做法很难应对,缺陷是否能有效的收敛风险很大哦


    关敏  2010-05-25

    受教了


    欧阳辰  2010-05-26

    林子新: 也谈谈敏捷的感受:敏捷是需要根据不同公司特点流程以及团队的特征而改造。敏捷的相互协作的感觉很多,各种环节不能出现任何纰漏。在使用敏捷的时候,并不能照搬国外的
    非常同意,敏捷开发要根据环境(Context)进行裁剪和自定义。
    对于员工来说,敏捷应该比传统要辛苦一些,但是在竞争特别激烈的时候,例如互联网应用,我们不得不采用敏捷模式。


    欧阳辰  2010-05-26

    金鑫: XP的执行对测试工作是有很大的挑战,定制周期性的测试计划,测试迭代,回归测试之类的传统做法很难应对,缺陷是否能有效的收敛风险很大哦
    呵呵,传统的眼光看敏捷,必然有这些忧虑。 所以,测试也应该敏捷一些。:)


    王斌  2010-05-26

    林子新: 也谈谈敏捷的感受:敏捷是需要根据不同公司特点流程以及团队的特征而改造。敏捷的相互协作的感觉很多,各种环节不能出现任何纰漏。在使用敏捷的时候,并不能照搬国外的
    快是快了,可是真的是很累


    张峰  2010-05-26

    敏捷开发,如何测试?对于现在很多国内的公司,在不重视测试的环境下,是很大的挑战啊


    欧阳辰  2010-05-27

    张峰: 敏捷开发,如何测试?对于现在很多国内的公司,在不重视测试的环境下,是很大的挑战啊
    说服老大们重视测试,重视软件质量,也是测试工作的一部分 :)


    登录 后发表评论