接口测试

  1. 接口测试定义和分类

接口:数据传输的通道,分为系统内部接口和外部接口(第三方接口)

常见接口类型/协议:1. HTTP类型/协议:通过GET/POST等方法获取数据,在数据处理上效率较高;2. Webservice类型/协议:通过soap协议来获取数据,比起HTTP来说,能够处理更加复杂的数据类型(本质上也是HTTP协议封装的)。


HTTP Request
HTTP Response

接口测试:测试系统组件间接口的一种测试。

接口测试的价值:前端开发晚于后端,后端已经开发完了,没有前端,为了提前介入测试,用工具模拟前端,缩短测试周期:接口通信;
另一方面,接口测试降低测试风险,防止跨过前端直接访问后端设计的不安全因素得到有效验证;

F12,fiddler,Wireshark:抓包工具

Get和Post请求方式的区别?
Get请求数据在请求头的URL内,Post请求数据在请求体;

剖析cookie session
  1. 接口测试流程、需求分析、用例编写
    接口测试流程:获取接口需求>编写接口用例/评审>搭建项目环境>执行接口测试>完成测试报告>结束

依据:接口文档
Json是一种数据格式,{键值对}。
xmal也是一种数据格式,XX

分模块测试;

测试用例组成:序号、模块、用例标题、请求头、请求方式、接口地址、参数输入、期望结果、数据库结果、实际结果、备注

  1. 接口工具——Jmeter(Apache Jmeter 5.2.1)


    接口测试常用工具
Jmeter常用测试元件

soup协议:http+xml格式

JDBC:Java数据库连接(Java Database Connectivity),是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。
mysql驱动:com.mysql.jdbc.Driver

Jmeter 参数化
法一:‘用户定义的变量’(元件)进行设置,然后调用格式:${调用的变量名}
弊端:自己手动添加,比较麻烦;

法二:'CSV数据文件设置'(excel表格多组数据)
线程数:X(X组数据)
文件名、变量名词(不同变量名称用英文 , 分开)、调用变量名:${调用的变量名}

法三:'CSV数据文件设置'(txt表格多组数据)----用英文逗号隔开数据
线程数:X(X组数据)
文件名、变量名词(不同变量名称用英文 , 分开)、调用变量名:${调用的变量名}

法四:随机数,函数助手对话框
Tools>函数助手对话框>选择一个功能 eg:__RandomString,Random String length:11,Chars to use for random string generation: 0123456789,点击‘生成’ >${__RandomString(11,0123456789)}

应用手机号:13${__RandomString(9,0123456789)}

Jmeter 关联 数据提取:后置处理器 json 正则
'JSON提取器' (元件)(多个变量 用 ; 隔开)
可以百度:JSON在线解析及格式化验证
.data.token_info.token(赋值到token)
调用:{token}

‘正则表达式提取器’(元件)

RegExp Tester
正则表达式
正则表达式

Jmeter 断言:通过对比服务器返回的响应数据,判断请求是否成功
‘响应断言’(元件)

响应断言

接口自动化(Python)
接口冒烟测试流程的自动化


冒烟接口测试
  1. 接口项目总结
    按模块编写用例;
  1. 面试题汇总
    你对接口测试是怎么理解的?
    接口的功能是数据传递的通道,是实现某个功能的一个函数。接口参数就是函数的参数,接口的响应数据就是函数的返回值。
    接口分内部接口和外部接口,内部接口是系统内不同模块的接口,外部接口是跨平台,涉及第三方,如支付接口。
    接口测试就是绕过前端。直接对接接口调用,查看接口功能实现是否正常。

你们什么时候做接口测试?为什么?
一般后端接口开发出来,就开始测。

  1. 代码开发初期,UI和Web页面设计还没有到位,提前介入测试可以更早地发现底层的问题;2. 处于安全考虑,前端进行限制是比较容易绕过的,需要同样测试后端的安全逻辑问题;

HTTP协议常见返回码?
200 正常,服务器正常响应;
404: 客户端问题;
504: 服务器超时;

接口测试用例怎么设计?
了解接口需求,弄懂功能及业务实现逻辑。

  1. 保证接口功能正常实现;2. 考虑接口异常验证:必填项、长度、类型等;3. 接口的业务逻辑,比如必须执行了回款计划,才能修改标的状态到还款中; 4. 接口的安全验证,例如注册接口中传入密码需要加密;5. 接口性能测试;

除了Jmeter,你还了解哪些接口测试工具?
postman, soapui, loadrunner, soapui协议一般采用soapui测试;loadrunner做性能测试比较多;

get和post请求方法的区别?
Get请求方式的请求数据拼接在URL地址后,为明文,数据长度有限,安全性不如post,但执行速度快,一般应用在数据查询场景;
Post请求方式,请求数据位于请求体,可明文可加密,长度不受限制,数据安全性高,一般应用在修改数据场景中;

Jmeter如何做接口测试?用到哪些测试元件?
比如注册接口,测试计划下面添加线程组,添加http请求,进行相对应的接口请求地址、请求方式、传入参数的设置;添加请求头,设置数据传递格式json,然后添加查看结果树,用来查看接口测试过程中、请求、响应信息;点击运行,关注查看结果树中响应结果中的status、code、msg信息是否跟预期一致,同步关注数据库变化,像注册会在数据库项目表中插入一条用户信息,要确保插入表的各个字段数据的正确性;碰到报错的时候,需要通过日志排查问题。

比如说有两个请求,上一个请求的结果作为下一个请求的参数传入,怎么实现?
关联。可以采用正则表达式提取器或者json提取器。
例如登录、加标两个请求,若加标需运行成功,必须从登录的响应结果中获取到token再传递到加标的请求头,因为返回数据格式是json,可以用json提取器,输入json表达式,提取token值,再做变量引用。

你可能感兴趣的:(接口测试)