2024最新版软件测试八股文(文档)

 前言

(第一个就刷掉一大批人)

有很多“会自动化”的同学来咨询技术问题,他总会问到我一些元素定位的问题。元素定位其实都不算自动化面试的问题。

一般我都会问:你是定位不到吗?通常结果都是说确实定位不到。

做自动化,首先你得保证一点,没有你定位不到的元素,这个你才能做UI自动化。如果有些元素都定位不到,你说你拿什么去点?就好像你的手你的鼠标点不到需要的元素,就没法去操作。

第一个,自动化分为UI自动化与接口自动化

UI自动化又包括APP自动化、H5、小程序等

接口自动化也包括很多,你用什么类型的工具做自动化?HTTP类型接口自动化DUBBO类型接口自动化等

所以这还只是自动化方面。

自动化你怎么去做的自动化运行环境、自动化如何分布式、批量运行如何持续集成这里面问题太多了,给大家简单的看几个典型面试题

在这里插入图片描述

同时,我也为大家准备了一份软件测试视频教程(含面试、接口、自动化、性能测试等),就在下方,需要的可以直接去观看,也可以直接点击文末小卡片免费领取资料文档

软件测试视频教程观看处:

2023最新【软件测试面试300问】面试八股文教程,涵盖自动化测试/接口测试/性能测试/测试开发等内容

题目解析 

大家看一看这十个问题能答出几个? 

1、三种等待时间的区别和场景应用?

强制等待、隐式等待、显示等待。

在这里插入图片描述
第一个强制等待:就是说,当我去点击


这是一个输入用户名字的一行代码 

当我把这两行代码

在这里插入图片描述

 放到这里

在这里插入图片描述
不管你这个元素,有没有在页面出现我都等3秒,我再去操作它。是强制,命令式的。但是这些往往一般都只用在脚本的调试,不会真正的出现在自动化测试用例中。你想一想,一个用例十行你加了十个,一个等三秒那十个等三十秒,一个用例三十秒是不可取的。

第二个

隐式等待:一般用在什么地方呢?

在这里插入图片描述 这个就是隐式等待。

比如说隐式等待它是一个什么样的区别?就是说你不管点哪里它只要写一次就可以了。像time.sleep(3)你每次都要去写,像driver .implicitly_wait( 3)#一次就好了。它每次去点都会等待三秒,那中间这个三秒它在等什么呢?

重点来了,一个页面它可能有非常多的图片,jss、css、img。就是再加载jss的图片,举个例子我想点击搜索按钮

在这里插入图片描述
隐式等待的三秒钟就是在等待这个页面的所有js和图片加载出来。就算你搜索按钮出来了,我还要去等js、img加载完成。理解了吗?软件测试全栈内容欢迎来公众号一诺教育软件测试交流学习。那么如果三秒钟之类jss、css没有加载完成我还是不会去点你,这就是一个隐式等待。它虽然很方便但是有瑕疵。

第三个:

那么什么叫显示等待呢?

字面意思就是和隐式等待相反。一个是隐藏的一个是非常明显的,我想要去做什么就做什么,不需要等待。

在这里插入图片描述
当这个搜索按钮一显示出来,我马上就去点它。 

我不管页面的其他LOGO、图片有没有加载出来,只要我的想要的比如搜索按钮出来了,我就马上去点击它。

这个题目是做自动化测试非常重要也非常基础的问题,所以我把这个问题排在了第一。

这个问题以后被问到,就难不到你了。

听懂了的朋友,点赞支持一波~

2、之前项目做过自动化测试吗?如何推进的?

工资想超过15K,这个问题是必问的!

不要看这个问题很简单?这个问题其实有点难度的。面试官问你有没有做过自动化测试,那么你肯定不能简单的说:额~我做过!

你要告诉面试官,你如何自动化开展到推进。如何推进的非常重要,你如何开始自动化入和推进,咱们不要片面的去回答,会或者不会。

比如你这样回答:我会,之前公司我们的项目接口方面,前端UI方面我是用selenium这个开源框架加上Python基础架构来实现我的自动化来实现的。

实现原理:用一些单元测试框架unittest去组织我们的测试用例,(或者用Pytest)

数据驱动:比如说我们用execl表去做一个数据驱动,然后我们用到一些关键字驱动,还有你在做自动化你遇到哪一些问题,大家一定要准备几个自动化遇到的问题!这个即使你不说,也是必问的!然后就是这些问题你是如何解决的。

给大家分享一个公式:

如何解决这些问题呢

对你公司项目产生了什么样的价值?像我去面试的时候,我就会说成为我们公司的一个固定资产。

不管是开发、产品、运营,都会用到咱们的这个自动化脚本。可以帮我们线上监控,帮我们自动化回归,帮我们造数据,帮我们跑数据,提高了迭代效率,释放了很多人力。

自动化测试有什么用,是对自动化最大的误解。

很多做软件测试的同行,他没有用过确实感受不到。我之前开始做自动化的时候,在一个人工智能的公司。产品上线之前,CTO只问我一句话,能不能上?因为我这边有很多自动化项目已经不停的在回归,然后功能测试也测了。所以功能+自动化结合就能很自信的上线。它校验出了很多隐藏的BUG,很多因为代码提交、新功能的开发产品的BUG。

3、RF框架用过吗?关键字驱动的原理?如何开发系统关键字?

4、selenium的底层核心原理是什么?有没有做过二次封装?

5、requests中的session会话管理的作用是什么?

6、unittest/pytest有什么区别?

7、谈谈你对自动化分层思想的理解?

其实这句话,经常会被写到一些大型招聘网上去。你会自动化而且还要会自动化分层思想。

做自动化和做功能测试一样,那么它分为哪些东西?

第一个:自动化用例它有一个业务层/业务逻辑

比如登录的业务逻辑是什么?

输入用户名-输入密码-点击登录按钮

分层:
业务逻辑

关键字驱动:

业务层的关键字,比如说你登录,那么你要去做其他的用例是不是会用到登录这个关键字。这个业务也封装成一个关键字,你其他的一个用例是不是可以用到它了?那接口,接口之间不是有很多的关联对吧,如果你把下单这些接口弄在一起,退货发货这些弄在一起,这就是一个业务层的关键字。

关键字驱动不仅有业务层,还有逻辑层。比如说你需要用到很多的公共方法,比如说随机数、随机号码、数据库等等。大家都能用到的,就都封装成一个关键字。

二次封装

click()

有时候我们需要根据需求去二次封装。

关键字驱动不仅仅这三层。还有很多东西要分层,很多驱动、第三方的库、日志、页面、图片、报告等等……

数据驱动

配置文件

8、自动化用例在什么环境下运行、如何批量运行?

能对公司真正的产生效益的自动化肯定是成千上万级别的用例。如果没有达到这个级别,收益一定是很小的。既然是机器在运行的,为什么不去覆盖全面呢?

在这里给大家推荐一个docker容器技术+jenkins定时构建+git

你的代码放在git上面然后用jenkins去关联定时构建,docker保证你的自动化干净的环境(虚拟机的进阶版)运行还可以分布式运行。

在这里插入图片描述

在这里插入图片描述 我们不管学什么技术,结合实战、自动化应用。很多朋友想学测试开发、测试平台,你自动化、接口、框架你都不会,你谈何去学测试开发?那是不大现实的。

经常有人问题,学习软件测试有什么捷径?

学习一步一步来,有计划性的,不走弯路!就是最大的捷径。

9、有没有独立搭建过自动化测试框架?

10、测试开发在企业中具体是做什么的?

写在最后

PS:这里分享一套软件测试的自学教程合集。对于在测试行业发展的小伙伴们来说应该会很有帮助。除了基础入门的资源,博主也收集不少进阶自动化的资源,从理论到实战,知行合一才能真正的掌握。全套内容已经打包到网盘,内容总量接近500个G。

☑ 240集-零基础到精通全套视频课程
☑ [课件+源码]-完整配套的教程
☑ 18套-测试实战项目源码
☑ 37套-测试工具软件包
☑ 268道-真实面试题
☑ 200个模板-面试简历模板、测试方案模板、软件测试报告模板、测试分析模版、测试计划模板、性能测试报告、性能测试报告、性能测试脚本用例模板(信息完整)

这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。

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

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

相关文章

131.类型题-计算数学序列的和,请编写函数fun,其功能是S=……【满分解题代码+详细分析】(数学序列的和类型题-C/C++JavaPython实现)

文章目录 131.类型题-计算数学序列的和:计算并输出一.题目1.1 解题思路二.解题代码2.1 C/C++解题代码2.2 python解题代码2.3 Java解题代码三.解题代码仔细分析3.1 C/C++解题代码仔细分析3.2 Java解题代码仔细分析3.3 Python解题代码仔细分析四.本类型题解题诀窍五.寄语131.类型…

Spring Boot 之 ModelFactory

1.initModel 功能&#xff1a; public void initModel(NativeWebRequest request, ModelAndViewContainer container, HandlerMethod handlerMethod)throws Exception {Map<String, ?> sessionAttributes this.sessionAttributesHandler.retrieveAttributes(request);c…

Codeforces Round 910 (Div. 2)

Codeforces Round 910 (Div. 2) 文章目录 Codeforces Round 910 (Div. 2)ABCD A 模拟 #include <bits/stdc.h>using namespace std; const int N1e510; char s[N];void solve(){int n , k , cb 0 , ans 0;cin >> n >> k;for(int i 1 ; i < n ; i ){c…

简易电路特性测试仪

目录 摘 要... 3 第一章 绪论... 5 1.1 研究课题背景... 5 1.2 国内外发展概况... 7 1.3 课题研究的目的... 9 1.4 课题的研究内容及章节安排... 9 第二章 电路特性测试仪的设计方案... 10 2.1 系统总体设计思路... 10 2.2 电路特性测试仪总体设计方案…

HarmonyOS开发上手

首先献出开发官网地址 &#xff08;https://developer.harmonyos.com/cn/develop/&#xff09; 本文内容 基础入门内容介绍安装DevEco StudioDevEco Studio常用功能介绍项目工程结构详解 1. 基础入门内容介绍 应用开发流程 在正式开始之前还需要了解一些有关的基础概念 方舟…

【PyTorch】概述

文章目录 1. PyTorch是什么&#xff1f;2. PyTorch的特点3. PyTorch的架构 1. PyTorch是什么&#xff1f; PyTorch是一个深度学习框架&#xff0c;由Facebook于2016年开源发布。PyTorch是基于Torch框架的Python接口&#xff0c;旨在提供易用的强大工具来进行神经网络的构建和训…

python实现从远程服务器读取 JSON 文件、解析内容并将其存储到 MySQL 表中,然后删除已解析的文件

创建一个 Python 脚本&#xff0c;利用 Paramiko 库连接到远程服务器&#xff0c;读取 JSON 文件、解析内容并将其存储到 MySQL 表中&#xff0c;最后删除文件。 import paramiko import json import MySQLdb import os# SSH 连接参数 ssh_client paramiko.SSHClient() ssh_c…

H5流媒体播放器EasyPlayer播放H.265新增倍速播放功能,具体如何实现?

目前我们TSINGSEE青犀视频所有的视频监控平台&#xff0c;集成的都是EasyPlayer.js版播放器&#xff0c;它属于一款高效、精炼、稳定且免费的流媒体播放器&#xff0c;可支持多种流媒体协议播放&#xff0c;包括WebSocket-FLV、HTTP-FLV&#xff0c;HLS&#xff08;m3u8&#x…

做项目碰到的一些安卓与苹果的不兼容,做个记录

默认字体 // 苹果手机默认字体为 font-family:simsun; // 安卓和H5默认字体为 font-family: initial;屏幕截图(html-to-image) // 这里只做js部分(vue3使用)import * as htmlToImage from html-to-image;let imgcanvas ref() // 图片标签img的src指向const captureScreen ()…

vivado分析-在 Versal 器件中执行 NoC 服务质量分析

AMD Vivado ™ 中的服务质量 (QoS) 用于将片上网络 (NoC) 编译器生成的当前 NoC 解决方案估算所得 QoS 与 AXI NoCIP 和 / 或 AXI4 ‑ Stream NoC IP 中指定的 QoS 要求进行对比。一旦 NoC 解决方案过时 &#xff0c; 就需要调用 NoC 编译器并生成新的 NoC 解决方案以…

论文投稿查询会议期刊及deadlines的网站

1. 这个是查近期CCF-ABC的ddl会议的网址 https://ccfddl.github.io/ https://ccfddl.top/ 2. 期刊选刊 https://ijournal.topeditsci.com/home https://journalsuggester.springer.com/ 3. IEEE出版物推荐 https://publication-recommender.ieee.org/home

微信小程序跳转到外部小程序

要在微信小程序中跳转到外部小程序&#xff0c;你可以使用 navigateToMiniProgram 或 redirectToMiniProgram API。下面是它们的说明和代码示例&#xff1a; navigateToMiniProgram API&#xff1a; 该 API 可以让用户从当前小程序跳转到另一个外部小程序&#xff0c;并保留当…

《算法通关村——滑动窗口高频问题之**寻找子串异位词**》

《算法通关村——滑动窗口高频问题之寻找子串异位词》 567. 字符串的排列 给你两个字符串 s1 和 s2 &#xff0c;写一个函数来判断 s2 是否包含 s1 的排列。如果是&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 换句话说&#xff0c;s1 的排列之一是 s2…

python3实现定时拉取rabbitmq队列里面的数据,并输出到文件中。

使用pika,一个Python RabbitMQ客户端库&#xff0c;结合Python的datetime和json库来实现定时从RabbitMQ队列中拉取数据&#xff0c;并将数据输出到按当天日期动态生成的文件中。 首先&#xff0c;确保您已经安装了 pika 库。如果尚未安装&#xff0c;可以使用以下命令进行安装&…

重温经典struts1之搭建环境

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 前言 今天参加了一个项目&#xff0c;什么项目&#xff1f;struts1的项目&#xff0c;什么&#xff1f;&#xff01;现在还有struts1的项目&#xff0c;读到这里你是不是和我…

Linux scatterlist 详解

源码基于&#xff1a;Linux 5.4 约定&#xff1a; 芯片架构&#xff1a;ARM64内存架构&#xff1a;UMACONFIG_ARM64_VA_BITS&#xff1a;39CONFIG_ARM64_PAGE_SHIFT&#xff1a;12CONFIG_PGTABLE_LEVELS &#xff1a;3 0. 前言 之前在《Linux DMA... 零拷贝》博文分享了DMA 技…

网络安全卫士:上海迅软DSE的员工上网管理策略大揭秘!

在日常办公中&#xff0c;企业员工可能会在互联网上有意或无意的将一些包含内部重要信息的内容发布出去&#xff0c;从而造成不必要的违规及泄密风险&#xff0c;因此对终端用户进行规范的上网行为管理&#xff0c;既能有效预防重要数据泄密&#xff0c;同时也能提高员工办公效…

linux之tcpdump命令

在日常系统维护中&#xff0c;遇到需要抓包的需求&#xff0c;下面对linux环境使用tcpdump命令进行抓包进行分析记录。tcpdump命令可用抓取流动在网卡上的数据包。 1、tcpdump常用参数说明 -c : 抓包次数&#xff0c;达到指定次数后停止抓包-C : 文件大小&#xff0c;写入文件…

连续性变量的组间差异分析

目录 正态分布 正态分布检测 1&#xff1a;图像法 2:计算法 Shapiro–Wilk W检验&#xff08;小样本推荐&#xff09; Lilliefors正态性检验 Anderson–Darling 或AD检验 DAgostino检验&#xff08;大样本推荐&#xff09; 独立样本t检验 1&#xff0c;方差齐性检验 …

JavaEE进阶学习:SpringBoot 的创建和使用

1.什么是Spring Boot Spring 的诞生是为了简化 Java 程序的开发的&#xff0c;而 Spring Boot 的诞生是为了简化 Spring 程序开发的。 Spring Boot 翻译一下就是 Spring 脚手架&#xff0c;它就是为了快速开发 Spring 框架而诞生的 2.Spring Boot 优点 起步依赖 (创建的时候…