Skip to content

接口测试

接口测试用例的编写要点有哪些?

1)输入和输出,合法性,参数校验,边界等
2)业务逻辑和功能实现
3)数据库校验
4)性能测试(接口tps、响应时间等)
5)兼容性,新老数据的兼容
6)安全性,敏感信息加密,恶意攻击的防范,权限控制等
7)幂等性等

你是怎么测试接口的

A. 先了解接口的业务功能、入参出参以及接口对应的数据存储
B. 再依据接口测试用例设计方法完成接口测试用例的设计
C. 最后依据测试用例使用接口测试工具完成接口测试,并在测试过程中通过查看响应数据确保接口测试结果的正确性

get和post的区别

区别如下: get请求的参数是放在url里,post请求参数是在请求体里 get请求可以被浏览器缓存,post请求不能被缓存 get请求参数放在url里,url的长度是受限的,最大为2048个字符。而post接口长度没有限制 get请求参数放在url里,安全性比较差;post请求参数放在body中,安全性相对较好 get请求可以直接通过浏览器访问,支持刷新和后退。post请求不能直接使用浏览器访问,刷新后数据要重新发送。

http和https的区别

  1. HTTP 信息是明文传输的,而 HTTPS是具有安全性的加密传输
  2. HTTP 标准端口是 80 ,而 HTTPS 的标准端口是 443
  3. HTTP 无需证书,而 HTTPS 需要认证证书
  1. cookie数据存放在客户端的,session数据放在服务端的
  2. cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗
  3. session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的内存
  4. 单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie,而session 则存储与服务端,浏览器对其没有限制。

token是做什么用的

token就是令牌,是一个字符串,主要是用于做客户端身份认证,通常登录成功后,服务端会返回 token,客户端需要把token值保存下来,后续请求其他接口时,需要在请求中携带这个token值,只有 服务端对token校验通过后,才允许访问。

接口测试有没有测试出什么问题

接口测试中发现的bug,大多都是参数校验、代码逻辑、边界条件、数据错误方面的问题。 比如,新增促销活动接口,满减金额为空也能保存成功,原因是后端代码没有对满减金额参数做空值判 断 比如,活动列表接口,查询出来的活动数据少了第一条,原因是SQL中limit条件传入起始序号是1而不是 0 比如,更新活动接口,接口提示更新成功,但是数据库中的update_time字段没有更新成最新时间,原 因是开发忘记更新这个字段

fiddler的工作原理

fiddler其实就是起到了一个代理的作用,它可以监听客户端和服务端的通信,把请求和响应的数据都抓 下来,还可以做拦截,修改报文等

工作中用fiddler来做什么

a) 当测试出bug时,可以通过fiddler抓包,分析bug是客户端还是服务端的问题
b) 当做接口测试时,通过抓包获取接口的入参和返回值,包括接口之间的数据关联
c) 当对客户端做弱网测试,可以修改fiddler的网络模拟参数,模拟出不同的网络速度
d) 当需要对客户端测试一下特殊场景,可以使用fiddler设置响应断点(bpu、bpafter),修改服务端响 应的数据,测试客户端对应的逻辑处理,比如修改服务端返回的状态为500 参考fiddler文档中的弱网测试模块和断点模块,必须掌握对应设置方法!!!

为什么要做接口测试

A、 在公司里,客户端和服务端通常是由不同的团队开发的,在项目开发过程中,客户端和服务端开发 的进度不一致,比如服务端先开发完了,这个时候可以先对服务端进行接口测试,确保服务端逻辑和返 回数据是正确的,然后再测试客户端。另外某些测试部门,专门测试服务端开发团队,因此,他们的测 试对象就是接口。
B、在测试某些业务时,不能仅仅通过前端来测试,比如用户注册,前端限制了用户名不能为空,但是 有些人可能通过工具绕过前端直接调用服务端接口,如果服务端没有做相关的逻辑判断,就会造成数据 错误。包括接口数据传输过程中是否对关键信息加密等。所以必须针对服务端接口单独做测试。
C、 在开发提测后,可以先通过工具把服务端的接口测试跑一遍,确保接口测试用例都是通过的,快速 判断服务端接口是否符合预期。然后再通过UI界面进行测试。否则接口有bug,前端页面必定有bug。

说一下你知道的HTTP状态码,以及它们代表什么意思

状态码 解释 200 正常
307 重定向,服务器要求客户端重新请求一个新的URL
401 未授权,需要身份认证
403 服务端禁止访问
404 请求的资源未找到,比如url写错了,页面被删除等
405 请求方法不允许,比如服务端的POST类型,客户端使用GET方式请求
5xx 服务端内部问题

一个接口请求不通(或页面无法访问)该如何排查

请求不通,可能的原因是: ip或者端口号或者url写错了
客户端和服务端网络不通
服务端项目根本没有部署起来
服务器的防火墙拦截了
服务端程序内部发生了错误
没有访问权限(比如缺乏token、cookie之类)
客户端设置了网络代理
如果是浏览器访问,是不是绑定了错误的hosts

接口测试中的加密参数如何处理

1> 先了解接口使用的加密方式(md5、rsa…) 2> 检查接口测试工具是否支持这种加密方式,如果支持的话,直接使用对应功能就行了(比如Jmeter支 持md5); 如果加密方式是公司内部特有的算法,可以在接口测试工具中调用公司的加密算法代码来实现加密。

接口自动化的优缺点

优点: 1> 提高回归测试效率 2> 开发提测时,先跑下接口自动化脚本,提前发现功能bug 缺点: 1> 需要提前写脚本,有一定的维护成本 2> 不能覆盖所有的测试用例和所有场景

接口自动化如何做断言

1、首先描述要断言的内容:响应时间、状态码、响应值等 2、其实结合你选用的框架进行描述,具体是怎么去断言的,是否会涉及到查数据库断言等

接口测试用例怎么设计?

1、从功能的角度,考虑正常场景和异常场景 2、考虑业务规则的边界以及输入/输出参数的边界,覆盖所有必选参数,组合所有可选参数,以及参数的不同数据类型等 3、考虑接口的幂等性(重复提交),并发测试、事务、分布式、环境异常以及大数据量等场景 4、查看接口的性能 5、考虑接口的安全性相关的内容,是否存在sql注入之类等安全漏洞,敏感信息是否加密返回/不返回

你是怎么测试接口的?

考点: 是否具备接口测试实际经验、是否熟悉接口测试的流程、是否熟悉接口测试的具体步骤、是否熟悉接口测试用例设计 参考答案: 先了解接口的业务功能、入参出参以及接口对应的数据存储,再依据接口测试用例设计方法完成接口测试的设计,用例设计先业务场景再参数判断,比如参数的边界值、格式、组合等等,最后依据测试用例,使用接口测试工具完成接口测试,并在测试过程中查看日志及数据以确保接口测试结果的正确性

没有接口文档如何做接口测试?

考点: 对接口测试的熟悉程度,对个人技术水平的综合考量 参考答案: 按照自己对业务的理解,进行抓包,自己整理接口文档,然后与开发核对一遍 检查一下后端代码是否有集成swaggerui的文档,swagger理论上来说不能直接作为接口文档来使用,展示的信息不够完善,但是也总比没有好

接口测试用例的编写要点有哪些?

考点: 接口测试用例设计 参考答案: 1)必填字段:请求参数必填项、可选项 2)合法性:输入输出合法、非法参数 3)边界:请求参数边界值等 4)容错能力:大容量数据、频繁请求、重复请求(如:订单)、异常网络等的处理 5)响应数据校验:断言、数据提取传递到下一级接口…  6)逻辑校验:如两个请求的接口有严格的先后顺序,需要测试调转顺序的情况 7)性能:对接口模拟并发测试,逐步加压,分析瓶颈点 8)安全性:构造恶意的字符请求,如:SQL注入、XSS、敏感信息、业务逻辑(如:跳过某些关键步骤;未经验证操纵敏感数据)

接口测试中的加密参数如何处理?

考点: 是否熟悉加解密方式 是否具备处理加密参数的能力 是否实际应用过 参考答案: 首先了解参数的加解密方式,常见的有md5、aes、rsa等等,如果是aes的需要找开发要私钥,如果是rsa需要找开发要公钥和私钥,然后在接口测试工具中引用加解密的代码实现参数的加解密过程,实现参数加解密的处理;如果公司有自定义的加密算法则需要找开发要加解密的代码实现,然后在测试工具中使用。

简述Jmeter工具如何做接口之间的关联?

接口关联指的就是一个接口要使用另一个接口的返回值作为参数,这种我们在jmeter中叫做关联。 关联的实现方式有多种: 1、使用正则表达式提取器获取上一个请求的响应结果中的某个值,储存在某个变量中,然后下一个接口使用变量进行引用 ​2、使用json提取器获取上一个请求的响应结果中的某个值,储存在某个变量中,然后下一个接口使用变量进行引用 3、使用beanshell后置处理器,解析响应结果存储在变量中,然后下一个接口使用变量进行引用 ​跨线程组关联则需要将关联字段设置为全局属性

你们公司业务中,自动化和手工分别占比多少?分别用来做什么业务?

首先各公司自动化和手工的占比取决于对自动化测试的投入,这个问题的回答建议做好数据,比如我们的项目共有20个模块,功能测试用例总计1000,从其中分析出要实现的自动化用例300条,那么自动化的占比就出来了。 那么哪些测试用例会被用来做自动化: 稳定模块的用例、功能优先级高的用例、重要主流程的用例等。 ​手工测试一般用来做新功能测试业务,自动化一般用来做旧的功能用来回归业务

cookie和session的区别?

会话(session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话。cookie通过在客户端记录信息确定用户身份,session通过在服务器端记录信息确定用户身份 区别:
1、数据存放位置不同:
cookie数据存放在客户的浏览器上,session数据放在服务器上。
2、安全程度不同: cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗,考虑到安全应当使用session。
3、性能使用程度不同:
session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,考虑到减轻服务器性能方面,应当使用cookie。
4、数据存储大小不同:
单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie,而session则存储于服务端,浏览器对其没有限制。

自动化测试中用例依赖的数据如何构造?

不管是接口自动化还是ui自动化都会存在自动化case依赖数据如何构造的问题,可以从三个方面去考虑:
第一个是​在测试前采用接口去构造需要的数据;
第二个是使用初始化sql去初始化数据,但是如果说表结构复杂的话,sql编写也是比较大的工作量;
第三个方式是提前准备好一套数据,并且将该数据对应的数据库进行备份,在之后每次执行测试前先备份当前数据库数据,再导入之前的测试数据,再执行测试,测试执行完后再恢复原有的数据。
​可参考之前写的文章:​如何构造测试数据?

面试被问的问题

1.有了postman,jmeter还有开源的接口自动化平台,为什么还要写代码来做自动化,你们这套自动化框架的意义是什么?
2.说下接口自动化分别用了哪些框架,怎么实现的,你主要负责哪些部分?
3.你们这套框架最难的技术点有哪些?
4.搭建框架过程中遇到哪些问题,怎么解决的?
5.数据驱动怎么做的?关键字驱动怎么做的?
6.这套框架覆盖了开发多少业务代码,怎么统计出来的?