为什么用Selenium做自动化测试

news2024/10/7 7:30:05

手工测试的问题

手工操作点点点借助的是人脑的反应和聪明,为什么不用手点了呢?手会酸,脑子会累,会占据太多的时间。想一想为什么会学习自动化测试。我们都希望通过工具来解放我们的双手,大脑,眼睛。

为什么用自动化

自动化是指机器设备、系统或过程(生产、管理过程)在没有人或较少人的直接参与下,按照人的要求,经过自动检测、信息处理、分析判断、操纵控制,实现预期的目标的过程。
平时我们会接触很多的自动化工具,比如按键精灵自动加血加蓝,搜索引擎,以前找一篇文章要把所有的资料摊开,一页一页翻,现在直接列出来了。可以再编辑器里实现以下搜索。
使用了自动化测试软件以后还是觉得不够,因为有的测试需求比较复杂,包含几十上百个步骤,用软件测不出来,就算能实现也比较麻烦,这时候我们面临的问题就是:用软件定制化不高,对于复杂场景实现不了。
代码的定制性就非常高了,想实现什么功能可以自己去实现。到后面实现完以后那些不会编程的测试人员怎么办?不能让他们闲着,就要编写测试平台,让不太会代码的同学也可以轻松使用。
自动化测试是通过使用机器系统来鉴定软件的正确性、完整性、安全性和质量。我们的目标是通过编写代码,能够代替我们日常用手去操作的测试工作,要求你尽可能的掌握编程语言和相关代码库的使用和实现原理。

这些都非常容易成为面试中的常考问题。这些高频问题我平时也比较喜欢收集,有一线大厂一些大佬的面试心得,也有一些刚入行时候的面试题,特意整理了一下,有需要的文末关注关注我微信公众号我发给你。

选择合适的测试方式

自动化测试的目的不是完全取代手工测试,而是解放手工,让人不再每天重复做枯燥的点点点工作,把这些枯燥的工作交给自动化程序执行,人则转而去做更有创造性的工作。
在一个项目当中的测试工作主要分为以下几类:

  • 1、探索式的手工测试
  • 2、依赖脚本的手工测试
  • 3、生成脚本的测试工具
  • 4、代码方式

大多数情况下,都是这四种方式的组合,但是我们如何分配这 4 种方式呢?有没有一种模式让我们合理的安排这四种方式?

什么时候引入自动化测试

自动化测试不是凭空来的,它需要建立在手工测试的基础上。通常来说,在引入自动化测试之前,测试团队已经实施过几轮手工测试。

这种手工测试可以用探索式的方式,更多的是依赖脚本的手工测试。我们会根据用例设计方法设计每一个用例的操作脚本,然后按照脚本执行每个用例。

当用例越来越多,而产品迭代周期不变的情况下,总有一天,现有团队无法在上线之前把所有的用例执行完,我们需要更有效率的用例执行方式。 同时,测试人员总是需要重复执行同样的用例,时间长了会产生疲惫感,我们也会想办法把一些枯燥的工作交给自动化程序去执行。

那么,什么时候引入自动化测试呢?其实就是当测试团队已经很难应付这么多用例的情况下,通过挑选一些适合交给自动化程序执行的用例出来,从而过渡到自动化测试阶段。

以Jmeter为代表的测试工具

jmeter 在测试界有很高的地位,他的表现稳定,扩展能力强,可以支持接口测试、网页测试,性能测试等多方位的测试,而且操作也不是很复杂。

因此,很多测试团队在用代码去搭建测试框架前,一般都会先尝试用 Jmeter 来做自动化测试。具体的操作方式在这里我不展开讲了,感兴趣的私聊吧。

如果是很小型的测试团队,没有太多技术储备去做代码维护,用测试框架或者现有平台是比较合适的方式。

但是这种方式对于测试从业人员不太友好,比如换了一家公司,这家公司不在用之前的工具了,那在找工作的时候会遇到比较大的麻烦。在技术领域,每天都有新的工具冒出来,挑战现有工具的市场地位,每家公司倾向的技术选型都不一样,要找到一种通用的方式来应对面试和招聘,是测试人员面临的难题。

我个人的想法是,熟练掌握一两种市场占有率非常高的测试工具,以后遇到了新工具,可以简单学一下,除非是现有公司需要,否则不用花太多心思在市场占有率很低的新奇工具上,他们可能会提供很多看起来很厉害的功能,可以学习他们的思路,但是很有可能在公司里用不到。

编程能力既重要又不重要

编程,可以说是解决自动化测试的万金油方式。编程提供的灵活性,是所有现有工具都无法比拟的,只要技术允许,你几乎可以通过编程实现任何的测试工具,覆盖任何的测试场景。

那为什么又说编程又不重要呢?因为无论通过什么方式,自动化的目的都是为了解放人力,如果一个测试团队花了很多精力编程,覆盖多种测试场景,投入大量的人力物力和金钱,但是效果和之前没什么两样,那反而是对人才的束缚,而不是解放人力。

在编程领域,你可以使用已有的框架,站在巨人的肩膀上,实现自动化测试,比如可以用 selenium 实现网页自动化测试。 如果有一天 Selenium 不再流行,你可以把它的实现思路快速的转移到其他的框架中,只要有编程能力,一般都不要慌。

为什么是Selenium

目前,在web自动化测试中,用得较多的主要有以下框架:

  • Selenium
  • Cypress
  • Playwright
  • Puppeter

这些框架或者工具我都接触过,机会合适,我都会去编写具体的操作笔记。 虽然有很多的挑战者,但是Selenium还是用得最多的,他的技术架构也在不停的演化。有的人说selenium过时了,他们说的都是对的,它确实有点老,不过如果让我选型,我还是会优先选择 selenium。

在学它之前,只需要问几个问题:

  • Selenium 能解决 web 自动化测试问题吗?
  • Selenium 容易学吗?
  • Selenium 资料丰富吗?
  • Selenium 方便迁移和扩展吗?
  • Selenium 方便团队协作吗?

我都能得到肯定的答案。当然它也有些缺点,但这些缺点现在都无伤大雅,Selenium 目前的缺点:

  • 截图、录制、回溯不方便
  • 没有流量拦截
  • 没有 mock
  • 在反爬中会被识别,当然其他工具也是。

无论如何,Selenium 只是一个自动化辅助工具,需要对他有清晰的认识: selenium只是一个浏览器自动化工具需要结合测试工具使用。 selenium 无法提高你的测试水平 帮助你快速定位bug

没有最好的技术,只有合适的技术

我大概列举了一下平时技术选型时需要考虑的问题,一个技术,是不是新,是不是好看当然可以做为参考指标,不过也可以看点更实际的: 是否能解决你的问题

  • 跑 Demo
  • 环境搭建
  • 学习成本低
  • 友好的文档
  • 丰富的教程
  • 完善的解决方案
  • 大量的案例
  • 完善的生态
  • 社区活跃
  • 更新活跃
  • API成熟
  • 企业很愿意用,大量招聘岗位
  • 方便迁移和扩展
  • 支持多平台
  • 支持多语言
  • 是否开源
  • 方便团队协作
  • 手工测试团队
  • 开发团队
  • 你能接受他的缺点吗
  • 没有十全十美的技术
  • 没有最好的测试工具,没有最好的测试语言
  • 只有适合的场景

web自动化测试效率不高

对整个web端进行自动化测试主要的目的是更贴近用户使用场景,因为界面是用户直接和软件接触的载体。用户几乎所有的操作都是通过 ui 实现的,因此 ui 测试最能模拟实际的用户使用情况,进行 ui 测试需要站在用户的立场,考虑用户的痛点,模拟用户的行为进行操作。 用户使用产品的功能,是想获得某种能力,因此应该通过功用设计测试用例,而不是单纯的从产品特性和说明来考虑。

web端做测试有两个问题,第一是前端界面变化快,第二是执行的效率低。通过现有的技术手段只能做到优化,却不能避免这两个问题, 在做自动化测试的时候要尤其注意。

最后能给予你助力的教程!

这份资料,对于【软件测试】的朋友来说应该是最全面最完整的备战资料,为了更好地整理每个模块,我也参考了很多网上的优质博文和项目,力求不漏掉每一个知识点,这些资料也陪伴了我走过最艰难的路,希望也能帮助到你!!!

在这里插入图片描述

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

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

相关文章

蚂蚁安全科技 Nydus 镜像加速实践

蚂蚁安全科技 Nydus 镜像加速实践 原创 曦栖 金融级分布式架构 文|蚂蚁集团 ZOLOZ 团队 使用全球领先安全科技,为用户和机构提供安全、便捷的安全风控解决方案。 本文 6386 字 阅读 12 分钟 背景简介 ZOLOZ[1]是蚂蚁集团旗下的全球安全风控平台&…

84.qt qml-Sprite精灵、SpriteSequence、ImageParticle使用Sprite精灵动画(三)

在上章我们学习了83.qt qml-初步学习2D粒子影响器(二)_诺谦的博客-CSDN博客 然后还有两个影响器没有学习: 粒子精灵影响器SpriteGoal 粒子组影响器GroupGoal 本章我们便来学习粒子精灵和粒子精灵影响器 ImageParticle通过sprites来设置精灵列表,如下图所示: 所以我们需要…

JVM学习(八):运行时数据区——虚拟机栈(字节码程度深入剖析)

目录 一、概述 1.1 基于栈结构的虚拟机 1.2 栈和堆 二、虚拟机栈(Java Virtual Machine Stack)详述 2.1 虚拟机栈介绍 2.2 虚拟机栈作用 2.3 虚拟机栈特点 三、栈中常见的异常 3.1 StackOverflowError异常 3.2 OutOfMemoryError异常 四、…

OpenGL学习笔记(一)

文章目录 1. 顶点2. 着色器(Shader) 1. 顶点 OpenGL本质是一个状态机,点作为表示图形最基本的元素,如何告诉OpenGL点的基本信息就是我们要做的事情 1.1VertexArray VertexArray是所有顶点的集合,我们可以将VertexBuffer分成很多组&#xff…

Volatile系列(一):Volatile测试案例一可见性

系列文章 Volatile测试案例一可见性 目录​​​​​​​ 前言 测试1 逻辑 代码 结果 测试2 逻辑 代码 结果 结论 原理探讨(可见性) 前言 多线程是 JAVA 并发编程的主要应用,并发环境能大幅提高应用性能,提高 CPU 使用…

基于springboot+mysql+html实现智能停车场管理系统

基于springbootmysqlhtml实现智能停车场管理系统 一、系统介绍1、系统主要功能:2.涉及技术框架:3.本项目所用环境: 二、功能展示三、其它系统四、获取源码 一、系统介绍 1、系统主要功能: 系统管理:角色管理、接口管…

华为OD机试真题(Java),货币单位换算(100%通过+复盘思路)

一、题目描述 记账本上记录了若干条多国货币金额,需要转换成人民币分 (fen),汇总后输出每行记录一条金额,金额带有货币单位,格式为数字单位,可能是单独元,或者单独分,或者元与分的组合要求将这…

解决方案:Zotero实现参考文献中英文混排,将英文文献中的“等”转成“et al.”

Zotero 是一款非常实用且易于使用的参考文献管理工具,可帮助用户收集、整理和引用各种类型的文献,包括图书、期刊文章、网页等。在学术写作中起着重要作用。 但是其在中文世界中,运行起来偶尔会出现问题,这里记录一个问题及其解决…

Nacos安装配置2.0以上版本

一、Nacos使用 1、官网 Nacos Spring 快速开始 Nacos Spring Boot 快速开始 Nacos Spring Cloud 快速开始 Nacos Docker 快速开始 Dubbo 融合 Nacos 成为注册中心 Kubernetes Nacos NacosSync 介绍 2、配置文件 nacos-配置中心官方文档说明 nacos-注册中心官方文档说明 在nacos…

浅谈拉格朗日插值法

浅谈拉格朗日插值法 好像FFT要用到,所以就学习一手 文章目录 浅谈拉格朗日插值法什么是插值拉格朗日插值法 什么是插值 在离散数据的基础上补插连续的函数,使得这条连续函数经过所有离散数据点,这个过程就叫插值。其意义在于: …

缓存和数据库一致性问题

情况一 先更新缓存再更新数据库 先更新缓存 再更新数据库 如果数据库更新失败 那我们缓存也没有意义 而且这个缓存也是需要计算的消耗资源的 所以不可取到 情况二 先更新数据库 后更新缓存 两个线程 线程A更新数据库 但是由于某些原因被阻塞了 也就是A更新后的数值没有被更新到…

Ajax 创建对象

文章目录 AJAX 创建对象创建 XMLHttpRequest 对象XMLHttpRequest 对象创建 XMLHttpRequest 对象 AJAX 创建对象 创建 XMLHttpRequest 对象 XMLHttpRequest 是 AJAX 的基础。 XMLHttpRequest 对象 所有现代浏览器均支持 XMLHttpRequest 对象(IE5 和 IE6 使用 Acti…

【pyTorch学习笔记③】PyTorch基础·上篇

文章目录 一、PyTorch介绍二、PyTorch的安装1、CPU版本2、GPU版本 三、Numpy与Tensor1.Tensor的创建2.Tensor的变形 相关推荐 一、PyTorch介绍 PyTorch是Facebook发布的一款深度学习框架,继承了Torch灵活、动态的编程环境和用户友好的界面,支持以快速和灵…

kafka使用详解、最佳实践和问题排查

kafka是一个常用的分布式消息中间件,与RabbitMQ对比,特点是可以无限横向扩容,并保持高可靠性、高吞吐量和低延迟,因此比RabbitMQ有更高的市场占有率(网上搜了一下,kafka大约41%,RabbitMQ大约29%…

【网络安全】Metasploit工具

Metasploit Metasploit介绍默认安装目录主要应用文件modules文件内容介绍目录内容 Metasploit使用常用命令信息收集之端口扫描信息收集之c段扫描ms17_010(永恒之蓝) msfvenom生成木马命令入侵win全过程 Metasploit介绍 默认安装目录 /usr/share/metasp…

C语言指针2大问题:指针类型有什么用?指针如何运算?

如题,本篇博客主要解决2个疑点:指针类型的用处,指针如何运算。 1.指针类型 C语言中的指针类型,在X86环境下大小是4个字节,在X64环境下大小是8个字节。既然指针的大小和指针类型无关,那么指针类型究竟有什么…

AI看图说话,MiniGPT-4已经开源

MiniGPT-4 是一个人工智能工具,​最大的飞跃是增加了识图能力,​并且回答准确性也得到显著提高。​它可以识别图片并回答关于图片的问题,​例如图片内容、​颜色等等。 ​此外,​它还可以进行图像对话,​即通过图片和…

MFC之CRect详解

2023年4月25日,周二晚上。 今天查了不少关于CRect类及其相关内容的资料,学到了不少东西,所以我决定写一篇详细的关于CRect类及其相关内容的文章,以记录今天所学。 CRect类 在 MFC 中,CRect 类表示一个矩形区域。它是…

【Vue 移动端开发】适配百分之99的屏幕方案

之前提起移动端适配,都是一些视口的概念,包括物理像素和逻辑像素,理想视口,dpr等等等。利用 media query 和 rem 是最常见的移动端适配方案。如下代码: const deviceWidth document.documentElement.clientWidth || …

Axure RP 9 for Mac 原型设计软件安装,Mac软件打开提示:已损坏,无法打开。您应该将它移到废纸篓。怎么解决?

Axure RP 9 for Mac 原型设计软件安装,Mac软件打开提示:已损坏,无法打开。您应该将它移到废纸篓。怎么解决? 安装过程很简单: 1、下载后先将软件拖入应用程序中; 2、打开软件,弹出登录界面,点…