测试自动化
— 笔记整理自 北京理工大学 计算机学院
什么是测试自动化
- 测试自动化的本质是:用程序A测试程序B
- 联想与扩展
- 编写程序B的叫程序员
- 为了确保软件质量,程序B必需测试
- 手工测试程序B的人,叫STE(Software test enginer)
- 编写程序A进行自动测试的人叫SDET(Software Development Engineer in Test)
- 开发程序A要按照一般的软件开发过程管理
- 借助工具和框架,程序A可以更快,更好,更复杂
- …
测试自动化策略
- 提取适合自动化的测试
- 制订表格提取适合自动化测试的项目
- 挑选最能获得投资回报的测试项
- 最能缩短时间周期
- 最能减少风险
- 最能提高测试精度
- 评估每个自动化测试的时间消耗
- 根据测试目标确定自动化测试的优先顺序
适合与不适合
- 一般自动化测试耗费的时间是手工测试的6-10倍
- 辛辛苦苦开发的自动化测试脚本,当然希望它能重复不断的测试,达到利益最大化
- 适合
- 项目周期长,系统版本不断 需求变更不频繁
- 增量式开发、持续集成项目
- 重复性最大:例如数据的边界值测试、回归测试等
- 不适合
- 美观、声音、易用性测试
自动化测试排序
- 评估自动化测试时间
- 自动测试与手工测试的时间消耗比
- 比例大的测试优先实行自动化
- 采用迭代的方式确定自动化测试的执行顺序
- 迭代目标:投资回报率最高的测试优先
- 最容易开发脚本,最易理解测试实现自动化
- 逐次迭代
如何推行自动化
- 正确看待测试自动化
- 确定测试自动化涉众
- 高层:可信度,财务支持,部门协同
- 测试主管:日程安排,资源分配等
- 测试人员:改变工作习惯,学习新技能,遵守新规范
- 开发人员:增强代码的可测性
- 改进组织管理过程以适应 测试自动化
自动化测试误区
- 盲目在项目中使用自动化测试工具
- 不合理的期望
- 不合适的实现
- 过于追求自动化覆盖率和测试工具的利用率
- 很容易造成强迫开发人员将很多精力放在自动化测试上
- 却忽略了软件开发中的质量控制
- 测试自动化不能:
- 完全代替手工测试
- 立即降低测试投入,提高测试效率
- 保证100%的测试覆盖率
- 补偿劣质的测试过程
总结
- 要客观认识自动化测试的优势和不足
- 逐步提升团队自动化测试能力,积累自动化测试经验
- 逐步推进自动化测试进程为软件开发的持久化集成和持久化部署积累技术基础和试验基础