软件开发的经验与教训:从测试优化到团队管理
1. 测试目标与优化
测试的目标是确保所有测试都能稳定地通过。不可靠的测试会被剔除,不再使用。过去,测试结果常受假阴性的困扰,即报告的测试失败并非由产品故障引起,而是测试运行不稳定导致。这会导致在采取行动之前需要对测试运行进行长时间的手动分析。
为了消除测试债务,需要对测试进行重构,使其更具弹性,并改进测试工具和基础设施。以下是具体步骤:
1.重构测试:使测试更具弹性,减少假阴性结果。
2.改进工具和基础设施:提高测试的稳定性和可靠性。
2. 时间盒的调整
将开发进度从三个月的里程碑计划改为五周的冲刺计划,现在进一步改进为三周的冲刺计划。每个冲刺中,团队有机会交付一个或多个功能,目标是在每个冲刺结束时交付一个潜在可发布的软件增量,即客户技术预览版(CTP)。CTP 仅在需要收集外部反馈时发布,但会在内部进行试用,以便在每个冲刺中评估质量。
3. 特性团队的组建
组建了小型的跨职能 Scrum 团队,即特性团队。每个特性团队通常由五到六名开发人员和测试人员,以及一名“项目经理”(即产品负责人)组成。特性团队一次处理一个或几个产品待办事项,在源代码树的独立分支中工作,直到其源代码和测试符合完成定义。
4. 完成定义的明确
为了保持代码的整洁,需要改进完成定义,自动化许多完成标准,并更新代码分支结构以支持代码的自动化和提升。设立了四个级别的完成标准,对应四个周期。最细粒度的是特性团队的完成级别,特性团队负责将其产品待办事项完成到第二个完成定义,即质量