Selenium自动化测试实战之自动化测试基础

news2024/11/27 6:12:51

自动化测试概念

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

selenium自动化测试:2023最新的Selenium自动化测试实战,没有比这个更详细的了_哔哩哔哩_bilibiliicon-default.png?t=N6B9https://www.bilibili.com/video/BV1xv4y1D7ku/?spm_id_from=333.999.0.0

 

 

分层的自动化测试

传统自动化测试:基于产品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以及其他浏览器。
    项目地址:

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会话。

 selenium自动化测试:2023最新的Selenium自动化测试实战,没有比这个更详细的了_哔哩哔哩_bilibiliicon-default.png?t=N6B9https://www.bilibili.com/video/BV1xv4y1D7ku/?spm_id_from=333.999.0.0

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/877527.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

docker可视化工具Portainer

1:Portainer简介 Portainer是一个docker可视化管理工具,可以非常方便地管理docker镜像容器。官网地址:https://www.portainer.io/ 注:现在Portainer有BE(收费)和CE(免费)版本,安装的…

答疑:Arduino IDE配置其他开发板下载速度慢

基于案例:Linux环境Arduino IDE中配置ATOM S3 通常,网络问题较多,可以使用一些技巧。 https://m5stack.oss-cn-shenzhen.aliyuncs.com/resource/arduino/package_m5stack_index.json 没有配置,不支持M5Stack(ESP32&…

SpringCloud教程(上)

目录 一、微服务架构理论入门 1.1、什么是微服务? 1.2、微服务简单总结 1.3、微服务的优缺点 1.4、微服务、分布式、集群的区别 1.5、SpringCloud停更替换技术说明 二、微服务架构编码构建 2.1、微服务cloud整体聚合父工程Project 2.1.1、New Project 2.1…

【【萌新的STM32学习-9】】

萌新的STM32学习-9 我们在使用某个外设,必须线使能该外设时钟 SYSTEM 文件夹里面的代码由正点原子提供,是 STM32F1xx 系列的底层核心驱动函数, 可以用在 STM32F1xx 系列的各个型号上面,方便大家快速构建自己的工程。本章&#xf…

这所985非常难考,却无数人趋之若鹜!

一、学校及专业介绍 厦门大学(Xiamen University),简称厦大(XMU),位于福建省厦门市,位列国家“双一流”、“985工程”、“211工程”重点建设高校。 1.1 招生情况 厦门大学初试考847信号与系统…

Android AOSP源码编译——AOSP整编(二)

切换到源码目录下执行下面命令 1、初始化环境 . build/envsetup.sh //清除缓存 make clobber2、选择编译目标 lunchAOSP 预制了很多 Product。这里为了简单我们先不用真机,而是选择模拟器的方式,对于 x86_64 模拟器,我们选择的是 aosp_x86…

DevOps系列文章 之 Gitlab+Docker自动部署SpringBoot

1.环境要求 以下服务器的操作系统均为Centos7 服务器A:Gitlab服务器B:GitlabRunner、Docker、docker-compose、Java1.8、maven3.6.3、git ps:这里可以把服务器B的GitlabRunner、Java1.8、maven3.6.3、git单独提出来,独立部署&a…

Photoshop多图片与多窗口下排列操作方法

首先,在Photoshop中打开6张图片,在“窗口”菜单下切换窗口排列状态: 在 “窗口”菜单下对窗口进行排列,分别呈现如下: (一). 点击“窗口” -> “排列”->"全部垂直拼贴": &am…

编程大师之路:Java必读书籍引领程序员进阶

编程大师之路:Java必读书籍引领程序员进阶 一、Java基础 1.1 Java基础入门 ​ 由传智播客高教产品研发部编著的《Java基础入门》从初学者的角度详细讲解了Java开发中重点用到的多种技术。全书共11章,包括Java开发环境的搭建及其运行机制、基本语法、面向…

Qt+C++自定义控件仪表盘动画仿真

程序示例精选 QtC自定义控件仪表盘动画仿真 如需安装运行环境或远程调试&#xff0c;见文章底部个人QQ名片&#xff0c;由专业技术人员远程协助&#xff01; 前言 这篇博客针对<<QtC自定义控件仪表盘动画仿真>>编写代码&#xff0c;代码整洁&#xff0c;规则&…

Jenkins配置 凭据

http://xx:xx/manage/credentials/store/system/domain/_/

WordPress更换域名后-后台无法进入,网站模版错乱,css失效,网页中图片不显示。完整解决方案(含宝塔设置)

我在实际解决问题时用到了 【简单暴力解决方案】的《方法一:修改wp-config.php》 和 【简单暴力-且特别粗暴-的解决方案】 更换域名时经常遇到的几个问题: 1、更换域名后,后台无法进入 2、更换域名后,网站模版错乱,css失效 3、更换域名后,网页中图片不显示 这是为什…

【系统架构设计专业技能 · 软件工程之系统分析与设计(二)【系统架构设计师】

系列文章目录 系统架构设计专业技能 软件工程&#xff08;一&#xff09;【系统架构设计师】 系统架构设计高级技能 软件架构概念、架构风格、ABSD、架构复用、DSSA&#xff08;一&#xff09;【系统架构设计师】 系统架构设计高级技能 系统质量属性与架构评估&#xff08;…

【视频笔记】解密RWKV线性注意力的进化过程

from&#xff1a; https://www.bilibili.com/video/BV1zW4y1D7Qg/?spm_id_from333.999.0.0&vd_source21cce77bb69d40a81e0d37999f2da0c2 文章目录 向量版 Self-attentionAFT 的线性AttentionRWKV的线性Attention 向量版 Self-attention 手动实现&#xff0c;可以看出 时间…

P8642 [蓝桥杯 2016 国 AC] 路径之谜

[蓝桥杯 2016 国 AC] 路径之谜 题目描述 小明冒充 X X X 星球的骑士&#xff0c;进入了一个奇怪的城堡。 城堡里边什么都没有&#xff0c;只有方形石头铺成的地面。 假设城堡地面是 n n n\times n nn 个方格。如图所示。 按习俗&#xff0c;骑士要从西北角走到东南角。 …

java实现docx,pdf文件动态填充数据

一&#xff0c;引入pom 根据需求引入自己所需pom org.apache.poi poi 4.1.1 org.apache.poi poi-ooxml 4.1.1 org.jxls jxls 2.6.0 ch.qos.logback logback-core org.jxls jxls-poi 1.2.0 fr.opensagres.xdocreport fr.opensagres.xdocreport.core 2.0.2 fr.opensagres.xdocrep…

[oneAPI] BERT

[oneAPI] BERT BERT训练过程Masked Language Model&#xff08;MLM&#xff09;Next Sentence Prediction&#xff08;NSP&#xff09;微调 总结基于oneAPI代码 比赛&#xff1a;https://marketing.csdn.net/p/f3e44fbfe46c465f4d9d6c23e38e0517 Intel DevCloud for oneAPI&…

Linux 当fork在for循环中的问题

以下代码会打印几个"A"&#xff1f; 例1.代码如下&#xff1a; int main(int argc, char* argv[],char* envp[]) { for(int i 0;i < 2; i ) { fork(); printf("A\n"); } exit(0); } 代码分析&#xff1a; //父进程for(int i …

【分布式存储】数据存储和检索~LSM

在数据库领域&#xff0c;B树拥有无可撼动的地位&#xff0c;但是B树的缺点就是在写多读少的场景下&#xff0c;需要进行大量随机的磁盘IO读写&#xff0c;而这个性能是最差的。并且在删除和添加数据的时候&#xff0c;会造成整个树进行递归的合并、分裂&#xff0c;数据在磁盘…

frp实现内网穿透(超详细!)

一、 frp简介 FRP是Fast Reverse Proxy的缩写&#xff0c;它是一款开源、高性能、跨平台的内网穿透工具。FRP允许您通过安全地穿透NAT和防火墙来访问您的本地服务器&#xff0c;以便您可以从任何地方访问您的应用程序和服务。它的工作方式是将来自互联网的请求转发给本地网络中…