zoukankan      html  css  js  c++  java
  • Selenium UI自动化测试 Selenium Automatic Testing

    https://www.cnblogs.com/sunada2005/archive/2013/12/22/3486314.html

     

    UI Automatic Testing

    1. 什么样的项目适合自动化测试?
    2. 常见的自动化测试工具简介
    3. Selenium介绍
    4. Selenium的工作原理

    1. 什么样的项目适合自动化测试?

    定义:把人为驱动的测试转化为机器执行的一种过程,重点在于持续集成这个概念;
    优势:节约人力和时间成本;

    如上图所示,真正工作中无法全部满足以上条件,所以需要作出权衡,一般来说,只需要满足以下几点,就可以对项目开展自动化测试(图中红色框标注的选项):
    ①需求稳定,不会频繁变更
    自动化测试最大的挑战就是需求的变化,而自动化脚本本身就需要修改、扩展、debug,去适应新的功能,如果投入产出比太低,那么自动化测试也失去了其价值和意义;
    折中的做法是选择相对稳定的模块和功能进行自动化测试,变动较大、需求变更较频繁的部分用手工测试;

    ②多平台运行,组合遍历型、大量的重复任务
    测试数据、测试用例、自动化脚本的重用性和移植性较强,降低成本,提高效率和价值;

    ③软件维护周期长,有生命力
    自动化测试的需求稳定性要求、自动化框架的设计、脚本开发与调试均需要时间,这其实也是一个软件开发过程,如果项目周期较短,没有足够的时间去支持这一过程,那自动化测试也就不需要了;

    ④被测系统开发较为规范,可测试性强
    主要出于这几点考虑:被测试系统的架构差异、测试技术和工具的适应性、测试人员的能力能否设计开发出适应差异的自动化测试框架;

    2. 常见的自动化测试工具简介
    UFT(Unified Functional Testing)
    即原来的QTP(Quick Test Professional Software)与ST(Service Test)合并而来,由HP公司开发,是一个企业级的商业自动化测试工具,提供了强大易用的录制回放功能,
    同时兼容对象识别模式与图像识别模式,支持B/S和C/S两种架构的软件测试;
    Robot Framework
    一款基于python语言编写的自动化测试框架工具,具备良好的扩展性,支持关键字驱动,支持多种类型的客户端和接口,可进行分布式测试;
    Selenium
    应用于web的自动化测试工具,支持多平台、多浏览器、多语言来实现自动化,优点如下:
    ①开源、免费;
    ②多浏览器支持:chrome、Firefox、IE、Edge等;
    ③多平台支持:Linux、Windows、MAC;
    ④多语言支持:java、python、Ruby、C#、JavaScript、C++;
    ⑤对web界面有良好的支持;
    ⑥简单(API简单)、灵活(开发语言驱动);
    ⑦支持分布式测试用例执行;

    3. Selenium介绍

    SeleniumIDE,Selenium 1.xx时代,是Firefox、Chrome的扩展插件,支持用户录制和回访测试。录制/回访模式存在局限性,并不能很好的兼容多种浏览器;

    Selenium WebDriver,Selenium 1.0 + Webdirver,提供了各种语言环境的API来支持更多控制权和编写符合标准软件开发实践的应用程序。

    4. Selenium的工作原理
    webdriver是按照server–client的经典设计模式设计的:
    1、server端就是remote server,可以是任意的浏览器:我们的脚本启动浏览器后,该浏览器就是remote server,它的职责就是等待client发送请求并做出相应;
    2、client端简单说来就是我们的测试代码:们测试代码中的一些行为,比如打开浏览器,转跳到特定的url等操作是以http请求的方式发送给被server端(也就是被测浏览器)server接受请求,并执行相应操作,并在response中返回执行状态、返回值等信息;
    简单介绍一下webdriver的工作原理:
    1、启动浏览器后,selenium-webdriver会将目标浏览器绑定到特定的端口,启动后的浏览器则作为webdriver的remote server。
    2、客户端(也就是测试脚本),借助ComandExecutor发送HTTP请求给sever端(通信协议:The WebDriver Wire Protocol,在HTTP request的body中,会以WebDriver Wire协议规定的JSON格式的字符串来告诉Selenium我们希望浏览器接下来做什么事情)。
    3、Sever端需要依赖原生的浏览器组件,转化Web Service的命令为浏览器native的调用来完成操作。
    注:
    the WebDriver Wire Protocol是Selenium自己设计定义的协议,这套协议非常之强大,几乎可以操作浏览器做任何事情,包括打开、关闭、最大化、最小化、元素定位、元素点击、上传文件等。
    WebDriver Wire协议是通用的,也就是说不管FirefoxDriver还是ChromeDriver,启动之后都会在某一个端口启动基于这套协议的Web Service。
    例如FirefoxDriver初始化成功,默认从http://localhost:7055开始,IE则是http://localhost:52432

    Selenium官网
    https://www.seleniumhq.org/
    
    开源中国Selenium社区
    https://www.oschina.net/question/tag/selenium?show=time
    
    
    public class TestDriver {
    
    public static void main(String args[]) throws InterruptedException {
    
    System.setProperty("webdriver.ie.driver", ".\Tools\IEDriverServer.exe");
    WebDriver driver = new InternetExplorerDriver();
    
    System.setProperty("webdriver.chrome.driver", ".\Tools\chromedriver.exe");
    WebDriver driver = new ChromeDriver();
    
    System.setProperty("webdriver.Firefox.driver", ".\Tools\geckodriver.exe");
    WebDriver driver = new FirefoxDriver();
    
    driver.manage().window().maximize();
    driver.get("http://www.baidu.com");
    String s = driver.getTitle();
    System.out.print(s);
    driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
    Thread.sleep(1000);
    driver.close();
    
    }
    }
    

      

    各个版本的Selenium standalone 下载链接
    https://selenium-release.storage.googleapis.com/index.html

    各个版本的chrome流浪器下载链接
    http://npm.taobao.org/mirrors/chromedriver/

    IEDriver
    FireFox下载链接

     

    做UI自动化测试,需要什么技能
    ①前端相关技术
    HTML、XML、JavaScript、TCP/IP协议等
    ②一门编程语言
    就像前面说的,selenium支持多种语言,根据个人情况以及项目的开发语言酌情选择;
    ③合适的工具选型
    比如selenium,比如UTF等;
    ④需求分析
    项目类型,特质,生命周期,是否适合开展自动化测试等;

     

  • 相关阅读:
    android-exploitme(六):基础加密
    错误:error libGL.so: cannot open shared object file: No such file or directory
    android-exploitme(五):不安全的数据存储
    android-exploitme(四):参数篡改
    android-exploitme(三):安全连接
    android-exploitme(二):安装apk熟悉测试环境
    android-exploitme(一):生成apk
    Ubuntu rsync同步
    phantomjs + selenium headless test
    Fatal error: cannot allocate memory for the buffer pool
  • 原文地址:https://www.cnblogs.com/qianjinyan/p/9256119.html
Copyright © 2011-2022 走看看