一、介绍
这是一篇英文的文献,昨天把他翻译出来了。觉得还是比较有用,所以决定在这里把它贴出来。原文在:
http://www.stickyminds.com/sitewide.asp?ObjectId=10094&Function=DETAILBROWSE&ObjectType=ART&sqry=%2AZ%28SM%29%2AJ%28MIXED%29%2AR%28relevance%29%2AK%28simplesite%29%2AF%28Test%2Dbased+Project+Progress+Reporting%29%2A&sidx=0&sopp=10&sitewide.asp?sid=1&sqry=%2AZ%28SM%29%2AJ%28MIXED%29%2AR%28relevance%29%2AK%28simplesite%29%2AF%28Test%2Dbased+Project+Progress+Reporting%29%2A&sidx=0&sopp=10
二、摘要
面向交付的项目管理和测试驱动开发能够结合在一起,能够为客户、开发成员和管理者提供客观的更容易理解的方法来测量项目的进度。在这篇文章里,john ferguson smart提供了一个学习用例来说明如何通过这种途径进行工作。
三、名词解析(自己添加的)
3.1 面向交付的项目管理是一种项目管理方法,测试驱动开发是一种开发方法。
3.2 面向交付的项目管理:就是本文说的,把任务分下去,总体任务代表一个总的交付,然后各个子任务代表子交付。项目根据各个交付任务来进行管理。
3.3 迭代的开发方法:就是先完成部分主要的功能,形成一个版本。然后再逐渐添加新的功能,形成新的版本。
3.4 测试用例(test case):可以理解为就是测试用的程序和方法。每个测试用例对程序的某个功能进行测试,看是否实现了这个功能,有没有bug。完备的测试用例就是对程序的各个功能和稳定性进行全面的测试。设计好的测试用例,才能全面而且尽可能快的完成程序的测试。
3.5 测试驱动开发:表示总的程序需要什么功能,各个子模块需要什么功能。指定好测试用例,程序完成了测试用例的功能,就表示开发完成了。将测试用例用于开发过程中,而不是说先把程序写好了,最后再测试。
3.6 可交付性(deliverable):可以理解为可以交付的工作产品,就是具备独立功能的一段代码。
3.7 beta版本:beta版本就是软件开发的一个阶段,一般这个阶段,程序已经可以完成大部分的功能,也比较稳定了。一般beta版本开发出来以后,就会提供给用户或者内部人员免费使用,然后根据使用发现的bug,进行修正。
四、可交付性的定义
所有的工程项目,原则上都具有可交付性。如果采用迭代的开发途径,为了制定一个迭代的、基于里程碑节点的交付方案,需要将主交付性可以分成多个小的子交付性。(比如一个应用程序可以分成多个模块、函数或者用户开发实现)。
五、WBS和项目计划
工作分解结构(WBS)是一个大家熟悉的而且非常有用的工具,用来将一个项目分解成容易管理的(也有人说可以消化的,或者可以咀嚼的)多个任务。在一定程度上,你分配WBS任务给单独的开发组成员,(某些时候,是一小群开发成员),然后要求他们产生一个具体的可交付产品。
工作分解结构(WBS)往往是跟项目计划紧密相连。这里,对于工作分解结构(WBS),工作需要细化到每个任务对应一个可交付性的条款,然后分配到具体的小组成员。将具体的交付工作分给具体的小组成员,可以让开发者将开发活动上聚焦在具体的、短期的目标上,同时也可以培养开发者的buy-in能力和责任感。
六、测试用例
自然,我们也为每个交付要写一组测试用例。这些测试用例代表了每个模块可以被接受的标准。可以有很多方法来做测试计划和测试用例。大部分会包含某种形式的,一系列的执行动作和步骤,伴随着特定的结果。在我们的用例中,对于每一个可交付的模块,我们将对应的测试用例填到Excel电子表格中,并加注额外的信息以便容易使用。下面就是Excel表格的表项。
● 一个独一无二的测试用例号
● 显示ID
● 显示区域
● 执行的动作
● 期望的结果
● 得到的结果
→ 结果:通过,失败,还没有测试
→ 描述任何非期望的行为
→ 相关的缺陷追踪问题
根据我们的经验,一组好的测试用例能够很完美的指示产品是否准备好交付。理想的情况,是测试用例和产品的功能定义一同交给开发者,尽管在实际中,测试用例一般要晚一点点。分析文档和测试用例为每一个模块提供了具体的有形的目标,使得开发者能够关注于代码的编写。