写点什么

对遗留项目开始自动化测试

2011 年 1 月 30 日

为遗留应用程序编写自动化的回归测试总会是一项非常艰巨的任务。 我们所要面临的问题包括从哪里开始、对多少程序实行自动化测试、并且决定自动化的最佳策略等等。

Mark Levison 在敏捷软件测试新闻组中发布了一个帖子,Hubert Matthews 对此做出了回复,他所建议的方法是一种基于风险的方法。

你无法对一切都进行测试,所以你需要选择在哪里花费你的时间和金钱。对我来说,测试主要是关于信息和风险的,而不是要完全覆盖或者对所有功能完全测试的。

Hubert 提到了几点,它们有助于评估所要关注的领域。 他所提出的内容包括:

  • 当前客户感觉质量最差的地方在哪?
  • 功能的关键区域是什么(例如,是什么让他们创收)?
  • 客户想要更多的特性,而不需要更高的质量吗?
  • 对于他们的系统来说,最大的风险是什么?
  • 如果客户想要对一项功能做出提升,那么会是什么呢?
  • 探索式的手工测试会找到更重要的缺陷吗?

Rakesh Patel 在回应时提出 一种类似的方法,

  1. 只需要对应用程序图形化界面的最重要操作进行自动化。很多应用程序都拥有 常用的操作,它们占所有情况的 80%。如果这些操作崩溃了, 那么你的业务就遇到麻烦了!!
  2. 如果你可以绕过图形化界面, 而直接到达后端并测试业务功能,那么就一定要那么做。那意味着与图形化界面特定的整合测试只是要确保前端的数据能够到达后端。

Mark Fink 指出,在开始对遗留项目进行自动化测试之前,他喜欢先对项目有总体的印象,以识别出需要注意的特定区域。 他建议使用一系列工具,这些工具对于获得总体印象非常有用。与此类似,Nat 指出关键在于要为你所想要关注的区域创建端对端的测试。他建议,对于遗留系统,如果存在手动测试,那么经常是非常好的脚本,可以快速成为自动化测试的成果。

Ralph Bohnet 和 Gerard Meszaros 谈到了测试驱动移植,其中的一个结论是,对于任何遗留应用程序,如果想要移植成功的话,那么最重要的业务场景一定要有自动化的回归测试。

Lisa Crispin 同意在特定的情况下,你或许能够一下子对整个遗留应用程序进行自动化测试。对 Lisa 来说,起作用的是多种因素的组合。 其中的一些因素包括:

  • 请客户对应用程序的关键部分按优先级排序
  • 为每个部分编写手动的回归测试脚本
  • 在每个 sprint 中估计时间,从而为那些部分编写 GUI 的冒烟测试
  • 使用 CI 框架,至少每天执行一次测试套件
  • 所有新的开发都应该有充分的测试

据 Lisa 所说,使用这种方法,他们能够在八个月的时间内对遗留应用程序编写充分的自动化测试。

因此,为整个遗留应用程序编写自动化的回归测试,是一项长远而且耗费时间的工作。我建议的方法是,为对业务重要的功能构建足够覆盖率的测试,然后逐渐围绕系统创建测试用具。

InfoQ 上的相关新闻: 针对缺少测试的应用程序的测试技术

查看英文原文: Starting Test Automation for a Legacy Project

2011 年 1 月 30 日 07:551148
用户头像

发布了 340 篇内容, 共 112.7 次阅读, 收获喜欢 4 次。

关注

评论

发布
暂无评论
发现更多内容

一文搞懂 FlinkSQL 的 KafkaSource

shengjk1

flink flink源码 flink sql

图解TCP的通信机制

零一

TCP 网络

SQLServer性能调优方法小结

嘉为蓝鲸

数据库 sql 运维 SqlServer MAXDOP

JVM G1GC的算法与实现

Yano

Java JVM GC G1GC

一文搞懂 FlinkSQL函数 LAST_VALUE 的原理

shengjk1

flink flink sql flink 源码

使用Redis,你必须知道的21个注意要点

云流

Java 数据库 redis 架构 面试

阿里大牛全新整理!金三银四面试题库+Java全栈笔记限时开源

Java王路飞

Java 程序员 架构 面试

寻找被遗忘的勇气(二十三)

Changing Lin

3月日更

Flink 提交作业运行的各种模式总结

shengjk1

flink flink 执行

Flink 计算 PV UV

shengjk1

flink flink 实战

Dubbo的设计理念原来就藏在这三张图中

中间件兴趣圈

dubbo RPC

快速使用Vue3最新的15个常用API(1W5+字详解,建议收藏)

零一

vue.js 前端 Vue3

4层板到12层板叠层经典设计方案

不脱发的程序猿

28天写作 电路设计 3月日更 PCB PCB布局

【LeetCode】扁平化嵌套列表迭代器Java题解

HQ数字卡

算法 LeetCode 3月日更

到底什么是Event Loop?那就来了解一下JavaScript分别在浏览器和Node环境下的运行机制吧

零一

JavaScript 前端

一文搞懂Flink SQL执行过程

shengjk1

flink flink源码 flink sql flink sql 执行过程

FlinkSQL 平台

shengjk1

flink flink sql flink sql 平台

一文搞懂 Flink 中的锁

shengjk1

flink flink 锁

硬件工程师必备,常用元器件封装速查表

不脱发的程序猿

28天写作 电路设计 3月日更 元器件封装速查表 电子设计

阿里一战封神,百万人跪求的Java面试手册终于开源;

Java架构师迁哥

Python-计算机视觉-OpenCV-调色板

Aldeo

Python OpenCV

Redis新版本开始引入多线程,谈谈你的看法?

Java架构师迁哥

超全Android中高级面试复习大纲,在线面试指南

欢喜学安卓

android 程序员 面试 移动开发

万众瞩目的EGG Network,备受期待的New-DeFi自治共识论坛在海口闭幕

币圈那点事

区块链

Flink 计算 TopN

shengjk1

flink flink 实战 flink topN

已拿到蚂蚁金服Offer!阿里内部二十三万字Java面试题总结

Java架构追梦

Java 阿里巴巴 架构 面试题总结 金三银四

Swift 5创建和使用Framework, XCFramework 从入门到精通 John 易筋 ARTS 打卡 Week 42

John(易筋)

ARTS 打卡计划 Framework XCFramework

如何在3分钟内实现音频变声和趣味音效?

拍乐云Pano

音视频 RTC 音视频算法 出海社交 社交泛娱乐

想学IT的必看!漫谈MySQL权限安全,分享一点面试小经验

欢喜学安卓

android 程序员 面试 移动开发

Python OpenCV 图像处理二值化,取经之旅第 7 天

梦想橡皮擦

3月日更

java deep vs shallow copies

shengjk1

Java deep copy shallow cop

对遗留项目开始自动化测试-InfoQ