这些软件测试面试题一定要会,自动化测试面试题(含答案)

news2024/11/15 6:57:48

1、你会封装自动化测试框架吗?

自动化框架主要的核心框架就是分层+PO模式:分别为:基础封装层BasePage,PO页面对象层,TestCase测试用例层。然后再加上日志处理模块,ini配置文件读取模块,unittest+ddt数据驱动模块,jenkins持续集成模式组成。

2、自动化测试的使用场景?

    • 需求稳定,不会频繁变更。

    • 研发和测试周期长,需要频繁执行回归测试。

    • 需要在多种平台上重复运行相同测试的场景。

    • 某些测试项目,通过手工测试无法实现,或者手工成本太高。

    • 被测软件的开发较为规范,能够保证系统的可测试行

3、请描述一下自动化测试流程?

    1.编写自动化测试计划

    2.设计自动化测试用例

    3.编写自动化测试框架和脚本

    4.调试并维护脚本

    5.无人值守测试

    6.后期脚本维护(添加用例、开发更新版本)

4.自动化测试发现BUG多吗?

    • 在开发的时候就已经将大部分的bug解决了,所以使用中并不多。

    • 不多,因为之前项目组是把已经测试通过的基本功能再进行自动化脚本编写和在后续版本执行自动化测试,它主要是保证已经测试通过的功能在新版本更新后没有问题。

5.你觉得自动化测试的价值在哪里?你们公司为什么要做自动化测试?

    1.引用自动化测试之后,能代替大量繁琐的回归测试工作

    2.把业务测试人员解放出来,让业务测试人员把精力集中在复杂的业务功能模块上

    3.自动化测试一般是对稳定下来的功能进行自动化,保证不会因为产品的更新导致之前稳定下来的功能出现BUG

6.自动化测试有误报过bug吗?产生误报怎么办?

有误报过,有时候自动化测试报告中显示发现了bug,实际去通过手工测试去确认又不存在该bug。

误报原因一般是:

    1.元素定位不稳定,需要尽量提高脚本的稳定性;

    2.开发更新了页面但是测试没有及时更新维护!

7.自动化测试过程中,你遇到了哪些问题,是如何解决的

    1.频繁地变更页面,经常要修改页面对象类里面的代码

    2.自动化测试偶尔出现过误报

    3.自动化测试结果出现覆盖的情况:Jenkins根据时间建立文件夹

    4.自动化测试代码维护比较麻烦

    5.自动化测试进行数据库对比数据

8、在上一家公司做自动化测试用的什么框架?

    可以说出以下自己擅长的一种:

    1.python+selenium+unittest

    2.python+selenium+pytest

9.在selenium自动化测试中,你一般完成什么类型的测试?自动化覆盖率?

  • 主要是冒烟测试和回归测试。回归测试主要写一些功能稳定的场景,通过自动化手段去实现,节约测试时间。

  • 因为自动化测试用例也是在不断的更新和迭代,没有刻意去统计,大概在30%-40%左右

10.在执行脚本过程,如何实现当前元素高亮显示?

    主要是用selenium driver.execute_script()方法,来修改js的元素

    利用javaScript去修改当前元素的边框样式来到达高亮显示的效果,

11.如果一个元素无法定位,你一般会考虑哪些方面的原因?

    1.页面加载元素过慢,添加等待时间

    2.页面有frame框架页,需要先跳转入frame框架再定位

      • driver.switch_to.frame()

    3.可能该元素是动态元素,定位方式要优化,可以使用部分元素定位或通过父节点或兄弟节点定位。

    4.可能识别了元素,但是不能操作,比如元素不可用,不可写等。需要使用js先把前置的操作完成,

12.元素定位方法你熟悉的有哪些?

    • ID,Name,Class_name,Tag_name.Link_text,Xpath,CSS

13.遇到frame框架页面怎么处理?

    • 先用driver.switch_to.frame()跳转进去frame,然后再操作页面元素,操作完后使用driver.swith_to.default_content()跳转出来

14.遇到alert弹出窗如何处理?

  • ###需要先定位到alert元素,点击之后

  • 使用driver.switch_to.alert方法先跳转到alert弹出窗口

  • 然后再通过accept点击确定按钮,通过dismiss点击取消难,通过text()获得弹出窗口的文本。

了解一下就好

我们常见的alert弹窗有两种:基于windows弹窗和基于web页面弹窗

webdriver是能够处理alert弹窗的,Selenium提供了Alert这个接口。

相关操作代码如下:

  • Alert alert = driver.switchTo().alert() // 切换到Alert

  • alert.accept() // 点击弹窗上确定按钮

  • alert.dismiss() // 点击弹窗的取消按钮

  • alert.getText() // 获取弹窗上的文本文字内容

  • alert.sendkeys() // 有些弹窗还支持文本输入,这个可以把要输入字符通过sendkeys方法输入

15.如何处理多窗口?

多窗口之间跳转处理,我们在项目中也经常遇到。就是,当你点击一个链接,这个链接会在一个新的tab打开,然后你接下来要在新tab打开的页面查找元素,

    1.我们在点击链接前使用driver.current_window_handle获得当前窗口句柄。

    2.再点击链接。点击后通过driver.window_handles获得所有窗口的句柄,

    3.然后再循环找到新窗口的句柄,然后再通过driver.switch_to.window()方法跳转到新的窗口。

16.怎么验证元素是enable/disabled/checked状态?

      定位元素后:分别通过isEnabled(),isSelected(),isDisplayed()三个方法进行判断。

17.如何处理下拉菜单?

在Selenium中有一个叫Select的类,这个类支持对下拉菜单进行操作。使用方法如下:

    1.定位元素

    2.把定位的元素转化成Select对象。

      • sel = Select(定位的元素对象)

    3.通过下标或者值或者文本选中下拉框。

      •  sel.select_by_index(index);

      •  sel.select_by_value(value);

      •  sel.select_by_visible_text(text);

18.在日历这种web 表单你是如何处理的?

  • 首先要分析当前网页使用日历插件的前端代码,看看能不能通过元素定位,点击日期实现,如果不能,可能需要借助javascript。

  • 还有些日历控件一个文本输入框,可以直接sendKeys()方法来实现传入一个时间的数据。

19.举例一下说明一下你遇到过哪些异常

常见的selenium异常有这些:

    • NoSuchElementException:没有该元素异常

    • TimeoutException :超时异常

    • ElementNotVisibleException :元素不可见异常

    • NoSuchAttributeException :没有这样属性异常

    • NoSuchFrameException :没有该frame异常

20.关闭浏览器中quit和close的区别

  • 简单来说,两个都可以实现退出浏览器session功能,close是关闭你当前聚焦的tab页面,而quit是关闭全部浏览器tab页面,并退出浏览器session。

  • quit一般用在结束测试之前的操作,close用在执行用例过程中关闭某一个页面的操作

21.在Selenium中如何实现截图,如何实现用例执行失败才截图

在Selenium中提供了一个get_screenshot_as_file()的方法来截图的,一般结合try/except捕获异常时使用,进行错误截图

#官网的最新方法

  • driver.save_screenshot(’./image.png’)

22.如何实现文件上传?

定位元素后,直接使用send_keys()方法设置就行,参数为需要上传的文件的路径。

23、自动化中有哪三类等待?他们有什么特点?

    1.线程等待(强制等待)如time.sleep(2):线程强制休眠2秒钟,2秒过后,再执行后续的代码。建议少用。

    2.imlicitlyWait(隐式等待)会在指定的时间范围内不断的查找元素,直到找到元素或超时,特点是必须等待整个页面加载完成。

    3.WebDriverWait(显式等待)通常是我们自定义的一个函数代码,这段代码用来等待某个元素加载完成,再继续执行后续的代码

24.如何实现鼠标悬停,键盘事件和拖拽动作?

在Webdriver中,处理键盘事件和鼠标事件,一般使用Actions类提供的方法,包括鼠标悬停,拖拽和组合键输入。

这里介绍几个方法

  • 方法:clickAndHold()

  • 使用场景:找到一个元素,点击鼠标左键,不放手。自己可以点击鼠标不松开试试这个场景。

  • 方法:contentClick()

  • 使用场景:模拟鼠标右键点击,一般右键会带出菜单来。

  • 方法:doubelClick()

  • 使用场景:模拟鼠标双击

  • 方法:dragAndDrop(source,target)

  • 使用场景:模拟从source这个位置,拖拽一个元素到target位置

  • 键盘事件方法:keyDown(keys.ALT), keyUp(keys.SHIFT)

  • 使用场景:点击键盘事件,分为两个动作,一个点击键盘,第二个动作是释放点击(松开)

25.什么是断言

      断言assert 用于代码中验证实际结果符合预期结果,如果测试用例失败,则抛出异常并且提供断言日志

26.自动化测试分为哪几类

      UI自动化:又分为web和和app自动化 (web自动化(selenium)app自动化(appium))

接口自动化

27.一个接口的响应在下一个接口中怎么用?(一个请求依赖另一个请求的返回结果)

  • cookie 全局变量 反射

  • 存储到excel表,需要时再取

  • 框架里边的期望结果:查库依赖用户成功之后

28.unitest和pytest框架讲解以及使用的是哪个一个为什么不用另一个?

较unittest,pytest有以下优点

  • 自动发现测试模块、测试方法

  • 断言使用asert+表达式

  • 可以设置会话级、模块级、类级、函数级的fixtures、数据准备+清理工作

  • 有丰富的插件库,目前在300个以上。

29. get和post不同点

  • GET - 从指定的资源请求数据。请求的数据会附加在URL之后,以?分割URL和传输数据,多个参数用&连接

  • POST - 向指定的资源提交要被处理的数据。POST请求会把请求的数据放置在HTTP请求包的包体中

  • post对数据进行加密更加安全,且可以包含更大的数据

30.http和https不同点

  • 1、HTTPS 协议需要到 CA (Certificate Authority,证书颁发机构)申请证书,一般免费证书较少,因而需要一定费用。(以前的网易官网是http,而网易邮箱是 https)

  • 2、HTTP 是超文本传输协议,信息是明文传输,HTTPS 则是具有安全性的 SSL 加密传输协议。

  • 3、HTTP 和 HTTPS 使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。

  • 4、HTTP 的连接很简单,是无状态的。HTTPS 协议是由 SSL+HTTP 协议构建的可进行加密传输、身份认证的网络协议,比 HTTP 协议安全。(无状态的意思是其数据包的发送、传输和接收都是相互独立的。无连接的意思是指通信双方都不长久的维持对方的任何信息)

31.cookie、session、token各自区别

  • cookie:在客户端存储在客户端用于存储会话信息的

  • session:在服务器端,记录用户的请求状态,一般默认时间30min

  • session_id会存在cookie中,每次请求cookie中所有信息都会传递给服务器,服务器通过 session_id来识别是否是同一个用户请求,不是同一个用户的话,就会要求重新登录

  • token:访问权限

  • 鉴权:访问的接口是否正常,是否非法访问绕过前端。防止跳过页面直接访问接口。token授权:是否具有访问接口的权限。 唯一全局动态的 key

32.你觉得自动化测试最大的缺陷是什么?

    • 不稳定

    • 可靠性

    • 不易维护

    • 成本与收益

33.Selenium是否支持桌面应用软件的自动化测试

      Selenium不支持桌面软件的自动化测试,Selenium是根据网页元素的属性才定位元素,而其他桌面软件自动化测试工具是根据桌面元素的位置来定位元素,当然现在也有根据桌面元素的属性来定位的。

#可以使用pyautogui来实现桌面自动化

34.UI自动化能发现多少Bug

      UI自动化的目的不是为了发现多少Bug,主要是为了减轻重复的基础操作和线上监控的作用

35.Selenium 中如何保证操作元素的成功率?也就是说如何保证我点击的元素一 定是可以点击的?

  • 1.添加元素智能等待时间 driver.implicitly_wait(30)

  • 2.添加强制等待时间 time.sleep()

  • 3.try 方式进行id,name,clas,x path, css selector不同方式进行定位,如 果第一种失败可以自动尝试第二种

36.鼠标操作常用函数

    • context_click() 右击 --> 此方法模拟鼠标右键点击效果

    • double_click() 双击 --> 此方法模拟双标双击效果

    • drag_and_drop() 拖动 --> 此方法模拟双标拖动效果

    • move_to_element() 悬停 --> 此方法模拟鼠标悬停效果

    • perform() 执行 --> 此方法用来执行以上所有鼠标方法

37. 键盘操作常用函数

    • send_keys(Keys.BACK_SPACE) 删除键(BackSpace)

    • send_keys(Keys.SPACE) 空格键(Space)

    • send_keys(Keys.TAB) 制表键(Tab)

    • send_keys(Keys.ESCAPE) 回退键(Esc)

    • send_keys(Keys.ENTER) 回车键(Enter)

    • send_keys(Keys.CONTROL,‘a’) 全选(Ctrl+A)

    • send_keys(Keys.CONTROL,‘c’) 复制(Ctrl+C)

    • send_keys(Keys.CONTROL,‘v’) 全选(Ctrl+V)

    • send_keys(Keys.CONTROL,‘x’) 复制(Ctrl+X)

38.如果需要造假数据你会怎么做

使用faker库

from faker import Faker#创建对象,默认生成的数据为为英文,使用zh_CN指定为中文fake = Faker('zh_CN')print(fake.name())#随机生成姓名print(fake.address())#随机生成地址print(fake.phone_number())#随机生成电话号码print(fake.pystr())#随机生成字符串print(fake.email())#随机生成邮箱地址for i in range(10):    print(fake.name())#随机生成10个姓名

 

总结:

感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

 

          视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。

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

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

相关文章

多模态大模型技术详解(图像分块、特征对齐)

多模态 多模态发展图像预处理自适应图像切割弥补语义损失 视觉编码器视觉文本特征对齐线性映射或MLPCross AttentionPerceiver ResamplerQ-Former(Querying Transformer)模型结构表示学习 大语言模型 这篇文档主要讲解目前比较流行的缝合式的多模态大模型…

设计模式—装饰者模式

一、什么是装饰者模式 装饰者模式是一种结构型设计模式,它允许你动态地向对象添加新的行为而不影响其原有的行为。它在运行时给对象动态地添加一些额外的职责,通常是在原有的行为基础上,通过装饰器进行一些修饰,实现了更加灵活的代…

【软考】流水线

目录 一、指令控制方式1.1 说明1.2 顺序方式1.3 重叠方式1.4 流水方式 二、流水线的种类三、流水的相关处理3.1 说明3.2 RISC 中采用的流水技术3.2.1 超流水线(Super Pipe Line)技术3.2.2 超标量(Super Scalar)技术3.2.3 超长指令字(Very Long Instruction Word,VLI…

阿一网络安全之log4j2漏洞CVE-2021-44228复现

漏洞简介 Apache Log4j 2 是对 Log4j 的升级,它⽐其前身 Log4j 1.x 提供了显 着改进,并提供了 Logback 中可⽤的许多改进,同时修复了 Logback 架构中的⼀些固有问题。 2021 年 12 ⽉,在 Apache Log4j2 中发现了⼀个 0-day 漏洞。 …

倒计时7天!MoonBit 游戏挑战赛即将开启!

基于 Wasm4 框架的 MoonBit 游戏开发指南 MoonBit 即将面向全国举办“编程创新挑战赛”,并包含游戏赛道。本教程将介绍本次比赛中使用的框架 Wasm4,以及如何使用 MoonBit 在 Wasm4 框架中编写游戏。相关赛事详情见文末。 如果你曾访问过 mooncakes 或我们…

这本大模型书太香了!全方位解析LLM-Agent 第一本给程序员看的AI Agent图书!

AI Agent火爆到什么程度? OpenAI创始人奥特曼预测,未来各行各业,每一个人都可以拥有一个AI Agent;比尔盖茨在2023年层预言:AI Agent将彻底改变人机交互方式,并颠覆整个软件行业;吴恩达教授在AI…

从0-1开发一个Vue3前端系统页面-10.博客页面优化及子菜单设计

注意: 本项目已将前端源码同步上传至Gitee,项目已开源, 仅供参考,不涉及商用,不得用其牟利,著作权归本人所有。 本系列后期只会对重要部分代码进行注释,难点会同步更新至专栏 开发遇到的问题_不…

linux df -h时没有查到root盘,root文件夹带着锁或者叉号的解决办法

文章目录 一、前言二、来龙去脉1、2、给root文件赋予权限3 、这个时候df -h 查看就可以看到root文件了 总结 一、前言 当时装的双系统,自认为会学习很多linux相关课程,买了个1T的固态,ubuntu上分了很多,结果显而易见,…

UE5学习笔记16-游戏模式中的一些事件,如何改变网格体和摄像头的碰撞

一、OnPostLogIn:此事件在玩家成功登录游戏后被调用 二、HandleStartingNuwplayer:在OnPostLogIn事件后被调用,可以用来定义新进入的玩家会发生什么 三、Spawn Default PawnAtTransform:这个事件触发游戏中实际的Pawn生成 四、…

bash: /home/xxx/anaconda3/bin/conda: No such file or directory

一背景 最近把conda 移动后,出现了一堆bug,目前pip不能使用,在此记录一下解决方案。 二报错信息 bash: /home/xxx/anaconda3/envs/yolov10/bin/pip3 /home/xxx/.conda/envs/yolov10/bin/python: bad interpreter: No such file or directo…

Leetcode 100.101.110.199 二叉树相同/对称/平衡 C++实现

Leetcode 100. 相同的树 问题:给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。 如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。 /*** Definition for a binary tree node.* struct T…

多媒体技术(1.1)之图像分辨率

「分辨率」这个概念还有「解析度」等说法,所以能从字面上看出来,它描述的其实就是图像包含多少细节、有多「清晰」。但具体到怎么用数字来描述一个图像有多少细节,就有很多个描述的角度,于是「分辨率」有很多种意思。 相机的分辨…

代码随想录算法训练营day29 | 贪心算法 | 134.加油站、135.分发糖果、860.柠檬水找零、406.根据身高重建队列

文章目录 134.加油站思路小结 135.分发糖果思路拓展——环形分糖小结 860.柠檬水找零思路 406.根据身高重建队列思路小结 今天是贪心算法专题第三天,直接上题目 134.加油站 建议:本题有点难度,不太好想,推荐大家熟悉一下方法二 …

STM32基础篇:定时器 × 输入捕获

通道的概念 如下图右半部分,为定时器的总体结构框图: 可以看出,在时基单元下方,有四个长条形的结构,我们将其称之为:通道1~通道4;每一个通道都会连接一个IO引脚(对应左半部分IO引脚…

OZON什么产品好卖丨OZON婴儿用具产品

Top1 摇铃 Деревянная стойка тренажер Монтессори для мобилей и игрушек для новорожденных / развивающая дуга 商品id:1557614414 月销量:707 OZON婴儿用具…

MSSQL 手工注入(第一关)

简介 SQL注入是一种安全漏洞,通过它可以执行意外的SQL命令或访问数据库中的信息。MSSQL注入通常发生在应用程序将用户输入作为SQL查询的一部分执行时,而没有对输入进行适当的验证或清理。 以下是MSSQL手工注入的流程: 一、打开靶场选择第一关…

进阶岛 多模态模型部署微调实践

一、任务介绍 follow 教学文档和视频使用QLoRA进行微调模型,复现微调效果,并能成功讲出梗图.尝试使用LoRA,或调整xtuner的config,如LoRA rank,学习率。看模型Loss会如何变化,并记录调整后效果(选做&#x…

【Electron】桌面应用开发启动直接打开一个网址或者浏览器打开一个网址

【Electron】桌面应用开发启动时直接打开一个网址或者跳转浏览器打开一个网址 前一篇有写过 Electron 桌面应用开发快速入门到打包Windows应用程序 但是现在需要程序打开的时候直接打开一个链接,在程序的窗口打开或者直接跳转浏览器打开 一、启动时直接打开一个网…

后端完成api顺序

contoroller层 Service层 点击getById,如果没有getById函数就先声明一个 然后完成函数体 db层 数据访问对象.数据库方法 //作用是提供对数据库中特定表的操作方法

【Hot100】LeetCode—437. 路径总和 III

目录 1- 思路前缀和哈希表dfs 2- 实现⭐437. 路径总和 III——题解思路 3- ACM 实现 题目连接:437. 路径总和 III 1- 思路 前缀和哈希表dfs ① 前缀和 求二叉树的前缀和,每求一次用一个 sum 传参记录更新 ② 哈希表 key 为前缀和 ,value…