在敏捷开发中测试可能遇到的问题
快
快速验证系统的能力
快速向开发提供反馈的能力
少
缺少可以依赖的文档
缺乏“足够”的时间
多
需要更主动地寻求改进
需要更多的自动化测试
敏捷开发中测试的任务
记录和追踪每个迭代需要被验证的任务
在每个迭代中验证迭代产出符合预期
搭建验证环境
记录和追踪缺陷
关注外部质量与内部质量
外部质量与内部质量
外部质量:
用户为之“买单”的质量
功能、性能、安全性等
内部质量:
决定了软件在长期发展中保持高质量的可能性
决定了软件维护的成本
可测试性、可移植性等
敏捷开发中测试的任务
产品迭代测试
验收测试
与客户沟通(确定验收测试准则)
创建自动化测试框架等
敏捷开发各个阶段的测试任务
1.计划阶段:Sprint周期、用户故事、优先级
测试相关任务:
确定Done的标准
确定Sprint的产出
2.执行阶段:设计与开发、完成Backlog条目、使用燃尽图跟踪
测试相关任务:
准备测试环境
验收用户故事
跟踪和管理缺陷
自动化测试
3.演示阶段:演示成果
测试相关任务:
准备演示环境
记录演示反馈
4.回顾阶段:分析本sprint得失
测试相关任务:
测试结果分析
敏捷测试特点:
以生产率为目标
全员测试
密切沟通
采用大规模的自动化测试
建立快速反馈的工具体系
促进内建质量
验收测试
用于确认User Story已经实现
验收测试需要用户认可
测试层次
1.底层测试
2.接口测试
3.系统功能测试
4.UI测试
底层测试
面向代码的测试:
以类和方法为测试对象
主要由开发工程师完成
将底层测试包含在持续集成中
面向代码的测试需要:
关注代码的可测试性
使用合适的工具支持:单元测试工具/持续集成工具
在一个迭代中开展测试:
标准”的软件测试过程
测试需求
获取本迭代的目标(新增功能,变动的内容)
测试计划
“一页纸”测试计划
测试设计
设计验收测试
测试执行
回归测试
对新功能的测试
探索式测试
测试评估总结:复用已有的测试等
测试需求
使用简单管理方式
Excel或是其他一目了然的列表类方法
为每个迭代保留一个独立文档
与每个迭代的Backlog条目关联
维持合理的粒度
测试计划
限定测试计划在“一页纸”的长度
仅列出测试的关键因素
测试范围
验收测试通过准则
简单的时间计划
测试设计
设计验收测试
寻找值得测试的地方
以自动化测试的方式固定已有的测试
发现不便测试的地方并与开发工程师合作
解决测试性不好的地方
建立更好的自动测试框架
使用探索式测试帮助设计测试
测试执行
自动化测试执行
持续集成环境:底层测试,一部分接口测试与系统测试
日构建环境:接口测试,系统测试
冒烟测试:一部分系统测试与一部分接口测试
完全回归测试:所有系统测试用例
非功能类型的测试
手工测试
探索式测试
对新功能的验证