Selenium学习(一) Selenium概述

目录

简介

适用场景

常见的自动化测试工具简介

Selenium的工作原理

自动化测试需要的基础技能

Selenium套件

Selenium IDE的优点

使用延伸

SeIenium的特点

WebDriver与Selenium RC的区别

Selenium的前世今生


简介

Selenium是一个用于Web应用程序自动化测试工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome,Opera等。

主要功能包括:测试与浏览器的兼容性——测试你的应用程序看是否能够很好得工作在不同浏览器和操作系统之上。

测试系统功能——创建回归测试检验软件功能和用户需求。支持自动录制动作和自动生成 .Net、Java、Perl等不同语言的测试脚本。

Selenium也是一款同样使用Apache License 2.0协议发布的开源框架。

1、支持平台

WebDriver支持Android和BlackBerry两个移动平台的浏览器测试。Android目前为市场占有率第一的移动平台,对于在其上面进行自动化测试,推荐Appium,Appium扩展了WebDriver的协议,支持ios平台和Android平台上的原生应用、Web应用和混合应用等。

2、支持浏览器

WebDriver 目前所支持的浏览器包括:Firefox、Chrome、IE、Edge、Opera、Safari. 为什么会选择上面几款浏览器进行支持呢?主要与浏览器的内核有关。

3、支持模式

HtmlUnit和PhantomJS是两个比较特殊的模式,我们可以把它们看作是伪浏览器,在这种模式下支持htmlJava Saript等的解析,但不会真正地渲染出页面。由于不进行CSS及GUI渲染,所以运行效率上要比真实的浏览器快很多,主要用在功能性测试上面。

 

适用场景

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

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

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

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

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

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

 

常见的自动化测试工具简介

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简单)、灵活(开发语言驱动);
⑦支持分布式测试用例执行;

 

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。
 

自动化测试需要的基础技能

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

 

Selenium套件

Selenium IDE              

IDE是一个Firefox插件,可以录制用户的基本操作,生成测试用例。随后可以运行这些测试用例在浏览器里回放,可将测试用例转换为其他语言的自动化脚本。

Selenium RC  
RC为核心部分。它使用的编程语言,如Java,C#,PHP,Python、Ruby和Perl强大功能来创建更复杂的测试。Selenium RC 分  为   C l i e n t Libraries(编写测试脚本) 和 Selenium Server(控制浏览器行为)。
Selenium WebDriver   WebDriver前身是Selenium RC,可以看作是Selenium RC的替代品,直接发送命令给浏览器,并检索结果。

Selenium Grid             
网格用于运行在不同的机器,不同的浏览器并行测试的工具,目的在于加快测试用例运行的速度,从而减少测试运行的总时间。利用Grid可以很方便地实现在多台机器上和异构环境中运行测试用例。

 

Selenium IDE的优点

Selenium学习(一) Selenium概述_第1张图片

 

使用延伸

能把Selenium RC脚本和JUnit单元测试结合起来,既能涵盖功能测试,又能涵盖数据或后台Java类测试,从而构成一个完整的Web应用测试解决方案。

 

SeIenium的特点

  • 开源,免费;
  • 多浏览器支持:Firefox、Chrome、IE、Opera、Edge;
  • 多平台支持:Linux、Windows、MAC;
  • 多语言支持:Java、Python、Ruby、C#、JavaScript、C++;
  • 对…出页面有良好的支持;
  • 简单(API简单)、灵活(用开发语言驱动> ;
  • 支持分布式测试用例执行*

May there be enough clouds in your life to make a beautiful sunset...

Selenium学习(一) Selenium概述_第2张图片

 

 

WebDriver与Selenium RC的区别

Selenium学习(一) Selenium概述_第3张图片

 

 

Selenium的前世今生

04年,Selenium诞生,并正式命名为Selenium Core。

Selenium Core是基于浏览器并且采用JavaScript编程语言的测试工具,运行在浏览器的安全沙箱中,设计理念是将待测试产品、Selenium Core和测试脚本均部署到同一台服务器上来完成自动化测试的工作。

 

05年,Selenium RC诞生,即Selenium 1。这个时候,Selenium Core其实是Selenium RC的核心。

Selenium RC让待测试产品、Selenium Core和测试脚本三者分散在不同的服务器上。(测试脚本只关心将HTTP请求发送到指定的URL上,selenium本身不需要关心HTTP请求由于什么程序编程语言编写而成)

Selenium RC包括两部分:一个是Selenium RC Server,一个是提供各种编程语言的客户端驱动来编写测试脚本。

Selenium RC的API组织采用字典形式。

Selenium学习(一) Selenium概述_第4张图片

07年,WebDriver诞生。WebDriver的设计理念是将端到端测试与底层具体的测试工具分隔离,并采用设计模式Adapter适配器来达到目标。

WebDriver的API组织更多的是面向对象。

Selenium学习(一) Selenium概述_第5张图片

 

09年,Selenium RC和WebDriver合并,即Selenium 2,简称Selenium WebDriver。主要特性是将WebDriver API集成进Selenium RC。

合并后,支持多语言绑定; 支持谷歌、火狐、IE,还支持嵌入式设备上基于webKit内核的浏览器,如android、iOS的浏览器。

 

Selenium学习(一) Selenium概述_第6张图片

 

09年后,Selenium 3诞生。

Selenium 3会移除原有的Selenium Core的实现部分,并且Selenium RC的API也将被去掉。其它一些变化包括但不限于以下内容:

Selenium学习(一) Selenium概述_第7张图片

 

整理自:https://www.cnblogs.com/linxiu-0925/p/9316353.html、https://www.cnblogs.com/qianjinyan/p/9256119.html

你可能感兴趣的:(测试,自动化测试,selenium)