十六、质量
把测试集成到流程中
Scrum把测试作为一个主要的实践,并把测试作为开发过程的一部分,而不是作为开发工作“完成”后才发生的某事情
质量不能在产品生产完成以后加到产品上,要改进工艺流程,从一开始就生产出优质的产品
1、为什么最后才测试没有效果
1)很难改进现有产品的质量
2)错误一直未被发现——及早测试会避免一些令人不快的意外在最后才发生
3)项目状态难以测量——持续地测试产品,能让我们更清楚产品的现状
4)错失反馈时机——早期的反馈很重要
5)测试很有可能被削减——后期测试有进度压力
2、什么是构建质量
构建质量的团队有以下特征:
1)最明显的是使用工程技术实践——结对编程、自动化单元测试、持续重构
2)程序员和测试人员之间的交接微不足道——或者几乎没有
3)在Sprint的第一天和最后一天应该有同样多的测试活动——Sprint中不存在明显的分析、设计、编码、测试阶段
不同层次的自动化
单元测试自动化是根基,也是最容易设计的部分
用户界面测试很难自动化,因为它脆弱、成本高、耗时
应用程序服务的自动化测试是必要的,它可以弥补用户界面测试无法自动化的不足
1、保留用户界面测试的角色
尽量减少用户界面的测试,但不是不测
2、手工测试角色
对于许多涉及硬件或与外部系统集成的测试,我们不能或选择不进行自动化
手工测试应主要为探索式测试,快速在测试计划、测试设计和测试执行中循环,短周期,甚至可以识别遗漏的测试用例
3、在Sprint内做自动化
一个团队要高效率的冲刺,需要严重依赖自动化
忙碌开发代码的时候,正是代码变化最频繁的时候,这是自动化测试发挥作用的最佳时机
为已有应用增加自动化测试会更难
随着时间的推移,自动化的成本越来越高,收益越来越低
验收性测试驱动开发(ATDD)
在ATDD中,工作是针对验收测试而进行的
ATDD与TDD的关系在ATDD中,解放了PO,PO只需要完成对某个用户故事的COS(满足条件)的传达即可
做ATDD有助于减少Sprint计划会议所花的时间
如果COS还没有,两种选择:一个是在计划会议明确掉;另一个是把确认COS作为Sprint的首要任务,第一种优先考虑
1、恰到好处的细节
COS仅仅是在Sprint最后阶段完成用户故事时要满足的内容的概要说明,它们用来判断在一个Sprint结束的时候,用户故事是否被正确完成了
做ATDD,会使团队持续地专注于产品负责人的目标,当测试人员想要了解其职责的时候,它能激发测试人员和开发人员早期进行沟通
偿还技术债务
做一个设计很差、代码写得很差、包括未完成代码或者任何其他缺陷的系统所涉及的成本
技术债常常是由于赶工所致:非预期的数据库数据导致应用崩溃;脆弱的代码;打包环境过时;团队使用过时的工具;
只要快速地还债,小的债务可以激励开发
1、通过三个步骤降低测试债务
1)止血
找到方法进行自动化,“挂在低处的水果”先拿来
加大测试服务器与测试环境的配置投入
2)维持现状
在前面的基础上,逐渐学会新增功能的自动化
3)还债
一旦整套流程被打通之后,就开始还债,但欲速则不达,只要朝着正确的方向在发展就可以
质量需要团队的共同努力
一个好的Scrum团队会一直关注测试实践的状态,总是想方设法加以改进
网友评论