软件测试实习常见面试题,主要是功能测试相关的基础问题
目录
一、软件测试基础
1、介绍一下你最近的项目,以及工作职责
2、软件项目的测试流程?
3、黑盒测试与白盒测试的区别?
4、黑盒测试常见的设计方法?怎么理解等价类方法和边界值方法
1)常见设计方法
2)细节
3)为什么要等价类和边界值联合使用
5、怎样的测试用例才能算优秀的测试用例?
二、App测试
1、APP测试和WEB测试的的区别?
2、你是如何做APP的兼容性测试?
3、Fiddler如何抓App的包?
4、adb安装命令(ADB是操作安卓模拟器的工具)
三、软件缺陷BUG相关
1、如何精准的定位前后端BUG?
1)前端BUG
2)后端BUG
2、抓包用什么工具,实际用什么(状态码
1)Fiddler,实际一般F12查看源代码
2)常见状态码
3、fidder抓包,怎么区分前后端BUG
4、你发现一个BUG,开发认为不是一个BUG?
5、印象最深的一个BUG,如何解决
6、提BUG注意事项
1)BUG描述
2)BUG需要与开发先说明情况
3)BUG生命周期
4)BUG内容
7、假如一个项目上线之后,用户发现h5页面显示是一张空白页,你会如何处置,说具体点
8、博客点赞后无反应,可能是什么问题
9、输入正确的用户名/密码,点击登录没响应可能是哪些问题,
四、接口测试/自动化测试、性能测试
1、怎么理解接口测试,接口测试流程
2、用什么工具进行接口测试
3、接口测试重点
4、接口测试如何设计测试用例
5、自动化测试学了什么,用过什么框架和实战?
1)Python接口自动化
2)Web自动化-selenium工具
3)App自动化-abd
6、什么情况下适合自动化测试,主要什么模块自动化测试
7、性能测试指标
8、怎样模拟多个用户进行性能测试
9、如何快速批量创建测试数据(Jmeter的csv变量传参
五、Mysql数据库/Linux命令
1、增删查改是哪些字符
2、模糊查询和分组查询和分页查询
1)模糊查询-LIKE
2)分组查询-group by
3)分页查询-LIMIT
3、事务四大特性-ACID
4、Linux怎么查看日志
5、在MYSQL中 使用什么语句来创建数据库,创建表的语句是,修改表结构的语句是,删除表的语句
六、计网/编程题
1、网络协议Http/Https、tcp、udp
2、get/post区别
3、从计算机角度说一下从浏览器输入网址到弹出内容的整个过程
4、客户端发送一个Https的请求到服务端,会经过哪几个层次,具体每个层次的调用
5、排序数组
5、逻辑题,五个海盗分100金币,需要半数以上的人同意才行,半数及以下同意就杀了,剩下的人继续分配。如果你是第一个人,你怎么分配
七、HR面
1.项目经验(测试什么模块,如何测试
2.蓝桥杯如何准备比赛
3.为什么要选择测试这个行业
4.生活中或者学习测试中收获最大的事情
5.有什么兴趣爱好?优点
6.测试该具备什么条件
7.项目经历为什么要选择这个,及测试的模块
8.了解到本公司是咋样的
八、java/c/python/git
1、java数组和链表区别
2、python数据类型和脚本
3、git push和commit
一、软件测试基础
1、介绍一下你最近的项目,以及工作职责
2、软件项目的测试流程?
需求评审-测试准备->测试执行
1.需求评审:项目经理会将需求文档发出来,再组织开发人员测试人员对需求进行讲解,沟通不理解的需求和模糊的需求,包含需求的合理性还有需求的可测性等
2.测试准备:测试组长会定一个测试计划,安排人员分工及时上线。然后每个人根据自己的模块用Xmind画思维导图以及Excel设计测试用例,组内评审后,项目组评审。
3.测试执行:待开发人员提测后,通过Jelkins部署到测试环境,先冒烟测试(大概测试一下是否有阻塞的BUG),之后进行系统测试,我们会通过禅道记录提交BUG,测试3-4遍后,整体回归测试,达到上线要求后,编写测试报告。待上线前,验证测试后总结问题。
3、黑盒测试与白盒测试的区别?
-黑盒测试又称功能测试,是以用户角度出发的测试。
-白盒测试又称结构测试,分析程序的内部结构。
相关技术:语句覆盖、判断覆盖、条件覆盖、判断/条件覆盖、路径覆盖、循环覆盖、模块接口测试
黑盒测试是在程序接口进行测试,它只是检查程序功能是否按照规格说明书的规定正常使用。也被称为用户测试。
白盒测试是按照程序逻辑进行测试,也称程序员测试
4、黑盒测试常见的设计方法?怎么理解等价类方法和边界值方法
1)常见设计方法
黑盒测试又称功能测试,是以用户角度出发的测试。
常见设计方法:等价类划分、边界值分析、判定表、因果图、场景法、错误推测法
2)细节
-等价类方法:就是把输入域划分为多个子集,选取代表性的数据,可以减小测试用例个数,同时保证覆盖度。一般是划分为有效等价类和无效等价类,有效等价类,接着设计一个测试用例覆盖所有有效等价类,设计多个测试用例将每个无效等价类都一一覆盖。
-边界值方法:对等价类划分的补充,一般BUG常出现在输入/输出的边界值,可以尽早发现错误,并减少测试用例。
3)为什么要等价类和边界值联合使用
①互补性:等价类划分关注于输入数据的内部值,而边界值分析关注于边界值。两种技术结合起来,可以更全面地覆盖输入数据的所有可能情况。
②提高测试效果:经验表明,边界值是错误的高发区。结合使用等价类划分和边界值分析,可以更有效地发现潜在的边界错误。
③减少测试用例数量:等价类划分可以减少不必要的测试用例,因为它认为等价类中的任何一个值都能代表该类的测试情况。边界值分析则确保了边界情况的覆盖,两者结合可以在保证测试覆盖的同时,减少总的测试用例数量。
④提高测试效率:通过选择代表性的测试用例,测试人员可以集中精力在最有可能导致错误的地方,这有助于提高测试的效率。
5、怎样的测试用例才能算优秀的测试用例?
二、App测试
1、APP测试和WEB测试的的区别?
功能测试基本流程一样,不同的是Web测试是B/S架构,App是C/S架构
B/S架构,是浏览器访问的,服务端更新时,客户端自动更新了
C/S架构,服务端更新时,客户端软件要升级更新,才算新版本
app测试还有一些专项测试,如安装、更新、卸载、兼容性、稳定性、性能测试、弱网测试、交互性测试登录
2、你是如何做APP的兼容性测试?
Web端考虑的是:不同浏览器、不同操作系统的兼容性接口
app测试:不同品牌机型、不同操作系统、不同屏幕大小
3、Fiddler如何抓App的包?
Fiddler抓包工具-CSDN博客
4、adb安装命令(ADB是操作安卓模拟器的工具)
安装应用(apk格式): adb install <apk-file>
三、软件缺陷BUG相关
1、如何精准的定位前后端BUG?
1)前端BUG
①界面相关,排版错乱,文案错误等问题,大都属于前端bug
1、出现样式的问题基本都是CSS的bug
2、出现文本的问题基本都是html的bug
3、出现交互类的问题基本都是JS的bug
②请求接口的url错误/传参不正确,为前端BUG
2)后端BUG
请求接口url和传参均正确,则查看响应内容,若错误为后端BUG
2、抓包用什么工具,实际用什么(状态码
1)Fiddler,实际一般F12查看源代码
如果是以4开头的话就有可能是前端问题一般我会到前端排查,
以5开头就有可能是后端问题我就会到后端排查;
如果是200的话,就需要检查请求行,请求报头,请求正文是否正确,如果请求错误就是前端问题,如果请求没有问题,那就是后端问题,看后端问题服务器运行日志,是否包含exception,error或根据时间点去看日志。
弱网环境,诵过 fiddler 工具选择Customize Ruels...(Ctr+R)调出定义脚本编辑器找到“if (m_SimulateModem)”设置上行下行网速,然后把
Rules-> Performance-> Simulate Modem Speeds选中生效
2)常见状态码
- 2xx:请求成功。200 表示服务器响应成功,也就是服务器找到了客户端请求的内容,并且将内容返回给客户端。
- 3xx:重定向。 301 永久性的重定向,客户端跳转;302 临时跳转;
- 304 请求资源成功,是客户端本地浏览器缓存中就有的这个资源
- 4xx:客户端错误。403 Forbidden请求的服务器资源权限不够;404 NotFound 服务器找不到客户端请求的资源
- 5xx:服务器错误。服务器端的网页程序出错
3、fidder抓包,怎么区分前后端BUG
以百度搜索为例:
1)打开Fiddler,设置过滤条件
2)打开浏览器,输入网址,抓包工具会开始读取(如果会话列表有数据记得清屏)
3)双击会话列表对应的数据包,查看Raw
a、查看请求的 http 状态码是否正确。
例:若抓取到的请求返回的 http 状态码为 404,说明可能是前端 JS 提交了错误的地址,也可能是后端服务器没有对应地址的服务;若抓取到的请求返回的 http 状态码为 500,说明是后端服务器内部错误。
b、查看请求的 http 状态码 200 但界面提示报错,则具体分析 request 及 response 信息,确认是否前端请求传参错误,若前端对应请求地址及传参都正确,则确认后端问题。
4、你发现一个BUG,开发认为不是一个BUG?
-首先再看需求文档,是不是理解有问题,同时与项目经理确认后与开发沟通,再三复测
-是需求没有确定,这个时候可以找来产品经理进行确认,需不需要改动。3方商量确定好后再看要不要改。
-是BUG在实际环境中不可能发生,所以不需要修改,这个时候,我可以先尽可能的说出我的担忧,如果被用户发现或出了问题,会有什么不良结果?如果还是不行,那我可以给这个问题提出来,跟开发经理和测试经理进行确认,如果要修改就改,如果不要修改就不改。
-其实有些真的不是BUG,我也只是建议的方式写进测试文档中,如果开发人员不修改也没有大问题。如果不是BUG的话,一定要坚持自己的立场,让问题得到最后的确认。
5、印象最深的一个BUG,如何解决
测试一个不是很熟悉的工作流系统,需要用户逐级审批,但是二级审批时点击通过,需要手动刷新才能跳转,且工作流未进入下一阶段,但测试环境有这个BUG,但开发环境没有,与开发一起排查后,发现是测试环境的工作流设置有问题,配置后,BUG也就解决了。
我认识到不要出现BUG就盲目提交,要结合需求与配置环境,且描述细致与开发沟通去复现,尽量结合日志和数据库去定位,方便开发修改,提高工作效率。
6、提BUG注意事项
1)BUG描述
重现步骤清楚及预期结果,及相关配置环境,附图或者视频及级别
2)BUG需要与开发先说明情况
分析一下是前端还是后端。确定是否为BUG需要沟通,提交后还要跟踪BUG修复
3)BUG生命周期
提交->指派开发人员(已激活但未确认)->开发确认(已确认)->开发修复(已解决)->测试复测通过(已关闭)/激活给开发(已激活)
4)BUG内容
项目名称、影响版本、所属模块、指派人员、截至日期、BUG类型、BUG环境、严重程度、优先级、BUG标题、BUG描述(重现步骤、实际结果、期望结果)、附件
7、假如一个项目上线之后,用户发现h5页面显示是一张空白页,你会如何处置,说具体点
8、博客点赞后无反应,可能是什么问题
9、输入正确的用户名/密码,点击登录没响应可能是哪些问题,
四、接口测试/自动化测试、性能测试
1、怎么理解接口测试,接口测试流程
- 主要是验证后台服务端的业务逻辑是否有问题,提供测试效率。
- 检查系统安全性,前端传参不可信。
- 接口自动化提高效率,容易实现自动化持续集成。
一般有需求就会做,后台的接口开发好,就可以开始测。例外,如果增加了新需求,也要做接口测试, 还有就是开发对后台的接口做了修改,交互逻辑发生变化,我们也要重新对接口进行测试
流程:
1.首先分析开发给到的接口文档
2.接口文档分析完成,编写测试用例
3.然后借助接口测试工具去测试执行测试用例
4.发现bug 提交bug,并跟进bug修复
2、用什么工具进行接口测试
1)Postman
2)Jmeter
3、接口测试重点
进行测试点的分析,主要是考虑正常场景与异常场景。
正常场景,条件的组合,参数的格式校验,等价边界值;
异常场景,多一个参数,少个必填参数,参数为空;
4、接口测试如何设计测试用例
- 参数约束——长度、必选项、格式、数据类型
- 业务场景——正确的业务场景;错误的业务场景;异常场景:服务器空间不足
- 组合场景——相互依赖:手机和验证码、用户名和验证码;
- 相互排斥:二选一 当然还有边界值等价类等等
5、自动化测试学了什么,用过什么框架和实战?
1)Python接口自动化
pytest-requests-allure生成在线报告
Postman接口测试、Python接口自动化测试_postman +python 自动化-CSDN博客
2)Web自动化-selenium工具
Web自动化测试-掌握selenium工具用法,使用WebDriver测试Chrome/FireFox网页(Java_selenium webdriver chrome-CSDN博客
3)App自动化-abd
6、什么情况下适合自动化测试,主要什么模块自动化测试
- 功能需求,需求稳定,界面稳定,不会频繁变动,才可以做
- 版本迭代次数比较多,做出来才有意义
- 项目周期比较长(大项目)意义
7、性能测试指标
8、怎样模拟多个用户进行性能测试
在JMeter等工具中,通过线程组来模拟多个用户。设置线程数(即用户数量)、Ramp-Up时间(线程启动的时间间隔)和循环次数等参数。
9、如何快速批量创建测试数据(Jmeter的csv变量传参
五、Mysql数据库/Linux命令
1、增删查改是哪些字符
2、模糊查询和分组查询和分页查询
1)模糊查询-LIKE
LIKE操作符
%
:表示任意0个或多个字符。_
:表示任意单个字符。
名字以张开头:SELECT * FROM students WHERE name LIKE '张%';
2)分组查询-group by
3)分页查询-LIMIT
3、事务四大特性-ACID
- 原子性(Atomicity):事务是不可分割的最小操作单元,要么全部成功,要么全部失败
- 一致性(Consistency):事务完成时,必须使所有的数据都保持一致状态。
- 隔离性(Isolation):数据库系统提供的隔离机制,保证事务在不受外部并发操作影响的独立环境下运行。
- 持久性(Durability):事务一旦提交或回滚,它对数据库中的数据的改变就是永久的。
4、Linux怎么查看日志
过命令 tail -200 或 tail -500 查看当天的日志的后面多少行或者前面多少行定位 bug
或者通过 tail -f app.log 来查看日志里的关键字,会显示 app.log
文件的最后10行内容。如果 app.log
文件有新内容被追加,这些新内容会立即显示在终端上,
5、在MYSQL中 使用什么语句来创建数据库,创建表的语句是,修改表结构的语句是,删除表的语句
1)创建数据库
2)创建表
3) 修改表结构:
修改表结构通常涉及添加、删除或修改表中的列。这些操作分别通过`ALTER TABLE`语句来完成。
4)删除表
六、计网/编程题
1、网络协议Http/Https、tcp、udp
-http(80)/https(443)都是超文本传输协议,用于浏览器与服务端之间的请求,https增加了ssl加密协议
-tcp/upd都在传输层,tcp面向连接,可靠传输,发送请求前三次握手
-udp面向非连接、不可靠,可以传输大量数据
2、get/post区别
(1)Get请求的数据(参数)会显示在地址栏,而Post不会,所以,Post比Get更加安全。
(2)Post请求的参数存放到了请求实体中,而Get没有请求实体,Get是存储在请求行中。
(3)数据传输Post有优势:Get方式请求的数据不能超过2k,而Post 没有上限。
(4)浏览缓存Get有优势:Get具有数据缓存,而Post没有。
✿ 从优势角度看,数据传输使用Post,数据浏览查询使用Get。即查询时使用Get,其他时候使用Post。表单全部使用Post提交
3、从计算机角度说一下从浏览器输入网址到弹出内容的整个过程
1.浏览器输入网页URL地址
2.浏览器通过DNS解析域名对应的IP地址
3.浏览器根据IP地址和端口号,向目标服务器发起TCP连接请求
4.在TCP连接上,向服务器发送HTTP报文请求,去获取网页的信息
5.服务器处理HTTP请求,并返回HTTP响应
6.浏览器收到HTTP响应后,解析响应HTML编码,渲染网页的结构和样式,同时根据HTML的其他资源的URL,再次向服务器发送HTTP请求,获取资源
4、客户端发送一个Https的请求到服务端,会经过哪几个层次,具体每个层次的调用
应用层:客户端发起https请求,包含请求行/请求头/请求体
传输层:HTTPS建立在TCP上,需要先建立TCP(TCP三次握手),保证数据传输的可靠性
TCP连接建立后,HTTPS在传输层进行SSL/TLS握手,以建立加密通道
网络层:吧传输层的数据(TCP报文段)封装成IP数据包,包含源IP地址/目的IP地址/协议类型
根据IP地址和路由表,选择对应目的网络
数据链路层:IP数据包被封装成帧,包含目的MAC地址、源MAC地址
帧通过物理介质传输到下一节点
物理层:数据以比特流传输
5、排序数组
5、逻辑题,五个海盗分100金币,需要半数以上的人同意才行,半数及以下同意就杀了,剩下的人继续分配。如果你是第一个人,你怎么分配
七、HR面
1.项目经验(测试什么模块,如何测试
2.蓝桥杯如何准备比赛
3.为什么要选择测试这个行业
-测试很重要
-自己的兴趣,成就感
-发展不错,逻辑,提升自己
4.生活中或者学习测试中收获最大的事情
5.有什么兴趣爱好?优点
6.测试该具备什么条件
-掌握基本的测试基础理论和开发的相关知识
-细心和耐心,可熟练阅读需求规格说明书等文档
-以用户的观点看问题,有强烈的质量意识
-良好的有效的沟通方式(与开发人员及客户)
7.项目经历为什么要选择这个,及测试的模块
8.了解到本公司是咋样的
八、java/c/python/git
1、java数组和链表区别
数组:大小不可变;数组越界;顺序存储,下标访问,查找效率高
链表:可动态改变大小;需要遍历访问,查找效率低,插入/删除效率高
2、python数据类型和脚本
- 数值数据类型:int、bool、float、complex
- 序列数据类型:不可变(str、tuple、bytes)和可变(list、bytearray)
- 集合数据类型:set、frozenset
- 字典数据类型:dict。例如:{1: "one", 2: "two"}
3、git push和commit
- git add:到暂存区
- git commit :提交到本地库
- git push 别名 分支:推送本地分支到远程仓库
- git pull 远程仓库地址 远程分支名:拉取远程分支与本地分支合并
6.foxbase如何复制数据库
7.博客点赞后无反应:接口响应返回正确,还可能是前端渲染错误