软件测试面试?太简单了 2023测试面经 (答案+思路+史上最全)

avatar
作者
猴君
阅读量:0

从年后开始投简历面试的,在boss和拉钩上投了有几十份简历,其中70%未读状态,30%已读,已读的一半回复要求发送附件简历,然后这周接到面试的有七、八家公司,所以,当前这个大环境真的难

这半个月来,每天安排三到四场面试,平均每个公司至少都是两轮面试打底,经此一役,截止今天下午,算是拿到四个offer,两个已经发了,两个口头约定好了。个人比较心仪其中的一家外企,毕竟不太卷,真的国内的互联网公司真的卷怕了,还不稳定,说不定哪天就被优化了,那么今天我就先分享一些此次面试第一面技术面试的经验,金三银四的面试季希望对大家有所帮助,加油!冲!

技术面试题整理了个十来页的文档,有需要的留言,我发你,当前的就业局势能帮一个算一个

技术面试题

一、项目及业务相关

1.请描述一下你现在项目中的测试流程是怎么样的?

需求宣讲-->需求评审-->技术评审-->测试用例评审-->研发冒烟-->研发提测-->测试提测预检.->测试泳道测试.>发布班车..>测试集成测试(产品验收)->预发环境发布-->生产环境发布(产品测试验收)-->线上数据监控(1-2天)-->业务文档沉淀(我公司是这样,大家根据实际情况说明即可)

2.测试流程有没有什么可以改进的地方?这些问题,你有反馈并且拿到结果吗?

1)规范发版流程,周二周四窗口期,APP类双周迭代,回收研发线上发布权限2)规范提测流程,增加提测准入条件,提测打回流程,冒烟不通过惩罚机制3)规范产品评审,新增需求宣讲,产品完成度90%以上进入评审,需求完成度较低打回

4)引入线上CS机制,PO,P1故院复盘,P3,P4 CS沉淀,记录踩坑经验,反推流程优化或者基础功能建设

3. 需求不明确,通过哪些方式解决?

1)根本还是流程机制的问题。团队合作不能依赖个人的靠谱,而是需要一种流程机制来建立,责任人和协作方式是机制运作两个不可或缺的要素。流程机制方面的建立也可以参考敏捷和精益思想。

2)从沟通上去突破,项目的高质量和及时交付是产研的共同目标,从共同目标出发去沟通解决合作中的问题。

4.测试任务多,时间不够,怎么办?

1)个别项目问题

是否测试范围为评估不全,导致估时过于乐观,估时研发测试工时比3:1(加时间)

是否有阻塞测试进度的问题(bug,测试环境等),占用测试时间倒排期项目,功能较多,测试时间不足(砍需求,分批上线)2)多数项目问题

测试效率是否有问题,是否有过多冗余测试用例

是否经常有并行测试,导致测试节奉达不到预期(资源分配)

长时间人员负荷大于80%,任务安排是否合理,测试人力是否达到瓶颈(加人)

 

5.介绍一下cookie, session 和token的区别

1)session存储于服务器,可以理解为一个状态列表,拥有一个唯一识别符号 sessionId,通常存放于cookie中,

服务器收到cookie后解析出sessionld,再去session列表中查找,才能找到相应 session。依赖cookie

2)cookie类似一个令牌,装有sessionId,存储在客户端,浏览器通常会自动添加。

3)cookie安全性比session差

4)token也类似一个令牌,无状态,用户信息都被加密到token中,服务器收到 token后解密就可知道是哪个用户

6. Get 和 Post请求的区别

1)get 是从服务器上获取的数据,post 则是向服务器传送数据2)get 的参数在 URL 中可以看到,post 的参数用户看不到

3)get 传送的数据量较小,不能大于 2KB。post 传送的数据量较大,一般被默认为不受限制

4)get 安全性比较低,post 安全性较高

7.常见的状态码有哪些?

2 代表成功

200:请求正常处理完毕3 代表重定向

301:永久重定向,资源已分配新 URI

302:临时重定向,资源已临时分配新 URI4 代表客户端错误

400:请求报文语法错误,或者参数错误401:需要通过HTTP认证,或认证失败403:请求资源被拒绝

404:无法找到请求资源,服务器无理由拒绝5 代表服务端错误

500:服务器内部错误

501:请求未完成。服务器不支持所请求的功能503:服务器超负荷,或者停机维护

8. HTTP 和 HTTPS 的区别?

1)http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。

2)http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80

 

9.怎么排查是前端问题还是后端问题或者数据问题?

1)通过抓包确认前端是否调用接口,如果接口未调用,那就前端问题。

2)如果接口正常返回结果,但是结果不是预期结果,要确认前端传参是否正确,若是传参不对,则是前端问题,若传参正确,但结果返回错误,那就是后端问题。

3)如果后端接口返回数据正确,但是页面显示和渲染错误,这也是前端问题

10. Web测试和APP测试不同点

1)手机作为通信工具,来电、去电、接收短信等操作都会对app应用程序产生影响,所以app测试第一个要考虑的属性特征是:中断测试,来电中断:呼叫挂断、被呼叫挂断、通话挂断、通话被挂断短信中断:接收短信、查看短信

其他中断:蓝牙、闹钟、插拔数据线、手机锁定、手机断电、手机问题(系统死机、重启)

2)手机用户对app产品的安装卸载操作:从上一个版本/上两个版本直接升级到最新版本

全新安装新版本

新版本覆盖旧版本安装卸载旧版本,安装新版本卸载新版本,安装新版本

web和app测试,单从功能界面测试来说,没有什么差异。有差异的主要是以下几点:

1.系统结构

web端,是B/S架构的,服务端有修改的话,客户端会同步更新

app,是C/S架构的,如果服务端有修改的话,客户端必须更新,核心版本的客户端都要重新回归测试

2.性能指标

web端:响应时间、CPU、内存、吞吐量

app:响应时间、CPU、内存、吞吐量、手机流量、手机电量

3.兼容测试方面

web端:浏览器兼容;PC端的操作系统(windows、mac、linux)

app:手机操作系统(安卓、ios、windows);手机型号;分辨率(手机屏幕大小)

4.相对于web,app有一些专项测试干扰测试(来电、信息、其他应用)弱网络测试、网络切换测试安装、更新、卸载

5.测试工具 app:appium web:selenium

6.界面操作

web端:屏幕左上角、右下角

app:手势、手机横屏竖屏、触控、前后台切换,边角测试

 

10. 性能测试关注哪些指标?

1)响应时间(RT):响应时间是指系统对请求作出响应的时间。

2)吞吐量(Throughput):吞吐量是指系统在单位时间内处理请求的数量。

3)并发数:并发用户数是指系统可以同时承载的正常使用系统功能的用户的数量。

4)OPS:Queries Per Second意思是“每秒查询率”,是一台服务器每秒能够响应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。

5)TPS:是TransactionsPerSecond的缩写,是一台服务器每秒能够出处理的事务数。它是软件测试结果的测量单位。一个事务是指一个客户机向服务器发送请求然后服务器做出反应的过程。客户机在发送请求时开始计时,收到服务器响应后结束计时,以此来计算使用的时间和完成的事务个数

11. 请问你们公司是如何做接口测试的?

接口测试实际跟一般测试不同就是测试用例的设计部分。①获取接口规范。

2设计接口测试功能用例(主要从用户角度出发看接口能否实现业务需求,用例设计就是黑

盒用例那一套)。

3各种入参验证(正常情况,异常情况包括输入参数个数不对,类型不对,可选/必选,还

有考虑参数有互斥或关联的情况)。

④接口返回值各种验证(符合接口文档需求)

⑤了解接口实现逻辑,实现逻辑覆盖(语句/条件/分支/判定/...)⑥接口能并发执行吗、安全吗,性能满足要求吗?⑦采用工具或者自写代码来验证。

⑧发现问题跟功能测试一样,该报 bug 报 bug,该跟踪状态的跟踪状态。

12.怎么设计接口测试用例?

通常,设计接口测试用例需要考虑以下几个方面:①是否满足前提条件

有些接口需要满足前提,才可成功获取数据。常见的,需要登录 Token逆向用例:针对是否满足前置条件(假设为n个条件),设计 0~n 条用例②是否携带默认值参数

正向用例:带默认值的参数都不填写,不传参,必填参数都填写正确且存在的““常规”值,

其他不填写,设计1条用例③业务规则、功能需求

这里根据时间情况,结合接口参数说明,可能需要设计N条正向用例和详向思例

 


1. 简述一下UI自动化框架及怎么实现的

需要这个答案的找我,我整理了另外一个博客

2. selenium 的元素定位方式有哪些?

这个也是博客里分享过了,具体不写了

定位方式有8种:id、name、tag name、class name、link text、 partial link text、xpath 以及css selector

id 唯一,有 id 尽量使用 id 定位,但要注意动态 id 的情况,

css selector 和 xpath 几乎可以定位到所有的元素,css的定位速度更快。

3. 切换窗口、切换iframe、弹窗怎么处理、下拉框怎么定位

切换窗口:driver.switch to window(handle)切换iframe: driver.switch to frame弹窗:使用alert

下拉框定位:select by index(0) #通过索引选择 select by visible text("测试") #通过下拉文本值选择 select_by_value("python") #通过option value值选择

4. 三种等待

time.sleep

固定等待,本质:让当前的线程睡眠,实质是线程的阻塞(blocking),用wait方式实现。

缺点:网络条件好浪费时间,严重影响项目的性能。

好处:调试脚本可以用。

implicitly wait

隐式等待。本质:在脚本的开始设置一个最长等待时间,如果在规定时间内网页加载完成,则执行下一步,否则可能抛出异常。隐式等待对整个driver周期都起作用,在最开始设置一次就可以了,不要当作固定等待使用。

缺点:JavaScript一般都是放在我们的bodv的最后进行加载,实际这时页面的元素都已经加载完毕,我们却还在等待全部页面加载结束。

WebDriverWait

显式等待。本质:动态的等待,判断某一个元素是不是已经出现了,比如tte是

显式等待,本质:动态的等待,判断某一个元素是不是已经出现了,比如title是不是叫百度或百度搜索。根据动态的一些条件来轮询,它会不停的轮询去给我们检测,条件是成功还是失败,比如0.5s就检测一次这个元素在这个条件下是成功还是失败。同时设置轮询的超时时间。

 

6. Linux

1. 详细讲几个常用的Linux命令

ps:查看当前正在运行的进程

netstat:检查 Linux网络状态,比如查看开启的端口,为哪些用户提供服务,以及服务的状态 sed:文本编辑 cd:切换目录 mkdir:创建目录 mv:移动文件 rm:删除文件 rmdir:删除目录

pwd:获取当前所在地址

2.怎么查看实时更新的日志文件?

tail -ftest.log | grep 'error

3. Linux的 top 命令可以查看到哪些信息

top 经常用来监控linux的系统状况,比如cpu、内存的使用,PID,TIME,STATE(状态)

4. Linux的 find 和 grep 命令的使用

查找本地目录下所有文件中,文件内容包含AAA的文件 grep AAA./*

查找本地目录下所有文件中,文件名字包含AAA的文件 find /*-name *AAA*

两个命令的语法不通,grep是直接加要查找的字段, find是先加地址,再加要查找的内容

 

技术面试题整理了个十来页的文档,有需要的留言,我发你,当前的就业局势能帮一个算一个

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!