zoukankan      html  css  js  c++  java
  • 自动化测试基础

    自动化测试概念

    是把以人为驱动的测试转化为机器执行的一种过程,它是一种以程序测试程序的过程。
    自动化只是测试方式,跟测试阶段无关。
    可以把任何测试工作写一个程序自动化实现都可以称为自动化测试。

    分层的自动化测试

    传统自动化测试:基于产品UI层的自动化测试,将黑盒功能测试转化为由程序或工具执行的一种自动化测试。
    分层自动化测试:从黑盒(UI)单层到黑盒和白盒多层的自动化测试,即从全面黑盒自动化测试到对系统的不同层次进行的自动化测试。

    1. 单元自动化测试:单元自动化测试是指对软件中的最小可测试单元进行检查和验证。
    2. 接口自动化测试:Web应用的接口自动化测试大体分为两类:模块接口测试和协议接口测试。
      • 模块接口测试:主要测试程序模块之间的调用与返回。它主要强调对一个可实现完整功能的类、方法或函数的调用的测试。
      • 协议接口测试:主要测试对网络传输协议的调用,如HTTP/SOAP等,一般应用在前端和后端开发之间,以及不同项目之间。
    3. UI自动化测试:UI自动化测试以实现手工测试用例为主,可降低系统功能回归测试的成本(人力成本和时间成本)。

    什么样的项目适合做自动化测试

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

    自动化测试的目的

    不是为了找Bug,而是为了回归测试缩短软件的发布周期,节约成本。

    自动化测试的介入时间

    一般是在系统测试阶段开始介入,多用于系统测试的回归测试。
    (一般是系统测试阶段,具体是核心功能手工测试做完之后开始编写自动化脚本。)

    自动化测试流程

    可行性分析 → 测试需求分析 → 指定测试计划 → 自动化测试设计 → 测试脚本开发 → 无人职守测试 → 提交测试报告 → 脚本维护阶段

    自动化测试工具

    QTP:收购后改名成UTF。商业版,适用于B/S和C/S的自动化。
    Selenium:是一款用于B/S架构的软件测试工具,它支持多平台、多语言、多浏览器去实现自动化测试.
    Robot Framework:简称RF,支持关键字驱动。可以同时测试多种类型的客户端或者接口,可以进行分布式测试执行。
    Appium:手机APP自动化测试工具。

    Selenium简介

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

    Selenium1.0家族关系

    1. Selenium1.0
      • (1) Selenium IDE
        Selenium IDE是嵌入在Firefox浏览器中的一个插件,可实现简单的浏览器操作的录制与回访功能。
      • (2) Selenium Grid
        Selenium Grid是一个自动化测试辅助工具。利用Grid可以很方便地实现在多台机器上或异构环境中运行测试用例。
      • (3) Selenium RC
        SeleniumRC(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加载到浏览器页面当中,同时,把浏览器的代理设置为Http Proxy。
    2. Selenium2.0
      Selenium2.0把WebDriver加到了Selenium1.0这个家族中,简单用公式表示:
      Selenium2.0 = Selenium1.0 + WebDriver
      需要注意的是,在Selenium2.0中主推的是WebDriver,可以将其看作Selenium RC的替代品。为了保持向下的兼容性,Selenium2.0并没有彻底抛弃Selenium RC。
      • Selenium RC与WebDriver的工作方式有着本质的区别
        Selenium RC是浏览器中运行JavaScript应用,使用浏览器内置的JavaScript翻译器来翻译和执行selenese的(selenese是Selenium命令集合)。
        WebDriver通过原生浏览器支持或者浏览器扩展来直接控制浏览器。WebDriver是针对各个浏览器而开发的,取代了嵌入被测Web应用中的JavaScript。WebDriver与浏览器紧密集成,支持创建更高级的测试,避免了JavaScript安全模型导致的限制。除来自浏览器厂商的支持外,WebDriver还可利用操作系统级的调用,模拟用户输入。
        Selenium与WebDriver原本属于两个不同的项目,WebDriver的创建者Simon Stewart早在2009年8月的一封邮件中解释了项目合并的原因。
      • Selenium与WebDriver合并的原因
        为何把两个项目合并?一部分原因是WebDriver解决了Selenium的缺点(例如,能够绕过JavaScript沙箱),另一部分原因是Selenium解决了WebDriver存在的问题(例如,支持广泛的浏览器),还有一部分原因是Selenium的主要贡献者和我都觉得合并项目是为用户提供最优秀框架的最佳途径。
    3. Selenium3.0
      2016年7月,Selenium3.0悄悄发布了第一个beta版。Selenium3.0做了以下更新。
      • (1) 去掉了Selenium RC,简单用公式表示如下:
        Selenium3.0 = Selenium2.0 - Selenium RC
      • (2) Selenium3.0只支持Java8以上版本
      • (3) Selenium3.0中的Firefox浏览器驱动独立了。Selenium2.0浏览器默认是集成Firefox浏览器驱动的,在Selenium3.0中,Firefox浏览器和Chrome浏览器一样,在使用前需要下载和设置浏览器驱动。
      • (4) mac OS操作系统集成了Safari的浏览器驱动,该驱动默认在/usr/bin/safaridriver目录下。
      • (5) 只支持IE9.0以上版本。
    4. Selenium IDE
      Selenium IDE同样是Selenium的家族成员。Selenium IDE有两个版本,旧版的Selenium IDE是基于Firefox浏览器扩展的,它提供了比较完备的自动化功能,如脚本录制/回放、定时任务等;还可以将录制的脚本导成不同编程语言的Selenium测试脚本,这在很大程度上可以帮助新手编写测试用例。但旧版的Selenium IDE不支持Firefox新版本支持的API,因此Selenium团队重新开发了新版的Selenium IDE,可以同时支持Chrome、Firefox以及其他浏览器。
      项目地址:https://github.com/SeleniumHQ/selenium-ide

    appium简介

    appium是当前移动平台上主流的自动化测试工具之一。
    appium是一个合成词,分别由“application”的前三个字母和“Selenium”的后三个字母组成。application为“应用”,我们一般把移动平台上的应用简称为App。Selenium是当前主流的Web UI自动化测试工具。appium与Selenium之间是有继承关系的。appium的寓意是:移动端的Selenium自动化测试工具。
    appium是一个开源自动化测试工具,支持iOS和Android平台上的原生应用、Web应用以及混合应用。

    • 原生应用
      是指那些用iOS或者Android SDK开发的应用(App)。
    • Web应用
      是指可以使用移动浏览器(如iOS上的Safari和Android上的Chrome)访问的应用。
    • 混合应用
      是指原生代码封装网页视图,原生代码和Web内容交互的应用。比如,微信小程序,可以帮助开发者使用网页技术开发应用,然后用原生代码封装。

    更重要的是,appium是一个跨平台的测试工具,它允许测试人员在不同平台(iOS、Android)使用同一套API编写自动化测试脚本,这大大增加了iOS和Android测试套件之间代码的复用性。

    appium与Selenium
    appium类库封装了标准Selenium客户端类库,为用户提供常见的JSON格式的Selenium命令,以及额外的移动设备控制相关的命令,如多点触控手势和屏幕方向等操作。
    appium客户端API实现了Mobile JSON Wire Protocol(一个标准协议的官方扩展草稿)和W3C WebDirver spec(一个传输不可预知的自动化协议,该协议定义了MultiAction接口)的元素。
    appium服务器定义了官方协议的扩展,为appium用户提供方便的接口来执行各种设备动作,例如,在测试过程中安装/卸载App等。这也是我们需要安装appium特定的客户端,而不是通用的Selenium客户端的原因。当然,appium客户端API只是增加了部分操作,在Selenium客户端的基础上进行了简单的扩展,因此它们仍然可以用来运行通用的Selenium会话。

    今天太阳也东升,而后西沉,早晨盛开的花儿也将凋谢;今天的太阳也西沉,而后东升,阳光照射之处遍地花开,但却已非昨日之花。
  • 相关阅读:
    Android Studio打开出现:Default activity not found
    关于LayoutInflater的错误用法(警告提示:Avoid passing null as the view root)
    获取屏幕的宽和高-Display中getHeight()和getWidth() 官方已废弃
    setUserVisibleHint-- fragment真正的onResume和onPause方法
    Fragment的setUserVisibleHint方法实现懒加载,但setUserVisibleHint 不起作用?
    Android权限判断checkPermission
    Android:安装时提示:INSTALL_FAILED_INSUFFICIENT_STORAGE
    Android M新的运行时权限开发者需要知道的一切
    Android开发——Android M(6.0) 权限解决方案
    三个案例带你看懂LayoutInflater中inflate方法两个参数和三个参数的区别
  • 原文地址:https://www.cnblogs.com/TD1900/p/11925857.html
Copyright © 2011-2022 走看看