软件测试实习常见面试题,主要是功能测试相关的基础问题
目录
7、假如一个项目上线之后,用户发现h5页面显示是一张空白页,你会如何处置,说具体点
[2)分组查询-group by](#2)分组查询-group by)
[5、在MYSQL中 使用什么语句来创建数据库,创建表的语句是,修改表结构的语句是,删除表的语句](#5、在MYSQL中 使用什么语句来创建数据库,创建表的语句是,修改表结构的语句是,删除表的语句)
4、客户端发送一个Https的请求到服务端,会经过哪几个层次,具体每个层次的调用
5、逻辑题,五个海盗分100金币,需要半数以上的人同意才行,半数及以下同意就杀了,剩下的人继续分配。如果你是第一个人,你怎么分配
[3、git push和commit](#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的包?
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.博客点赞后无反应:接口响应返回正确,还可能是前端渲染错误