今天给大家分享一份顺丰同城的测试开发一面面试真题。老规矩,当你看到这份面试题的时候,先不要着急去看答案,你可以想想假如你在面试现场,你会怎么回答?这个思考的过程其实也是很重要的。
全文7000字干货,如果对你有帮助,希望能点个赞,这样我才有继续更新下去的动力。
1. 首先做个自我介绍吧
主要概括个人优势➕简短,2~3分钟内。自我介绍的框架:
1、职业背景:过往在什么公司工作过,做过什么工作岗位,担任了什么样的一个角色。
2、个人优势/技能:擅长做什么?核心优势是什么?
3、成功项目:在过去的工作中,你有没有做过一些有亮点的项目,这个项目是什么,项目的数结果如何(最好有数据表现)。
4、如果没有亮点项目的话,就在个人优势这里,稍微拓展一些,自己掌握了什么技术。比如会自动化的环境搭建,自动化项目的部署,掌握接口、UI自动化测试的技术等。
综上所述,过去掌握的技能和经验,可以帮助快速上手项目的测试工作,所以和咱们公司的这个测试岗还是比较匹配的。
2.介绍一下实习时,负责的测试内容
一定记住分点去说,分别负责1234哪些部分,表达要有条理。
3.你是怎么去做测试的,或者说你是怎么去保证测试质量的?
先想清楚,什么会影响测试质量?之前转载一篇京东测试大佬写的文章,里面就有提到过:实际影响质量的因素有很多,一般包括
-
需求评审充分性、
-
技术方案合理性、
-
测试用例颗粒度、
-
测试手段完备性、
-
开发质量、
-
团队能力熟练度
-
跨团队配合等等。
知道影响因素后,就可以从每个影响的因素去回想,你做了哪些针对性的措施来保证测试质量。以上,是第一种回答思路。
第二种回答思路:可以从测试流程的思路来作答,这样不容易遗漏。
可以从测试前、测试中、测试后3个大的部分来说,当然面试的时候不需要把所有的测试流程全部讲完,只需要挑出你在哪一部分,做了什么来保证测试质量就可以了。
4.测试的流程是怎么样的,能描述一下吗?
每家公司的测试流程不一样,但是一般会包括以下流程:
一、测试前:1、产品需求评审;2、技术方案评审;3、用例评审;4、用例设计;
二、测试中:接口测试、冒烟测试、功能/UI测试、系统测试、回归测试、代码覆盖度测试、兼容性测试、产品验收测试、线上测试、自动化脚本是否需要每次上线前跑一遍等。
三、测试后:线上问题复盘。
5. 如果你发现了一个bug,怎么推动开发去修改?
第一,自己先定一个优先级,是否是立即要修改的bug,修改这个bug是否会延误上线时间等。
第二,如果优先级高,和开发沟通,解释bug的影响范围。
第三,协作:帮助开发查找定位bug,减轻开发的压力,会更愿意去修改。
6.有没有遇到过发现bug,研发认为不是bug的情况,你是怎么解决的?
第一,自己重新复现一下,确定是bug。
第二,看bug报告描述是不是有问题,是不是自己描述不准确。
第三,获取判断的依据和标准:比如用需求文档和开发当面进行沟通,注意客观、严谨,不参杂个人情绪。
第四,如果仍然存在争议,需要产品经理介入,一起讨论。
第五,以上方法都行不通的情况下,向上反馈,由上级做出决定。
7. 除了功能测试之外,还做过其他方面的测试吗?
8. 你常用的Linux命令有哪些?
参考:https://www.cnblogs.com/smile635664087/p/16075372.html
9. 怎样进行跨服务器的文件传输?
10. 如何查看服务器磁盘还有多少容量?
(1)查看内存空间
使用“free”命令可以查看服务器的内存空间,选项“-m”表示以MB(兆字节)的数据存储单位进行显示。执行结果如下所示:
在以上输出结果中,Mem表示系统的物理内存,total表示内存的总大小(995M),used表示已经使用的空间(168M),free表示可用空间(827M)。关于其他内容读者可参考Linux帮助手册进行学习,这里就不再详细解释。
(2)查看磁盘空间
使用“df”命令可以查看服务器的磁盘空间,选项“-lh”表示利用方便阅读的数据存储单位显示本地文件系统。执行结果如下所示:
在以上输出结果中,Filesystem是文件系统,Size表示该分区的总大小,Used表示已经使用的空间,Avail表示可用空间,Use%表示已经使用的百分比,Mounted on表示挂载路径。可以看出,系统共分为3个文件系统,其中“/dev/mapper/VolGroup-lv_root”是挂载到根目录的文件系统,总大小为8.3G,已经使用的空间为646M。通过上述命令可以看出,最小安装后的CentOS占用的内存和磁盘空间都非常小。用户可以根据自己的需要来手动安装软件和配置系统,避免因为大量预装软件而导致内存、磁盘等硬件资源的浪费。
11.MySQL的索引有了解过吗?索引有什么优缺点?
优点:
①减少了数据检索的时间
②保证了数据的唯一性
③表与表之前的参照完整性
④减少了在分组、排序的检索时间
缺点:
①创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加。
②除了数据表占数据空间之外,每一个索引还要占一定的物理空间。
③当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,这样就降低了数据的维护速度。
12. MySQL的事务有什么特性?
-
原子性(Atomicity):一个事务中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。
-
一致性(Consistency):在一个事务执行之前和执行之后数据库都必须处于一致性状态。如果事务成功完成,那么系统中所有变化将正确应用。如果事务出错,那么系统中的所有变化自动回滚。
-
隔离性(Isolation):在并发环境中,当不同的事务同时操作相同的数据时,每个事务都有各自的完成数据空间。数据更新时,数据所处的状态要么是更新前的状态,要么是更新后的状态。
-
持久性(Durability):只要事务成功结束,它对数据库所做的更新就必须永久保存下来。
13. 给你三张表,student(学生表)、course(课程表)、sc(成绩表),查询平均成绩大于60分的同学的学号和平均成绩。你现在写一下SQL语句。
查找本学期没有选课的学生:
查找挂科的学生:
14. 发现bug之后怎么去做定位,有去分析过bug产生的原因吗?
第一步,确认是否是bug(看是否满足预期)。
第二步,保存bug记录,视频或截图。
第三步,找到稳定的复现步骤,以及找到复现问题的最短路径。复现路径越短,说明问题的影响面越大,更应该受到重视。
通过以上几个步骤,就可以清楚的去描述问题现象。
确认问题之后,接下来开始定位bug:
首先需要定位,这个bug是前端问题还是后端问题,一般是由浅入深,先从前端着手。通过抓包看是不是数据的问题,假如接口数据没问题,就是前端问题。假如接口数据有问题,大概率就是后端问题。后端问题看状态码,查看后端日志去看代码有没有异常,检查数据库、缓存、配置是否有异常。通过以上步骤,基本都能找到bug原因。
15. HTTP状态码有了解吗?
1 1xx消息
2 2xx成功
3 3xx重定向
4 4xx客户端错误
5 5xx服务器错误
下面是常见的 HTTP 状态码:
-
200 – 请求成功
-
301 – 资源(网页等)被永久转移到其它URL
-
404 – 请求的资源(网页等)不存在
-
500 – 内部服务器错误
16. 页面现在有一个数据展示的不对,怎么去判断是前端问题还是后端问题?
前端bug特点 1, 界面相关 2,布局相关 3,兼容性相关
后端bug特点 1,业务逻辑相关 2,性能相关 3,数据相关 4,安全性相关
1、经验法
软件测试人员应不断精进自己的技能,负责的项目多了,自然对功能的实现过程有了解,也就明白如何分类bug了。例如:网页上的某个图片的分辨率不对,如果我们了解实现过程,可以想到一般情况下,是根据某个地址去服务器取图片的,数据库一般只保存地址,那么图片能正确显示,就说明后端的基本功能是满足需求的。如果具体图片分辨率有误,最可能的原因是前端显示过程出了差错。
2、查日志
当我们发现一个bug,并不确定这个bug属于前端还是后端,可以查看后端服务的日志,复现bug时,查看日志中有没有相关信息。基本可以认为,如果日志没有输出,很可能这个功能并没有与后端交互,也就不存在后端的问题。反之,如果日志有输出,可以进一步查看有无错误日志信息,进一步分析。
3、查接口
这种方法常用于查看是后端返回给前端的数据有误,还是前端显示有误。大多数浏览器都有自带的接口查看工具,如Chrome,FireFox等都可以通过F12开启抓包,在NetWork中可以看到当前页面发送的每个http请求。我们需要对比通过后端接口拿到的数据和前端显示的数据,来确认问题出在哪里。如果数据错了,页面显示是错的,也是正常的,先从后端入手去解决。
还可以分析控制台中js是否有错误,network中状态码是否有问题,如果是500等说明服务端有问题。
比如登录页面,输入账号和密码点击登录,结果没有跳转也没有反应。
可以打开控制台,看是否有js错误,如果有就是前端问题,没有且有正常post请求再看network状态码,如果是404有可能是前端参数写错或者后台接口改了,前后端都可以提,500就是后台出了问题。
17. 有了解过一些中间件的东西吗?
中间件是介于操作系统和在其上运行的应用程序之间的软件。中间件实质上充当隐藏转换层,实现了分布式应用程序的通信和数据管理。它有时被称为管道,因为它将两个应用程序连接在一起,使数据和数据库可在“管道”间轻松传递。
通过中间件,用户可执行很多请求,例如在 Web 浏览器上提交表单,或者允许 Web 服务器基于用户的配置文件返回动态网页。
常见的中间件示例包括数据库中间件、应用程序服务器中间件、面向消息的中间件、Web 中间件和事务处理监视器。每个程序通常都会提供消息传递服务,让不同的应用程序可使用简单对象访问协议 (SOAP)、Web 服务、表述性状态转移 (REST) 和 JavaScript 对象表示法 (JSON) 等消息传递框架进行通信。
虽然所有中间件都执行通信功能,但公司选用的类型将取决于要使用的服务以及需要传达的信息类型。这可包括安全身份认证、事务管理、消息队列、应用程序服务器、Web 服务器和目录。
中间件还可用于实时发生的操作的分布式处理,而不是来回发送数据。
18. 输入url访问页面的全过程是怎么样的?可以讲一下么?
先进行DNS域名解析,获取域名对应的IP地址;
浏览器与服务器建立tcp连接;
浏览器向服务器发送http请求,
服务器根据浏览器请求的资源返回;
浏览器将拿到的资源进行解析和和加载,最终对页面渲染,绘制页面呈现给用户。
19. 黑盒测试的方法有哪些?
常用的黑盒测试方法有:
-
等价类划分法;
-
边界值分析法;
-
因果图法;
-
场景法;
-
正交实验设计法;
-
判定表驱动分析法;
-
错误推测法;
-
功能图分析法。
20. 有了解过白盒测试吗?
白盒测试也称为结构测试或逻辑驱动测试,是针对被测单元内部是如何进行工作的测试。它根据程序的控制结构设计测试用例,主要用于软件或程序验证。白盒测试法检查程序内部逻辑结构,对所有的逻辑路径进行测试,是一种穷举路径的测试方法,但即使每条路径都测试过了,但仍然有可能存在错误。因为:穷举路径测试无法检查出程序本身是否违反了设计规范,即程序是否是一个错误的程序。穷举路径测试不可能检查出程序因为遗漏路径而出错,穷举路径测试发现不了一些与数据相关的错误。
白盒测试需要遵循的原则有:
-
保证一个模块中的所有独立路径至少被测试一次;
-
所有逻辑值均需要测试真(true)和假(false);两种情况;
-
检查程序的内部数据结构,保证其结构的有效性;
-
在上下边界及可操作范围内运行所有循环。
常用白盒测试方法:
静态测试:不用运行程序的测试,包括代码检查、静态结构分析、代码质量度量、文档测试等等,它可以由人工进行,充分发挥人的逻辑思维优势,也可以借助软件工具(Fxcop)自动进行。
动态测试:需要执行代码,通过运行程序找到问题,包括功能确认与接口测试、覆盖率分析、 性能分析、内存分析等。
白盒测试中的逻辑覆盖包括语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖。六种覆盖标准发现错误的能力呈由弱到强的变化:
-
语句覆盖每条语句至少执行一次。
-
判定覆盖每个判定的每个分支至少执行一次。
-
条件覆盖每个判定的每个条件应取到各种可能的值。
-
判定/条件覆盖同时满足判定覆盖条件覆盖。
-
条件组合覆盖每个判定中各条件的每一种组合至少出现一次。
-
路径覆盖使程序中每一条可能的路径至少执行一次。
21. 用postman可以做哪些事情?
Postman是一款流行的接口测试工具,有chrome插件端和pc版,可以用来模拟http的请求,如get或者post或者其他方式的请求来调试接口。开发同学调试接口和测试同学做接口测试经常使用。
22. 上传图片的测试用例,请你设计一下
23. 为什么选择从事测试这个岗位?
软件测试面试合集:
800道软件测试面试题+来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作,点击下方小卡片均可领取。
敲字不易,如果此文章对你有帮助的话,点个赞收个藏来个关注,或者给作者一个鼓励。也方便你下次能够快速查找。
版权声明:本文为博主作者:程序员雷叔原创文章,版权归属原作者,如果侵权,请联系我们删除!
原文链接:https://blog.csdn.net/chengxuyuznguoke/article/details/129281938