1、分层自动化测试概念

  传统的自动化市场更关注产品UI层的自动化测试,而分层的自动化测试倡导产品开发的不同阶段都需要自动化测试

  大多公司与研发团队其实是忽略了单元测试与集成测试阶段的自动化测试工作,所以,在分层的自动化测试中,我们有必要对这些定义重新理解和定义。

  单元测试:我们需要规范的来做单元测试同样需要相应的单元测试框架,如java的Junit、testNG,C#的NUint,Python的unittest、pytest等,几乎所有的主流语言,都会有其对应的单元测试框架。

  集成、接口测试:单元测试关注代码的实现逻辑,例如一个if分支或一个for循环的实现,那么集成、接口测试关注的是一个函数、类(方法)所提供的接口是否可靠。例如我们定义一个add()函数用于计算两个参数的结果并返回,那么我需要调用add()并传参,并比较返回值是否是两割参数相加。当然,接口测试也可以是url形式进行传递。例如,我们通过get方法想服务器发送请求,那么我们发送的内容作为URL的一部分传递到服务器端。但比如Web service技术对外提供的一个公共接口,需要通过soapUI等工具对其进行测试。

  UI层的自动化测试:大部分测试人员的大部分工作都是对UI层的功能进行测试。例如,我们不断重复的对一个表单提交,结果查询等功能进行测试,我们可以通过相应的自动化测试工具来模拟这些操作,从而解放重复的劳动。UI层的自动化测试工具非常多,比如QTP、Robot Framework、waiter、Selenium等。

  为什么分层自动化是一个金字塔形,而不是长方形或三角形?这是为了表示不同阶段所投入自动化测试的比例。如果一个产品从来没有做单元测试与接口测试,只做UI层的自动化测试是不科学的,很难从本质上保证产品的质量。如果妄图实现全面的UI层的自动化测试,那更是一个劳民伤财的举动,投入了大量的人力时间,最终获得的收益可能会远远低于所支付的成本。因为越往上层,其维护成本越高。尤其是Ui层的元素会时常的发生改变。所以,我们应该把更多的自动化测试放在单元测试与接口测试阶段进行。

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

  并不是所有项目都适合实施自动化测试的,关于什么样的项目适合做自动化测试,在这里,主要整理以下几点

  1)任务测试明确,不会频繁变动

  2)每日构建后的测试验证

  3)比较频繁的回归测试

  4)软件系统界面稳定,变动少

  5)需要在多平台上运行的相同测试用例、组合遍历型的测试、大量的重复任务

  6)软件维护周期长

  7)项目进度压力不太大

  8)被测软件系统开发比较规范,能够保证系统的可测试性

  9)具备大量的自动化测试平台

  10)测试人员具备较强的编程能力

  注意,并非以上10条都具备的情况下才能开展自动化测试,在业界大牛普遍的自动化测试经验中,一半满足以下三个条件就可以对项目开展自动化测试:

  软件需求变动不频繁

  项目周期较长

  自动化测试脚本可重复使用

  3、Selenium工具介绍

  要做selenium自动化测试,首先要要了解什么是Selenium。

  Selenium自动化测试工具,主要是用于web应用程序的自动化测试,但并不只局限于此,

它还支持所有给予web的管理任务自动化。

  Selenium的特点:

  ·开源,免费

  ·支持多浏览器:FireFox、Chrome、IE、Opera

  ·支持多平台:Linux、Windows、MAC

  ·支持多语言:java、Python、Ruby、php、C#、JavaScript

  ·对web页面有良好的支持

  ·简单、灵活(API简单,开发语言驱动灵活)

  ·支持分布式测试用例执行

  Selenium经历了三个版本,Selenium1.0和Selenium2.0,跟3.0,Selenium也不是简单一个工具,而是有几个工具组成,每个工具都有其特点和应用场景。

Selenium 1.0

  用简单的公式:

  Selenium 1.0 = Selenium IDE + Selenium Grid + Selenium RC

  Selenium IDE

  Selenium IDE是嵌入到FireFox浏览器中的一个插件,实现简单的浏览器操作的录制与回放功能。

  那么什么情况下用到它呢?
  快速的创建bug 重现脚本,在测试人员的测试过程中,发现了bug 之后可以通过IDE 将重现的步骤录制下来,以帮助开发人员更容易重现bug。

  Selenium Grid

  Selenium Grid是一种自动化的测试辅助工具,允许同时并行地、在不同的环境上运行多个测试任务,极大地加快Web应用的功能测试。其特点:

  ·并行执行
  ·通过一个主机统一控制用例在不同环境、不同浏览器下运行。
  ·灵活添加变动测试机

  Selenium RC

  Selenium RC(Remote Control)是Selenium家族的核心部分。Selenium RC支持多种不同语言编写的自动化测试脚本,通过Selenium RC的服务器作为代理服务器去访问应用,从而达到测试的目的。

  Selenium RC分为Client Libraries和Selenium Server。Client Libraries库主要用于编写测试脚本,用来控制Selenium Server的库。Selenium Server负责控制浏览器行为。

   简单的理解:

  Selenium RC(API) <-> Selenium Server <-> 浏览器(FireFox、Chrome...)

  在2006年的时候,Google的工程师Simon Stewart发起了WebDriver的项目;因为长期以来Google一直是Selenium的重度用户,但却被限制在有限的操作范围内。

  Selenium RC 是在浏览器中运行JavaScript应用,使用浏览器内置的JavaScript翻译器来翻译和执行selenese命令(selenese是Selenium命令集合)。

  WebDriver是通过原生浏览器支持或者浏览器扩展来直接控制浏览器。WebDriver针对各个浏览器而开发,取代了嵌入到被测Web应用中的JavaScript,与浏览器紧密集成,因此支持创建更高级的测试,避免了JavaScript安全模型导致的限制。除了来自浏览器厂商的支持之外,WebDriver还利用操作系统级的调用,模拟用户输入。

  Selenium与WebDriver原是属于两个不同的项目,WebDriver的创建者Simon Stewart早在2009年8月的一份邮件中解释了项目合并的原因。

  Selenium与WebDriver合并原因:为何把两个项目合并?部分原因是WebDriver解决了Selenium存在的缺点(例如能够绕过JavaScript沙箱,我们有出色的API),部分原因是Selenium解决了WebDriver存在的问题(例如支持广泛的浏览器),部分原因是因为Selenium的主要贡献者和我都觉得合并项目是为用户提供最优秀框架的最佳途径。

Selenium2.0

  因为Selenium和Webdriver的合并,所以,Selenium 2.0由此诞生。简单用公式表示为:

  Selenium 2.0 = Selenium 1.0 + WebDriver

  需要强调的是,在Selenium 2.0中主推的是WebDriver,可以将其看作是Selenium RC的替代品。因为Selenium为了保持向下的兼容性,所以在Selenium 2.0中并没有彻底地抛弃Selenium RC。

  Selenium 2.0的核心WebDriver工作原理:

  webdriver api(java/python/ruby) <-> chromedriver.exe  <-> chrome浏览器

  大概是在2013年,Selenium官方博客发布Selenium团队将会在圣诞节发布Selenium3.0。然鹅,这一等就等到2016年7月,Selenium3.0悄悄发布第一个beta版,官方解释为:

“在seleniumconf 2013,我们宣布,Selenium的一个新的主要版本将在‘圣诞节’发布。幸运的是,我们从来没有说过哪个圣诞节,因为我们已经花了一段时间来做我们想做的所有改变!我们很兴奋地宣布第一个bate版--Selenium 3.0 - beta1的发布。”

  

Selenium 3.0  

  Selenium 3.0做了一些不大不小的更新:

  1)终于去掉了RC

  2)规范了所有浏览器厂商,设计自己的浏览器驱动  (WebDriver规范,所有浏览器厂商协商一致)

  3)Selenium3.0只支持Java8版本以上

  4)Selenium3.0中的Firefox浏览器驱动独立了,以前装完selenium2就可以驱动Firefox浏览器了,现在和Chrome一样,必须下载和设置浏览器驱动

  5)MAC OS 集成Safari的浏览器驱动。默认在/usr/bin/safaridriver 目录下

  6)只支持IE 9.0版本以上

  Selenium 3.0  <->  geckodriver.exe <-> FireFox浏览器

注:本篇内容大部分转自虫师博客http://www.cnblogs.com/fnng/p/7426928.html,仅供学习使用

python selenium自动化测试之路(1)--分层测试概念、selenium工具介绍的更多相关文章

  1. python selenium自动化点击页面链接测试

    python selenium自动化点击页面链接测试 需求:现在有一个网站的页面,我希望用python自动化的测试点击这个页面上所有的在本窗口跳转,并且是本站内的链接,前往到链接页面之后在通过后退返回 ...

  2. Selenium自动化测试之结果处理

    Selenium自动化测试之结果处理 一.断言 断言相当于性能测试中的检查点,常用断言种类很多,具体可以查看断言API:判断预期结果和实际结果是否一致,断言成功,程序继续处理,失败则终止运行,示例如下 ...

  3. Selenium自动化测试之数据驱动及用例管理

    Selenium自动化测试之数据驱动及用例管理 一.TestNg注解介绍 @Test:表示一个测试方法,在运行测试用例过程中,会自动运行@Test注解的方法. 例:

  4. Selenium自动化测试之启动浏览器

    Selenium自动化测试之启动浏览器 一.Eclipse新建java工程 1.新建java工程:File->New->Java Project,输入Project name:如AutoT ...

  5. selenium自动化测试之整合测试报告

    selenium自动化测试之整合测试报告 标签(空格分隔): 整合报告 如下截图我们添加一个文件叫做:latest_report.py文件, import time import os import ...

  6. Selenium自动化测试之基本控件使用

    Selenium自动化测试之基本控件使用 1.输入框input: 在Html中样式: <input id="username" type="text"&g ...

  7. 自动化测试之路3-selenium3+python3环境搭建

    1.首先安装火狐浏览器  有单独文章分享怎么安装 2.搭建python环境 安装python,安装的时候把path选好,就不用自己在配置,安装方法有单独文档分享 安装好以后cmd打开输入python查 ...

  8. Python+Selenium2自动化测试之IE、chrome浏览器启动

    构建Python+Selenium2自动化测试环境完成之后,就需要测试支持python的selenium的版本是否都支持在不同浏览器上运行,当前我们分别在三个最通用的浏览器上通过脚本来测试. 1.在I ...

  9. Martin Fowler 分层测试概念博文分享

    在我们测试工作中,常常遇到这样的问题:开发与测试团队分属不同的不同(部门隔离.沟通不畅),质量职责划分不清(出现bug往往都是测试人员背锅),需求的不确定和易变性(需求不断变化导致代码不停更新.产品重 ...

随机推荐

  1. C++ 指针[转+原创]

    要搞清一个指针需要搞清指针的四方面的内容:指针的类型,指针所指向的类型,指针的值或者叫指针所指向的内存区,还有指针本身所占据的内存区. 指针的类型 从语法的角度看,你只要把指针声明语句里的指针名字去掉 ...

  2. CentOS7.4 删除virbr0虚拟网卡

    在CentOS 7的安装过程中如果有选择相关虚拟化的的服务安装系统后,启动网卡时会发现有一个以网桥连接的私网地址的virbr0网卡,这个是因为在虚拟化中有使用到libvirtd服务生成的,如果不需要可 ...

  3. Linux内核分析6

    周子轩 原创作品 转载请注明出处 <Linux内核分析>MOOC课程:http://mooc.study.163.com/course/USTC-1000029000 一.视频笔记 1. ...

  4. java之面向对象20160818

    本文主要是介绍一下java面向对象编程方面的知识,涉及的内容可能有点多,所以可能会感觉比较笼统,详细请参见<Java编程思想>里面比较具体点. 1.面向对象 和遵循设计原则和设计模式, 目 ...

  5. 嘘,如何激活更新的win10

    win10更新了,所以很坑的是以前的密钥又不管用了,系统和office都要重新激活,然而微软的更新就是很有恶意的,总之成功率堪忧. 还好看到了万能的网友的办法. slmgr.vbs /upk slmg ...

  6. UESTC--1730

    原题链接:http://acm.uestc.edu.cn/problem.php?pid=1730 分析:线段树单点更新,区间求和. #include<iostream> #include ...

  7. phpstrom+xdebug+chrome+postman调试工具搭建

    php是解释性语言,大部分调试的时候使用var_dump+exit就可以搞定了,但是在大项目或遇到了负载的问题的时候你就需要断点调试.变量打印.性能分析了,php也有非常程序的解决方案,我们现在就动手 ...

  8. MakeDown的使用

    Makedown的使用 之前有用博客园来写博客,但是因为它的界面不好看,所以中途就放弃了.后来也使用过"有道云笔记",发现其写的笔记的界面很简洁工整.有道云笔记的书写原理和Make ...

  9. FTP、SFTP文件下载内容校验

    描述: 从FTP.SFTP下载的文件做MD5码校验,文件名和MD5码值存放在表格里,表格位置在FTP.SFTP服务器上. os模块只能遍历本地目录/文件,需要先连接FTP.SFTP服务器,将表格下载到 ...

  10. 第一周 ch01 课下测试

    1.Amdahl定律说明,我们对系统的某个部分做出重大改进,可以显著获得一个系统的加速比.(B) A .正确 B .错误 解析:Amdahl定律,该定律的主要思想是,当我们对系统的某个部分加速时,其对 ...