高级测试工程师面试题

【高级题】

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

面向对象编程就是把具有共性的事务抽象成属性和方法来进行编程。

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

start()方法可以用来启动线程,调用该方法,会创建一个新的线程,然后内部执行run()方法;不能多次调用,否则会抛异常;

直接调用run()方法,不会创建新的线程;可以进行多次调用。

3.说下左连接和右连接

比如有两张表 A,B。左连接是把符合条件的所有A表的内容列出来,B表如果没有内容匹配用NULL代替。

右连接是符合条件的所有B表的内容列出来,A表如果没有内容匹配用NULL代替。

4.介绍下什么是索引

索引是由表或者视图中的一列或多列生成的键,可以加快在表或者视图中检索行的速度

【接口测试相关】

1.什么是接口测试?

接口测试是测试系统组件间接口的一种测试。接口测试就是测试不同系统或模块之间资源交互是否正确。

2.为什么要做接口测试?

因为在大部分系统和产品中,资源数据都是核心,所以接口是需要要测试的,并且接口中大部分内容都是数据,通过数据的对比可以推测系统和产品的逻辑,测试接口就是测试逻辑。所以很必要做接口测试。

3.什么时候做接口测试?

  a.出现bug,通过接口测试,清晰找到bug的源头,是前端还是后端的bug;

  b.回归测试,利用接口测试原有的接口是否正常,保证之前的业务流程没有受影响;

  c.接口开发完成后,可以做接口测试。

4.接口测试的工具有哪些

soapUI、postman、jemeter、insomnia、paw。

5.接口测试的流程是什么?

    a.接口的通过性验证:数据正确输入,是否正确返回结果。测试接口的正常场景和异常场景;

  b.边界测试:不按照你接口文档上的要求输入参数,测试其边界情况。比如说必填的参数不填,输入整数类型的正常,超过参数取值范围等;

  c.参数组合:如果接口中有参数需要组合用的,两个参数是组合使用,测试其各种情况;

  d.异常验证:测试幂等情况,并发情况,事务测试等异常情况;

  e.接口安全:绕过验证,敏感信息加密等情况;

  f.性能测试:响应时间、并发数、吞吐量、服务器资源利用率。

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

swagger 、 接口自动化脚本。

7.接口测试质量评估标准是什么?

接口表现与接口文档的一致性;

请求参数:必选和非必选、长度、字符类型、为空、缺失、组合、重复;

返回数据:正常和异常。

【自动化测试相关】

1.如何看待自动化和手动测试?怎样的一个比例才是健康的?

自动化适合做为回归测试的主要方式,新上线的功能一般都是用手动测试方式,一些极端和用户习惯操作还是手动测试比较方便。尽可能线上稳定的功能模块都做成自动化,提供效率。

2.你们公司的自动化投入产出比怎样?效益怎样?

自动化主要作为回归测试,减少测试时间。UI自动化没有弄,基本找不到bug 。

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

主要跑的是业务流,所以跑一次需要半个小时左右。

4.什么是分层自动化?

金字塔结构, 最底层UnitTest,往上接口API/集成起来的service, 最上面UI自动化。

5.你的测试数据是怎么准备的?

提前准备好,在代码里的yaml文件。

6.测试脚本的维护成本是怎么样的?

业务不变的情况下,一般脚本都是不坏不动的。

【性能测试相关】

1.请问你们公司是如何做性能测试的?请讲诉性能测试的相关指标?

    a.做性能需求分析,挑选了用户使用最频繁的功能来做性能测试,比如:登陆,搜索,提交订单,确定性能指标,比如:事务通过率为100%,90%的事务响应时间不超过5秒,并发用户为1000人,CPU和内存的使用率为70%以下;

  b.性能测试计划,明确测试时间(通常在功能稳定后,如第一轮测试后进行)和测试环境和测试工具的选择;

  c.编写性能测试用例;

  d.搭建性能测试环境,准备好性能测试数据;

  e.通过性能测试用例,编写性能测试脚本;

  f.性能测试脚本进行调优,设置检查点、参数化、关联、集合点、事务,调整思考时间,删除冗余的脚本等;

  g.设计性能测试场景,使用nmon工具监控服务器,运行测试场景;

  h.分析性能测试结果,如果有问题(性能瓶颈),收集相关的日志提单给开发修改;

  i.开发修改好后,回归性能测试;

  j.编写性能测试报告;

  相关指标:响应时间、并发数、吞吐率、资源利用率、TPS。

2.压力测试和负载测试的区别

负载测试是模拟实际软件系统所承受的负载条件的系统负荷,通过不断加载(如逐渐增加模拟用户的数量)或其它加载方式来观察不同负载下系统的响应时间和数据吞吐量、系统占用的资源(如CPU、内存)等,以检验系统的行为和特性,以发现系统可能存在的性能瓶颈、内存泄漏、不能实时同步等问题。

压力测试是在高负载情况下对系统的稳定性进行测试。是在高负载(大数据量、大量并发用户等)下的测试,观察系统在峰值使用情况下的表现,从而发现系统的功能隐患。

负载测试:多用户,用户数渐增,持续同时发同一业务请求,产出最大TPS;

压力测试:多用户,资源使用饱和,持续同时发同一业务请求,产出系统瓶颈或使用极限。

3.服务器中一般要监控哪些数据,如何监控的,怎么从监控数据中发现问题?

基础监控和应用监控。

基础监控包括机器是否死机,cpu,内存,磁盘使用率等;应用监控包括日志监控、端口监控、进程数监控等。

4.假设系统A调用系统B,我把B的接口都mock了,进行性能测试,这样有什么好处和坏处?

好处:防止系统B出错引起测试错误;不会因系统B的开发进度影响测试;mock后可以快速返回结果,提高测试效率。

坏处:很多情况下无法完全模拟出服务器的所有可能的返回情况,另外,mock掉了关联方之后,整个环境的连通性可能测试的不到位。

5.有一天早上打车高峰,滴滴服务端挂了大概30分钟,工程师抢修之后,马上上线,之后又挂了,请问有哪些原因会造成这个情况?

服务器内存不够、服务器超出负载、并发量太大、遇到恶意攻击。

关注公众号:IT赶路人,免费获取更多IT信息

你可能感兴趣的:(高级测试工程师面试题)