热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

测开自动化测试selenium自动化概念测试环境配置细节狂魔

文章目录什么是自动化测试自动化测试介绍单元测试:接口自动化UI自动化UI自动化测试的好处:UI层自动化测试框架-Seleniumselenium有以下优点࿱




文章目录


  • 什么是自动化测试
    • 自动化测试介绍

  • 单元测试:
  • 接口自动化
  • UI自动化
    • UI自动化测试的好处:

  • UI层自动化测试框架 - Selenium
    • selenium有以下优点:
    • UI自动化测试的适用对象
    • 如何实施自动化测试

  • 自动化测试需要了解的技能
  • selenium介绍
  • 如何使用 selenium IDE 录制脚本
    • 安装Selenium IDE

  • selenium+python环境搭建
    • 安装Python
    • 安装setuptools
    • 安装selenium
    • 安装浏览器驱动 - java + selenium / python + selenium 必须配置项

  • selenium + Java 环境搭建
    • 1、下载谷歌Chrome浏览器 And ChromeDriver
    • 2、下载selenium




什么是自动化测试

自动化测试介绍



自动化测试指软件测试的自动化,在预设状态下运行应用程序或者系统.
预设条件包括正常和异常,最后评估运行结果。

自动化测试,就是将人为驱动的测试行为转化为机器执行的过程。
【机器 代替 人工】

在这里插入图片描述
自动化测试包括UI自动化,接口自动化,单元测试自动化。
按照这个金字塔模型来进行自动化测试规划,可以产生最佳的自贡话测试产出投入比(ROI),可以用较少的投入获得很好的收益。





单元测试:

最大的投入应该在单元测试上,单元测试运行的频率也更加高。
java的单元测试框架是Junit,之前讲过,在这里不再赘述。
不过,单元测试在 开发阶段就可以做,而且一般都是由开发人员来测试。
因为方便开发人员观察代码运行的结果,从而及时修正。
所以说,一般单元测试 开发人员很有可能就顺手做了。
当然,也不排除测试人员来做的。
更常见的方式:开发人员 协助测试人员 进行单元测试。



因为代码不是测试人员写的,不知道某块代码对应的是哪个功能。
所以,一般是需要开发人员来协助的。






接口自动化

接口测试就是API测试,相对于UI自动化,API自动化更加容易实现,执行起来也更稳定。
接口自动化的有以下特点:
1、可在产品前期,接口完成后介入
2、用例维护量小
3、适合接口变动较小,界面变动频繁的项目

常见的接口自动化测试工具有,RobotFramework(RF框架),JMeter,SoupUI,TestNG+HttpClient,Postman【推荐使用】等。





UI自动化

虽然测试金字塔告诉我们尽量多做API层的自动化测试,但是UI层的自动化测试更加贴近用户的需求和软件系统的实际业务
并且有时候我们不得不进行UI层的测试。

UI自动化测试是根据 界面元素,对元素进行操作,模拟用户的使用,编写自动化脚本,进行测试。

UI自动化的特点:
1、用例维护量大【缺点】
2、页面相关性强,必须在后期项目页面开发完成后介入
3、UI测试适合与界面变动较小的项目
4、可以支持繁琐复杂,手工不易操作,反复执行的功能测试【优点】





UI自动化测试的好处:



1、降低大型系统的由于变更或者多期开发引起的大量的回归测试的人力投入,这可能是自动化测试最主要的任务,特别是在程序修改比较频繁,效果是非常明显的.

2、自动化测试前期人力投入较多.,但后期进入维护期后,可节省大量人力,而手工测试后期需要增加大量人力用于回归测试

3、减少重复测试的时间,实现快速回归测试

4、创建优良可靠的测试过程,减少人为错误

5、可以运行更多更繁琐的测试

6、可以执行一些手工测试困难 或 不可能进行的测试

7、更好的利用资源【脚本的复用性】





UI层自动化测试框架 - Selenium

UI层的测试框架比较多,比如Windows客户端测试的AutoIT,web测试的selenium以及TestPlant,eggPlant,Robot framework,QTP等。

我们主要以Web UI自动化测试框架Selenium为例进行详细介绍。





selenium有以下优点:



1、免费,也不用再为破解软件而大伤脑筋

2、小巧,对于不同的语言它只是一个包而已,而QTP 需要下载安装1个多G 的程序。



这也是最重要的一点【2】,不管你以前更熟悉C、java、ruby、python、或都是C# ,你都可以通过 selenium 完成自动化测试.
QTP 只支持 VBS【Visual Basic的脚本语言】



3、支持多平台:windows、linux、MAC ;支持多浏览器:ie、ff、safari、opera、chrome

4、支持分布式测试用例的执行,可以把测试用例分布到不同的测试机器执行,相当于分 “学习委员发作业” 的功能。





UI自动化测试的适用对象



实施自动化测试的前提条件:
需求变动不频繁、项目周期足够长、自动化测试脚本可重复使用

适合做自动化的项目:
1、产品型项目
产品型的项目,版本是在旧版本的基础上进行改进,功能变动不大的项目,项目的新老功能都必须重复的进行回归测试回归测试是自动化测试的强项,它能够很好的验证是否引入了新的缺陷,的缺陷是否修改过来了。
在某种程度上可以把自动化测试工具叫做回归测试工具。

2、机械并频繁的测试。每次需要输入相同、大量的一些数据,并且在一个项目中运行的周期比较长。
比如兼容性测试。

以下情况的项目不适合做自动化测试:
1、需求变动频繁的项目,自动化脚本不能重复使用,维护成本太大,性价比低

2、项目周期短,自动化脚本编制完成后使用次数不多,性价比低

3、交互型较强的项目,需要人工干预的项目,自动化无法实施





如何实施自动化测试



单纯的讲,自动化测试的具体实现,应该是包含下面七个过程的。
1、分析:总体把握系统逻辑,分析出系统的核心体系架构。

2、设计:设计测试用例,测试用例要足够明确和清晰,覆盖面广而精

3、实现:实现脚本,有两个要求一是断言,二是合理的运用参数化

4、执行:执行脚本远远没有我们想象中那么简单。脚本执行过程中的异常需要我们仔细的去分析原因。

5、总结:测试结果的分析,和测试过程的总结是自动化测试的关键。

6、维护:自动化测试脚本的维护是一个难以解决但又必须要解决的问题。

7、分析:在自动化测试过程中深刻的分析自动化用例的覆盖风险和脚本维护的成本。
在这里插入图片描述





自动化测试需要了解的技能

了解被测试系统的基本业务
了解业务的技术框架
懂得功能测试
懂得一种编程语言
懂数据库、操作系统
了解常见的测试框架





selenium介绍

Selenium是web应用中基于UI的自动化测试框架,支持多平台、多浏览器、多语言。

早期的 selenium RC 已经被现在的webDriver所替代,可以简单的理解为 selenium1.0 + webdriver 构成现在的Selenium2.0
现在我们说起selenium,一般指的是Selenium2.0
由Selenium IDE,Webdriver,Selenium Grid组成
分别做一下介绍:
1,Selenium IDE



Selenium IDE一个用于Selenium测试的完成集成开发环境,可以直接录制在浏览器的用户操作,并且能回放,编辑和调试测试脚本。调试过程中可以逐步进行或调整执行的速度,并且可以在底部浏览日志出错信息。
录制的测试脚本可以以多种语言导出,比如java,C#,Python,Ruby等,方便掌握不同语言的测试人员操作。



2,Webdriver



Selenium RC 在浏览器中运行 Javascript 应用,会存在环境沙箱问题,而 WebDriver 可以跳出 Javascript 的沙箱,针对不同的浏览器创建更健壮的,分布式的,跨平台的自动化测试脚本。
基于特定语言(Java,C#,Python,Ruby,Perl,Javascript等)绑定来驱动浏览器对Web元素进行操作和验证。

webdriver的工作原理:
启动浏览器后,selenium-webdriver会将目标浏览器绑定到特定的端口,启动后的浏览器则作为webdriver 的 remote serve【远程服务器】。

客户端【也就是测试脚本】,借助ComandExecutor发送HTTP请求给sever端。【通信协议:The WebDriver Wire Protocol,在HTTP request的body中,会以WebDriver Wire协议规定的JSON格式的字符串来告诉Selenium我们希望浏览器接下来做什么事情

Sever端需要依赖原生的浏览器组件,转化Web Service的命令为浏览器native【本地的 / 原生】的调用来完成操作。
在这里插入图片描述
浏览器就好比是出租车,乘客的指令较好比是脚本, webdriver 就好比 司机。
司机( webdriver)把乘客的“需求(脚本)”,“告诉 / 翻译(操作)” 出租车(浏览器)实现它。



3,selenium Grid



selenium Grid是一个服务器,提供对浏览器实例访问的服务器列表,管理各个节点的注册和状态信息。可以实现在同一时刻不同服务器执行不同的测试脚本。






如何使用 selenium IDE 录制脚本

安装Selenium IDE



1、安装 Firefox 浏览器,需要注意的是 irefox更新过快,selenium的不同版本对firefox的支持不同。



注意,安装完毕后,在选项菜单取消自动更新。【记得是一个维护服务的选项,】
在这里插入图片描述
安装的选项是一个环节,我们还需要手动设置一下。
在这里插入图片描述



2、安装selenium IDE
直接到火狐浏览器的扩展与主题中直接Selenium IDE搜索并下载
在这里插入图片描述
点击它
在这里插入图片描述
下面,我们来启动一下 Selenium IDE
在这里插入图片描述
在这里插入图片描述
另外
在这里插入图片描述
在这里插入图片描述
需要注意的是 这里使用的 是 pytest框架,而我们更多的是使用 Junit框架。
到时候,我们去写自动化测试,和它的效果不一样的。
在这里插入图片描述
这就是 Selenium IDE 的使用。





selenium+python环境搭建

安装Python



Python 可以参考这篇文章,链接https://www.csdn.net/tags/MtTaAgzsMDQ0NTUzLWJsb2cO0O0O.html





安装setuptools



打开cmd
在这里插入图片描述
输入命令:pip install setuptools
在这里插入图片描述





安装selenium



.在mod中输入命令:pip install selenium
在这里插入图片描述
注意:如果直接下载不下来,可以使用镜像:
pip install selenium -i https://mirrors.aliyun.com/pypi/simple

有时候遇到pip不是最新的版本,也可以使用镜像更新一下:
python -m pip install --upgrade pip -i https://pypi.douban.com/simple





安装浏览器驱动 - java + selenium / python + selenium 必须配置项



火狐驱动 geckodriver.exe
下载地址:https://github.com/mozilla/geckodriver/releases,请根据系统版本选择下载;(如Windows 64位系统) 下载解压后将getckodriver.exe复制到Python的安装目录Scripts文件夹下;
在这里插入图片描述

安装谷歌浏览器【过程省略】,并且下载驱动 Chrome driver

下载地址:http://npm.taobao.org/mirrors/chromedriver/
下载解压,你会得到一个chromedriver.exe 文件,放到安装Python的目录的Scripts文件夹下。
只有安装了对应的driver才能运行对应的浏览器
在这里插入图片描述
禁止 Chrome 浏览器更新
在这里插入图片描述





selenium + Java 环境搭建

1、下载谷歌Chrome浏览器 And ChromeDriver



这个操作前面已经做了。记住 驱动的版本 一定要和 浏览器的版本一致,并且一定要进制 浏览器的自动更新服务!!!
不然,浏览器每更新一次,我们都需要去下载对应版本的驱动。

不同之处来了!!
我们需要将驱动,再拷贝一份放到 jdk 的 bin 的目录下。
在这里插入图片描述
火狐也是一样的
在这里插入图片描述





2、下载selenium



这个我们直接在项目中使用 Maven 引入 就行了,无需关注!








推荐阅读
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • 利用Visual Basic开发SAP接口程序初探的方法与原理
    本文介绍了利用Visual Basic开发SAP接口程序的方法与原理,以及SAP R/3系统的特点和二次开发平台ABAP的使用。通过程序接口自动读取SAP R/3的数据表或视图,在外部进行处理和利用水晶报表等工具生成符合中国人习惯的报表样式。具体介绍了RFC调用的原理和模型,并强调本文主要不讨论SAP R/3函数的开发,而是针对使用SAP的公司的非ABAP开发人员提供了初步的接口程序开发指导。 ... [详细]
  • svnWebUI:一款现代化的svn服务端管理软件
    svnWebUI是一款图形化管理服务端Subversion的配置工具,适用于非程序员使用。它解决了svn用户和权限配置繁琐且不便的问题,提供了现代化的web界面,让svn服务端管理变得轻松。演示地址:http://svn.nginxwebui.cn:6060。 ... [详细]
  • 本文介绍了解决Netty拆包粘包问题的一种方法——使用特殊结束符。在通讯过程中,客户端和服务器协商定义一个特殊的分隔符号,只要没有发送分隔符号,就代表一条数据没有结束。文章还提供了服务端的示例代码。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • Python实现变声器功能(萝莉音御姐音)的方法及步骤
    本文介绍了使用Python实现变声器功能(萝莉音御姐音)的方法及步骤。首先登录百度AL开发平台,选择语音合成,创建应用并填写应用信息,获取Appid、API Key和Secret Key。然后安装pythonsdk,可以通过pip install baidu-aip或python setup.py install进行安装。最后,书写代码实现变声器功能,使用AipSpeech库进行语音合成,可以设置音量等参数。 ... [详细]
  • 本文介绍了RPC框架Thrift的安装环境变量配置与第一个实例,讲解了RPC的概念以及如何解决跨语言、c++客户端、web服务端、远程调用等需求。Thrift开发方便上手快,性能和稳定性也不错,适合初学者学习和使用。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 个人学习使用:谨慎参考1Client类importcom.thoughtworks.gauge.Step;importcom.thoughtworks.gauge.T ... [详细]
  • 本文介绍了在使用Python中的aiohttp模块模拟服务器时出现的连接失败问题,并提供了相应的解决方法。文章中详细说明了出错的代码以及相关的软件版本和环境信息,同时也提到了相关的警告信息和函数的替代方案。通过阅读本文,读者可以了解到如何解决Python连接服务器失败的问题,并对aiohttp模块有更深入的了解。 ... [详细]
  • flowable工作流 流程变量_信也科技工作流平台的技术实践
    1背景随着公司业务发展及内部业务流程诉求的增长,目前信息化系统不能够很好满足期望,主要体现如下:目前OA流程引擎无法满足企业特定业务流程需求,且移动端体 ... [详细]
  • 本文介绍了一个适用于PHP应用快速接入TRX和TRC20数字资产的开发包,该开发包支持使用自有Tron区块链节点的应用场景,也支持基于Tron官方公共API服务的轻量级部署场景。提供的功能包括生成地址、验证地址、查询余额、交易转账、查询最新区块和查询交易信息等。详细信息可参考tron-php的Github地址:https://github.com/Fenguoz/tron-php。 ... [详细]
  • 本文介绍了一个从入门到高手的VB.NET源代码,通过学习这些源代码,可以在21天内成为VB.NET高手。文章提供了下载地址,并提醒读者加入作者的QQ群和收藏作者的博客。 ... [详细]
  • JavaScript简介及语言特点
    本文介绍了JavaScript的起源和发展历程,以及其在前端验证和服务器端开发中的应用。同时,还介绍了ECMAScript标准、DOM对象和BOM对象的作用及特点。最后,对JavaScript作为解释型语言和编译型语言的区别进行了说明。 ... [详细]
author-avatar
再让我沦陷一次丶
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有