软件测试面试题 —— 整理与解析(3)
😏作者简介:博主是一位测试管理者,同时也是一名对外企业兼职讲师。
📡主页地址:🌎【Austin_zhai】🌏
🙆目的与景愿:旨在于能帮助更多的测试行业人员提升软硬技能,分享行业相关最新信息。
💎声明:博主日常工作较为繁忙,文章会不定期更新,各类行业或职场问题欢迎大家私信,有空必回。

阅读目录
- 1. 接上回
- 2. 题目解析
- 2.1 你如何进行测试计划的编写和执行
- 2.2 你如何处理软件测试中的复杂业务场景和测试用例
- 2.2.1 何为复杂业务场景
- 2.2.2 复杂业务场景的应对
- 2.2.3 复杂测试用例的应对
- 2.3 简述测试用例的重要性以及应该包括哪些内容
- 2.4 请简述QA和QC的区别及其重要性
- 2.5 什么是回归测试? 为什么要进行回归测试?
- 2.6 请说明压力测试和负载测试的区别
- 2.7 如何对一个系统进行安全测试
1. 接上回
之前有粉丝私信博主,除了之前介绍的高频面试题之外,还想了解一些大厂经常会提出的面试题与答题思路,今天就给大家带来一部分大厂会经常使用的软测面试题,大家可以通过面试题内的一些解析再结合自己的真实工作经验来进行答题思路的提取、整理。友情提示:硬背答案虽可,但容易翻车哦。
2. 题目解析
在介绍之前,首先大家要明白的就是在大厂的此类面试中,会有很多开放性的问题,答案不仅仅局限于一个或几个,除了面试者扎实的基础岗位技能之外,用人单位更加需要的是不拘泥于现状、不易固化的产品测试意识与思维。所以,在诸如此类的面试场合,大家最好是能提前将自己掌握的技能进行总结与输出,结合实际并将彼此之间进行连接,形成自己的测试工作体系。那在面对一些开放性面试题的时候就能更加的游刃有余,而不是脑中一片空白。
2.1 你如何进行测试计划的编写和执行
这题我们需要分为两个部分去进行解答,首先就是编写,其实就最基本的测试计划来说,无非就包含测试范围、测试目标、测试方法、测试策略、测试资源等元素,要快速完成这些内容,那我们就需要从需求分析就开始进行计划的制定,无论是熟悉需求、内容设计、过程讨论、认知统一、计划编写、结果周知都必须有序且明确的说明到。接下来,就是执行。计划的执行阶段贯穿整个测试执行活动中,我们要突出如何有效的按照测试计划执行测试活动,并且对测试计划进行定期的更新与优化,这个动作可以在测试执行中的用例设计、执行、缺陷管理等几个环节进行说明。
切记,在回答的时候一定要根据自己的实际岗位工作经验与项目情况进行说明,最好能在讲到编写与执行方两个方面的时候结合一个例子来展开说明你是如何做这些事情的。这样做的好处就是可以强调你在测试活动中对于测试计划的理解与实践有着很强的经验,另外就是最好辅以一些团队成员与你互动的细节,毕竟测试计划的执行成功离不开团队成员的高度配合,同时也可以展现你的团队协作与沟通能力。
2.2 你如何处理软件测试中的复杂业务场景和测试用例
这一题也是见仁见智的经典题目,相信大家在工作中多多少少肯定会碰到复杂的测试场景和与之对应的测试用例,乍一看这题问得好像挺唬人的,但其实只要将其分解开的话,相对来说还是挺好回答的。为了能让大家看的更为的透彻,我们就将答题思路分解开给大家一一讲解。
2.2.1 何为复杂业务场景
在回答这个问题之间,我们必须先搞清楚到底什么是复杂场景,这里的复杂场景一般是指复杂的业务组合,它通常涉及多个业务流程、多个业务系统、多种用户角色、多个操作步骤、多个数据输入和输出等因素,这些因素会根据业务的需要进行组合,当这些因素组合在一起的情况下就变成了我们所谓的复杂业务场景。
而针对类似这样的复杂业务场景,我们的测试同学就需要考虑更多的测试因素,比如各种异常情况、边界条件、并发访问、数据处理等,这会使得测试变得更加困难和复杂。举个例子,如果你需要测试一款航空公司的订票软件,那么你就会碰到以下的一些复杂业务场景:
1. 被测对象需要能够正确计算各种不同的机票价格,包括成人票、儿童票、学生票、军人票、企业优惠票等,同时还需要配合不同的促销活动、折扣等因素;
2. 被测对象需要在乘客需要预订多个联程航班时,系统需要能够正确处理多个航班之间的转机、行李转运等事项;
3. 被测对象需要让乘客可以通过该系统预订特殊服务,例如残疾人服务、儿童服务、餐食服务等,系统需要能够正确处理这些服务的预订和提供相应的服务。
但实际针对以上的这些因素其实表面不单单是简单的单个复杂场景的功能测试,如果以上的3个因素相互进行组合的话,我们可以创造出更多的复杂业务场景,所以对于测试人员来说,如何处理复杂业务场景的能力也是体现其作为软测工程师的重要核心竞争力之一。
2.2.2 复杂业务场景的应对
首先我们需要先了解其相关业务的产品需求与功能设计,通过分析这些资料来准确的了解被测对象的功能内容与预期行为。对以上这些事项有了比较细致的了解之后,我们就可以在前期阶段对于测试场景的设计有一个比较良好的认知和覆盖情况。接下来我们就需要利用前期设计完成的各类测试场景与需求文档或产品设计进行比较,通过已知事项的排列组合将复杂业务场景尽可能多的筛选出来。然后要制定测试策略,不同的测试场景需要不同的测试策略,包括测试用例的设计、测试范围和测试数据的准备等等。如果需要多个场景进行协作,那我们就要将被测对象的预期行为进行明确的路线划分,确保多条测试业务流不会互相干扰,保证其独立性。除此之外,在执行的后期,我们要高效及时地进行问题管理,对于与之相对应的问题与进度及时追踪。最后客户沟通与相关行业的业务深耕也是必不可少的,随着越发的深入行业内部,相信对于复杂业务场景的理解与发现也会越发的娴熟与简单。
2.2.3 复杂测试用例的应对
对于一些复杂业务场景的测试,我们设计相关的复杂测试用例就需要针对其复杂性来进行一些特殊的处理。一般来说复杂业务场景很难用几条测试用例来进行高度覆盖,那么我们可以对测试用例进行一些额外的设计动作,比如使用场景法+正交法来设计一组测试列表,千万不要拘泥于以往的一些设计形式,一定要用一条条的测试用例来进行,换一种更贴合复杂测试场景的方式可能会有更加意想不到的效果。再一个就是我们也可以利用数据驱动测试的特性,设计一系列的数据驱动用例,这样可以更加高效的快速匹配不同数组集合在复杂业务场景下的测试结果,比起单一的测试用例与之固定的单一测试数据,测试效果要事半功倍多了。对于有自动化测试与代码设计能力的同学来说就更加的简单了,我们可以通过自己对于产品业务的理解来对测试脚本进行设计,比如上面说的三个复杂场景,我们可以将其业务逻辑转化为代码逻辑,利用自动化用例中的测试参数来进行自动化的快速验证。但这里切记不要去直接搬运开发的业务逻辑代码,道理应该也不用博主多说,你的代码逻辑和开发的代码逻辑相同,那不就是测了个寂寞吗?
2.3 简述测试用例的重要性以及应该包括哪些内容
我们先来说说测试用例的重要性,简单来说,测试用例就像是一个执行标准手册,我们通过上面的执行步骤来严格执行测试,并对其结果来进行判断。这个不单单是针对测试人员,现在越来越多的开发人员也在利用测试团队编写的各类测试用例对其负责的功能模块进行验证工作。试想如果没有测试用例,对于测试人员来说简直就是灾难,产品质量保障的过程中可能会有场景或功能项的遗漏不说,对于功能的追溯、测试范围与测试深度也是有着较大的影响。另外从测试管理者的角度来说,测试用例不仅是确保团队有效产出成果的重要手段,还是分配人员执行内容、掌控工作进度的重要参考依据。所以对于产品质量保障活动来说,测试用例绝对是及其重要的组成因素之一。
测试用例的组成内容就不用多说了,还是那老几样,一般情况下会根据每个公司的情况不同,使用不同的载体形式展现不同的用例形式(xmind、excel、word、禅道、jira、TAPD等等等等),万变不离其宗的还是其执行的主旨,所以只要根据自身公司与团队的实际需求来配合使用即可。
2.4 请简述QA和QC的区别及其重要性
要回答这个问题我们就需要先搞清楚QA和QC是什么意思,QA的全称为Quality Assurance(质量保证),一般在项目和软件的开发过程中确保从需求发布到项目上线的整个流程都可以得到质量保证。QC的全称为Quality Control(质量控制),它最主要的职责是检测软件缺陷并进行纠正,一般针对软件测试过程的,以确保软件的功能和性能达到预期的要求。
其实这个也不难理解,在我们的产品项目过程中,QA团队会制定一些编码标准、测试计划和质量指标,以确保整个开发与测试团队在开发过程中能够按照相同的标准和流程进行工作。他们还需要定期检查团队的工作,以确保整体流程的质量得到保证。而QC就更好理解了,QC团队会执行各种测试,包括功能测试、性能测试和安全测试,以确保应用程序的各项功能和性能符合预期,并且尽力确保没有缺陷。
那么说到这里其实两者的区别和重要性也就很明显了,QA关注整个开发流程的可控性和可预测性,QC则专注于测试和发现软件的缺陷。通过这种方式,QA和QC就可以各自负责确保软件的质量得到保证,以确保最终交付的软件符合用户的需求和期望。
2.5 什么是回归测试? 为什么要进行回归测试?
什么是回归测试的这个概念应该也不用博主在这里展开说了,大家只要知道回归测试一般在软件代码修改或更新之后,对软件进行的再次测试,以确保修改或更新后的软件仍然能够正常工作,而且没有引入新的问题或缺陷的一种测试类型就行。那么为什么要做回归测试呢?其实在我们的软件测试过程中,无论是因为需求还是缺陷的缘故,这都会需要开发人员不断进行代码的修改和更新,以使软件更加完善和健壮。然而,这些修改或更新有可能会影响到原有的功能或者产生新的问题,因此需要执行回归测试来让我们及时发现和纠正软件修改后可能产生的问题,保证软件的稳定性和可靠性,同时也因为回归测试大部分执行的内容都是主流程和修改更新的功能模块部分以及与之业务相关的功能模块,所以也可以大大节约测试成本和时间。
2.6 请说明压力测试和负载测试的区别
虽然压力与负载测试都属于性能测试,但无论对于测试目的、场景、策略来说都是完全不同的两类测试活动。简单来说压力测试是通过模拟高负载情况下的各种条件和场景,来测试系统在极限负荷下的性能和稳定性。而负载测试则是通过模拟用户使用软件的真实场景,来测试系统在正常负载下的性能和稳定性。经常会有测试同学把这两个概念混淆在一起,对于所需要的测试性能指标也是云里雾里的,像负载测试的性能指标可以找运维人员去拿,而压力测试的指标一般是由产品人员给出。
这里为了方便大家更好的理解其中的区别,我们举个例子,比如在测试活动中我们需要对一个web产品做压力和负载测试。那么先确认请测试的范围(具体针对哪些业务流和与之相关联的功能模块),在做压力测试时,我们需要模拟大量的用户同时访问产品,例如10000个用户,同时模拟这些用户在同一时刻进行测试前规定的业务操作,以测试产品在高负载情况下的性能和稳定性;而在做负载测试时,我们就需要根据web产品的真实用户访问情况,模拟一定数量的用户访问产品,例如1000个用户,模拟这些用户在一段时间内(比如1小时)内访问产品并做一些测试前规定好的业务操作,以测试产品在正常负载下的性能和稳定性。
2.7 如何对一个系统进行安全测试
在现今的IT行业中,安全测试不一定每个公司都会去做,但他却是一种评估系统、应用程序或网络的安全性和弱点的优秀测试方法。它其实可以帮助测试人员发现系统和应用程序中的安全漏洞和脆弱性,以及评估其安全性能和风险。如果你想让公司的产品拥有强健和稳定的生命周期,那么安全测试一定是每个测试人员都无法回避的测试活动。
这里博主给到大家一个较为主流的安全测试执行流程。首先,确定测试目标和范围,比如这次安全测试需要达成的测试目标是发现系统漏洞?评估系统的安全性?范围很好理解,和黑盒一样,被测对象的哪些功能模块;其次,设计测试计划与测试用例,同黑盒,不展开;第三,针对测试目标的具体内容,开展对应的测试活动,利用各种测试手段(渗透、代码走查、模拟攻击、加密检测、安全评估、社交工程等等);第四,测试过程中收集测试数据,这些数据对于测试结果的汇总与安全性评估报告等的产出有着决定性的作用,一定要保证测试手段的正确;最后就是结果数据分析与问题修复,根据测试报告中的问题和建议,分析和修复系统中存在的安全问题和漏洞,达成最终以提高系统的安全性的目的。
另外很多测试人员习惯使用各类的安全测试自动化工具,但这里博主还是要建议大家在执行自动化检测的同时,最好可以自己动手对被测对象做一些手工的安全测试,因为有些场景可能无法使用自动化工具来达到较为理想的测试效果,比如未授权访问、会话管理问题等。
相关文章:

软件测试面试题 —— 整理与解析(3)
😏作者简介:博主是一位测试管理者,同时也是一名对外企业兼职讲师。 📡主页地址:🌎【Austin_zhai】🌏 🙆目的与景愿:旨在于能帮助更多的测试行业人员提升软硬技能…...
springboot常用的20个注解
Spring Boot方式的项目开发已经逐步成为Java应用开发领域的主流框架,它不仅可以方便地创建生产级的Spring应用程序,还能轻松地通过一些注解配置与目前比较火热的微服务框架SpringCloud集成, 而Spring Boot 之所以能够轻松地实现应的创建及与…...
USB组合设备——带鼠标功能的键盘
文章目录带鼠标功能的键盘一个接口实现报告描述符示例多个接口实现复合设备和组合设备配置描述符集合的实现报告的返回附 STM32 枚举日志复合设备:Compound Device 内嵌 Hub 和多个 Function,每个 Function 都相当于一个独立的 USB 外设,有自…...

数据结构与算法基础-学习-18-哈夫曼编码
一、个人理解在远程通讯中,需要把字符转成二进制的字符串进行传输,例如我们需要传输ABCD,我们可以用定长的字符串进行表示,例如:A:00B:01C:02D:03这样可能就造成空间的浪费,我们多存储了一个0号位。那用变长呢…...

ZMC408CE | 实现“8通道独立PSO”应用场景
一、ZMC408SCAN产品亮点 1.高性能处理器,提升运算速度、响应时间和扫描周期等; 2.一维/二维/三维、多通道视觉飞拍,高速高精; 3.位置同步输出PSO,连续轨迹加工中对精密点胶胶量控制和激光能量控制等; 4…...
QuickJS中JS_SetClassProto方法把JavaScript对象指定为某个类的原型对象
在 QuickJS 中,JS_SetClassProto 方法用于设置一个类的原型对象。这个方法的作用是将一个 JavaScript 对象指定为该类的原型对象,从而定义该类的属性和方法。 具体来说,JS_SetClassProto 方法的第一个参数是指向 QuickJS 引擎执行上下文的指…...

泰克信号发生器特点
泰克信号发生器是一种用于产生各种类型的电子信号的仪器,可以广泛应用于电子、通信、自动化、医疗等领域。泰克信号发生器具有以下特点:多种信号类型:泰克信号发生器可以产生多种类型的电子信号,包括正弦波、方波、三角波、脉冲等…...

贯穿设计模式第四话--里氏替换原则
🥳🥳🥳 茫茫人海千千万万,感谢这一刻你看到了我的文章,感谢观赏,大家好呀,我是最爱吃鱼罐头,大家可以叫鱼罐头呦~🥳🥳🥳 从今天开始,将…...
6501: 鸡兔同笼
描述 一个笼子里面关了鸡和免子(鸡有两只脚,兔子有4只脚,没有例外)。已经知道了笼子里面脚的总数a,问笼子里面至少有多少只动物,至多有多少只动物。 输入 一个正整数a(a<32768)。 输出 包含两个正整数,第一个是最少的动物数,第二个是最多的…...

Linux项目自动化构建工具-make/makefile 介绍及使用
使用背景 在工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义一系列 规则来指定什么文件需要先编译,什么文件需要后编译,哪些文件需要重新编译,或者更复杂 的功能操作 makefile带来的好处…...

【云原生|Docker】06-dokcerfile详解
目录 前言 Dockerfile基础示例 Dockerfile简介 1. Dockerfile概念 2. Dokcer镜像分层理解 3. Doker build构建原理 Dockerfile参数解析 1. Dokcerfile组成 2. 指令说明 2.1 FROM引入基础镜像 2.2 LABEL 2.3 ENV 2.4 RUN 2.5 COPY 2.6 ADD 2…...

【SCL】博图——先入先出排序法
使用博图SCL语言来实现先入先出排序 前言 使用SCL完成一个先入先出排序 具体要求:最先输入的一个数值,最先输出出来,下面的数自动向前填充; 注:这里可能有两种理解:一是第一个输入的第一个出来ÿ…...

OSPF----特殊区域
目录 OSPF----特殊区域 第一大类----末梢区域(Stub Area) 完全末梢区域((Totally Stub Area) 第二大类特殊区域----非完全末梢区域(NSSA) OSPF----特殊区域 第一大类----末梢区域(Stub Area)…...

JVM-类加载
1:类加载机制: 加、验、准、解、初、使、卸 加、烟、准、姐、初、湿、鞋 加载、将class 文件转化为二进制流加载 JVM 内存中并生成一个该类的Class对象验证、Class 文件的字节流中包含的信息是否符合当前虚拟机的要求准备、在方法区中分配这些变量所…...

超详细讲解C语言文件操作!!
超详细讲解C语言文件操作!!什么是文件文件名文件的打开和关闭文件指针文件的打开和关闭文件的顺序读写文件的随机读写fseekftellrewind文本文件和二进制文件文件读取结束的判定文件缓冲区什么是文件 磁盘上的文件是文件。但是在程序设计中,我…...

linxu学习之进程
文章目录进程程序和进程产生进程销毁进程多进程高并发设计孤儿僵尸守护进程孤儿进程:守护进程(重点)僵尸进程:进程 程序和进程 操作系统可以运行多个程序,那他是如何运行的?实际上,CPU的执行是很快的,而待…...
蓝桥杯真题2
[蓝桥杯 2013 省 B] 连号区间数 题目描述 小明这些天一直在思考这样一个奇怪而有趣的问题: 在 111 ~ NNN 的某个全排列中有多少个连号区间呢?这里所说的连号区间的定义是: 如果区间 [L,R][L, R][L,R] 里的所有元素(即此排列的…...

PWM互补输出,以及死区时间计算
本文基于野火例程进行解说 实验内容 本次实验输出一对互补的pwm波,且进行死区时间的计算说明。 代码 互补输出对应的定时器初始化代码: bsp_advance_tim.c /********************************************************************************* fi…...

基于深度学习的海洋动物检测系统(Python+YOLOv5+清新界面)
摘要:基于深度学习的海洋动物检测系统使用深度学习技术检测常见海洋动物,识别图片、视频和实时视频中的海洋动物,方便记录、展示和保存结果。本文详细介绍海洋动物检测系统,在介绍算法原理的同时,给出Python的实现代码…...
C# 计算方差
50,100,100,60,50 计算他们的方差 为了计算这些数的方差,需要进行以下步骤: 1. 计算平均值,即将这些数相加,然后除以它们的数量。 平均值 (50 100 100 60 50) / 5 72 2. 计…...
Java 语言特性(面试系列2)
一、SQL 基础 1. 复杂查询 (1)连接查询(JOIN) 内连接(INNER JOIN):返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...

【Python】 -- 趣味代码 - 小恐龙游戏
文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility
Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...

HTML 列表、表格、表单
1 列表标签 作用:布局内容排列整齐的区域 列表分类:无序列表、有序列表、定义列表。 例如: 1.1 无序列表 标签:ul 嵌套 li,ul是无序列表,li是列表条目。 注意事项: ul 标签里面只能包裹 li…...
css的定位(position)详解:相对定位 绝对定位 固定定位
在 CSS 中,元素的定位通过 position 属性控制,共有 5 种定位模式:static(静态定位)、relative(相对定位)、absolute(绝对定位)、fixed(固定定位)和…...
WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)
一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解,适合用作学习或写简历项目背景说明。 🧠 一、概念简介:Solidity 合约开发 Solidity 是一种专门为 以太坊(Ethereum)平台编写智能合约的高级编…...
在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?
uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件,用于在原生应用中加载 HTML 页面: 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...

NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合
在汽车智能化的汹涌浪潮中,车辆不再仅仅是传统的交通工具,而是逐步演变为高度智能的移动终端。这一转变的核心支撑,来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒(T-Box)方案:NXP S32K146 与…...

处理vxe-table 表尾数据是单独一个接口,表格tableData数据更新后,需要点击两下,表尾才是正确的
修改bug思路: 分别把 tabledata 和 表尾相关数据 console.log() 发现 更新数据先后顺序不对 settimeout延迟查询表格接口 ——测试可行 升级↑:async await 等接口返回后再开始下一个接口查询 ________________________________________________________…...

20个超级好用的 CSS 动画库
分享 20 个最佳 CSS 动画库。 它们中的大多数将生成纯 CSS 代码,而不需要任何外部库。 1.Animate.css 一个开箱即用型的跨浏览器动画库,可供你在项目中使用。 2.Magic Animations CSS3 一组简单的动画,可以包含在你的网页或应用项目中。 3.An…...