【软件测试】自动化测试-概念篇

news2024/11/25 14:35:46

🌴自动化

🚩自动化的概念

自动的代替人的行完成操作。 自动化在生活中处处可见

自动洒水自机,主要通上水就可以自动化洒水并且可以自动的旋转。 自动洗手液,免去了手动挤压可以自动感应出洗手液超市自动闸门,不需要手动的开自关门生活中的自动化案例有效的减少了人力的消耗,同时也提高了生活的质量

软件中的自动化测试也是如此,通过自动化测试有效减少人力的消耗的同时也提高了测试的质量和效率(因为人工测试结果是不可控的)。

自动化的主要目的就是用来进行回归测试。回归测试是什么要讲到位

🏀回归测试

在上篇文章中讲述过回归测试,在此会具体讲述回归测试。

软件有多个版本需要进行功能的整体回归。

例如:场景一

1)新产品 --- 第一个版本

具备丰富的功能:功能1,功能2,功能3......,现在呢要对这个新的产品进行测试,执行测试是一个功能一个功能的执行,功能1测试完之后,测试功能2,在测试功能3,因此我们在执行测试的时候是一个功能一个功能的进行测试,但是对于产品来说是由所有的功能组成的,不同功能直接是有关联关系的,当我们以功能的维度进行测试完之后,还要站在产品的角度,以产品的维度执行测试,即为产品的整体回归测试。

2)已有产品 --- 第n个版本(增加额外功能)

我们在执行测试的时候,站在功能的维度会测试额外增加的功能,测试完之后还要站在产品的维度测试各功能之间的交互情况。还要测试历史的功能,因为并不知道新增的功能是否对历史功能产生影响,所以会对历史的功能大概的测试一下,然后还会站在产品的维度,对额外增加的功能和历史的功能进行回归测试。

那么每次更新新的功能,会对历史功能进行测试,这一部分就不需要每次进行手动测试,在最初版本会增加自动化测试,后面就可以直接对历史功能进行自动化测试即可,因此我们只需要关注额外增加的功能进行测试,当我们额外增加的功能和自动化测试回归了历史功能之后,又可以对额外的功能增加自动化测试,下一次版本又增加额外的功能之后,就直接对历史功能进行自动化测试。

当然回归测试不仅仅是指产品功能的回归和产品版本的回归还有一种概念。

例如,执行测试过程中,可能会发现bug,当开发人员修复bug之后,测试人员要进行检查有没有被修复,在这个检查的过程,可能有的bug修复了有的还没有修复,当所有bug修复之后,这是站在bug的维度,我们还需要站在功能维度去测试功能是否有问题,这就称为bug的回归测试。

常见面试题:

1.自动化测试能够取代人工测试吗?

自动化测试不一定比人工测试更能保障系统的可靠性,自动化测试是测试人员手工编写,后续如果有功能的变更自动化也需要进行不定期的维护和更新。

2.自动化测试可以大幅度降低工作量?

错误!

坑!!“⼀定程度上”和“大幅度”的表达方式也需要注意

tips:测试笔试中的选择题尽量不要选择说的太死或者太绝对的选项~~~~

🚩自动化分类

注意:我们所说的自动化测试其实是一个统称。

发送请求 --- 接口层面(后端代码)

客户端界面 --- PC端/移动端界面(客户端代码)

浏览器界面/小程序界面 --- web界面(前端代码)

因此自动化测试分为三类:

接口自动化

前端(UI)自动化

  • 1)客户端界面
  • 2)web界面

🏀接口自动化

发送一个接口请求,检查接口的响应是否符合预期

🏀UI自动化

UI测试也称为界面测试,常见的UI自动化测试包含web自动化测试、客户端自动化测试等等。

客户端一般是电脑上(PC端)所看到界面或手机(移动端)上所看到的界面,不是浏览器所看到的界面

我们主要讲述的是web界面自动化测试

🚩自动化测试金字塔

自动化的类型非常多,那么到底哪一种是最好的?哪一种测试的收益会更佳?

这里我们介绍测试圈内非常著名的自动化测试金字塔

理想的自动化测试金字塔表达了自动化测试的理想情况,利用较少的时间和精力在单元测试上就能够发现更多有效的问题。

然后实际上在企业中,自动化往往是“冰淇淋蛋筒反模式”

自动化需要大量的初始投资,找到“突破点”,与手动测试相比,我们开始看到它对长期成本产生的 积极影响,也能够清楚,这两种测试活动都是完全兼容,产生短期和长期利益。

🌲web自动化测试

上述讲到。自动化测试是模拟人的行为,例如百度搜索关键词"迪丽热巴"并展示相关词条。1.打开浏览器 2.输入网址https://www.baidu.com 3.找到百度搜索框 4.输入"迪丽热巴"并点击搜索按钮 5.关闭浏览器这是一次手工测试的流程。

当我们转为web自动化,就是模拟人的行为的一系列操作,和上述流程是一样的。对于手工测试来说首先打开浏览器,这一行为是由我的鼠标点击的,鼠标又是通过驱动程序来操作点击。所以在自动化测试中,也需要有一个驱动来打开浏览器。

🚩驱动

上面给大家已经介绍过,web系统的测试前提是需要打开浏览器,通过访问web服务器来对服务器界面进行一系列的操作。对于手工测试来说,这一系列的操作都需要测试人员手动的,一步一步的来执行测试。那么对于自动化程序来说,程序如何才能打开浏览器并执行我们预期的操作流程呢?

驱动一词应用广泛,同学们都不会陌生。车有了驱动才能够让车跑起来。

我们所听过的一个词:驱动程序

例如:我们所用的鼠标,为什么能通过这个第三方设备来操作电脑,就是因为有驱动,需要下载对应的驱动才能通过鼠标来进行控制电脑。若我的电脑上没有鼠标这个驱动的话,就不能操作我的电脑,还有一些耳机,摄像头,麦克风,键盘,显示器等等设备,有对应的驱动,这些设备才可以和电脑进行通信。

我们要想通过程序来打开web浏览器就需要安装web驱动(即WebDriver),WebDriver以本地化方式驱动浏览器。

注意:不同的浏览器需要不同的驱动才能打开对应的浏览器。浏览器驱动(webDriver)是一个统称,浏览器有很多(Chrome,Firefox,Edge,Safari......),chrome需要chrome浏览器驱动,Firefox需要Firefox浏览器驱动......

下载对应驱动:Selenium

步骤:

推荐使用chrome浏览器,本文章讲述的是使用chrome,不同浏览器执行效果不一样,可能存在的结果也不太一样。

chrome官方网址:Google Chrome 网络浏览器

注意:我们并不需要下载浏览器驱动!!!

当我们下载完驱动之后,有一个chromedriver.exe文件,这个文件作用就是用来打开谷歌浏览器,这里就有一个问题,我们不是说通过代码来打开浏览器吗,这个exe文件也是windows上的一个可执行程序,我的程序怎么来打开这个exe文件呢?

 这个exe文件其实是一个服务器。

所以谷歌浏览器的驱动就是一个服务器,意味着通过谷歌浏览器的服务器就可以打开对应的浏览器

对应流程:

  • 1. 通过selenium编写的自动化脚本代码中在ChromeDriverService中创建一个服务
  • 2. 通过创建好的服务打开webdriver,安装在本地的驱动服务IP为localhost,PORT为 ChromeDriverService中创建的端口号,该服务地址为selenium向webdriver发送请求的服务地 址。
  • 3. 向浏览器驱动程序发送HTTP请求,浏览器驱动程序解析请求,操控浏览器,并获得sessionid,如果再次对浏览器操作需携带此id
  • 4.浏览器执行完之后会把返回的结果给到驱动程序,驱动程序又会把结果返回给自动化脚本

我们的工作重心需要编写自动化脚本代码,还需要驱动程序,安装chrome浏览器。

注意:上诉说不同浏览器需要不同的浏览器驱动,并且不同版本的浏览器也需要不同的版本的驱动程序。例如chrome,不同版本需要下载对应的浏览器驱动

 所以这就存在一系列的问题:

比如当前版本是109.0.5414.25且下载了对应的驱动,执行自动化测试并没有问题,过段时间浏览器自动更新了,更新到了110版本,也需要下载对应版本的驱动,但是我们无法预知到浏览器什么时候更新(千万不能关闭浏览器的自动更新),就会存在浏览器更新了,驱动没有更新的时间差,改时间差里我们的自动化运行时就会报错,我们写自动化的目的是为了发现问题,一旦发现问题就会报错,此时就会发现一会是程序有问题,一会又是因为驱动有问题导致报错,这就会提高自动化的误报率。此时误报率较高的时候,对于测试人员来说不知道是自动化程序有问题还是哪里有问题。

解决办法:通过驱动管理程序,能解决浏览器更新导致的自动化运行报错问题!

🏀安装驱动管理

不需要手动下载驱动程序,只需要在程序中下载对应的依赖(例如:使用maven工程,有一个pom.xml配置文件,可以下载各种依赖),而驱动管理就是一个依赖,下载这个依赖之后,驱动管理程序会自动下载对应驱动,我们就不需要下载浏览器对应的驱动了,只需要在代码中把这个依赖下载下来即可,每次执行程序的时候,由程序自动下载对应的驱动。

驱动管理:

WebDriverManager是一个开源Java库,以完全自动化的方式对SeleniumWebDriver所需的驱动程 序(如chromedriver、geckodriver、msedgedriver等)进行管理(即下载、设置和维护),自版 本5起,WebDriverManager还提供了其他相关功能,如发现本地系统中安装的浏览器的能力,构建 WebDriver对象(如ChromeDriver、FirefoxDriver、EdgeDriver等)

maven的安装与配置:Maven安装、初始化配置_maven初始化本地仓库命令-CSDN博客

配置完成之后,首先我们创建一个 maven 项目:

然后配置pom.xml 中配置文件驱动如下,推荐使用5.8.0版本:

此时就配置好了(配置上述代码后需点击刷新)

🌳Selenium

经过上诉步骤,webdrivermanager下载后驱动也好了,也下载好了chrome,此时接下来就需要通过selenium来编写自动化脚本了。

selenium是一个web自动化测试工具,selenium也是一个java库,提供了丰富的方法供给使用者进行web自动化测试。和webdrivermanager一样的,要使用这个java库,也需要将selenium加入到依赖中。

1)安装selenium库,放到dependency同级里面

2)编写代码(src中有两个文件夹,我们需要在test中编写代码,这只是行为规范,不是强制要求)

编写代码:

打开浏览器,使用驱动管理程序打开对应的浏览器驱动。(webdrivermanager是浏览器驱动,要打开chrome浏览器驱动 )

Selenium官方还存在一个问题,在编写Java代码的时候,有一个链接拒绝,也就是发送一个请求拒绝接受,需要增加一个配置。

写个测试类启动该程序后,就会自动访问 chrome 浏览器,并访问百度网页,输入迪丽热巴后,并点击进行搜索;

注意:若运行后,不能正常运行,出现以下报错信息,可能是浏览器版本和下载的驱动程序版本不一致

可通过Erverything搜索工具,搜索chrome查看驱动程序版本和chrome浏览器版本是否一致,若不一致,可能这是一个山寨版的chrome浏览器,下载正确的浏览器即可.

chrome官方网址:Google Chrome 网络浏览器

开始运行:首次允许会下载浏览器驱动,改代码测试速度很快,我们看不到执行效果。可每走一步睡眠3s。

代码展示:

直接观察允许效果:

对于测试人员来说,我们不需要关注他是如何进行搜索的,这里只是第一次写selenium代码脚本,睡眠3s为了方面观察,我们只需要关注是否正常退出,也就是最终为 "exit code 0"

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

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

相关文章

知识笔记合集

文章目录 vsCode可以运行c程序却无法运行c程序帆软填报属性不起作用java-实体类日期类型格式化Java-数据库id字段使用雪花算法IDEA-快捷键 vsCode可以运行c程序却无法运行c程序 vsCode中的tasks.json文件中添加"-lstdc" {"tasks": [{"type": &…

厉害啦煤炉!Mercari推出Ai Listing,卖家只需要拍照发图片就行!

Mercari(中文名“煤炉”)是一个日本C2C二手交易平台,类似于中国的“闲鱼”,月活跃用户数量超2,300万。根据2023年11月的财报,Mercari的净利润同比增长高达346%,达到了惊人的28亿日元!同时&#…

零基础考过软考信息系统项目管理师经验分享

选择适合的课程:如果你是零基础,建议找一些专门针对新手的课程,讲解通俗易懂。 刷题至关重要:软考的题库很庞大,多做题是必须的。 做好笔记和复习:上课时要做好笔记,课后及时复习,…

弱口令爆破

本文仅作为学习参考使用,本文作者对任何使用本文进行渗透攻击破坏不负任何责任。 本文基于burp抓包软件针对dvwa靶场进行弱口令爆破测试。 靶场设置: 在DVWA Security中,设置安全等级,并保存。 打开靶场。 1,抓包。…

【ArcGIS Pro实操第七期】栅格数据合并、裁剪及统计:以全球不透水面积为例

【ArcGIS Pro实操第七期】批量裁剪:以全球不透水面积为例 准备:数据下载ArcGIS Pro批量裁剪数据集1 数据拼接2 数据裁剪3 数据统计:各栅格取值3.1 栅格计算器-精确提取-栅格数据特定值3.2 数据统计 4 不透水面积变化分析 参考 准备&#xff1…

新品启航,共鉴未来 —— 摩托对讲机EJEAS X10首现重庆国际摩托车展

2024年重庆国际摩托车展(CIMA Motor)将于9月13日至16日在重庆国际博览中心举行,由三大权威机构联合主办。展会面积达16万平米,汇聚国内外116家展商,吸引千余名观众参与,展示摩托车新品、技术与文化&#xf…

code eintegrity npm err sha512

当 npm install 出现报错的时候: 你应该这样去解决: 删除 package-lock.json 文件,重新执行 npm install。 问题出现的原因 EINTEGRITY 错误码表示在npm缓存中无法找到 指定sha512校验合的模块。 出现这个问题的原因是缓存不一致&…

语义分割数据集|河流湖泊分割|水灾预警

江河湖泊自然水灾检测数据集,数据集整理不易,获取地址在最后,具体信息如下: 总数:290张 类别:1类 数据集大小:约106M 数据整理不易,数据集获取地址如下: https://…

陕西科技大学客座教授向凌云推动了中国新兴科技与教育的产学研结合

近日,陕西科技大学迎来了旅美经济学家向凌云教授的聘任仪式。此次活动在镐京学院会议厅举行,由镐京学院负责人为他颁发了客座教授的聘书。在当前科学技术迅猛发展的背景下,向凌云教授的加入引起了广泛关注,尤其是在教育界和新兴产…

7种有效的链接建设方法,提升你的SEO排名(信息图表)

想象一下你小时候听过的一句常见的话: “近朱者赤,近墨者黑。” 或者, “你的五个最亲近的朋友决定了你的平均水平。” 这些智慧在链接建设领域同样适用。想想将你的网站页面与其他网站连接起来的反向链接——这些入站链接就像你与外界的…

C++——关联式容器(3):红黑树

3.红黑树 3.1 红黑树的概念 上一篇文章介绍了AVL树,AVL树是解决一般的搜索二叉树效率退化的一种很好的方式。除了AVL树之外,红黑树也是一种非常好的选择。红黑树也是一种搜索二叉树,从其名字上就能够发现红黑树依靠标识红色或黑色来构建整棵…

集成显卡与独立显卡之间的区别,以及如何选择?

目录 一、集成显卡介绍 二、独立显卡介绍 三、性能与功耗对比 四、应用场景与选购指南 五、总结 大家在选购电脑的时候,显卡作为图形处理的关键设备,对大型3D游戏、图形设计类软件运行非常关键。目前电脑显卡主要分为两大类:集成显卡与独立显卡。今天给大家聊聊集成显卡…

Jeremy Howard对创业,AI产品,技术趋势,社区的看法

Jeremy Howard,一位在人工智能领域留下深刻印记的科学家和教育家,以其对深度学习的普及和教育的执着追求而闻名。出生于澳大利亚的他,不仅在学术界取得了令人瞩目的成就,更是将复杂的机器学习技术带给了更广泛的公众。 在悉尼大学…

Amazon EC2:引领企业迈向云计算的未来

在数字化转型的浪潮中,企业需要一个强大、灵活且安全的计算平台来支持其不断变化的业务需求。Amazon Elastic Compute Cloud(EC2)正是这样一个解决方案,它为企业提供了一个可扩展的云计算环境,帮助企业实现高效、低成本…

【课程系列11】某客时间AI 大模型应用开发实战营

某客时间AI 大模型应用开发实战营 链接 百度网盘,链接:https://pan.baidu.com/s/1ZC-fOC_QQjNM6wyVjQcYOg 课程详情 https://u.geekbang.org/subject/llm/ 初探大模型:起源与发展 预热篇:解码注意力机制(Attentio…

Deep Active Contours for Real-time 6-DoF Object Tracking

这篇论文解决了从RGB视频进行实时6自由度(6-DoF)物体跟踪的问题。此前的基于优化的方法通过对齐投影模型与图像来优化物体姿态,这种方法依赖于手工设计的特征,因此容易陷入次优解。最近的基于学习的方法使用神经网络来预测姿态&am…

等保测评中的访问控制策略:企业优化指南

在信息安全等级保护(等保)测评中,访问控制作等保测评中的访问控制策略:企业优化指南为保障信息系统安全的关键环节,其策略的合理性和有效性直接影响到测评结果。企业如何优化访问控制策略,以满足等保测评的…

21432423

c语言中的小小白-CSDN博客c语言中的小小白关注算法,c,c语言,贪心算法,链表,mysql,动态规划,后端,线性回归,数据结构,排序算法领域.https://blog.csdn.net/bhbcdxb123?spm1001.2014.3001.5343 给大家分享一句我很喜欢我话: 知不足而奋进,望远山而前行&am…

NC 兑换零钱(一)

系列文章目录 文章目录 系列文章目录前言 前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。 描述 给定数组arr&…

VMware Workstation Player虚拟机Ubuntu启用Windows共享目录

1、新建共享目录 2、安装并启用vmtools、fuse sudo apt update sudo apt install open-vm-tools open-vm-tools-desktop sudo apt install fuse sudo systemctl start open-vm-tools sudo systemctl enable open-vm-tools 3、命令挂载 sudo vmhgfs-fuse .host:/SharedFold…