首页 > 其他分享 >软件测试面试题-自测

软件测试面试题-自测

时间:2024-09-13 20:49:48浏览次数:13  
标签:面试题 请求 是否 测试 自测 服务器 日志 bug 软件测试

一、测试流程 

1.项目测试流程你是怎么开展的?

①首先,需求分析阶段,分析需求点,需求确定以后进入测试计划阶段,参考需求规格说明书进行测试计划编写

②接着,进入测试设计阶段,依据需求文档及原型图编写测试用例,并进行用例评审

③进入测试执行阶段,需要搭建测试环境,执行冒烟测试之后进入正式测试,并且将测试缺陷进行提交及跟踪,经过多轮回归测试,直到测试版本结束

④最后,进入测试评估阶段,对软件版本质量进行评估,输出测试报告,确认是否上线。

单独负责一个项目,需 要注意什么呢?

 (1)首先,评估项目的测试范围盒周期,是否能够单独完成

(2)做好测试策略和计划安排,保证每个环节按时完成

(3)在上手测试前,树立大致的测试点,先做冒烟测试

(4)测试中,尽量通过一些技术手段提升测试效率

(5)项目中,如果碰到解决不了的问题,要及时寻求解决方案

(6)及时对bug进行追踪,推动开发尽快解决bug

(7)把控发布标准,测试报告中标明上线风险

测试文档

测试计划和测试方案的区别?

(1)测试计划是偏管理性质的文档(通俗来说就是解决【谁来做?】【做什么?】的问题),测试方案是偏技术类型的文档(解决【怎么做?】的问题) (2)测试计划主要包含测试的目的与范围,角色与职责,资源及安排,风险与乐队,测试标准等信息;测试方案主要包含测试方法,测试环境与测试工具等内容

测试计划要素有哪些?

 (1)测试目的(Why)

(2)测试范围(What)

(3)测试时间安排(When)

(4)人员任务分配(Who)

(5)测试环境(Where)

(6)测试方法和策略(How)

测试用例

 编写测试用例的流程

(1)熟悉并分析项目业务需求

(2)依据功能模块划分,使用等价类、边界值等黑盒测试方法进行用例设计,先整理功能正常的用例,再进行每一个操作的异常用例的覆盖,补充业务约束,功能交互项,数据验证项等

(3)每个功能模块分别写完用例以后,从项目的业务流程考虑,是否都进行了用例的覆盖

(4)编写完成后,提交评审

测试方法

你知道白盒测试么? 有哪些白盒测 试的方法?

(1)白盒测试是基于代码的测试

(2)方法:语句覆盖,判定覆盖,条件覆盖,条件判定覆盖,条件组合覆盖,路径覆盖

协议 

常见的 HTTP 接口请求方法有哪些

 (1)GET:获取数据和资源

(2)POST:发送数据给服务器,创建或者更新资源

(3)PUT请求:用来创建或者替换目标资源

(4)PATCH,对资源进行部分修改

(5)DELET,删除资源

http 和 https 协议的区别?

 (1)安全性:HTTP明文传输,易受攻击,HTTPS安全性更高

(2)端口:HTTP:80,HTTPS:443

(3)灵活性:HTTP简单快速,https门槛较高

OSI 七层模型有哪些层以及有哪些代表协议?

(1)应用层:网络服务于用户的一个接口 (2)表示层:数据的表示 (3)会话层:建立、管理、终止会话 (4)传输层:定义传输数据的协议端口号 (5)网络层:进行逻辑地址寻找,实现不同网络之间的路径选择 (6)数据链路层:建立逻辑连接,进行硬件地址寻址功能 (7)物理层:建立、维护、断开物理连接

说一下 TCP 协议的三次握手过程?

(1)第一次握手:客户端向服务器发起,用来申请建立连接

(2)第二次握手:服务器回复客户端,用来确定并接受连接请求

(3)第三次握手:依旧是客户端发给服务器,用来确认服务器的回复消息

说一下 TCP 协议的 4 次挥手过程

 (1)第一次挥手:客户端向服务器发起,用来申请断开连接

(2)第二次挥手:服务器回复客户端,用来确定客户端上一个断开连接请求的

(3)第三次挥手:服务器 发给客户端,告知客户端服务器的数据发送完毕了,需要断开连接

(4)第四次挥手,客户端回复服务器,确认服务器的上一个断开连接请求

在浏览器中输入一个网页会发生什么?

(1)进行DNS域名解析 (2)建立TCP连接,发起三次握手 (3)发送一个HTTP请求 (4)服务器处理相关的请求并返回处理后的结果 (5)关闭TCP连接 (6)浏览器接受到服务器处理后的结果后,开始解析 (7)浏览器将解析后的资源进行请求,并对页面进行渲染展示

TCP 协议和 UDP 协议的区别?

 (1)TCP面向连接,UDP无连接

(2)TCP可靠,能保证数据传输无差错,UDP尽最大努力交付,不可靠

 (3)TCP传输效率较低,UDP效率高,适合注重速度不在意丢包的场景

b/s 和 c/s 架构有什么区别?

 (1)B/S架构:浏览器-服务器,不需要安装客户端,只需要通过浏览器就能访问,升级只需要更新服务器,需要考虑浏览器兼容性

(2)C/S架构:客户端-服务器端,需要安装一个客户端才能使用,需要考虑安装卸载

接口测试

接口测试用例的编写要点有哪些?

①考虑接口的正常使用

②业务约束规则验证:包括鉴权、逻辑约束

③考虑请求参数必填字段:

(1)参数长度边界值验证

(2)类型异常、null

(3)参数名错误、参数个数

(4)参数组合验证

④容错能力,大量数据,频繁请求,重复请求(如订单)

接口测试到底测什么呢?

 (1)考虑接口正常调用

①按照接口定义,传递正确的接口信息,然后查看返回的响应结果和数据库数据是否正确

②传递的请求数据覆盖有效类,边界值

③返回的响应结果的每个字段都需检查

(2)考虑请求参数的错误、异常情况

①请求数据异常值:空值,长度类型异常

②业务约束:订单状态必须确认收货后才能评价

③输入错误的参数名:多一个参数,少一个参数,看接口是否正确处理

(3)安全性测试

①敏感数据,是否加密传输

②返回数据是否含有敏感数据

③接口是否防止恶意请求:如大量伪造请求接口致使服务器崩溃

(4)性能测试

①并发请求相同的接口,查看接口的处理情况

②接口响应时间在用户可接受范围内

③对于业务操纵频繁的接口做压力测试,监控性能资源

做了接口测试,后面还需要进行系统 功能测试吗?

 (1)需要,接口测试主要是为了尽早发现问题提前介入,可以返现页面上发现不了的bug,还可以提高系统的稳定性

(2)虽然接口测试覆盖了所有功能层面的逻辑测试,但跟前端界面进行集成的时候,依然会出现问题,所以我们依旧需要所有功能在前端界面的测试验证

get 和 post 方法有什么区别?

(1)请求参数:get请求参数是放在url里面,长度收到限制,安全性较差,而post请求参数是放在请求体里面的,长度没有限制,安全性相对较高

(2)访问:get请求可以通过浏览器直接访问,支持刷新和后退。post请求,不能直接被浏览器访问,刷新后台需要重新传送

怎么判断一个接口是否有 bug

 (1)先确认自己传参时的接口地址,请求方式,请求头和请求体是否正确

(2)如果正确,查看返回结果和接口文档进行对比,如果一致

(3)则判断数据库中的数据是否有问题

APP 测试和 Web 测试有什么区别?

web测试:B/S架构,通过浏览器访问

App测试: C/S架构,通过客户端操作

(1)系统架构方面,web端,只需要更新服务器;App,服务器端和客户端都需要回归测试一遍

(2)客户端性能方面:web一般只需要关注响应的时间,App还需要关注流量,电量,cpu,内存

(3)兼容性方面:web要考虑不同操作系统下不同主流浏览器的兼容,App要考虑不同产商机型、操作系统、屏幕尺寸分辨率等兼容性问题

小程序测试和 app 测试有什么区别?

(1)安装卸载: 小程序不需要下载安装,不需要卸载;App需要下载并且安装后才能使用,清除时需要卸载

 (2)开发周期

小程序开发周期约2周,发布审核时间较短

App:需要在支持的android和ios平台分别开发,周期较长,审核时间也较长

(3)登录权限

小程序:一般微信登录,无需注册

App:需要注册登录系统,权限方面需要考虑是否可以访问手机通讯录,相册,相机

(4)兼容性

小程序:基于不同的公众平台,主要兼容不同的微信版本

App:考虑不同机型的兼容,分辨率,屏幕尺寸,操作系统等....

如何做 app 兼容性测试的

(1)硬件兼容性:需要覆盖市面上主流手机厂家及各型号的产品

(2)操作系统兼容性:对app安装及卸载测试,测试app能否正常运行

(3)分辨率的兼容性:对主流设备的分辨率及屏幕尺寸,测试app界面实现及排版是否正常

(4)网络兼容性:在不同的运营商下,app是否能够正常运行,需要真机环境进行测试

“长连接”和“短连接”有什么区别?

(1)长连接(保持连接时间比较长)

一个HTTP连接的建立需要三次握手,握手成功后,才可以建立数据包传输,为了降低握手的频率,在接口请求头部connection为keep-alive,如果一段时间不用,服务器就会主动发一段探测报文,看看连接状态,如果探测不通,服务器端就会主动断开连接

(2)短连接(连接时间很短)

需要的时候才会建立一个tcp连接,数据传输完成就结束

http 协议有哪些响应状态码?

 (1)1xx(临时响应):表示需要请求者继续执行操作

(2)2xx(成功):表示成功

(3)3xx(重定向)

(4)4xx(客户端请求错误)

(5)5xx(服务器错误)

测试实例 

给你一个魔盒可以实现任何愿望,作为 测试怎么设计测试用例

 (1)功能

①说出不同愿望(钱+人+精神需求),看魔盒是否都能实现

②说愿望,只说部分关键字,看是否能正常识别

③不说愿望,看魔盒是否提示人许愿

④是否会有魔盒实现不了的愿望

⑤许愿次数是否有上限

⑥是否有许愿咒语

(2)界面:外表设计是否符合审美要求

(3)兼容:声音大小,是否影响魔盒接受许愿者的愿望

(4)性能:连续多次许愿后,魔盒是否还能正常使用

用户反馈功能很卡,要从哪些方面考 虑?

 (1)功能操作卡

①反馈提交的资源过大,导致请求慢

②服务器对于当前请求的人数过多,导致卡

(2)整个app卡

①网络异常

②app占用内存大,导致手机内存不足

③当前app与其他软件、手机系统不兼容

④服务器资源不足,请求慢

在测试“抖音直播”功能时,可以从以下几个方面进行详细的测试:

功能测试

目的:确保所有功能按照设计要求正常运作。

  • 直播创建:测试用户是否可以成功创建直播,包括设置标题、封面图、分类等。
  • 直播推流:检查推流功能是否稳定,测试不同设备和网络条件下的推流质量。
  • 实时互动:验证直播过程中聊天、弹幕、礼物等互动功能是否正常工作。
  • 直播结束:测试直播结束后的处理,包括保存直播记录、直播回放的生成和展示

给你一个微信上一个聊天的窗口你是 怎么测试的?

 

双十一抢券怎么测

 (1)抢劵设置是否正确,不同时间节点、优惠券类型,优惠券数量

(2)查看不同抢券时间点是否正常显示该优惠券

(3)测试优惠券不同状态,待开抢、正在抢、抢光了

(4)验证是否准点实现“开抢”按钮;抢到券显示抢券成功并能在我的优惠券页面查看,未抢到显示抢光了,并能正确回退到我的优惠券页面查看。

(5)后台是否记录到了每位抢券的用户相关信息

(6)一个用户id是否同一时间点、不同时间点抢多次券

说一下购物车功能,怎么测试呢?

说下模块的功能测试点怎么整理的?

 手机拍照功能怎么测试?

. 给你一个 N95 口罩你要怎么编写测试用 例? 你讲一下登录功能,你会考虑哪些测试 点呢? 你能说说 “ 支付功能 ” 怎么测试么?

印象中最深刻的 bug 吧 

发现问题背景

外卖下单派送功能的测试中,我们发现了一个严重的 bug:在用户选择配送时间段后,系统没有正确地将配送时间应用到订单中,导致订单的实际配送时间与用户选择的时间段不匹配。这一问题可能会影响用户体验,尤其是当用户对配送时间有明确要求时。

测试过程

  1. 测试步骤

    • 登录应用:使用测试账户登录外卖应用。
    • 选择商品:从餐厅菜单中选择几种商品,并添加到购物车中。
    • 下单流程:进入结算页面,选择配送地址和时间段。
    • 提交订单:确认订单详情并提交。
  2. 验证问题

    • 订单追踪:进入“我的订单”页面,查看刚刚提交的订单详情。
    • 时间验证:检查订单的配送时间是否与用户选择的时间段一致。

在测试过程中,我们发现订单的实际配送时间与用户选择的时间段不一致,出现了预期与实际不符的情况。

排查过程

  1. 重现问题

    • 重复测试:多次重复以上测试步骤,确认问题的存在不是偶发的。
    • 不同时间段:测试不同的时间段选项,验证是否所有时间段都出现相同的问题。
  2. 查看日志

    • 系统日志:查看服务器和客户端日志,检查订单处理的各个步骤是否有异常记录。
    • 错误日志:注意日志中的错误信息,特别是与时间相关的错误。
  3. 排查代码

    • 检查前端代码:审查时间选择器的代码,确保用户选择的时间被正确地提交到后端。
    • 后端逻辑:审查处理订单的后端代码,确认时间选择是否被正确地接收和处理。
  4. 数据库验证

    • 数据库记录:检查数据库中的订单记录,确认实际存储的配送时间是否与前端传递的时间一致。
    • 时间字段:确保数据库表中相关时间字段的格式和数据类型正确。
  5. 业务逻辑分析

    • 时间处理:分析订单时间处理的业务逻辑,确保没有逻辑错误导致时间设置不正确。
    • 时间转换:检查是否有时间格式转换错误或时区问题。

验证过程

  1. 修复方案

    • 与研发讨论:将发现的问题详细报告给研发团队,协助他们分析问题根源并提出修复方案。
    • 代码修改:研发团队根据问题排查结果修复了代码中的时间处理错误,确保用户选择的时间段能够正确应用到订单中。
  2. 重新测试

    • 功能验证:修复后,重新进行相同的测试流程,确认问题是否已经解决。
    • 边界条件测试:测试各种时间段的边界条件,确保修复后的功能在所有情况下都能正常工作。
  3. 用户验证

    • 回归测试:在其他相关功能上进行回归测试,确认修复没有引入新的问题。
    • 用户反馈:在生产环境中监控用户反馈,确保修复后的功能在实际使用中没有再出现类似问题。

帮助研发的方式

  • 详细描述问题:在问题报告中提供详细的步骤、日志和截图,帮助研发团队快速定位问题。
  • 协助分析:与研发团队密切合作,分析日志和代码,提供必要的技术支持。
  • 验证修复:在问题修复后,进行全面的测试,确认修复的有效性,减少反复修改的时间。

 

三、缺陷,bug

项目里,bug 都有哪些类型,以及哪些 地方容易出 bug?

(1)代码错误、界面错误、设计缺陷、配置相关、性能问题 (2)参数的校验,边界值,复杂的逻辑,异常的业务场景

如何提交一个高质量的 bug?

 (1)bug标题、bug模块、bug对应的版本、bug严重级别、bug详细现象描述、复现步骤

(2)唯一性:一个bug说明一个问题

(3)bug描述要前后一致,不能有歧义

(4)附带bug现象截图、报错日志

(5)bug不能带有个人观点,对事不对人

怎么定位是前端bug还是后端bug

(1)界面排版布局错误,兼容性问题,在网络不稳定下导致的js/css未加载完全或请求超时,也是前端bug

(2)对于数据或者逻辑处理上的问题,可以通过抓包工具fiddler,或者查看日志分析

①抓包工具:

检查请求地址、参数的正确性

不正确则为前端bug;

若正确进一步检查服务器返回的响应,若响应内容不正确,则是后端处理出错

请求和响应都正确,就是前端渲染响应的数据出错

②报错日志,分析日志里面的异常报错信息,查看数据库数据判断前端还是后端问题

开发不认同你的 bug,你怎么处理?

 (1)首先确认开发环境是否和自己的测试环境一致,缓存有没有清除

(2)看bug是否能够重现,级别低的bug先记录到平台,级别高的bug对应需求文档的预期结果跟开发说明,实在不行找产品确认

偶发性 bug,作为测试该怎么处理?

 (1)复现率低的bug,要提交,描述清除问题的复现步骤,环境,测试数据和日志信息

(2)如果未复现,在接下来的测试中,时刻保持关注,每次执行同样的或者相近的步骤时候,看能否复现之前的bug

(3)如果一直未复现,可暂时关闭bug,备注说明关闭不是因为修复,而是经过多个版本后不复现了

项目页面无法访问,如何定位问题?

 (1)判断页面的域名是否可以正常解析到

(2)ping命令判断服务器是否可达,如果不可达用trance route命令,查看一下是哪个节点出现问题

(3)如果不是网络问题,再去后台服务器查看服务进程有没有开启,数据库有没有开启

项目上线后发现的 bug,怎么 处理呢

 (1)当发现线上的bug,应该快速响应处理,先积极配合开发重现bug来定位问题,如果严重bug,需要积极解决,更新版本,如果bug不是那么严重,则放到下一个迭代版本中处理。

(2)总结bug出现的原因和规避方案

①测试用例覆盖不全面---》优化测试用例,增加用例评审

②测试的时间不充分,规划充分的测试时间,严格按照时间节点完成测试工作

③测试的环境或者测试的数据受限---》在真实环境下覆盖测试

④开发人员修复其他问题时,引入了新的bug---》明确测试范围,尤其是代码修改的功能部分,回归测试时,主流程必须回归,必须是一个完整流程

fiddler

如何构造弱网测试

(1)在fiddler中result右键customize rules,打开CustomRules.js文档

(2)修改文档中,每上传或下载1kb数据需要的时间来模拟弱网场景

(3)然后点击Simulate Modem SPeeds,开启弱网模拟

fiddler 断点有什么用?

 (1)主要是修改请求和响应的数据

(2)比如提交订单,金额是200,测试时想篡改金额,可以通过fiddler对before requests设置断点,修改请求数据,传一个520金额,检查服务端是否会正常处理。

(3)测试会需要返回不同的数据前端展示,可以after response设置断点,修改返回的数据查看前端实现效果

四、数据库

Group by 和 order by 区别?

(1)Group by是分组

(2)Order by是排序 

两者如果要一起使用的话,先分组后排序

mysql 中的 where 和 having 有什么 区别?

(1)where 子句中的条件表达式having都可以跟,而having有些 不行

(2)having子句可以用聚合函数(sum、count、avg、max),而where不行

数据库中的左连接、右连接和内连 接有什么区别?

(1)左连接(left join)显示左表所有数据及右表满足条件的数据,右表无数据则显示null

(2)右连接,则是显示右表的所有数据,及左表满足条件的数据,左表无对应数据则显示null

(3)内连接(inner join)显示左右两张表连接字段相等的数据

五、Linux

linux查看日志的命令?当Linux数 据过多时,如何查看自己想看的信息?

(1)查看日志命令,包括tail。head、cat、less等

(2)如果过多,可以通过tail -f查看实时日志 ,也可以加上grep错误关键字来过滤

(3)如果操作报错,使用ctrl+c结束日志打印,依据操作时间找到exception关键字后面的报错信息

在 Linux 系统下如何部署测试环境?

(1)开发会基于部署文档构建新镜像生成一个压缩包

(2)测试把压缩包传递到测试服务器,直接加载镜像,然后docker run 运行容器,并映射tomcat端口8080,mysql端口3306,以此完成测试环境部署

linux 下编辑文件常用的命令有哪些?

(1)vi或者vim,可以直接对linux文本进行编辑并保存 (2)sed,流式编辑器,以行为单位进行文本操作 (3)awk以行为单位进行文本编辑,也可以列为单位进行文本编辑 (4)cut对文本进行切割,以行为单位进行文本处理 (5)sort,对制定的文件按照一定的规则进行排序

查看进程的命令 ps,常用参数有哪些

 (1)-A,列出所有的进程

(2)-w,显示价款可以显示较多的资讯

(3)-au,显示较纤细的资讯

(4)-aux,显示所有包含其他使用者的行程

什么时候会用liunx定位bug?定位什么 样的 bug?

(1)一般用来定位后端bug (2)tail -f 日志文件名来查看日志 (3)容器部署,docker cp 【容器ID】:【容器内部路径】【linux路径】方式导出日志到linux,再通过xftp将日志导出到本地查看

标签:面试题,请求,是否,测试,自测,服务器,日志,bug,软件测试
From: https://blog.csdn.net/m0_62388400/article/details/142212903

相关文章

  • 前端面试题
    forin和forof的区别forin适用于可枚举属性,例如对象、数组、字符串forof适用于可迭代对象,像Array、Stringforin能遍历自身的可枚举属性&&原型上的可枚举属性forof一般只能遍历自身的可枚举属性forin得到的是keyforof一般得到的是valueES6之后版本新增特性......
  • 小米嵌入式面试题目RTOS面试题目 嵌入式面试题目
    第一章-非RTOSbootloader工作流程MCU启动流程通信协议,SPIIICMCU怎么选型,STM32F1和F4有什么区别外部RAM和内部RAM区别,怎么分配外部总线和内部总线区别MCU上的固件,数据是怎么分配的MCU启动流程IAP是怎么升级的,突然断电怎么办挑了麦轮项目(因为大疆RM也是......
  • Java笔试面试题AI答之单元测试JUnit(4)
    文章目录19.简述JUnitorg.junit.TestSuite类的作用?1.组织测试类2.简化测试执行3.灵活配置测试环境4.嵌套测试套件注意事项20.在JUnit中@Test注释的作用和用法?作用用法21.简述Junit基础注解(@BeforeClass、@Before、@Test、@After、@AfterClass)?22.编写代......
  • 软件测试学习笔记丨Charles 实战
    本文转自测试人社区,原文链接:https://ceshiren.com/t/topic/32116二、抓包实战2.1需求说明使用Charles工具完成抓包与基础功能使用。2.2实战思路2.3抓包原理在没有代理工具时,客户端会直接向服务端发起请求,然后服务端会把响应数据返回给客户端,从而完成客户端与服务端之间的数据传......
  • 文心快码帮你解大厂面试题:设计一个秒杀系统,并明确指出关键点
    ......
  • 消息中间件面试题
    为什么使用消息队列?解耦、异步、削峰消息队列有什么优点和缺点?优点:解耦、异步、削峰缺点:系统的可用性降低、系统的复杂性提高了、一致性问题。Kafka的特性1.消息持久化2.高吞吐量3.扩展性4.多客户端支持5.KafkaStreams注意:当你不会说的时候,就围绕着kafka你知道的kafka......
  • 黑马面试集合(ArrayList, HashMap)篇笔记整理,结尾附Java的集合相关高频面试题及答案
    集合操作数据的特点-算法复杂度分析数据结构算法复杂度分析为什么要进行复杂度分析?指导编写性能更优的代码评判别人写代码的好坏时间复杂度分析时间复杂度分析:来评估代码的执行耗时的假设每行代码的执行耗时一样:1ms分析这段代码一共执行多少行?3n+3......
  • 软件测试 | 手工转测试开发轻松实现薪资 50%涨幅的逆袭之路
    Hello大家好,见字如面,我是深圳线下周末2期的学员。我之前一直在某公司以手工测试为主,虽然公司不错团队氛围也很好,但为了追求更广阔的技术发展,并且围墙内的人也总因为新鲜感更想去看看外面的世界。而我深知现在的招聘环境愈加严峻,自己掌握的技能也不足以支撑我NextLevel。很长一段时......
  • C++面试题整理 1
    1.new和malloc什么区别?new和malloc都用于在堆上分配内存,new是c++中的关键字,分配内存后还会调用构造函数2.std中unorded_map,map,multimap有什么区别?unorderd_map中元素不按键值排序,底层数据结构是哈希表,相对map查询速度快,内存开销大map中元素按键值排序,底层数据结构是红黑......
  • 1 软件测试阶段 软件测试方法 可靠性设计 数据库设计
    1、软件测试包括哪些阶段?2、什么是单元测试,目的是什么?3、什么是集成测试,目的是什么?4、什么是系统测试、目的是什么?5、系统测试包括哪些内容,简要描述?6、系统测试的流程是怎样?7、系统测试中的性能测试包括哪些内容,简要描述?8、什么是验收测试?9、单元测试、集成测试、系统测试......