尽可能地实现测试自动化是软件行业的总体趋势。在软件测试中,自动化能够极大地提高生产力,但仅限于某些状况。
在这篇文章中,咱们将介绍一种测试自动化的办法,目标是依据我的项目的上下文辨认其可行性。对于测试人员来说,理解什么是自动化以及何时能够自动化十分有用。测试人员应该多多留神如何优化工作,无论是与其余共事、开发人员单干,还是本人尝试自动化工具。
咱们将介绍一些在还没有自动化相干教训时十分重要的概念,并评估它们绝对于手动测试相干的重要性和劣势。
什么是测试自动化?
从历史上看,自动化的呈现是为了缩小可编程零碎、机械操作的流动所需的人力,目标是简化沉重、反复和简单的工作,使其更无效也更高效。通过这种形式,能够节省能源、工夫和老本,同时让人们腾出工夫专一于其余工作。
在软件开发中,能够用同样的办法,通过把本来要手动实现的工作自动化来实现。须要遵循的步骤被转化成可反复的脚本,所以他们能够将精力集中在其余提供更大价值、缩小执行工夫的特定工作上。在某些状况下,自动化让咱们能执行人工本无奈执行的测试,特地是思考到在特定时间段内执行次数的限度,自动化能够更轻松地实现规模化、工程化测试。
当测试人员思考自动化时,最常见的问题之一是,“什么工夫能够进行自动化?”
想晓得是否应该自动化,包含评估潜在的投资、办法、收益,最重要的是,评估目前手动流程的相干信息。
首先要充沛理解手动过程,并且对这方面一目了然,只有这样能力实现自动化。对于手动过程的残缺理解是晓得什么工夫能够进行自动化的支柱,这意味着手动测试不能被齐全代替。在能够实现自动化之前,必须十分熟练地把握手动测试。先学会走路,而后再跑步。
自动化误区
自动化有其长处和毛病,具体取决于我的项目、工夫、老本、品质和办法。
基于上述,另一个十分重要的点是,除了自动化或非自动化之外,还必须理解具体情况,而且所做的一切都是基于以最佳形式实现目标,抉择和利用适当的办法、工具和技能。
防止陷入以下对于测试自动化的常见误区:
- 任何软件都能自动化
- 自动化的软件品质更好
- 自动化测试优于手动测试
- 自动化带来更快的投资回报
无论是手动还是主动,无妨以下述七个准则来了解测试的指标:
- 任何实际的价值都取决于其背景;
- 不存在“好的实际”,但上下文中会发现好的实际;
- 人的单干是所有我的项目环境中最重要的局部;
- 我的项目不是变化无穷的,往往会采取不可预测的门路;
- 该产品是一种解决方案。如果问题不解决,产品将无奈工作;
- 好的软件测试是一个具备挑战性的智力过程;
- 只有通过在整个我的项目中单干实际的判断力和技能,能力在正确的工夫做正确的事件,无效地测试产品。
这些准则是 Cem Kaner、James Bach 和 Brett Pettichord 在书籍《软件测试中的经验教训》中提出的,这有助于咱们意识到适应以后我的项目状况的能力的重要性。
手动与主动
刚开始时,咱们可能心愿将所有都自动化,但开发和保护自动化测试脚本的老本可不是轻轻松松的。
当一个我的项目把赌注押在自动化上时,现实状况下,它应该有一个松软的根底,从单元测试用例开始,通过即时反馈尽可能多地避免 bug,而后持续到不同的层级。这样,手动和探索性测试在 UI 级别最有价值,专一于那些无奈自动化的测试。
Michael Cohen 的自动化测试金字塔解释了这个概念:
在右边,能够看到自动化通常是如何实现的,而左边是现实的自动化测试,其中单元测试在金字塔中占据最大的比重。
只管自动测试和手动测试之间存在差别,但它们并不互相排挤,而是被视为寻求更好软件品质的补充工作。
如果思考测试的投资回报,手动测试新性能能以较低的老本疾速理解应用程序的更多信息。随着常识的获取好测试的库存减少,手动测试的老本也会减少。另一方面,自动化具备更高的初始老本,随着它的停顿而升高。这种趋势如下图所示:
能够看出自动化须要大量的初始投资,直到“突破点”,与手动测试相比,咱们开始看到它对长期老本产生的踊跃影响,也可能分明,这两种测试流动都是齐全兼容,产生短期和长期利益。