测试工程师常见面试题

目录

测试

一,测试了解

二,bug缺陷管理

三,接口测试Jmeter,Fiddler

四,接口测试用例的设计:

五,单元测试 

六,弱 测试

七,web测试和app测试的异同 

八,APP性能测试指标

九,APP相关问题-java/android开发

十,请说明Android手机和IOS手机,系统有什么区别/p>

十一,IE空白页面原因 

十二,并发用户数和在线用户数的区别

十三,一台客户端有三百个客户与三百个客户端有三百个客户对服务器施压,有什么区别/p>

十四,测试前端页面,按钮不好使,不获取源码如何解决(提示接口测试)

十五,测试手机开机键 

十六,登陆界面测试

十七,支付流程测试

十八,其它测试用例编写

面试

一,自我介绍         

二,还有什么要问的/p>

三,自己的优点&不足

四,职业规划

五,为什么想做测试开发而不是研发工作

六,实习所得

七,对加班的看法

八,选择原因&薪资要求

九,还有什么要问的

十 ,一些小问题

十一,公司了解

十二,面试注意点

十三,签约前需了解

前端 

 一,为什么前端选择vue.js框架(和其他框架的对比)

 二、Cookie&Session&localstorage

 三、Cookie和Session区别

 四,常见的设计模式

Linu相关知识

一,Linux常用的指令

二,Linux chomd命令详解

三,一些shell命令1

四,一些shell命令2

五,一些shell命令3

六,linux查看进程

七,硬链接&软链接 

MySQL相关知识

一,MySQL常见命令   

二,事务ACID特性

三,主键&外键&索引

四、索引

五,乐观锁悲观锁&数据库锁机制

六,SQL基本操作

         七,事务的并发问题&隔离级别: 

八,数据库类型区别

九,数据库优化

十,剩余

十一,平时练习题

数据结构

一,常见排序算法

二,数组和链表的区别,以及用途/p>

三,常见的数据结构及优缺点

四,B树-平衡多路查找树/B-树

五,HashMap怎样解决散列(hash)冲突/p>

操作系统

一,进程&线程

二,进程&程序 

三,进程的状态 

四,通信&线程的同步互斥

五,进程调度算法

六,死锁

七,内存分配的算法 

八,中断和异常

计算机 络

 一,TCP和UDP的区别

二,流量控制

三,拥塞控制

四,http 和 https 有何区别/p>

五,常见的HTTP状态码

六,HTTP 

七,get和 post区别

八,从一个url地址到最终页面渲染完成

九,TCP三次连接

十,TCP四次挥手

十一,私有IP地址范围 

十二,HTTP跨域

十三,基础知识

智力题

C++ 

一,基础知识入门

二,错误总结

三,进制问题

四,位运算符

五,c函数

六,STL容器

七,虚函数和xxx函数

 八,深拷贝&浅拷贝&动态内存分配

九,申请&释放

十,指针和引用的区别

十一,static 作用

十三,僵尸进程&孤儿进程

十四,C++内存泄漏


参考牛客 和对应公司面经

 

数字规律:https://blog.csdn.net/sinat_38972110/article/details/82145600

编程特训:https://www.nowcoder.com/activity/oj(推荐《剑指offer》) 

牛客竞赛:https://blog.csdn.net/weixin_44264744/article/details/106525662

20春招总结:https://blog.csdn.net/weixin_44264744/article/details/106525662

牛客各大面经:https://www.nowcoder.com/activity/topics

测试岗各企业面经:https://www.nowcoder.com/discuss/84011

知乎没有软测经验办法: https://www.zhihu.com/question/26779409/answer/580740361

MySQL数据库面试题(2020最新版):https://blog.csdn.net/ThinkWon/article/details/104778621tm_medium=distribute.pc_relevant.none-task-blog-BlogCommendHotData-27.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendHotData-27.nonecase

深圳虾皮:https://app.mokahr.com/recommendation-apply/shopee/2964#/jobsage=4&isCampusJob=&zhineng=9055&_k=wlw2l3

 


测试


一,测试了解

  • 测试流程:需求评审,需求确定,制定测试计划,设计用例设计(概要+详细),测试环境,执行测试,BUG追踪,测试 告

  • 测试方法:黑盒—,白盒—(语句,判定,条件,判定/条件,条件组合,路径),灰盒

  • 测试类型:功能,非功能(兼容,性能,可靠,安全,压力–阈值–性能测试的一部分,负载–时长…..)

  • 测试阶段:(需求,概要,详细设计) 

    • 单元测试是对软件中的基本组成单位进行的测试(桩/驱动)

    • 集成测试是在软件系统集成过程中所进行的测试,其主要目的是检查软件单位之间的接口是否正确

    • 系统测试是对已经集成好的软件系统进行彻底的测试,以验证软件系统的正确性和性能等满足其规约所指定的要求

    • 验收测试:向软件的购买者展示该软件系统满足其用户的需求。测试数据通常是系统测试的测试数据的子集(a/b/正式

    • 通过运行程序测试软件称为动态测试.通过评审文档、阅读代码等方式测试软件称为静态测试,

  • 测试人员所需:基础理论知识,编程语言知识,工具使用经D验,计算机基础知识,测试框架知识JUnit

  •                          业务分析能力,缺陷洞察能力,团队协作能力,专业技术能力,逻辑思考,沟通表达,宏观把控

  • 软件测试的潜力和挑战: 111  222

  • 测试人员的核心竞争力:早发现问题早解决问题降低成本消耗,发现别人发现不了的问题,独一无二,沟通思考,快速学习

  • 黑盒测试:等价类划分,边界值分析,错误推测,因果图法,正交法,场景法(功能测试) //简单+代码覆盖率低

  • 白盒测试:逻辑覆盖法,程序插桩技术,基本路径法,符 测试,错误驱动测试(结构测试)

  • α测试:alpha,指软件开发公司组织内部人员模拟各类用户行对即将面市软件产品(称为α版本)进行测试

  • β测试:beta,软件的多个用户在一个或多个用户的实际使用环境下进行的测试,开发者不在测试现场,外部/非专业人员

  • 测试在开发中的任务:寻找BUG,避免软件开发过程中的缺陷,衡量软件品质,关注用户需求

  • 软件质量的六个特征:功能特征,可靠,易用效率,可维护,可移植

  • 如何写测试用例:

  • 测试用例的组成:用例编 ,用例标题,功能模块名称,前置条件,输入数据,操作步骤,预期结果,优先级,执行结果

                                 编写人,执行人,其他补充项

  • .软件的生命周期问题定义  可行性研究  需求分析  概要设计  详细设计  编码和单元测试   综合测试   软件维护

二,bug缺陷管理

  • 周期:New,Assigned已指派,Open,Fixed-修复,Pending Reset–待测试, Reset,Closed

  •            Reopen,Pending Reject-拒绝中,Rejected-被拒绝的,Postponed-延期的  (11)

  • 类型: 代码错误,界面优化,设计缺陷,安装部署, 性能问题,标准规范,,,,,

  • 等级:致命,严重,一般,建议(立即解决,高优先级,正常排队,低优先级

  • 如果测试过程中你发现一个bug,但开发人员认为不是一个bug怎么处理

    • 首先:明确开发说不是bug的理由,将问题提交到缺陷管理库里面进行备案,要获取判断的依据和标准

    • 如果是需求变更/不确定, 那就找产品经理确认是否是需求变更 

    • 如果开发说测试环境问题, 说明清楚测试环境问题是什么,按照他说的验证一遍, 如果确实如他所说, 关闭bug 

    • 如果开发说用户不存在这种使用场景,依据是什么出现会有什么不良结果这个bug 知会到测试经理,让其判定 

    • 小概率BUG,截图或保留证据

  • 前后端判定:

    • 通过请求与响应来判断

    • 先抓包看请求 文,对比接口文档,看请求 文有没问题,有问题就是前端发的数据不对

    • 请求 文没问题,那就看返回 文,返回的数据不对,那就是后端开发的问题 

  • 缺陷管理工具:禅道 

  • 自己遭遇的印象深刻的BUG:

  • 缺陷管理:严重等级判定,上线的影响,出现在那一端,是偶线还是A线,期望结果,错误表现,操作步骤,

  • bug记录的组成:内容,发现时间,测试条件(系统配置信息,环境,软件版本)

  •                            预期结果与实际结果,发现步骤,严重等级,发现位置等 

三,接口测试Jmeter,Fiddler

  • 方法:从开发那儿获取接口文档(功能接口、请求方式、请求URL、请求参数、参数类型,返回参数)若无,用fiddler抓包

  • 分类:程序内部/系统对外,webservice接口–走soap协议通过http传输    http api接口–走http协议  举例1  如何测–详细 

  • 定义:通过测试不同情况下的入参和相应的出参信息来判断接口是否符合相应的功能/安全性要求,是测试系统组件间接口的测试

  • 必要性:发现很多在页面操作上发现不了的BUG,检查系统的安全性,稳定性,异常处理能力,处理并发情况

  • 发现的BUG:边界值溢出导致输入和 

问题:在手工接口测试或者自动化接口测试的过程中,上下游接口有数据依赖如何处理—设置全局变量处理依赖的数据

           依赖于第三方数据的接口如何进行测试–通过mock工具来模拟第三方的数据返回,最大限度降低接口依赖

           当一个接口出现异常时候,你是如何分析异常的–1-通过fiddler抓包,查看请求和返回 文,2查看后端日志

           如何模拟弱 测试—-通过fiddler,平时说的模拟丢包即是

          依赖登录状态的接口如何测试—-在构建POST请求时添加必要的session或者cookie

四,接口测试用例的设计:

  • 是否满足前提条件:

    • 有些接口需要满足前提,才可成功获取数据。常见的,需要登录Token

    • 逆向用例:针对是否满足前置条件(假设为n个条件),设计0~n条用例

  • 是否携带默认值参数:

    • 正向用例:带默认值的参数都不填写、不传参,必填参数都填写正确且存在的“常规”值,其他不填写,设计1条用例

  • 业务规则、功能需求:

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

  • 参数是否必填:

    • 逆向用例:针对每个必填参数,都设计1条参数值为空的逆向用例

  • 参数之间是否存在关联:

    • 有些参数彼此之间存在相互制约的关系

  • 参数数据类型限制:

    • 逆向用例:针对每个参数都设计1条参数值类型不符的逆向用例

  • 参数数据类型自身的数据范围值限制:

    • 正向用例:针对所有参数,设计1条每个参数的参数值在数据范围内为最大值的正向用例

五,单元测试 

  • 工具:  111   eclipse中的outline窗口显示测试方法,Android JUnit Test测试

  • 定义:可以对任何类、接口、结构等实体中的字段、属性、构造函数、方法等进行

  • 分类:整体测试(类名右键)和单独测试(项目名上右键)   可行不

  • 问题:测试没有参数的函数,它可能还有别的输入,例如全局变量,成员变量,或调用子函数获得的输入(照常测试)

六,弱 测试

  • charles弱 模拟

  • chrome的webview调试工具弱 模拟

  • iOS手机自带Network Link Conditioner 弱 模拟

七,web测试和app测试的异同 

  • web项目:是b/s架构,基于浏览器的,只用更新服务器端,主要关心响应时间

  • app项目:是c/s的,必须要有客户端,需要服务器和浏览器端同时更新,关心流量/电量/CPU/GPU等,需考虑安装卸载更新

  •                 还要看屏幕分辨率,屏幕尺寸,还要看设备系统。考虑安装时的中断、弱 、安装后删除安装文件等异常场景

  •                 有专项测试:如 络、适配性   兼容不同(品牌/版本/分辨率/

八,APP性能测试指标

  • 内存:空闲状态、中等规格、满规格状态下的应用消耗    app测试面试题

  • 流量:首次启动,高负荷运行,连续运行n小时

  • 电量:待机时耗电,长时间连续使用耗电

  • 启动速度:首次启动,非首次启动,应用界面切换(安装卸载时间,页面加载时间)

    • CPU,页面切换速度,与服务器交互的 络速度

  • 工具:轻量接口自动化测试—jmeter   络抓包工具—Wireshark

九,APP相关问题-java/android开发

  • 如果广东用户头条app刷不出东西了: 络连接是否稳定/更新头条版本尝试/清除app缓存

  • 请问如果用户点击微博的关注图标但是app上面没有反应,应该怎么排查这个问题

    • 是否手机出现故障,是否手机缓存过多造成内存不够用

    • 是否手机 络连接不稳定(弱 /无 ),若是,有无 络差提示

    • 是否手机内存溢出(关注人数达上限否)

    • 是否是版本问题或者是安装包问题(更新系统,重新安装安装包)

  • 在debug模式下,查看app的线程列表,看线程是否卡主 

    • 1.在Eclipse Devices窗口,选中app对应的包名,然后点击debug图标(绿色的小虫子),然后切换到Debug视图。

    • 2.切换视图之后,可以看到debug下,app的线程列表。

    • 3.对于main线程(第一个线程),选中,并将其挂起Suspend。

    • 4.然后我们就可以看到,Suspend之后,main线程卡住的位置。

  • 测试工具: /性能监控器工具,流量-wiresh/弱 测试:

  •                   手机自带测试系统,单元测试:Junit等

  •                  通过真机调试,修改appdata中的数据,做最大值和异常值的测试

  •                  接口/性能测试–后端服务器:jmeter(主要关注响应时间,吞吐量,并发数,事务通过率等)

  •                  app性能测试–性能监控器(实时查看),长时间查看:打开性能监控面板,导出trace工具,借助开发者工具中的trace查看

  •                  微信小程序自动兼容ios和android手机,屏幕适配(分辨率/机型/版本)小程序自带调试系统,

十,请说明Android手机和IOS手机,系统有什么区别/span>

  • 运行机制不同:IOS采用的是沙盒运行机制,安卓采用的是虚拟机运行机制。

  • 后台制度不同:IOS中任何第三方程序都不能在后台运行;安卓中任何程序都能在后台运行,直到没有内存才会关闭。

  • 指令权限不同:IOS中用于UI指令权限最高,安卓中数据处理指令权限最高 

十一,IE空白页面原因 

  • 防火墙, 络信 ,DNS解析,输入错误,服务器拒绝访问

  • 访问拥塞,病毒,请求和响应被黑客截取,浏览器不兼容   

十二,并发用户数和在线用户数的区别

  • 在线用户数:用户同时在一定时间段的在线数量

  • 并发用户数:某一时刻同时向服务器发送请求的用户数

十三,一台客户端有三百个客户与三百个客户端有三百个客户对服务器施压,有什么区别/span>

  • 300个用户在一个客户端上,会占用客户机更多的资源,而影响测试的结果。线程之间可能发生干扰,而产生一些异常。
  • 300个用户在一个客户端上,需要更大的带宽。
  • IP地址的问题,可能需要使用IP Spoof来绕过服务器对于单一IP地址最大连接数的限制。
  • 所有用户在一个客户端上,不必考虑分布式管理的问题;而用户分布在不同的客户端上,需要考虑使用控制器来整体调配不同客户机上的用户。同时,还需要给予相应的权限配置和防火墙设置。

十四,测试前端页面,按钮不好使,不获取源码如何解决(提示接口测试)

  • 因为这是个前端界面,可以按F12打开开发者工具

  • 在network里按钮点击时请求有没有发出去,看状态码,有没有生成新文件之类的,确定是不是连接的问题。

  • postman模拟发包过去测试也行

十五,测试手机开机键 

  • 功能测试:按下开机键,屏幕能否亮起

  • 性能测试:按下开机键,屏幕能否在规定时间内亮起

  • 压力测试:连续多次按下开机键,观察屏幕是否能一直亮起,到多久时间失灵

  • 健壮性测试:给定一个中了病毒的手机或者是淘汰许久的老机子,安歇开机键观察屏幕能否亮起

  • 可靠性测试:连续按下开机键有限次数,比如1万次,记录屏幕未亮起的次数

  • 可用性测试:开机键按下费不费力,开机键的形状设计是否贴合手指,开机键的位置设计是否方便

十六,登陆界面测试

  十七,支付流程测试

  • 功能测试:              

    1. 用户名或密码有一方为空,验证是否登陆失败并且提示信息正确

    2. 用户名或密码两方全为空,验证是否登陆失败并且提示信息正确

    3. 输入正确的用户名和密码,点击提交按钮,验证是否能正确登录 

    4. 输入未注册的用户名和任意秘密,验证登录会失败,并且提示相应的错误信息

    5. 输入已注册的用户名和错误的密码,验证登录会失败,并且提示相应的错误信息 

    6. 存在验证码且具有时效性,需要分别验证时效内和时效外验证码的有效性 

    7. 存在验证码,考虑文字是否扭曲过度导大,考虑颜色(色盲使 用者),刷新按钮是否好用

    8. 如果存在验证码功能,在用户名和秘密都正确的前提下,输入正确的验证码,验证登陆是否成功

    9. 如果存在验证码功能,在用户名和秘密都正确的前提下,输入错误的验证码,验证登陆是否失败,并出现正确的提示信息

    10. 输入栏是否设置快速删除按钮

    11. 用户名和密码是否大小写敏感

    12. 声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年5月1日
下一篇 2020年5月1日

相关推荐