验收测试
验收测试用来保证:
1. 客户确信给定的功能能够满足设计的要求。
2. 给予开发人员一个明确的停止点:当验收测试通过的时候,功能就被实现了。
在敏捷开发项目里,客户要编写所有的验收测试。在项目初期,开发人员可能需要与客户紧密合作,以编写验收测试的内容。
我们还建议你使用AT框架并将测试自动化。开人员人需要能够随着他们不断加入新功能而反复地运行这些测试。
下面就是与上述素材相关的AT框架的例子。
交互测试(示例)
//概述
“分析顾客的现金收支状况,考察他们在给定的生活方式成本和对风险的态度的条件下是否握有过多的现金。”
//设置顾客数据
UserClicksMainMenu
MenuFinancialObjectives
UserInputsText
FinancialObjectivesAttitudeToRisk
“3-低回报-长线投资”
UserClicksMainMenu
MenuCurrentBalanceSheet
UserInputsText
CurrentBalanceSheetTotalCash
30000
UserClicksMainMenu
MenuFinancialObjectives
UserInputsText
FinancialObjectivesLifestyleCost
25000
//现金规则
TestValueOfText
AnalyseObservation
“如果担心风险,你应该维持不超过#12,500的现金结余。”
TestValueOfText
AnalyseRecommendation
“考虑将#17,500从现金帐户转移到可投资的资产上。”
TestValueOfText
AnalyseDestination
“查询投资本金总额,将多余的现金转移到现金存储帐户,除非用现金购买资产。”
//hyperlink
UserClicksControl
AnalyseDestination
TestValueOfLabel
WorkAreaTitle
“本金总额”
在3Q公司,客户会编写验收测试,并以电子文本的形式每天提交给开发小组。所有的验收测试都会被尽早地提供给开发小组。这一过程与测试-编码-重整循环配合得相当好,它使得开发人员可以在进行验收测试失败之后,运行通过测试-编码-重整循环,然后重新运新验收测试,直到看到其通过测试。每个素材都可能多次进行验收测试,但是一旦所有的验收测试都通过了,那么该素材/功能的实现就完成了。
重要的成功因素
· 不慌不忙——用户素材不容易写好,所以在进行首批任务和讨论任务的时候给自己充裕的时间。
· 验收测试帮助——开发人员可能需要从一开始就与客户一起编写验收测试。专门为这一任务拨出时间——好的验收测试将带来不同寻常的收获。
· 寻求帮助——如果意识到你和你的小组需要帮助——去寻求帮助吧,不要犹豫!
· 已有的需求文档——如果有现成的需求文档,你要将它用作编写素材的基础。要记住,把这些文档当作“新的”素材。它们是对话的要点,而不是定好的要求。
策划——第三步
敏捷软件开发有三个层次的策划:
1. 高层次的发布策划,在这里策划项目的所有发布。这通常取决于项目的规模,但是某些项目的多次发布要求对长达18个月的期限的高层次策划。
2. 发布策划,第一次发布在这里被策划。每次发布之间的间隔为3个月。
3. 反复策划,通过其来策划下两个星期的工作。
这一三级策划过程的目的是让小组首先理解最终的目标,但是只详细策划他们现在所知的内容——未来两周的工作。
发布策划
在高层次发布策划阶段,客户和开发人员应该在一起共同讨论和理解整个系统。通常已经存在的需求文档能够用于启动这一讨论。在理想状况下,客户应该在开会的时候带上含有即将发布的大多数内容的素材卡。
在会议过程中,开发人员将需要估计素材的难度。这可以在会议过程中或者在会议之后进行。我们建议每个人相互比较各自素材,并把具有相同难度的素材集中到一起。然后,使用一个从最简单到最难的测量表,你就可以开始估计每个素材(的难度了)。小组使用不同的方法来给素材评分,按照难度分别打上1到10分。
现在客户能够策划最初的高层次发布计划了。高层次发布并不一定要十分精确,优先顺序和估计都不需要很可靠,但是它会为小组定下方向和提供决策的足够信息。
小型发布
下一步,客户需要拿走估计好的素材卡,并根据最近一个发布将素材的重要性的优先顺序排列好。客户需要考虑它们需要系统立即实现什么,因而这些素材将构成即将进行的发布。这些估计在这里变得十分重要,因为开发人员已经估计的是他们能够给定的发布时间里完成什么;(这个给定的时间)在大多数情况下是3个月。
短期发布循环可以保证紧密的反馈循环,还能让小组把精力放在与项目紧密相关的重要目标上。
反复策划
现在小组需要为未来两周制定具体的计划。再强调一次,客户必须将素材的优先顺序排列出来,详细说明他们希望在未来两周里看到的功能。
这些素材卡然后就被放到两周的反复(发布里)。最近的一次反复将是小组立即进行的工作。他们将交付这个反复,也就是全力工作、软件测试和取得反馈(即再次为未来两周策划),然后再次开始。如果素材在一个反复之前就完成了,开发人员会要求获得更多的素材。如果所有的素材都看起来是无法完成的,那么开发人员和客户要共同将素材移到下一个反复里或者适当地分割一下素材。
两周的反复让客户可以充分利用任何变化。例如,3Q公司碰到了一个很有预见能力的客户。他意识到一个按计划放在发布后期的素材事实上需要更早完成。在经过一个简短的讨论之后,小组用客户要求的素材替换掉了当前发布里具有同等价值的素材。那么成本呢?只是一个15分钟的对话。
以上只是对策划过程如何工作的简要概述。我们建议寻求对该过程这一部分的一些帮助或者指导,因为它可能会十分复杂,仔细调整常常也是必需的。
这一反复过程和发布策划分别要每两个星期和每三个月进行一次。
重要的成功因素
· 在反复中期进行一次检查——尽早检查小组在反复中期的进展情况。
· 估计就是这样——小组一开始的估计常常会偏离甚远——开发人员都是乐观主义者!但是随着小组进展到新的反复并适应这一过程,估计(的准确性)或者速度(小组工作有多快)就会确定下来。
· 昨天的天气——一旦完成了一个反复,你将对小组的速度有一个粗略的概念——两个星期里可以交付多少素材。这就是小组认可的在未来两周里的速度和小组工作量。随着小组的成熟,具备更好地进行估计的能力,你的速度可能会提高,然后固定在一个稳定的速度上。
· 速度不是一根棍子——而是对管理者的提醒——速度不是用来鞭打小组的大棒;它是用来测量自然波动的。
· 决策——客户或者客户小组必须具有决策权,或者能够迅速进行决策,尤其是在需要变化或者适应的时候。
· 协商的意愿——客户必须愿意就范围等内容进行协商。这才是敏捷开发的工作方式:就范围进行协商,排列最具业务价值的功能的优先顺序。
敏捷开发里的策划可能会很困难,所以我们建议你去寻求一些帮助,并花时间来完成它。