IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> 什么是接口测试?接口测试基础、案例及Json格式详解 -> 正文阅读

[Java知识库]什么是接口测试?接口测试基础、案例及Json格式详解

在这里插入图片描述很多小伙伴可能会说接口真的有测试的必要吗?

我只要把功能测试好了不就ok了吗?

答案是肯定的,在中大型项目中,后端、前端多人协同开发过程中,接口测试是必要的。

在这里插入图片描述

什么是接口(API)测试?

API全称(Application Progarmming Interface),接口是一个位于复杂系统之上能简化任务,像中间人一样不需要你了解详细的所有细节。比如用户登录页面,只需要调用登录接口,就可以达到登录系统的目的。

接口返回的数据类型都是json,json是一种通用的数据类型.

什么是接口自动化?

接口自动化测试:让程序代替人为对接口项目进行自动化验证测试的过程

接口测试是一种功能测试,也是一种自动化测试。

功能测试的角度上说只要管输入数据后得到的输出结果是怎么样的,从执行方式上来讲接口必须要借助工具来实现。

接口测试与性能测试之间存在接口性能测试,主要通过jmeter来进行压测。

接口测试的意义

  • 更早地发现问题,越早发现bug,修复成本越低

功能测试必须要等到系统提供可测试的界面后才能进行

  • 缩短产品研发周期

接口测试的介入可以更早地发现并解决bug,使得留到功能测试阶段被修复的bug减少,从而缩短整个项目的上线时间

  • 发现更底层的问题

接口测试可以更简单更全面地覆盖到底层的代码逻辑,从而可以发现一些隐藏的bug.

只针对UI层的功能进行测试,就很难发现后端系统对一些异常情况的处理能力.

  • 前端随便变,接口测好了,后端不用变
  • 检查系统的安全性、稳定性

接口测试常用工具:

  1. 常用浏览器

  2. Postman

  3. Jmeter

  4. Fiddler

接口的请求和相应原理

针对这一部分所需掌握的知识HTTP协议、会话技术,属于基本常识了,有不了解的同学可自行学习。

JSON语法及数据格式

什么是JSON?

JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation),JSON是轻量级的文本数据交换格式(数据传递)–xml

JSON 独立于语言:JSON 使用 Javascript语法来描述数据对象,JSON 解析器和 JSON 库支持许多不同 的编程语言。 目前非常多的动态(PHP,JSP,.NET)编程语言都支持JSON。

语法规则:

JSON 语法是 JavaScript 对象表示语法的子集。

  1. 数据在名称/值(键值对)对中 如 {“name” : “zs”}

  2. 数据由逗号分隔 如 {“name” : “zs” , ”age”:”18”}

  3. 大括号保存对象 如 {“name” : “zs” , ”age”:”18”}

  4. 中括号保存数组 如 {“score” : [100,80,90]

数据格式:

在这里插入图片描述

接口测试流程

1.接口文档必备要素

接口说明

调用url

请求参数

请求方式

请求参数、参数类型、请求参数说明

返回参数说明

2.接口请求报文拼接方式

URL拼接:

url拼接规则为:Url?param1=value1?m2=value2

问号前面是请求url,后面是请求参数和参数值,多个参数用&连接

如:
https://api.douban.com/v2/book/search?q=邹伟伟

JSON串:

需要测试工具完成,如postman、jmeter等。其传参方式符合json的组合规则。

3.接口类型

http api接口

http api 接口是走http协议,通过路径来区分调用的方法,请求报文都是key-value形式,返回报文一般都是json串,请求方式有get、post等方式,

这两种为最常用的请求方式。

webservice接口

webservice 接口是走soap协议通过http传输,请求报文和返回报文都是xml格式,需要通过工具才能进行测试。

数据库访问接口

数据库访问接口是走jdbc方式连接数据,对数据库进行增删改查操作,需要使用工具进行测试。

GET、POST区别:

get使用url或cookie传参,post将数据存放在body中

get的url在长度上有限制,post数据可以很大

post比get更安全,因为数据在地址栏上不可见

一般get用于获取数据,post用于发送数据

HTTP状态码:

200 2开头表示请求发送成功

300 3开头表示重定向

400 4开头表示客户端发送请求有语法错误

401 访问页面未授权

403 无权访问

404 无此页面

500 5开头表示服务器异常

500 服务器内部异常

504 服务器端超时,未返回结果

1.第一个案例(发送一个get请求)

# coding=utf-8
import requests

# 请求的链接
url = 'http://suggest.taobao.com/sug?code=utf-8&q=裤子&callback=cb 用例'
# 发送get请求
r = requests.post(url)
# 请求的状态码 200代表成功
status = r.status_code
print(status)
# 请求的内容
j = r.json()

print(j)

输出结果如下:
在这里插入图片描述
2.第二个案例(发送一个post请求)

# 请求的链接
url = 'http://suggest.taobao.com/sug'

# post请求以字典格式传入
data = {'code': 'utf-8', 'q': '裤子', 'callback': 'cb 用例'}

# 发送post请求
r = requests.post(url, data)

# 请求的状态码 200代表成功
status = r.status_code
print(status)

# 请求的内容
print(r.content)

输出结果如下:
在这里插入图片描述
(接口只返回了一个b,这里只需要明白遇到post接口怎么去请求就好了~)

3.第三个案例(进行接口状态码断言)

# coding=utf-8
import requests

# 请求的链接
url = 'http://suggest.taobao.com/sug?code=utf-8&q=裤子&callback=cb 用例'
# 发送请求
r = requests.post(url)

# 请求的状态码 200代表成功
status = r.status_code

# 进行接口的状态码断言,等于200则认为通过,不是200不通过
if status == 200:
    print('用例测试通过')
else:
    print('测试不通过')
print(status)
# 请求的内容
j = r.json()
print(j)

输出结果如下:
在这里插入图片描述
4.第四个案例(进行接口内容断言-正常情况)

# coding=utf-8
import requests

# 请求的链接
url = 'http://suggest.taobao.com/sug?code=utf-8&q=裤子&callback=cb 用例'
# 发送请求
r = requests.post(url)
# 请求的状态码 200代表成功
status = r.status_code
# 进行接口的状态码断言,等于200则认为通过,不是200不通过
if status == 200:
    print('用例测试通过')
else:
    print('测试不通过')
print(status)
# 请求的内容
j = r.json()
# 判断接口返回内容里面,有没有 裤子女夏 内容
if '裤子女夏' in str(j):
    print('存在此数据')
else:
    print('不存在此数据')
print(j)

输出结果如下:
在这里插入图片描述
5.第五个案例(进行接口内容断言-异常情况)

# coding=utf-8
import requests

# 请求的链接
url = 'http://suggest.taobao.com/sug?code=utf-8&q=裤子&callback=cb 用例'
# 发送请求
r = requests.post(url)
# 请求的状态码 200代表成功
status = r.status_code
# 进行接口的状态码断言,等于200则认为通过,不是200不通过
if status == 200:
    print('状态码校验过')
else:
    print('状态码校验不通过')
print(status)
# 请求的内容
j = r.json()
# 判断接口返回内容里面,有没有 裤子女夏 内容
# 裤子女夏  增加了一个1
if '裤子女夏1' in str(j):
    print('存在此数据')
else:
    print('不存在此数据')
print(j)

输出结果如下:
在这里插入图片描述
6.第六个案例(接口的小封装-接口和逻辑代码分开控制-~)

增加config.py主要存放接口

# coding=utf-8

# baseurl 一般接口都是分测试接口和正式接口的,只需要修改ip即可
baseurl = 'http://suggest.taobao.com'
# 假装是登录接口 baseurl=于楼上
url_login = baseurl + '/sug?code=utf-8&q=裤子&callback=cb 用例'

# 假装是注冊接口
url_register = baseurl + '/sug?code=utf-8&q=裤子&callback=cb 用例'

# 假装是首页接口
url_home = baseurl + '/sug?code=utf-8&q=裤子&callback=cb 用例'

增加testapi.py

# coding=utf-8
import requests
# 引入config配置接口的文件
import config

# 发送请求 使用config.来调用想要的接口 调用首页接口
r = requests.get(config.url_home)
# 请求的状态码 200代表成功
status = r.status_code
# 进行接口的状态码断言,等于200则认为通过,不是200不通过
if status == 200:
    print('状态码校验过')
else:
    print('状态码校验不通过')
print(status)
# 请求的内容
j = r.json()
# 判断接口返回内容里面,有没有 裤子女夏 内容
# 裤子女夏  增加了一个1
if '裤子女夏1' in str(j):
    print('存在此数据')
else:
    print('不存在此数据')
print(j)

输出结果如下:

在这里插入图片描述
用心的同学已经发现了,这样的话每次接口变了链接等,只需要修改config文件即可 不用去逻辑代码里面去找了。

通用接口用例设计

通过性验证

要保证这个接口功能是正确的,按照接口文档上的参数,正常传入,查看是否可以返回正确的结果

参数组合

如:现有一个操作商品的接口,有个字段type。type传1的时候代表修改商品,商品id、商品名称、价格有一个是必传的,这样就要测参数组合,type传1的时候,只传商品名称能不能修改成功;id、名称、价格都传的时候能不能修改成功

接口安全:

绕过验证

如购买了一个商品,价格是300元,提交订单时候,把这个商品的价格改成3元,后端有没有做验证,更狠点,我把钱改成-3,是不是我的余额还要增加?

绕过身份授权

如修改商品信息接口,必须得是卖家才能修改,那我传一个普通用户,能不能修改成功,传一个其他的卖家能不能修改成功

参数是否加密

如登陆的接口,用户名和密码是不是加密,如果不加密的话,别人拦截到你的请求,就能获取到你的信息。

加密规则是否容易破解

密码安全规则

对密码的复杂程度校验

异常验证

不按照接口文档上的要求输入参数,来验证接口对异常情况的校验

如必填的参数不填,输入整数类型的,传入字符串类型,长度是10的,传11

必传非必传、参数类型、入参长度。
在这里插入图片描述

最后: 可以关注公众号:伤心的辣条 ! 进去有许多资料共享!资料都是面试时面试官必问的知识点,也包括了很多测试行业常见知识,其中包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。

如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!


好文推荐

转行面试,跳槽面试,软件测试人员都必须知道的这几种面试技巧!

面试经:一线城市搬砖!又面软件测试岗,5000就知足了…

面试官:工作三年,还来面初级测试?恐怕你的软件测试工程师的头衔要加双引号…

什么样的人适合从事软件测试工作?

那个准点下班的人,比我先升职了…

测试岗反复跳槽,跳着跳着就跳没了…

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-09-10 23:55:15  更:2021-09-10 23:55:25 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 16:54:49-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码