• 9.面试中经常遇到的问题汇总(不定期更新)


    9.面试中经常遇到的问题汇总(不定期更新)

    主要包含:

    一、功能测试相关(B)

    二、测试用例相关(C)

    三、接口测试相关(A)

      1、常见的接口请求类型

      2、get请求和post请求的区别

      3、为什么要抓包?常用的抓包工具有那些(F12、Fiddler、Charles,wireshark),应用实践

      4、抓包工具的具体用途如下(5条以上):

      5、cookie、session和token的区别

      6、举例说明DDMS工具在快爆日常测试中的用途(5条以上)

       7、如何通过fiddler定位前后端bug?

      8、Http与Https的区别

      9、常用的HTTP方法有哪些?

      10、HTTPS工作原理

      11、常见的HTTP相应状态码

      12、Http与Https缺点? 

     

     

     

    四、数据库相关(D)

      1、数据库基础命令

     

    五、运维、系统相关(E)

      1、写10个简单的 linux 命令

     

    六、性能测试相关(F)

     

    七、自动化测试相关(G)

      1、ADB命令

     

    八、职业发展相关(H)

     

    九、测试经验相关(I)

      1、印象最深刻的一个BUG,以及对此问题的反思

       2、独立负责产品时,如何测试才能保证软件质量?

       3、技术人员老是犯低级错误,针对该情况你会如何处理?

     

     

     

     

    一、功能测试相关B

     

     

    二、测试用例相关C

     

     

    三、接口测试相关A

    1、常见的接口请求类型

    解答:

    get:从协议内容来看,有url和头部,url中带参数

    post:比get多一个body部分,body可以为空,且body和参数之间必须有空格

    从功能上看,get和post是没有区别的,get也可以增删改查,post也可以增删改查,只是习惯上,get用于查询数据,post用于提交数据,但是url中的参数是有限制的,当请求的参数体积比较大时,例如图片,只能放到body中,此时,就需要用post

     

    Http1.0:get、post、head

    Http1.1:get、post、head、options、put、delete、trace、connect

    常用的5种为:get、post、put、delete、trace

    options:返回服务器针对特定资源所支持的http请求方法,允许客户端查看服务器的性能

    head:向服务器索要与GET请求相一致的响应,只不过响应体不会被返回,这一方法可以在不必传输整个响应内容的情况下,就可以获取包含在响应消息头中的元信息。

    get:向特定的资源发出请求,并返回实体主题。

    post:向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的创建和/或已有资源的修改。

    put:向指定资源位置上传其最新内容, 从客户端向服务器传送的数据取代指定的文档的内容。

    delete:请求服务器删除Request-URI所标识的资源,也就是删除所指定的页面

    trace:回显服务器收到的请求,主要用于测试或诊断

    connect:HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器

     

    2、get请求和post请求的区别

    解答:

    >>>get请求:

    • 请求数据拼接URL地址后面
    • 请求数据长度有限制
    • 明文展示
    • 安全性低于post
    • 执行速度高于post
    • 常用于数据查询操作场景

     

    >>>post请求

    • 请求数据放在http请求体(body)中
    • 请求数据长度无限制
    • 可明文可密文
    • 安全性高于get
    • 常用于提交/修改数据场景

     3、为什么要抓包?常用的抓包工具有那些(F12、Fiddler、Charles,wireshark),应用实践

    抓包原因:

    >>>在程序运行时,数据都是以数据包的形式进行传输,发送和接收数据的过程中,可能发出的数据有错误的数据,也可能接收的包中有错误的数据,从而导致程序处理出错,因此我们直接抓取传输的数据包,通过其他工具或方法解析数据包中的原始数据,可以定位是否因为数据输错导致的程序出错,如果出错又是因为那一部分的数据出错等

     

    抓包工具:F12、Fiddler、Charles,wireshark

     

    >>>F12:

    • F12是浏览器自带的抓包工具,比较方便灵活经常使用 
    • 比如访问网站出现异常时,通过F12抓取报文分析具体问题
    • F12针对的是HTTP协议和HTTPS协议,可以确认网络数据包的状态以及通过分析请求报文和响应报文中的内容确认请求数据和响应数据是否正确,了解问题是前端问题还是后端问题

    >>>Fiddler/charles:常抓http/https协议

    >>>wireshark:其他协议,tcp、udp

     

    4、抓包工具的具体用途如下(5条以上):

    (1)查看本机IP
    (2)App抓包
    (3)弱网限制
    (4)修改请求头数据
    (5)修改响应包数据
    (6)设置网络延迟导致网络超时
    (7)频繁请求接口,查看服务器性能

    (8)过滤请求,查看接口

     

     

     

     

    5、cookie、session和token的区别

    cookie:

    · 表示用户身份,一小段文本信息

    · 服务端生成,发送客户端保存,正在客户端头信息中,可能被用户篡改。

    · 相当于钥匙,服务端用于验证钥匙是不是正确的。

    · cookie格式:key:value;key:value;key:value;

     

     

     

    session:

    · 标识用户用户身份

    · 服务端生成,服务端保存(产生sessionID,会发送sessionID给客户端在cookie里面),占用内存,增大服务器负担

    · 请求带上sessionID,服务器通过sessionID找到对应session

    · 常用redis

     

     

    token:

    · 标识用户身份一串字符串

    · 服务端加密生成的令牌,保存在客户端

    · 客户端请求带上token,服务端对token解密对比即可验证身份和密码

    · Token的目的是为了减轻服务器的压力,减少频繁的查询数据库,使服务器更加健壮。

    cookiesession的区别:

    2、存储容量不同:单个cookie保存数据小于等于4kb,一个站点最多保存20cookiesession没有上限,但是由于服务器内存性能考虑,session不要存太多东西,并有删除机制

    3、存取方式不同:cookie只能保存ASCII字符串;session能存取任何类型的数据

    4、隐私策略不同:cookie是对客户端是可见的,可以分析存放在本地的cookie并进去cookie欺骗;session存储在服务器上,对于客户端是透明的,不存在敏感信息泄露的风险

    5、服务器压力不同:

    >>>session是保存在服务端,每隔用户都会产生一个session。加入并发访问的用户太多,会产生很多的session,对服务器是一个很大的负担,耗费大量内存

    >>>cookie保管在客户端,不占用服务器资源。对于并发用户十分多的网站,session是一个很好的选择。

    6、浏览器的支持不同:session不支持新建窗口,只支持字窗口。而cookie都支持。 

    假设浏览器禁用cookiesession可以通过URL重写的方法实现。COOKIE就派不上用场。

     

     

     6举例说明DDMS工具在快爆日常测试中的用途(5条以上)

    (1)查看进程中的线程、堆信息
    (2)查看内存分配信息
    (3)文件管理,可以对文件进行导入导出
    (4)可模拟发短信,打电话,定位
    (5)查看特定页面的展示及布局元素构成
    (6)Logcat日志查看
    (7)测试设备截屏

     

     7、如何通过fiddler定位前后端bug?

     

    第一种情况:fiddler 在没有设置过过滤器的情况下面没有抓到请求信息,可能是前端页面元素没有绑定事件,也有可能是前端发生了JS 错误,这就是前端的bug 。

    第二种情况:若抓取到的请求返回的结果错误,我们要确认一下,是否是前端传输的数据是错的,是的话就是前端的bug ,如果确定传值是正确的话,那就是后端的bug 。

    第三种情况:若抓取到的请求返回值中间的http 的状态码是500的话,说明是后端服务器一般的内部错误,那这就是后端的bug 。

    第四种情况:若抓取到的请求返回值中间的http 的状态码是404的话,说明可能后端服务器根本就没有对应地址的服务,当然还有可能是前端JS 提交请求的时候提交了错误的地址。

     

    8、Http与Https的区别

    (1)HTTP 的URL 以http:// 开头,而HTTPS 的URL 以https:// 开头

    (2)HTTP 是不安全的,而 HTTPS 是安全的

    (3)HTTP 标准端口是80 ,而 HTTPS 的标准端口是443

    (4)在OSI 网络模型中,HTTP工作于应用层,而HTTPS 的安全传输机制工作在传输层

    (5)HTTP 无法加密,而HTTPS 对传输的数据进行加密

     

    (6)HTTP无需证书,而HTTPS 需要CA机构wosign的颁发的SSL证书

     

    9、常用的HTTP方法有哪些?

    GET: 用于请求访问已经被URI(统一资源标识符)识别的资源,可以通过URL传参给服务器

    POST:用于传输信息给服务器,主要功能与GET方法类似,但一般推荐使用POST方式。

    PUT: 传输文件,报文主体中包含文件内容,保存到对应URI位置。

    HEAD: 获得报文首部,与GET方法类似,只是不返回报文主体,一般用于验证URI是否有效。

    DELETE:删除文件,与PUT方法相反,删除对应URI位置的文件。

     

    OPTIONS:查询相应URI支持的HTTP方法。

     

    10、HTTPS工作原理

    (1)首先HTTP请求服务端生成证书,客户端对证书的有效期、合法性、域名是否与请求的域名一致、证书的公钥(RSA加密)等进行校验;

    (2)客户端如果校验通过后,就根据证书的公钥的有效, 生成随机数,随机数使用公钥进行加密(RSA加密);

    (3)消息体产生的后,对它的摘要进行MD5(或者SHA1)算法加密,此时就得到了RSA签名;

    (4)发送给服务端,此时只有服务端(RSA私钥)能解密。

     

    (5)解密得到的随机数,再用AES加密,作为密钥(此时的密钥只有客户端和服务端知道)

     

    11、常见的HTTP相应状态码

    (1)200:请求被正常处理

    (2)204:请求被受理但没有资源可以返回

    (3)206:客户端只是请求资源的一部分,服务器只对请求的部分资源执行GET方法,相应报文中通过Content-Range指定范围的资源。

    (4)301:永久性重定向

    (5)302:临时重定向

    (6)303:与302状态码有相似功能,只是它希望客户端在请求一个URI的时候,能通过GET方法重定向到另一个URI上

    (7)304:发送附带条件的请求时,条件不满足时返回,与重定向无关

    (8)307:临时重定向,与302类似,只是强制要求使用POST方法

    (9)400:请求报文语法有误,服务器无法识别

    (10)401:请求需要认证

    (11)403:请求的对应资源禁止被访问

    (12)404:服务器无法找到对应资源

    (13)500:服务器内部错误

    (14)503:服务器正忙

     

    12、Http与Https缺点?

    (1)通信使用明文不加密,内容可能被窃听,也就是被抓包分析。
    (2)不验证通信方身份,可能遭到伪装
    (3)无法验证报文完整性,可能被篡改
    (4)HTTPS就是HTTP加上加密处理(一般是SSL安全通信线路)+认证+完整性保护

    13、接口测试是怎么测试的?
    (1)接口正常调用,正常参数值对应返回值
    (2)数据库增删改查(重复提交相同参数、权限校验、删除不存在、删除无权限、删除在添加,分页)
    (3)异常验证(长度、类型、必填)
    (4)边界值、业务规则验证
    (5)接口安全性验证(鉴权)
    (6)接口性能、压力

    四、数据库相关D

    1、数据库基础命令:

    创建:create database 数据库名
    删除:drop database <数据库名>;
    增加:
    ①insert into 表名(字段名1,字段名2) VALUES(字段值1,字段值2)
    ②insert into 表名 VALUES (值1, 值2,....)
    消除重复行:select distinct 列名称 from 表名称
    更新:update 表名 set 字段名1=字段值1, 字段名2=字段值2, … WHERE 条件表达式
    删除:delete from 表名称 where 列名称 = 值
    查询:select .... from 表名 where 条件表达式1 and 条件表达式2
    查询:select 列1,列2,... from 表名 order by 字段名

     

     

     

     

    五、运维、系统相关E

    1、写10个简单的 linux 命令
    (1)mkdir 创建文件夹
    (2)rmdir 删除文件夹
    (3)rm 删除文件
    (4)mv 移动文件
    (5)cp 拷贝文件
    (6)cat 查看文件
    (7)tail 查看文件尾部
    (8)more 分页查看文件
    (9)cd 切换当前目录
    (10)ls 列出文件清单
    (11)reboot 重启
    (12)date 显示日期
    (13)cal 显示日历
    (14)ps 查看系统进程相当于 windows 的任务管理器
    (15)ifconfig 配置网络

     

     

    六、性能测试相关F

     

     

    七、自动化测试相关G

     

    1、ADB命令:

    adb start-server 启动
    adb kill-server 停止
    adb version 查看adb版本号

     

    adb devices--查看设备
    adb logcat--查看日志
    adb install xxx.apk--安装apk文件
    adb install -r xxx.apk--覆盖安装
    adb uninstall com.zhy.app--卸载App
    adb shell pm list packages--查看手机端安装的所有app包名
    adb shell screencap /sdcard/screen.png--屏幕截图

     

     

    八、职业发展相关H

     

     

    九、测试经验相关I

    1、印象最深刻的一个BUG,以及对此问题的反思

    解答:

    • 大牛(辉哥)开发的模块
    • 推送数据(各操作系统回车标识符不一致导致微信试推数据空白)
    • 原因:服务端使用“ ”进行标识回车换行,缺少一个控制符或者顺序不对都不能正确的另起一行。
    • 产生原因:各操作系统回车标识符不一致,如换行,Linux:“ ”、Windows:“ ”、Mac:“ ”
    • 举例:使用linux进行创建微信推送-内容,此时回车标识为“ ”,由于“ ”和“ ”不匹配,故无法匹配,该内容视为无效,导致推送内容为空

      反思:了解开发实现逻辑和代码执行逻辑

     

     2、独立负责产品时,如何测试才能保证软件质量?

     

    (1)了解产品需求和业务,不明确的地方及时沟通确认
    (2)依据对需求的理解列出测试点,覆盖所有的功能需求
    (3)考虑非功能需求(界面易用性测试、兼容测试、安全性测试、性能测试等)
    (4)大纲整理后内部评审确保测试点覆盖完整和正确性
    (5)测试执行过程中,注意bug编写规范提交有用的bug信息,便于开发处理bug
    (6)同时做好bug跟踪
    (7)若测试点没有覆盖但是出现bug地方要重点测试,且做好文档的跟踪和总结

     

    3、技术人员老是犯低级错误,针对该情况你会如何处理?
    需求评审过后,与开发确认以下几点内容:
    (1)达成这个需求有没有更好的解决方案
    (2)此项目修改点是什么?主要做了哪些功能?
    (3)代码是如何实现的。逻辑是怎样的?
    >>可以提出自己的见解、可能产生问题的情况、开发遗漏的情况。帮助开发完善开发逻辑
    (4)改动范围,测试范围,是否会影响到其他功能。
    (5)与产品、开发确认)测试过程中需要注意哪些点?异常情况会有哪些?
    (6)如何测试验证问题?验收标准是什么?

    >>>错误发生后
    (7)尝试总结、引导技术自我意识到日常的低级错误以及如何避免再犯低级错误
    (8)总结该技术常见低级错误,后续测试针对常见低级错误加强测试验收
    (9)向上级反馈报备,知悉上级

     

     

  • 相关阅读:
    C#反射
    做下一周计划
    OFFSET 函数
    微信跳一跳学习笔记
    跳一跳脚本代码搬运
    预测羽毛球赛成绩学习笔记
    将Python123中作业成绩绘制成雷达图
    Matplotlib库
    Numpy库
    第四周作业
  • 原文地址:https://www.cnblogs.com/sulanyuan/p/13360967.html
Copyright © 2020-2023  润新知