错误的自动化测试目标 VS 建议目标
翻译整理自Dorothy Graham 和 Mark Fewster的文章
That's no Reason To Automate, 发表在Better Software, July/August 2009.
并非全文翻译,只是根据自己的理解,提炼整理了文中的相关观点。
发现更多bug
- 目标背后的好想法
- 测试应该发现bug,所以自动化测试应该更快的发现它们
- 因为测试可以执行的更快,所以我们可以执行更多测试,发现更多bug
- 我们可以对系统测试更多,所以我们应该在那些不能执行手工测试的部分发现更多bug
- 测试质量决定是否发现bug
- 如果最初进行的是手工测试,发现的bug应当被修复
- 重复旧测试并不能比进行新测试发现更多bug
- 更好的目标
- 帮助测试人员发现更多的回归bug
在夜间和周末运行回归测试
- 目标背后的好想法
- 我们有未利用的资源(夜晚和周末)
- 我们应该在睡觉的时候执行自动化
- 要达到这个目标太简单了,只要运行测试,而不管他是否值得运行
- 可以运行更多的自动化测试,但你需要证明需这些测试执行是有用的
- 衡量的方法之一是对所有的自动化测试,估算对应手工执行的时间,并进行衡量
- 更好的目标
- 利用未充分利用的计算机资源,运行最重要的或最有用的测试
减少测试人员
- 目标背后的好想法
- 我们花钱在工具上了,所以应该在别处节省回来
我们想消减总的开支,而人员的开支比较高
- 我们花钱在工具上了,所以应该在别处节省回来
- 很多manager会持这个观点
- 当自动化引入,实际上很少出现减员
- 相反,需要更多拥有测试脚本开发能力的人员
- 自动化支持测试活动,而不是篡权
- 自动化测试不等于全自动测试,需要人力开发脚本,分析测试结果,维护测试套件
- 自动化可以提高测试执行的效率,但需要测试人员保证测试本身有效
- 这个目的是管理的目标,不是一个适合自动化的目标
- 更好的管理目标是确保每个人都是他们擅长执行任务。这不是一个自动化的目标,也不是降低测试成本。
- 它可能是有效目标,但它是关于管理的,与自动化无关。
- 更好的目标
- 总的自动化测试成本,必须显著低于被自动化测试所节省的总测试成本
- 这可能部分的被以下指标所衡量:帮助人们每小时所提高的测试运行数或覆盖范围
- (这段我翻译的太拗口,大家看原文去吧)
缩短测试时间
- 目标背后的好想法
- 减少截止日期压力——任何可以节省时间的方式都是好的
- 测试是瓶颈,所以更快的测试会所有帮助
- 我们想更快的将产品发布上市
- 这是个很危险的目标,它混淆了“测试”和“测试执行”,所以也会产生问题
- 问题1:有很多容易的方法来达成目标:运行较短时间的测试,忽略长时间的测试,或者剪掉回归测试
- 问题2:缩短测试时间,很容易给人一种缩短总体测试时间的错觉:而自动化工具专注于测试执行,并不是整个测试过程
- 问题3:实际上,除了测试执行时间,还有很多因素会影响整体测试时间:自动化测试的设置和复位,确认缺陷并识别错误之处。手工测试时,你知道发现bug的上下文信息;而自动化测试只会告诉你差异之处,分析人员必须结合上下文信息,确认是否为真正的bug
- 导致测试时间增加的重要因素是软件的质量,这取决于开发人员,而不是手工或自动化测试人员
- 考虑维护成本:可能在第一个版本满足了目标,但是在接下来的版本中变的更糟
- 更好的目标
- 对于工具所支持的测试活动,减少花费在它上面的时间
- 这对自动化来说是一个持续的目标,去改善手动和现有自动化测试。
- 它可以通过计算指定测试活动的时间,进行衡量。
进行更多测试——重要的是质量而不是数量
- 目标背后的好想法
- 对软件测得越多,就覆盖的越多
- 测试是好的,所以更多的测试更好
- 好的测试不等于运行的测试数量,而是和所运行测试的价值有关
- 自动化许多坏的测试,只能带来维护开销和少量回报
- 自动化最好的测试,才能在时间和金钱方面带来价值、
- 先从重要的部分开始自动化,当我们开始执行测试,会发现不同于计划部分的另外的测试需要进行自动化。自动化需要能够在方向上进行调整,而不必每次都从头开始
- 自动化测试期间,开始可能需要较长的时间(相比手工时间)去自动化一个测试,因此可能导致短期内会运行较少的测试
- 更好的目标
- 对于最有用和最有价值的测试,自动化最适宜的数量
- 可以用最有价值的测试部分的自动化率进行衡量
自动执行x%的测试
- 目标背后的好想法
- 需要衡量自动化工作的进展
- 需要衡量自动化的质量
- 更重要和基础的要点是,去了解目前的测试质量,而不是已经做了多少自动化
- 如果是些没什么用的坏测试,自动化它们也没什么用(只是执行的更快了)
- “Automated chaos is just faster chaos.”
- 如果目标是自动化50%的测试,是否自动化了正确的50%呢
- 多少比例的测试应当被自动化?首先要排除这样的测试:那些实际上不可能,或者完全不切实际的自动化。
- 自动化提供了支持测试的工具,不应当简单的自动化测试。
- 更好的目标
- 自动化应当为测试提供有价值的支持
- 可以这样衡量:测试人员有多经常使用自动化人员提供的内容,包括执行自动化测试和其他支持。
- 通过自动化,增加了无需手工验证的数量
你的自动化测试目标是什么?它们是好的目标吗?
- 不要把测试目标和自动化目标混为一谈
- 选择更为合适的目标,并且衡量你实现的程度,这样你就能看出你的自动化成果是怎样使公司受益的
下面附上相应的思维导图