一、

软性热身题

这种题目,考的就是你的软性能力,比如表达能力,理解能力,协调能力,一个词概括就是套路。这类题目会在面试开始热身的时候,问一道两题,不会多,但是如果你能回答的有条不紊,清晰达意,那么就会给面试官留下非常好的印象,大致的题目如下:

  1. 自我介绍

  2. 介绍下你负责的公司项目

  3. 你有什么优点和缺点?

  4. 在同一个项目组内,你认为你怎么做会比另外一名测试更加优秀?

工作积累经验和此份工作的契合度; 
硬实力:列举专业技能 
软实力:协作能力、规划能力等 
自己对面试岗位的理解和自己未来能给他们带来什么 
你的测试技能能否发掘出更多问题 
你的测试技能是否能提高效能 
是否会主动推进问题,让上级领导省心 
你是否可以让程序更容易接受你的观点 
  1. 你为什么离开上家公司?离职原因(这个会在最后问)

二、

测试理论基础题

这类题目就是考测试工程师的基本能力了,比如测试计划,测试流程,如何bug,你做过哪些测试,一般我们认为这些能力做的再好都是应该的,不会有加分,但是只要做的不好,那就是个不合格的测试工程师了。这种题目也不会问的太多,大概题目如下:

  1. 请描述下你上个公司的测试流程?
需求分析讨论-确定测试策略-设计测试用例-测试用例评审-beta测试-uat测试-测试报告 
  1. 请描述下bug的几个要素?
1.没有实现需求说明书列出的功能 
2.出现了需要说明书提到不应出现的事情 
3.实现了需求说明书未提到的功能 
4.没有实现说明书中没有提到但应该实现的功能 
5.难于使用,运转速度很慢,用户认为没有达到预期 
  1. 白盒和黑盒的区别,你是怎么运用的?
黑盒测试:已知产品的功能设计规格,可以进行测试证明每个实现了的功能是否符合要求。利用其检查功能是否符合需求说明书,能够正常使用, 
白盒测试:已知产品的内部工作过程,可以进行测试证明每种内部操作是否符合设计规格要求,所有内部成分是否经过检查 
利用其检查程序模块的内部逻辑走向,主要覆盖程序内的逻辑。 
  1. 你是如何做测试分析?
掌握边界值分析、等价类划分、错误推测等方法来设计测试用例 
是一个完备的集合,它能够覆盖所有等价类以及各种边界值;需要从软件功能需求出发,全面地,无遗漏地识别出测试需求;最好是代码覆盖测试也全面的测试 
  1. 如何设计测试用例?什么样子的测试用例是好用例?
掌握边界值分析、等价类划分、错误推测等方法来设计测试用例 
是一个完备的集合,它能够覆盖所有等价类以及各种边界值;需要从软件功能需求出发,全面地,无遗漏地识别出测试需求;最好是代码覆盖测试也全面的测试 
  1. 功能测试在 beta 版本对外的上线标准是什么?
测试用例全部跑完并且bug都已经关闭,然后业务验收后可以上线 

三、

测试管理题

这类题目就是考验你作为测试leader或者测试负责人的管理能力了。

  1. 如果项目周期很短,测试人力匮乏,你是怎么协调的?
依据代码review的结果和影响范围,对测试内容进行适当的裁剪。 
 
借助自动化工具的支持,提高测试案例的执行效率。 
 
调整组内任务的优先级,进行人力协调,优先投入最紧要的项目。 
 
必要的情况下加班 
  1. 描述下你团队的测试分工
测试技术组和业务测试组。 
 
测试技术组主要进行工具考研、工具开发和工具维护,为业务测试效率提升和基础建设做支撑。 
 
业务测试组主要进行具体业务测试和工具的落地使用,具体测试内容覆盖功能、性能、兼容、稳定性、接口等。 
  1. 对于团队成员,你是如何打kpi的?
一方面制定KPI的时候根据团队成员的职级和能力进行区分,制定合理且细化明确的指标,指标包含测试质量保证、测试效率提升、自动化事务、培训分享。 
 
进行KPI考核的时候一方面依据KPI的指标达成度、达成时效打分,另一方面不在 KPI内的创新型事务会作为加分项。 

四、

移动测试相关

如今是移动互联网的天下,谁家没有个应用,所以这一块基本都会问到,同时也会看你的简历,如果你没有做过,基本也不会问的太深,如果你是专门做这一块的,那么要好好准备了。

概念题

  1. 描述下web测试和移动应用测试的相同点和区别?
Web 测试和移动应用测试的共同点在于:都要覆盖接口、功能、兼容、性能、稳定和安全的测试。 
 
差异点在于:兼容考虑的范围不一样,web重在PC系统和浏览器。 
移动重在机型分辨率和系统版本。 另外移动用户要考虑手机特性相关的影响,网络、冲突、耗电和流量。 
  1. 你是如何做应用的兼容性测试的?
硬件兼容:机型、分辨率、系统、版本、网络 
 
软件兼容:输入法键盘、相机、安全清理工具类 
 
数据兼容:低升高、高降低的用户信息和数据的兼容,还有跨平台的数据兼容 
  1. 请讲出客户端下 3 个常用的性能指标的名称与具体含义?

  2. iOS应用和Android应用测试有什么侧重点?

iOS 覆盖的分辨率和系统是有限的。 
 
Android 比较碎片化,覆盖的机型版本比iOS 更多 
 
android有各种定制rom,手机型号太多。 
  1. 请讲诉移动应用的灰度是怎么做的?
内部二维码下载 
 
白名单用户方式 
 
国内小市场先上,国外用 Google Play的 β版,默认开放5% 
 
后台控制的方式,开放给一定比例的用户 

实践题

  1. 应用的闪退通常是什么原因造成的?如果应用闪退,Android 和 iOS 上是分别怎么抓取日志的?
 OOM 
 
  代码异常如除以零、未对返回的列表做判空、数组越界、空指针异常及其他运行时异常 
  1. 请简述移动应用在升级安装时候应该考虑的场景?
安装的途径: 
 
通过手机助手安装 
 
通过adb命令安装 
 
通过应用市场安装 
 
安装: 
 
卸载安装 
 
升级安装 
 
升级后数据的一致性。如旧版本的账号密码仍能登录到新版本,保存在本地的信息能同步到新版本。如手势密码。 
  1. 给你一个应用,请简述你会从哪些方面去测试?
  1. 如何测试一个应用的登录场景?
常规登录账户密码的字符类型校验、长度校验、匹配性校验 
 
性能:响应时间、并发量 
 
安全性:加密传输 
 
各种登录方式优先级 
 
不同设备之间切换登录方式 
 
登录的有效时长 
  1. 请描述下微信朋友圈发小视频的用例设计? ?
功能: 
 
入口图标的标识度 
 
进入和退出操作简易度 
 
取景框大小 
 
拍景和自拍切换 
 
视频的像素限制 
 
视频的时长限制 
 
发送的进度提示 
 
性能: 
 
发送的时间 
 
操作是否卡顿 
 
兼容: 
 
不同机型分辨率 
 
不同系统版本 
 
不同网络情况 
 
不同流量情况 
 
 
  1. 如果让你来测试扫码支付,你会考虑哪些场景?
 卡的类型(一类户:借记卡、信用卡、各个开户行) 
 
   二类户:虚拟账户如微信里的零钱账户、支付宝的余额宝、电子账户 
 
  二维码的商户类型(微信、支付宝、汇宜、银联) 
 
  支付限额(单笔限额、累计限额、日累计、月累计、支付笔数) 
 
  退款(退款入口、退款进度、退款结果) 
 
  对账 
 
 资金流动(我方扣款数额正确,对方收款数额正确)数额及时效 
 
支付结果展示、交易明细 
 
支付接口安全性、接口的性能 
 
 异常情况(卡异常、余额不足) 
 
连续扫码支付,每天的扫码支付次数限制及数额限制 
 
二维码有效期 
 
  有无相机权限 
 
  前后置摄像头 
 
  像素低端的手机能否扫码成功 
 
兼容性(不同手机厂商自带相机功能实现不一致) 

五、

服务端测试相关

什么都离不开服务端,所以这是你逃不开的,一般来说服务端会问接口测试,性能测试,更深一点,埋点监控止血也会有。

  1. 请问你们公司是如何做接口测试的?
 
swagger 、 接口自动化脚本 
Jemeter 
 
接口测试质量评估标准是什么? 
 
接口表现与接口文档的一致性 
 
请求参数:必选和非必选、长度、字符类型、为空、缺失、组合、重复 
 
返回数据:正常和异常 
 
性能,1000以内并发时小于3s 
 
请问你们公司是如何做性能测试的?请讲诉性能测试的相关指标? 
 
压力测试和负载测试的区别 
 
压力测试是在高负载情况下对系统的稳定性进行测试。是在高负载(大数据量、大量并发用户等)下的测试,观察系统在峰值使用情况下的表现,从而发现系统的功能隐患。 
 
负载测试:多用户,用户数渐增,持续同时发同一业务请求,产出最大TPS 
 
压力测试:多用户,资源使用饱和,持续同时发同一业务请求,产出系统瓶颈或使用极限 
 
服务器中一般要监控哪些数据,如何监控的,怎么从监控数据中发现问题? 
 
基础监控和应用监控。基础监控包括机器是否死机,cpu,内存,磁盘使用率等 
 
应用监控包括日志监控、端口监控、进程数监控等。 
  1. 接口测试质量评估标准是什么?
接口表现与接口文档的一致性 
请求参数:必选和非必选、长度、字符类型、为空、缺失、组合、重复 
返回数据:正常和异常 
  1. 请问你们公司是如何做性能测试的?请讲诉性能测试的相关指标?
1.做性能需求分析,挑选了用户使用最频繁的功能来做性能测试,比如:登陆,搜索,提交订单,确定性能指标,比如:事务通过率为100%,90%的事务响应时间不超过5秒,并发用户为1000人,CPU和内存的使用率为70%以下 
2.性能测试计划,明确测试时间(通常在功能稳定后,如第一轮测试后进行)和测试环境和测试工具的选择 
3.编写性能测试用例 
4.搭建性能测试环境,准备好性能测试数据 
5.通过性能测试用例,编写性能测试脚本 
6.性能测试脚本进行调优,设置检查点、参数化、关联、集合点、事务,调整思考时间,删除冗余的脚本等 
7.设计性能测试场景,使用nmon工具监控服务器,运行测试场景 
8.分析性能测试结果,如果有问题(性能瓶颈),收集相关的日志提单给开发修改 
9.开发修改好后,回归性能测试 
10.编写性能测试报告 
相关指标:响应时间、并发数、吞吐率、资源利用率、TPS 
  1. 压力测试和负载测试的区别
负载测试是模拟实际软件系统所承受的负载条件的系统负荷, 
通过不断加载(如逐渐增加模拟用户的数量)或其它加载方式来观察不同负载下系统的响应时间和数据吞吐量、系统占用的资源(如CPU、内存)等, 
以检验系统的行为和特性,以发现系统可能存在的性能瓶颈、内存泄漏、不能实时同步等问题 
压力测试是在高负载情况下对系统的稳定性进行测试。 
是在高负载(大数据量、大量并发用户等)下的测试,观察系统在峰值使用情况下的表现, 
从而发现系统的功能隐患 
负载测试:多用户,用户数渐增,持续同时发同一业务请求,产出最大TPS 
压力测试:多用户,资源使用饱和,持续同时发同一业务请求,产出系统瓶颈或使用极限 
  1. 服务器中一般要监控哪些数据,如何监控的,怎么从监控数据中发现问题?
基础监控和应用监控。 
基础监控包括机器是否死机,cpu,内存,磁盘使用率等;应用监控包括日志监控、端口监控、进程数监控等。 
  1. 假设系统A调用系统B,我把B的接口都mock了,进行性能测试,这样有什么好处和坏处?
好处:防止系统B出错引起测试错误;不会因系统B的开发进度影响测试;mock后可以快速返回结果,提高测试效率 
坏处:很多情况下无法完全模拟出服务器的所有可能的返回情况,另外,mock掉了关联方之后,整个环境的连通性可能测试的不到位。 
  1. 有一天早上打车高峰,滴滴服务端挂了大概30分钟,工程师抢修之后,马上上线,之后又挂了,请问有哪些原因会造成这个情况?
服务器内存不够、服务器超出负载、并发量太大、遇到恶意攻击 

六、

自动化相关

自动化永远是避不开的,反正你入职的岗位要不要用自动化,你必须得会一点,加分项。这一块包括,自动化一些理念和自动化的工具使用。

理念和概念:

  1. 如何看待自动化和手动测试?怎样的一个比例才是健康的?
自动化适合做为回归测试的主要方式,新上线的功能一般都是用手动测试方式, 
一些极端和用户习惯操作还是手动测试比较方便。尽可能线上稳定的功能模块都做成自动化,提供效率 
  1. 你们公司的自动化投入产出比怎样?效益怎样?
自动化主要作为回归测试,减少测试时间。UI自动化么有弄,基本找不到bug 。 
  1. 自动化测试用例的覆盖率多少?

  2. 完整运行一次自动化用例需要多久时间?

主要跑的是业务流,所以跑一次需要半个小时左右 
  1. 什么是分层自动化?
金字塔结构, 最底层UnitTest,往上接口API/集成起来的service, 最上面UI自动化 
  1. 你的测试数据是怎么准备的?
提前准备好,在代码里的yaml文件 
  1. 测试脚本的维护成本是怎么样的?
业务不变的情况下,一般脚本都是不坏不动的 
  1. 工具使用

  2. WebDriver 相关

  3. 请问你的定位策略是什么?

  4. 请问如何实现用例失败或者异常时候需要截图?

  5. 请问如何分布式执行webdriver用例?

  6. 如何在脚本中执行 JavaScript 代码?

  7. 移动应用相关

  8. Appium 的定位策略有哪些?

  9. 请简述Appium的原理

  10. iOS 和 Android 的 UI 自动化的原理是什么?

  11. 当定位策略都失败的时候,你该怎么做?

  12. 请问Monkey测试的优缺点?

  13. 如果使用monkey发现了一个毕现闪退,请问怎么使用monkey重现它?

  14. Jmeter

  15. 你用jmeter做什么测试?

  16. 如果有一个登录接口需要服务端返回参数,再带着这个参数去请求才能完成登录,用jmeter 怎么做?

---------- 最后,来点硬题,嚯嚯嚯! ----------

七、

硬 题

所谓硬题就是答案一般都是固定或者标准的,答案也不会模棱两可,包括:算法,编程,sql,linux

算法:

  1. 请写出冒泡排序

  2. 1~9999数列中数字3出现的次数。用递推方法解出。

  3. 从一个数组中找出前4个最大的数,用最优解。

  4. 写一段程序,删除字符串a中包含的字符串b,举例 输入a = "asdw",b = "sd" 返回 字符串 “aw”,并且测试这个程序。

  5. 写一个方法,把字符串转为数字,比如 str="1234",变成 int 1234。并且测试这个程序。

编程:

  1. 什么是面向对象编程?

  2. 讲下Java多线程的使用

  3. 有三个线程T1,T2,T3,怎么确保它们按顺序执行?

  4. Thread 类中的start() 和 run() 方法有什么区别?

  5. 请写一个线程安全的单例模型

SQL:

  1. 说下左连接和右连接

  2. 介绍下什么是索引

  3. 使用sql生产10万条数据

  4. 给你一张表,根据要求写sql,这个题目比较多,自己百度吧。

Linux:

  1. 你常用的命令是什么?

  2. 用什么查看log?

  3. 如何查找一个文件大小超过5M的文件

  4. 如何查看进程?

 
 
3人点赞
 
 


作者:朱徽
链接:https://www.jianshu.com/p/efaa8b5d3dd5
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

评论关闭
IT干货网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!