• 自动化测试基础


    分层的自动化测试

    测试金字塔的概念由敏捷大师Mike Cohn在他的Succeeding with Agile一书中首次提出。他的基本观点是:我们应该有更多低级别的单元测试,而不仅仅是通过用户界面运行端到端的高层测试。

    测试金字塔如图1-1所示。
    图1-1 测试金字塔

    Martin Fowler大师在测试金字塔的基础上提出分层自动化测试的概念。在自动化测试之前加了一个“分层”的修饰,用于区别“传统的”自动化测试。那么,什么是传统的自动化测试呢?

    所谓传统的自动化测试我们可以理解为基于产品UI层的自动化测试,它是将黑盒功能测试转化为由程序或工具执行的一种自动化测试。

    分层自动化测试倡导的是从黑盒(UI)单层到黑盒和白盒多层的自动化测试,即从全面黑盒自动化测试到对系统的不同层次进行的自动化测试。

    分层自动化测试如图1-2所示。
    图1-2 分层自动化测试

    单元自动化测试

    单元自动化测试是指对软件中的最小可测试单元进行检查和验证。

    将单元测试交给测试人员去做,有利有弊,整体来说,由开发人员去做更为合适。

    测试人员做单元测试的优势是具备测试思维,在设计测试用例时考虑更加全面;但劣势也很明显,目前,大多数测试人员很难做到像开发人员一样熟悉被测代码。

    让开发人员去写单元测试,优势非常明显,没有谁比开发人员更熟悉自己写的代码了。他们只需掌握单元测试框架的使用和一些常用的测试方法,即可写单元测试,而且定位bug时更加方便。

    所以,测试人员可以教开发人员如何使用单元测试框架和测试方法,而不是代替开发人员去写单元测试。

    接口自动化测试

    Web应用的接口自动化测试大体分为两类:模块接口测试和协议接口测试。

    (1)模块接口测试,主要测试程序模块之间的调用与返回。它主要强调对一个可实现完整功能的类、方法或函数的调用的测试。

    (2)协议接口测试,主要测试对网络传输协议的调用,如HTTP/SOAP等,一般应用在前端和后端开发之间,以及不同项目之间。

    模块接口测试更适合开发人员去做;协议接口测试既可以由开发人员去做,也可以由测试人员去做。

    UI自动化测试

    UI自动化测试以实现手工测试用例为主,可降低系统功能回归测试的成本(人力成本和时间成本)。UI自动化测试由部分功能测试用例提炼而来,更适合测试人员去做。

    在《Google测试之道》一书中,Google把产品测试类型划分为:小测试、中测试和大测试,采用70%(小)、20%(中)、10%(大)的比例,分别对应测试金字塔中的Unit层、Service层和UI层。

    适合自动化测试的项目

    参考以下几点:

    1. 任务测试明确,不会频繁变动。
    2. 每日构建后的测试验证。
    3. 比较频繁的回归测试。
    4. 软件系统界面稳定,变动少。
    5. 需求在多平台上运行的相同测试案例、组合遍历型的测试,以及大量的重复任务。
    6. 软件维护周期长。
    7. 项目进度压力不太大。
    8. 被测软件系统开发较为规范,能够保证系统的可测试性。
    9. 具备大量的自动化测试平台。
    10. 测试人员具备较强的编程能力。

    当然并非以上10条都具备的情况下才能开展自动化测试工作。根据我们的经验,一般来说,满足以下3个条件就可以对项目开展自动化测试。

    1. 软件需求变更不频繁。
    2. 项目周期较长。
    3. 自动化测试脚本可重复使用。

    如何学习UI自动化测试

    要想学好基于Selenium/appium的UI自动化测试,应从以下3个方面入手。

    1. 编程语言
      Selenium/appium支持多种编程语言(Java、Python、Ruby、C#、JavaScript等),更准确地说,Selenium/appium针对每种编程语言都开发了相应的Selenium/appium测试库。
      编程语言是基础,UI自动化能否做好,除元素是否好定位外,更与自动化项目的设计有关,如何设计方便扩展和维护的自动化测试项目对UI自动化测试来说非常重要,而自动化项目的设计离不开扎实的编程基础。
    2. Selenium/appium API
      Selenium(WebDriver)和appium API提供了操作Web/App的类和方法。我们只需使用这些方法即可操作Web页面上的元素或App上面的控件。
    3. 单元测试框架
      如何定义一条测试用例、如何组织和运行测试用例,以及如何统计测试用例的运行结果(总测试用例数、成功测试用例数、失败测试用例数等),都是由单元测试框架实现的。单元测试框架是编写自动化测试用例的基础。

    Selenium简介

    Selenium经历了三个大版本,Selenium1.0、Selenium2.0和Selenium3.0。Selenium不是由单独一个工具构成的,而是由一些插件和类库组成的,这些插件和类库有其各自的特点和应用场景。

    Selenium1.0家族关系如图1-3所示。
    图1-3 Selenium1.0家族关系

    Selenium1.0

    1. Selenium IDE
      Selenium IDE是嵌入在Firefox浏览器中的一个插件,可实现简单的浏览器操作的录制与回放功能。
    2. Selenium Grid
      Selenium Grid是一个自动化测试辅助工具。利用Grid可以很方便地实现在多台机器上或异构环境中运行测试用例。
    3. Selenium RC
      Selenium RC(Remote Control)是Selenium家族的核心部分,支持多种不同语言编写的自动化测试脚本。把Selenium RC服务器作为代理服务器去访问应用,即可达到测试的目的。
      Selenium RC分为Client Libraries和Selenium Server两部分。Client Libraries主要用于编写测试脚本,负责控制Selenium Server的库。Selenium Server负责控制浏览器行为。
      Selenium Server主要分为三部分:Selenium Core、Launcher和Http Proxy。Selenium Core就是一堆JavaScript函数的集合。通过这些JavaScript函数,我们可以用程序对浏览器进行操作。Launcher用于启动浏览器,把Selenium Core加载到浏览器页面当中,同时,把浏览器的代理设置为HttpProxy。

    Selenium 2.0

  • 相关阅读:
    MySQL 8.0 复制延迟观测新方式
    同一台交换机不能相互访问?
    这地方怪怪的
    虾米事情都要在5月30日以前完成
    我搬新家了
    痛恨财务的……
    关于Android Studio Arctic Fox版本找不到Database Inspection这件事
    部署SpringBoot项目到腾讯云或其他服务器
    Object.keys方法之详解
    博客园新随笔 添加锚点
  • 原文地址:https://www.cnblogs.com/TD1900/p/14495764.html
Copyright © 2020-2023  润新知