“自动化测试”有时也叫“测试自动化”,由两部分组成,“自动化”和“测试”,所以我们要理解自动化测试,就必须理解“自动化”和“测试”。
何为自动化:
在理解自动化之前,我们首先来看看如果没有自动化,人类是怎样与计算机进行交互的:我们对计算机的直接操作无非就是鼠标和键盘,使用鼠标定位并操作对象(如窗体上的一个按钮或网页中的一个超链接),使用键盘输入文本(如文本框或地址栏)。那么如果我们要将鼠标定位和操作与键盘输入让计算机自动完成,原理非常简单:用一个程序来记录鼠标的移动轨迹和各种事件(如单击,双击,右鍵,滚动等),将记录键盘事件,然后顺序地把这些记录的操作回放一遍,便实现了自动化。众所周知的自动化软件“按键精灵”,便实现了上述自动化过程。
但是我们很容易地发现,单纯只是记录鼠标和键盘操作很容易由于定位和坐标变化的问题导致运行时出错,所以我们需要寻找更可靠的自动化技术。一种基于对象识别的自动化技术应运而生,将使自动化更加可靠,基于对象识别的自动化技术将不再依靠鼠标来进行定位,而是直接通过某一个对象的属性来对当前系统运行中的窗体进行搜索,找到某个对象后对该对象执行合理的操作。如通常大家使用的宏或AutoIt便属于这类工具。对象识别是自动化技术的基础,同时也是自动化测试的基础。
测试的本质:
作为一个软件测试人员,我们应该思索这样一个问题:测试的本质是什么?大家能想到的很多术语或许都可能成为测试的本质,如需求,业务,测试用例,缺陷等,看上去都像是测试的本质,但是最后都有可能被推翻。笔者在从事测试工作的过程中也从未停止过思考,并得出了测试的本质:期望结果。这看上去或许有点牵强,那么让我们尝试回答以下几个问题:
1. 理解需求,分析需求项的目的是为了什么?
2. 如果理解需求是为了理解解软件的业务流程,那么搞清业务流程的目的又为了什么?
3. 如果搞清业务流程的目的是为了设计出高效的测试用例,那么设计测试用例的目的又是什么?
4. 如果设计测试用例的目的是为了找到更多的缺陷,那么我们判定缺陷的标准是什么?
5. 答案是:期望结果与实际结果不符。
如果我们能理解测试的这一“本质”,我们对软件测试如何开展的思路将会更加清晰,单纯从技术角度上来说,我们的测试要做的最重要的工作就是搞清楚一个软件的功能块的期望结果是什么,不管用什么方法,只要能把期望结果理解清楚,我们的测试便成功了一大半。
自动化测试的本质:
到目前为止我们应该已经理解了自动化技术的基本原理,也理解了软件测试的本质,那么这两者的结合体“自动化测试”又该如何理解呢?自动化测试的本质可归纳为三类十一个字:
1. 对象识别
2. 验证点
3. 数据驱动
“对象识别”技术是自动化测试的基础,任何自动化测试工具如果不能实现对象识别,将不成其为自动化测试工具。那么光能实现对象识别还不行,它只符合自动化的要求,不符合测试的要求,如果要达到测试的要求,则必须使用“验证点”,自动化测试工具中的验证点其实就是期望结果,有时也叫“检查点”。
如果能实现对象识别和验证点功能,便可作为自动化测试工具使用,这是由自动化和测试的本质所决定。但是这样的自动化测试工具将很难应用在实际测试过程中,比如我们要验证一个计算器的功能,我们要验证1+2,要验证1.1+2.2,还得验证1-2或者1.1-2.2等很多测试用例,这个自动化过程的操作都一样,只有计算数和运算符不一样,那么我们便需要使用“数据驱动”(或叫“参数化”)来实现对相同操作的各种测试用例进行测试。理论上来说,数据驱动不是必需的,没有数据驱动也可以完成自动化测试,读者可以在第二章中发现我们并未使用数据驱动,但并不影响我们进行自动化测试。但是现实情况是我们必须使我们的自动化测试脚本足够灵活,没有数据驱动将导致开发和维护测试脚本的成本非常高,甚至高过手工测试的成本。
(声明: 本文版权归作者个人所有, 如需转载, 请注明出处, 如有需要, 请联系QQ: 15903523 (强子))
分享到:
相关推荐
7. **学习自动化测试**:对于初学者,理解自动化测试的基本概念和流程至关重要,同时,学习一种或多种自动化测试工具的使用方法,如Selenium WebDriver,是实践操作的基础。此外,了解测试框架如JUnit和Page Object...
自动化测试是现代软件开发过程中的重要组成部分,它能够显著提高测试效率,减少人为错误...通过深入研究和实践这个项目,用户可以更好地理解自动化测试的价值,以及如何有效地应用自动化测试工具和技术来提升软件质量。
总的来说,这个实验提供了实践经验,使学习者能够深入理解自动化测试工具的使用,熟悉测试用例设计原则,以及如何通过性能测试来评估系统的稳定性和性能。通过这样的实践,测试工程师能够更好地诊断和优化软件系统,...
总的来说,《自动化测试书》是一本实用且全面的Selenium教程,它不仅教会读者如何运用Selenium进行Web自动化测试,还将帮助他们理解自动化测试的全貌,从而在实际工作中提升测试效率和质量。对于任何想进入自动化...
本课程“软件自动化测试技术学习”旨在帮助学员理解自动化测试的基本概念,掌握其典型应用,并熟悉常用的测试工具。 首先,自动化测试的基本概念包括利用软件测试工具自动执行测试任务,这可以覆盖全部或部分测试...
首先,我们要理解自动化测试的重要性。在软件开发中,手动测试虽然直观,但耗时且容易出错。自动化测试通过编写可重复执行的测试脚本,能够快速定位问题,缩短测试周期,并确保每次更新后软件功能的一致性。 Java...
8. 手工测试与自动化测试的对比:通过对比分析手工测试和自动化测试,可以明确自动化测试在效率方面的优势,也能帮助理解自动化测试的局限性,比如对测试环境的依赖、测试脚本的维护成本等。 9. 毕业设计的创新点和...
本文将深入探讨自动化测试的关键概念、框架、成本分析、选择标准、流程以及需求分析,帮助读者全面理解自动化测试的核心要素。 #### 关于自动化测试的两个思考 1. **什么样的项目适合自动化测试?** 项目的选择...
首先,接口自动化测试整体认知是理解自动化测试的基础。它涉及到测试的目标、范围和价值,例如提高测试效率、降低人工错误和确保产品质量。接口测试主要关注系统间的通信,尤其是API(应用程序编程接口)的正确性,...
这种实例能够帮助读者更好地理解自动化测试项目实施的全貌,并提供一个可操作的模板。 两位作者都拥有多年的软件测试行业经验。Daniel J. Mosley是计算机服务业软件测试技术的创始人,同时也是多项软件测试相关书籍...
《软件自动化测试技术教案》是基于实用软件测试过程一书,旨在深入理解并掌握软件测试自动化的核心知识。...对于那些想要在这个领域发展的人来说,理解自动化测试的重要性及其实施策略是至关重要的。
在文档的后续部分,我们将详细解释自动化测试相关的术语,例如测试脚本、测试框架、断言、测试数据等,以便读者更好地理解自动化测试过程。 1.4. **自动化实施目的** 自动化测试的主要目的是提高测试覆盖率,缩短...
### SigmationTF自动化测试教程知识点总结 #### 一、自动化测试原理 ##### 1.1 测试理论概述 ...通过学习这份教程,读者将能够更好地理解自动化测试的重要性和实施方法,从而在实践中提高软件测试的效率和质量。
"自动化测试和网页.zip"和"架构大会.zip"可能包含有关自动化测试在Web环境和大型系统架构中的应用,解压后学习其中的资料将有助于深入理解自动化测试的全面应用。 总之,自动化测试用例设计在Android开发中扮演着...
"自动化测试可行性分析报告" 自动化测试可行性分析报告主要对XXXX客户网银资金管理系统引入自动化测试工具的可行性进行评估,为项目经理...报告为项目经理提供了决策参考,帮助他们更好地理解自动化测试的价值和应用。
如何理解自动化测试框架 自动化测试框架是支持自动化测试活动的一套结构化方法和技术集合,它包括但不限于测试数据管理、测试脚本编写、执行控制、结果报告等功能模块。 ##### 2. 测试自动化框架元素管理 - **...
在IT行业中,自动化测试是提升效率、确保产品质量的重要手段,特别是在Web应用开发中。...实际内容可能会依据具体文档的详细信息而有所不同,但这些概述为理解自动化测试的规范和实践提供了基础框架。