接口测试问答(一)
1、软件接口是什么?
就是指程序中具体负责在不同模块之间传输或接受数据的并做处理的类或者函数。
2、http 和 https 协议的区别?
- https 协议需要到 CA(Certificate Authority,证书颁发机构)申请证书,一般免费证书较少,因而需要一定费用。
- http 是超文本传输协议,信息是明文传输。
- https 协议是由 SSL + http 协议构建的可进行加密传输、身份认证的网络协议,比 http 协议安全。
- http 和 https 使用的是完全不同的连接方式,用的端口也不一样,前者是 80,后者是 443。
3、get 和 post 的区别?
get 和 post 都是向服务器提交数据,并且都会从服务器获取数据。
- 传送方式:get 通过地址栏传输,post 通过报文传输。
- 传送长度:get 参数有长度限制(受限于 url 长度),而 post 无限制。
- get 产生一个TCP数据包(对于 get 方式的请求,浏览器会把 http header 和 data 一并发送出去,服务器响应 200 返回数据),post 产生两个 TCP 数据包(对于 post,浏览器先发送 header,服务器响应 100 continue,浏览器再发送 data,服务器响应 200 ok 返回数据)。
- get 请求参数会被完整保留在浏览历史记录里,而 post 中的参数不会被保留。
- 在做数据查询时,建议用 get 方式;而在做数据添加、修改或删除时,建议用 post 方式。
4、常见的 post 提交数据方式?
- application/x-www-form-urlencoded
- multipart/form-data
- application/json
- text/xml
5、cookie 和 session 的区别?
cookie 数据存放在客户的浏览器上,session 数据存放在服务器上。
- cookie 不是很安全,别人可以分析存放在本地的 cookie 并进行 cookie 欺骗,考虑到安全应当使用 session。
- session 会在一定时间内保存在服务器上。当访问增多,会比较占用你的服务器性能,考虑到减轻服务器性能方面应当使用 cookie。
- 单个 cookie 保存的数据不能超过 4K,很多浏览器都限制一个站点最多保存 20 个 cookie ,可以将登陆信息等重要信息存放为 session;其他信息需要保存,可以放在 cookie。
6、怎样设计接口测试用例?
- 是否满足前提条件。有些接口需要满足前提,才可成功获取数据。常见的,需要登录 Token。
- 是否携带默认值参数。
- 业务规则、功能需求。这里根据时间情况,结合接口参数说明,可能需要设计 N 条正向用例和逆向用例。
- 参数是否必填。
- 参数之间是否存在关联。有些参数彼此之间存在相互制约的关系。
- 参数数据类型限制。
- 参数数据类型自身的数据范围值限制。
7、接口测试都要测什么?
1)可用性测试:根据约定的协议、方法、格式内容,传输数据到接口经处理后返回期望的结果。
- 接口功能是否正确实现。
- 返回值测试 - 返回值除了内容要正确,类型也要正确,保证调用方能够正确地解析。
- 参数值边界值、等价类测试。
2)错误和异常处理测试。
- 输入异常值(空值、特殊字符、超过约定长度等),接口能正确处理,且按预期响应。
- 输入错误的参数,接口能正确处理,并按预期响应。
- 多输入、少输入参数,接口能正确处理,且按预期响应。
- 错误传输数据格式(如 json 格式写成 form 格式)测试。
3)安全性测试,主要指传输数据的安全性。
- 敏感数据(如密码、秘钥)等是否加密传输。
- 返回数据是否含有敏感数据,如用户密码、完整的用户银行账号信息等。
- 接口是否对传入的数据做安全校验,如身份 ID 加 token 类似校验。
- 接口是否防止恶意请求(如大量伪造请求接口致使服务器崩溃)。
4)性能测试,如接口的响应时间、并发处理能力、压测处理情况。
- 并发请求相同的接口(特别为 post 请求),接口的处理情况(如插入了相同的记录导致数据出错,引发系统故障)。
- 接口响应时长在用户可忍受的范围内。
- 对于请求量大的接口做压测,确定最大的瓶颈点是否满足当前业务需要。
8、在手工接口测试或者自动化接口测试的过程中,上下游接口有数据依赖如何处理?
用一个全局变量来处理依赖的数据,比如登录后返回 token,其它接口都需要这个 token,那就用全局变量来传 token 参数。
9、如何模拟弱网做测试?
Fiddler 和 Charles 都可以模拟弱网测试,平常说的模拟丢包,也是模拟弱网测试。
10、平常做接口测试的过程中发现过哪些 Bug?
- 常规错误,接口没实现,没按约定返回结果,边界值处理出错等。
- 输入异常值(空值、特殊字符、超过约定长度等),接口抛错,没做封装处理。
- 输入错误的参数、多输入、少输入参数,接口可能出现的错误。
- 安全性问题,如明文传输、返回结果含有敏感信息,没对用户身份信息做校验,没做恶意请求拦截等。
- 性能问题,如接口并发插入多条相同操作,响应时间过长,接口压测出现瓶颈等。
11、当一个接口出现异常时候,应如何分析异常?
- 先抓包,用 Fiddler(Charles)工具抓包,或者浏览器上 F12 调试工具。App 上的话,可以用 Fiddler(Charles)做代理,通过手机设置代理去看请求和返回报文。
- 查看后端日志,如 Linux 系统通过 xshell 连上服务器,查看接口日志,查看是否有报错信息。(命令:tail -f 日志文件)
12、列出几个 JMeter 监听器?
- 聚合报告
- 汇总报告
- 查看结果树
- 用表格查看结果
- 图形结果
- BeanShell Listener
- 摘要报告
测试岗面经 文章被收录于专栏
整理面试过程中的测试问答,常看常新,多多学习!有些问题是从其他人那里转载而来,会在文章下面注明出处,希望大家多多支持~~