web自动化测试入门篇01——框架介绍

news2024/9/17 3:59:18

1. 目的

  web自动化测试作为软件自动化测试领域中绕不过去的一个“香饽饽”,通常都会作为广大测试从业者的首选学习对象,相较于C/S架构的自动化来说,B/S有着其无法忽视的诸多优势,从行业发展趋、研发模式特点、测试工具支持,其整体的完整生态已经远远超过了C/S架构方面的测试价值。那么接下来我们就来具体说说web自动化测试的前世今生吧。

   如果你想学习Web自动化测试框架,我这边给你推荐一套视频,这个视频可以说是B站百万播放全网第一的自动化测试教程,同时在线人数到达1000人,并且还有笔记可以领取及各路大神技术交流:扣扣群:798478386

在华为工作了10年的大佬出的Web自动化测试教程,华为现用技术教程!_哔哩哔哩_bilibili在华为工作了10年的大佬出的Web自动化测试教程,华为现用技术教程!共计16条视频,包括:1. 【web自动化】主流Web自动化测试技术对比、2. 【web自动化】Selenium自动化测试环境一键搭建、3. 【web自动化】Selenium八大定位策略详解等,UP主更多精彩视频,请关注UP账号。https://www.bilibili.com/video/BV1sM4y1d7tq/?spm_id_from=333.337.search-card.all.click

2. 说明

  此篇中所用的技术栈为Selenium+Python,因其本身编程难度不高,总体思想都是基于面向对象的编程理念,故只要大家的编码语言基础不弱,就完全可以做到平替。

   

3. 手工测试与自动化测试的区别

  在正式介绍web自动化测试之前,我们先来聊聊手工与自动化之前的一些区别与认知。很多科班或者刚踏上测试行业的同学都会有这么一个认知,自动化测试相较于手工来说技术含量更高,所属岗位的薪资更好,岗位的可替代性也更小。对于这种看法博主只能说一半一半,对于没有什么实际工作经验与实际项目经验的同学来说,即使自动化的技术含量更高,也尽量推荐大家从手工测试开始。大道理就不多说了,对大家来说最实际的就是你的核心竞争力,那对于测试来说测试的核心竞争力是什么呢?业务!一定是业务,但为什么会是业务呢?

  大家设想一下,如果你的技术能力较强,但业务能力一般,即使能写出很高效的代码,但无法贴近产品或者项目的业务,纵使这样,写出来的脚本或者框架也会是无用之物。必须让其他懂业务的同事来帮你审核或者修改,但反过来如果业务理解力强并且对于产品的功能与设计拿捏的比较到位,那无论是测试用例设计或是经验测试都将无往不利,常常可以发现其他人无法察觉的一些产品问题、缺陷甚至于是设计场景上的漏洞。编码是一个硬技能,可以通过大量的练习来磨炼,而业务却不单单是需要理解,更多的情况下是需要去延伸与创新。为什么说测试应该是整个公司内对了解产品与项目的人呢,就是因为他们比任何人都了解其功能的使用,业务场景的匹配,需求的痛点所在,这个甚至需要超过产品经理的理解。所以在一家公司内决定一个测试能在他的道路上走多远的永远不会是技术,而是业务。

  那两者的区别呢,基于上面所说的观点,要做好手工测试,必须满足这四点:1. 业务的理解能力 2. 思维逻辑能力 3. 沟通能力 4. 测试基础能力 , 做不好这四点我敢说你的手工测试能力一定不行。而要做好自动化,除了要做到这上面的四点之外,还需要对自己的代码能力、思维转变、框架设计等一些列的能力进行提升。由此可见,自动化与手工的区别不仅仅在于实现与执行的方式有所不同,两者更是一个循序递进的过程。所以博主还是建议大家如果要做自动化还是最好可以从手工业务测试进行切入。

   

4. 框架选择

  说到web的自动化测试框架,市面上已经有了很多成熟的测试框架了,比如QTP、selenium、AutoRunner、Robot Framework、watir、RFT等等等等。

  QTP属于比较老牌的自动化测试框架了,在2012年之前使用的团队与公司还是比较多的,脚本也是比较简单易懂的,但另一面的限制也比较大,语言只能支持VBS且费用较高,框架的对象支持灵活度也不够好。

  selenium目前仍为最主流的web自动化测试框架之一,免费开源、支持跨平台,关键是测试执行可以在浏览器中直接运行,模拟用户的真实操作。

  AutoRunner可以支持丰富的技术框架并且使用Java作为脚本语言,支持生态比较完善,采用关键字提醒、关键字高亮、关键字驱动。支持同步点、校验点、参数化,同时支持数据驱动的参数化。比较适合用它来功能测试、回归测试、系统测试、构建测试等。

  Robot Framework支持python,支持关键字驱动和数据驱动、自定义关键字,框架内的测试用例可以使用多种格式进行编写,且可以自动生成测试报告,无须像其他软件需要第三方库的支持。

  watir使用ruby作为脚本语言,现在也可以支持跨平台的多个浏览器了,同样作为开源框架,watir相较于selenium就有比较多的限制与短板了,比如无法录制脚本、对js的弹框支持不太友好等。

  RFT是由IBM推出,这是一款不仅仅用来做web自动化测试的框架,他也可以测试 HTML、Java、Windows、.NET、Visual Basic、Silverlight、Eclipse、Siebel、Flex、Ajax、Dojo、GEF 和 PowerBuilder 应用程序。但不是开源的,需要收费,并且支持的对象库也不多,如果是用来学习一下的话还是不错的。

  那么在这些五花八门的框架中如何选择适合自己的测试框架呢?我们可以从两个点进行切入,首先评估自己的能力,擅长什么样的编码语言,甚至是是否有代码基础。针对上述框架的特性,比如没有代码能力的可以优先选择带有脚本录制功能的框架;又比如擅长java的就可以选择对java支持比较好的框架。另一个,就是评估自己的被测对象(产品或项目),被测对象是用什么样的技术栈实现的,页面的变更或迭代的频率与规模等。如果我们的选择标准基于以上的两个方面去进行评估的话,大概率是可以选择到适合自己适合项目或产品的自动化测试框架的。

   

5. Selenium的工作原理

  在具体的描述Selenium的工作原理之前,我们这里先看一张简单的工作原理图:

 

  图中的client其实就是我们使用python写的源代码,因为selenium是没有图形界面的,所以将客户端就看成我们用源代码实现的Selenium业务功能即可。

  driver就是我们的webdriver,大家要知道,我们的源代码是无法直接指挥浏览器进行相应的操作的。我们的代码必须通过提供的API来建立起与浏览器之间的通信会话,有了这个会话之后脚本就可以驱动浏览器执行你测试所需的特定业务操作了。

  browser作为浏览器,则是我们最后呈现出业务操作的界面对象,selenium的特点就是可以直接在浏览器中进行操作实现,模拟用户的真实业务动作。而浏览器在接收到代码所模拟的http请求之后会进行解析,将业务所需的特定操作(action)实现在浏览器界面中并对所发出的请求进行响应,告知到请求放操作是否成功。

  概括的来说,整体的流程就是我们所写的代码脚本去调用selenium,再由selenium来调用特定的API对浏览器进行业务操作,浏览器将业务操作的结果告知到脚本或者IDE。

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

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

相关文章

高完整性系统(7)Formal Verification and Validation

文章目录 Specification Process 规格化过程State Invariants案例check ... expect Alloy是一种用于构建和检查抽象模型的语言和工具。当Alloy说所有断言都成立时,这意味着你的模型或规格在给定范围内已成功通过了所有的断言检查。换句话说,对于你所定义…

SOLIDWORKS PDM 独立程序 C#

本主题介绍如何创建登录到 一个 SOLIDWORKS PDM Professional 文件库,并列出根文件夹中的文件。 启动Visual Studio.文件 > 新建 > 项目 > Visual C# > WPF(也可以使用WF) 输入程序名称选择存储路径确定在解决方案资源管理器中…

(学习日记)2023.06.06

写在前面: 由于时间的不足与学习的碎片化,写博客变得有些奢侈。 但是对于记录学习(忘了以后能快速复习)的渴望一天天变得强烈。 既然如此 不如以天为单位,以时间为顺序,仅仅将博客当做一个知识学习的目录&a…

【Linux】基础文件IO、动静态库的制作和使用

基础IO 前言回顾C语言文件IO操作三个标准 系统文件I/O系统调用接口不带mode的open带mode的openwirtereadopen的第二个参数flagsopen返回值文件的管理0,1,2演示文件描述符的分配规则重定向C中的0、1、2输入重定向追加重定向 另一种重定向的方式dup2实现输…

MySQL5.7主从同步配置(一台master,两台slave)

1. 下载MySQL(5.7.42) rpm -ivh http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm2.安装 yum install mysql-server2.1 安装过程中如果报错如下,按下边方法处理。否则略过即可 2.2 解决方案:执行以下命令 rpm --import https…

mongodb redis mysql 区别

一、MySQL 关系型数据库。 在不同的引擎上有不同 的存储方式。 查询语句是使用传统的sql语句,拥有较为成熟的体系,成熟度很高。 开源数据库的份额在不断增加,mysql的份额页在持续增长。 缺点就是在海量数据处理的时候效率会显著变慢。 二、Mo…

Vue3中setup函数、以及父子组件传值讲解

文章目录 1.vue3中setup函数的执行时机2.setup函数的两种写法2.1 普通写法2.2 语法糖写法 3.vue3父组件给子组件传值。4.vue3子组件给父组件传值 1.vue3中setup函数的执行时机 setup选项的写法和执行时机,setup函数在beforeCreate函数之前执行,并且是自…

以安全为底线 共迎机遇和挑战|2023 开放原子全球开源峰会可信基础设施技术分论坛即将启幕

蚂蚁集团的业务领域,对于「可信」有非常高的技术要求。这种可信技术不仅体现在可靠、健壮,也体现在金融领域独有的风控难题以及分布式系统中持续提供服务的续航能力。可信基础设施中有大量的开源项目,而新的机会也在不断涌现。 2023 开放原子…

echarts 图表导出PDF(带滚动条)/图片导出PDF

echarts 图表导出PDF[带滚动条]/图片导出PDF 效果展示提出问题思考问题解决问题导出PDF 里面的页头中文乱码问题参数说明 效果展示 提出问题 在开发过程中,有需求是将展示出来的echarts图表导出为pdf 原本我的滚动条是使用echarts图表进行的滚动,但通过了解后得知,echarts图表如…

《人月神话》阅读推荐

用了两周的时间,大致过了一遍。书中讲述的很多方面可能此时并没有很深刻的体会,但是该书的预见性和分析还是很让人钦佩的。书中对项目、产品、程序、程序员等一系列对象的分析是相当精准的。虽然距今已有四十多年,但很多依旧在发生。   书中…

Java设计模式(四)

系列文章目录 UML类图 文章目录 系列文章目录前言一、UML类图二、UML基本介绍三、UML图1.类图—依赖关系(Dependence)2.类图—泛化关系(generalization)3.类图—实现关系(Implementation)4.类图—关联关系(Association)5.类图—聚合关系(Aggregation)6.类图—组合关系(Composi…

分布式(二)-大型网站架构演化发展历程

大型网站架构演化发展历程 大型网站的技术挑战主要来自于庞大的用户,高并发的访问和海量的数据,任何简单的业务一旦需要处理数以 P 计的数据和面对数以亿计的用户,问题就会变得很棘手。大型网站架构主要解决这类问题。 初始阶段的网站架构 …

MinIO 分片上传

文章目录 1.MinIO 简介2.为什么要分片上传?3.实现思路4.具体实现初始化客户端获取分片上传的预签名 URL合并分片中止合并 5.FAQ端口错误协议错误 参考文献 1.MinIO 简介 MinIO 是适用于 AI 的高性能对象存储系统。 MinIO 简单易用。简单性是 EB 级数据基础设施的基…

宝塔配置MySQL队列调度 | ModStart

执行以下操作前提前进入网站根目录,如 cd /www/wwwroot/xxx.com执行 artisan 命令前请参照 开发教程 → 开发使用常见问题 → 如何运行 /www/server/php/xxx/bin/php artisan xxx 命令 ① 生成数据库队列表迁移文件 在执行该步骤前,请先检查迁移文件 da…

【CSS 05】文本颜色 文本对齐 文字装饰 文本转换 文字间距 文本阴影 字体 字体样式 字体大小 谷歌字体

CSS 说在前面文本 text文本对齐 text-align文字装饰 text-decoration文本转换 text-transform文字间距 text_spacing文本阴影 text-shadow字体 font字体样式 font-style字体大小 font-size谷歌字体简写属性 shorthand 说在前面 事实证明,Zoro只要出现在标题就会被识…

go-GUI开发:fyne解决中文乱码+注册windows服务

go-GUI框架:fyne教程及解决中文乱码等常见bug 1 fyne教程 fyne教程地址: https://www.topgoer.cn/docs/goday/goday-1crdp17nj4v6phttps://pkg.go.dev/fyne.io/fyne/v2#section-readme 1.1 介绍 简单易用,fyne提供了简单直观的API&#xff…

iOS编译提效插件cocoapods-jxedt方案详解

1. 前言 本篇文章是cocoapods-jxedt插件实现方案的详解,主要从以下几个方面阐述了一下插件的实现方案和历程。 插件文件目录介绍插件的工作流程介绍插件实现过程中的问题和解决方案记录 如果你对插件的使用还不了解,建议先读一下cocoapods-jxedt使用介…

CVE漏洞复现-CVE-2023-32233 NetFilter权限提升

CVE-2023-32233 NetFilter权限提升 Netfilter是Linux 内核中的网络数据包处理框架(iptables)通过各种规则和过滤器,基于数据包的来源、目标地址、协议类型、端口号等信息,控制网络流量和数据包的转发和处理具体,详情请…

使用贝叶斯网络预测糖尿病:从理论到实践

2023年9月数学建模国赛期间提供ABCDE题思路加Matlab代码,专栏链接(赛前一个月恢复源码199,欢迎大家订阅):http://t.csdn.cn/Um9Zd 引言 在现实世界中,许多变量之间存在着复杂的概率关系,例如天气、交通、健康等方面的因素都会相互影响。为了更好地理解…

音频基本概念

1.音频信号 音频信号是一种连续变化的模拟信号,但计算机只能处理和记录二进制的数字信号,由自然音源得到的音频信号必须经过一定的变换,成为数字音频信号之后,才能送到计算机中作进一步的处理。 数字音频系统通过将声波的波型转换…