被同龄人抛弃?68道中高级测试工程师面试题助你一臂之力
经典测试工程师面试题(一)
经典测试工程师面试题(二)
testerhome测试问题
------------------------------------------------------------------------------------------------------------------------------感谢他们的总结
一、
软性热身题
这种题目,考的就是你的软性能力,比如表达能力,理解能力,协调能力,一个词概括就是套路。这类题目会在面试开始热身的时候,问一道两题,不会多,但是如果你能回答的有条不紊,清晰达意,那么就会给面试官留下非常好的印象,大致的题目如下:
自我介绍
介绍下你负责的公司项目
你有什么优点和缺点?
在同一个项目组内,你认为你怎么做会比另外一名测试更加优秀?
工作积累经验和此份工作的契合度;
硬实力:列举专业技能
软实力:协作能力、规划能力等
自己对面试岗位的理解和自己未来能给他们带来什么
你的测试技能能否发掘出更多问题
你的测试技能是否能提高效能
是否会主动推进问题,让上级领导省心
你是否可以让程序更容易接受你的观点
- 你为什么离开上家公司?离职原因(这个会在最后问)
二、
测试理论基础题
这类题目就是考测试工程师的基本能力了,比如测试计划,测试流程,如何bug,你做过哪些测试,一般我们认为这些能力做的再好都是应该的,不会有加分,但是只要做的不好,那就是个不合格的测试工程师了。这种题目也不会问的太多,大概题目如下:
- 请描述下你上个公司的测试流程?
需求分析讨论-确定测试策略-设计测试用例-测试用例评审-beta测试-uat测试-测试报告
- 请描述下bug的几个要素?
1.没有实现需求说明书列出的功能
2.出现了需要说明书提到不应出现的事情
3.实现了需求说明书未提到的功能
4.没有实现说明书中没有提到但应该实现的功能
5.难于使用,运转速度很慢,用户认为没有达到预期
- 白盒和黑盒的区别,你是怎么运用的?
黑盒测试:已知产品的功能设计规格,可以进行测试证明每个实现了的功能是否符合要求。利用其检查功能是否符合需求说明书,能够正常使用,
白盒测试:已知产品的内部工作过程,可以进行测试证明每种内部操作是否符合设计规格要求,所有内部成分是否经过检查
利用其检查程序模块的内部逻辑走向,主要覆盖程序内的逻辑。
- 你是如何做测试分析?
掌握边界值分析、等价类划分、错误推测等方法来设计测试用例
是一个完备的集合,它能够覆盖所有等价类以及各种边界值;需要从软件功能需求出发,全面地,无遗漏地识别出测试需求;最好是代码覆盖测试也全面的测试
- 如何设计测试用例?什么样子的测试用例是好用例?
掌握边界值分析、等价类划分、错误推测等方法来设计测试用例
是一个完备的集合,它能够覆盖所有等价类以及各种边界值;需要从软件功能需求出发,全面地,无遗漏地识别出测试需求;最好是代码覆盖测试也全面的测试
- 功能测试在 beta 版本对外的上线标准是什么?
测试用例全部跑完并且bug都已经关闭,然后业务验收后可以上线
三、
测试管理题
这类题目就是考验你作为测试leader或者测试负责人的管理能力了。
- 如果项目周期很短,测试人力匮乏,你是怎么协调的?
依据代码review的结果和影响范围,对测试内容进行适当的裁剪。
借助自动化工具的支持,提高测试案例的执行效率。
调整组内任务的优先级,进行人力协调,优先投入最紧要的项目。
必要的情况下加班
- 描述下你团队的测试分工
测试技术组和业务测试组。
测试技术组主要进行工具考研、工具开发和工具维护,为业务测试效率提升和基础建设做支撑。
业务测试组主要进行具体业务测试和工具的落地使用,具体测试内容覆盖功能、性能、兼容、稳定性、接口等。
- 对于团队成员,你是如何打kpi的?
一方面制定KPI的时候根据团队成员的职级和能力进行区分,制定合理且细化明确的指标,指标包含测试质量保证、测试效率提升、自动化事务、培训分享。
进行KPI考核的时候一方面依据KPI的指标达成度、达成时效打分,另一方面不在 KPI内的创新型事务会作为加分项。
四、
移动测试相关
如今是移动互联网的天下,谁家没有个应用,所以这一块基本都会问到,同时也会看你的简历,如果你没有做过,基本也不会问的太深,如果你是专门做这一块的,那么要好好准备了。
概念题
- 描述下web测试和移动应用测试的相同点和区别?
Web 测试和移动应用测试的共同点在于:都要覆盖接口、功能、兼容、性能、稳定和安全的测试。
差异点在于:兼容考虑的范围不一样,web重在PC系统和浏览器。
移动重在机型分辨率和系统版本。 另外移动用户要考虑手机特性相关的影响,网络、冲突、耗电和流量。
- 你是如何做应用的兼容性测试的?
硬件兼容:机型、分辨率、系统、版本、网络
软件兼容:输入法键盘、相机、安全清理工具类
数据兼容:低升高、高降低的用户信息和数据的兼容,还有跨平台的数据兼容
请讲出客户端下 3 个常用的性能指标的名称与具体含义?
iOS应用和Android应用测试有什么侧重点?
iOS 覆盖的分辨率和系统是有限的。
Android 比较碎片化,覆盖的机型版本比iOS 更多
android有各种定制rom,手机型号太多。
- 请讲诉移动应用的灰度是怎么做的?
内部二维码下载
白名单用户方式
国内小市场先上,国外用 Google Play的 β版,默认开放5%
后台控制的方式,开放给一定比例的用户
实践题
- 应用的闪退通常是什么原因造成的?如果应用闪退,Android 和 iOS 上是分别怎么抓取日志的?
OOM
代码异常如除以零、未对返回的列表做判空、数组越界、空指针异常及其他运行时异常
- 请简述移动应用在升级安装时候应该考虑的场景?
安装的途径:
通过手机助手安装
通过adb命令安装
通过应用市场安装
安装:
卸载安装
升级安装
升级后数据的一致性。如旧版本的账号密码仍能登录到新版本,保存在本地的信息能同步到新版本。如手势密码。
- 给你一个应用,请简述你会从哪些方面去测试?
- 如何测试一个应用的登录场景?
常规登录账户密码的字符类型校验、长度校验、匹配性校验
性能:响应时间、并发量
安全性:加密传输
各种登录方式优先级
不同设备之间切换登录方式
登录的有效时长
- 请描述下微信朋友圈发小视频的用例设计? ?
功能:
入口图标的标识度
进入和退出操作简易度
取景框大小
拍景和自拍切换
视频的像素限制
视频的时长限制
发送的进度提示
性能:
发送的时间
操作是否卡顿
兼容:
不同机型分辨率
不同系统版本
不同网络情况
不同流量情况
- 如果让你来测试扫码支付,你会考虑哪些场景?
卡的类型(一类户:借记卡、信用卡、各个开户行)
二类户:虚拟账户如微信里的零钱账户、支付宝的余额宝、电子账户
二维码的商户类型(微信、支付宝、汇宜、银联)
支付限额(单笔限额、累计限额、日累计、月累计、支付笔数)
退款(退款入口、退款进度、退款结果)
对账
资金流动(我方扣款数额正确,对方收款数额正确)数额及时效
支付结果展示、交易明细
支付接口安全性、接口的性能
异常情况(卡异常、余额不足)
连续扫码支付,每天的扫码支付次数限制及数额限制
二维码有效期
有无相机权限
前后置摄像头
像素低端的手机能否扫码成功
兼容性(不同手机厂商自带相机功能实现不一致)
五、
服务端测试相关
什么都离不开服务端,所以这是你逃不开的,一般来说服务端会问接口测试,性能测试,更深一点,埋点监控止血也会有。
- 请问你们公司是如何做接口测试的?
swagger 、 接口自动化脚本
Jemeter
接口测试质量评估标准是什么?
接口表现与接口文档的一致性
请求参数:必选和非必选、长度、字符类型、为空、缺失、组合、重复
返回数据:正常和异常
性能,1000以内并发时小于3s
请问你们公司是如何做性能测试的?请讲诉性能测试的相关指标?
压力测试和负载测试的区别
压力测试是在高负载情况下对系统的稳定性进行测试。是在高负载(大数据量、大量并发用户等)下的测试,观察系统在峰值使用情况下的表现,从而发现系统的功能隐患。
负载测试:多用户,用户数渐增,持续同时发同一业务请求,产出最大TPS
压力测试:多用户,资源使用饱和,持续同时发同一业务请求,产出系统瓶颈或使用极限
服务器中一般要监控哪些数据,如何监控的,怎么从监控数据中发现问题?
基础监控和应用监控。基础监控包括机器是否死机,cpu,内存,磁盘使用率等
应用监控包括日志监控、端口监控、进程数监控等。
- 接口测试质量评估标准是什么?
接口表现与接口文档的一致性
请求参数:必选和非必选、长度、字符类型、为空、缺失、组合、重复
返回数据:正常和异常
- 请问你们公司是如何做性能测试的?请讲诉性能测试的相关指标?
1.做性能需求分析,挑选了用户使用最频繁的功能来做性能测试,比如:登陆,搜索,提交订单,确定性能指标,比如:事务通过率为100%,90%的事务响应时间不超过5秒,并发用户为1000人,CPU和内存的使用率为70%以下
2.性能测试计划,明确测试时间(通常在功能稳定后,如第一轮测试后进行)和测试环境和测试工具的选择
3.编写性能测试用例
4.搭建性能测试环境,准备好性能测试数据
5.通过性能测试用例,编写性能测试脚本
6.性能测试脚本进行调优,设置检查点、参数化、关联、集合点、事务,调整思考时间,删除冗余的脚本等
7.设计性能测试场景,使用nmon工具监控服务器,运行测试场景
8.分析性能测试结果,如果有问题(性能瓶颈),收集相关的日志提单给开发修改
9.开发修改好后,回归性能测试
10.编写性能测试报告
相关指标:响应时间、并发数、吞吐率、资源利用率、TPS
- 压力测试和负载测试的区别
负载测试是模拟实际软件系统所承受的负载条件的系统负荷,
通过不断加载(如逐渐增加模拟用户的数量)或其它加载方式来观察不同负载下系统的响应时间和数据吞吐量、系统占用的资源(如CPU、内存)等,
以检验系统的行为和特性,以发现系统可能存在的性能瓶颈、内存泄漏、不能实时同步等问题
压力测试是在高负载情况下对系统的稳定性进行测试。
是在高负载(大数据量、大量并发用户等)下的测试,观察系统在峰值使用情况下的表现,
从而发现系统的功能隐患
负载测试:多用户,用户数渐增,持续同时发同一业务请求,产出最大TPS
压力测试:多用户,资源使用饱和,持续同时发同一业务请求,产出系统瓶颈或使用极限
- 服务器中一般要监控哪些数据,如何监控的,怎么从监控数据中发现问题?
基础监控和应用监控。
基础监控包括机器是否死机,cpu,内存,磁盘使用率等;应用监控包括日志监控、端口监控、进程数监控等。
- 假设系统A调用系统B,我把B的接口都mock了,进行性能测试,这样有什么好处和坏处?
好处:防止系统B出错引起测试错误;不会因系统B的开发进度影响测试;mock后可以快速返回结果,提高测试效率
坏处:很多情况下无法完全模拟出服务器的所有可能的返回情况,另外,mock掉了关联方之后,整个环境的连通性可能测试的不到位。
- 有一天早上打车高峰,滴滴服务端挂了大概30分钟,工程师抢修之后,马上上线,之后又挂了,请问有哪些原因会造成这个情况?
服务器内存不够、服务器超出负载、并发量太大、遇到恶意攻击
六、
自动化相关
自动化永远是避不开的,反正你入职的岗位要不要用自动化,你必须得会一点,加分项。这一块包括,自动化一些理念和自动化的工具使用。
理念和概念:
- 如何看待自动化和手动测试?怎样的一个比例才是健康的?
自动化适合做为回归测试的主要方式,新上线的功能一般都是用手动测试方式,
一些极端和用户习惯操作还是手动测试比较方便。尽可能线上稳定的功能模块都做成自动化,提供效率
- 你们公司的自动化投入产出比怎样?效益怎样?
自动化主要作为回归测试,减少测试时间。UI自动化么有弄,基本找不到bug 。
自动化测试用例的覆盖率多少?
完整运行一次自动化用例需要多久时间?
主要跑的是业务流,所以跑一次需要半个小时左右
- 什么是分层自动化?
金字塔结构, 最底层UnitTest,往上接口API/集成起来的service, 最上面UI自动化
- 你的测试数据是怎么准备的?
提前准备好,在代码里的yaml文件
- 测试脚本的维护成本是怎么样的?
业务不变的情况下,一般脚本都是不坏不动的
工具使用
WebDriver 相关
请问你的定位策略是什么?
请问如何实现用例失败或者异常时候需要截图?
请问如何分布式执行webdriver用例?
如何在脚本中执行 JavaScript 代码?
移动应用相关
Appium 的定位策略有哪些?
请简述Appium的原理
iOS 和 Android 的 UI 自动化的原理是什么?
当定位策略都失败的时候,你该怎么做?
请问Monkey测试的优缺点?
如果使用monkey发现了一个毕现闪退,请问怎么使用monkey重现它?
Jmeter
你用jmeter做什么测试?
如果有一个登录接口需要服务端返回参数,再带着这个参数去请求才能完成登录,用jmeter 怎么做?
---------- 最后,来点硬题,嚯嚯嚯! ----------
七、
硬 题
所谓硬题就是答案一般都是固定或者标准的,答案也不会模棱两可,包括:算法,编程,sql,linux
算法:
请写出冒泡排序
1~9999数列中数字3出现的次数。用递推方法解出。
从一个数组中找出前4个最大的数,用最优解。
写一段程序,删除字符串a中包含的字符串b,举例 输入a = "asdw",b = "sd" 返回 字符串 “aw”,并且测试这个程序。
写一个方法,把字符串转为数字,比如 str="1234",变成 int 1234。并且测试这个程序。
编程:
什么是面向对象编程?
讲下Java多线程的使用
有三个线程T1,T2,T3,怎么确保它们按顺序执行?
Thread 类中的start() 和 run() 方法有什么区别?
请写一个线程安全的单例模型
SQL:
说下左连接和右连接
介绍下什么是索引
使用sql生产10万条数据
给你一张表,根据要求写sql,这个题目比较多,自己百度吧。
Linux:
你常用的命令是什么?
用什么查看log?
如何查找一个文件大小超过5M的文件
如何查看进程?