8.1 接口测试

1. 市场分布

  • UI(web、app)自动化:10%
  • 接口自动化:20%
  • 单元测试:70% -- 测开

2. 接口类型:

1)结构划分:模块间(系统间)的接口称为内部接口;系统与第三方(如支付宝、微信、身份验证等。)接口称为外部接口。

较常用的第三方接口:聚合API(https://www.juhe.cn/apiservice),通联API(金融相关,https://apidoc.datayes.com/app/overview

2)接口类型划分:

接口类型 协议 数据格式 测试工具
http 接口  HTTP 协议(应用层) application/json,text/html,text/xml....

fiddler、postman、jmeter、lr、

框架(RF、python+request、java+httpclient)

webservices 接口 SOAP 协议(应用层基于 http 协议封装) 请求和响应的数据格式都是 XML 格式 SoapUI、jmeter
socket 接口

socket 基于 tcp/udp 传输层抽象出的一层,

大多在 c/s 架构。建立连接后,可实现客户端

和服务器的双向数据通讯

  socketTest、jmeter

3. 实际工作中接口的管理:

  • office 文档管理;
  • 共享、会话等功能的管理工具:postman、eolinker、apizza、easy_api、jira、confluence等

4. 接口模拟发送请求:

fiddler:实现抓包、分析数据(篡改数据)、模拟请求发送、模拟弱网

  fiddler \ Composer:可以模拟请求发送。

5. 测试方法:参数的组合、极值、是否必填


8.2 报文分析

1. 一个请求包含::请求行 + 请求头 + 请求体

1)请求行: 请求方法 + 请求地址 + 请求协议版本

  请求方法: GET、POST、PUT、DELETE、TRACE、OPTIONS、HEAD 等

  • GET:从服务器获取资源。1)数据直接暴露在地址栏,不适合私密数据传输;2)最多识别 1024 个字符,不适合大数据传输;
  • POST:提交表单数据资源。
  • PUT:数据存储在服务器
  • DELETE:删除服务器资源
  • TRACE:回显信息,主要用于测试或debug
  • OPTIONS:获取服务器针对某些特定的资源所支持的 HTTP 请求方法
  • HEAD:获取头信息

  GET v.s. POST:

  • (1)GET 参数在 URL 中(导致:a. 长度限制, b. 相对安全性);POST 参数在 body 中;
  • (2)GET 请求只提交一次数据;POST 提交 2 次数据(先发送 head 数据 -> 服务器回应 100 -> 再发送 body 数据)

  POST v.s. PUT:

  • POST 对数据的增加;PUT:对数据的修改

2)请求头:键值对组成

  • (1)Connection:keep-alive (常连接,client 可继续向服务器发送请求,且保持当前状态);close 当前会话关闭;
  • (2)Content-Length:请求体文本长度,可用于检测是否丢包;
  • (3)Cache-Control:缓存控制,含:age,max-age,min-age,单位秒,还可设置访问权限 private;与之对应的是 Expires 缓存到期时间
  • (4)Content-Type:文本类型,值语法:type/subtype; params.
  • 常用的 4 种类型:
  • (4.1)text/html:最常用的一种,返回一个 html 页面
  • (4.2)application/json:接口测试常用,返回 json 数据
  • (4.3)application/x-www-form-urlencoded:针对需要提交表单所声明的文本类型。值通常是 键值对 形式,key1=value1&key2=value2....
  • (4.4)application/form-data:通常应用在文件上传下载,数据格式以分割线形式表示。
  • 注意:不同工具在 post 请求时,其参数都以 key=value 形式存在,但是默认值不同。jmeter 默认是 application/x-www-form-urlencoded,fiddler、postman 都表单请求 默认类型 不是
  • 常用的文本类型: text/plain、text/html、text/xml、image/png、image/jpg、image/jpeg ...
  • (5)Accept:当前客户端允许解析的文本数据类型。 */* 表示允许解析所有类型

3)请求体:请求体的值与请求头之间会空一行;如果是 GET 请求,则是空值

Fiddler 的详细使用参照: https://www.cnblogs.com/bruce-he/p/16906966.html


 ***** 下面是测试 不同测试工具的默认类型 *****

Postman 请求:

    

!!! Postman
1. Params 中放置的 参数键值对,最终会被放置在 url 中,形成 get 请求方式,即使请求类型选择为 post 2. Post 请求,其参数需要放置在 body 中

Fiddler:

1)直接默认发送请求:

  • 在 Composer 请求栏:http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx/getMobileCodeInfo
  • body 中输入:mobileCode=18918457828&userID=
  • 请求类型:post

=> 结果:报 500,

(2)Header 中添加 Content-Type 后,请求成功

  • 在 Composer 请求栏:http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx/getMobileCodeInfo
  • body 中输入:mobileCode=18918456666&userID=
  • 请求类型:post
  • Header 里添加:Content-Type: application/x-www-form-urlencoded

    

2. HTTP 相应:状态行 + 消息报文 + 相应正文

状态行:协议/版本 + 状态码 + 状态(状态码的文本描述)

状态码,主要包含:

  • 1xx : 提示信息,服务器已接受当前请求;代表有 100
  • 2xx :请求被接受;代表有 200
  • 3xx : 重定向,要完成请求必须进行下一步操作;代表有 301, 302, 304
  • 4xx : 客户端错误,请求有语法或无法实现;代表有 403, 404
  • 5xx : 服务器错误;代表有 500

8.2.4 cookie、token 和 session

1. cookie:客户端向服务器发送请求,服务器响应后,客户端进行部分数据(即cookie、缓存)的存储在本地,

cookie 一般包含:名称、内容、域名、路径、为何发送、创建时间、到期时间。

cookie 主要有两种cookie:

  • 会话 cookie:只作用于当前会话,一旦会话结束,则 cookie 失效或消失
  • 持久(本地化) cookie:将 cookie 存储在本地硬盘,同样有对应的生命周期;

2. session:

服务器对客户端的标识。

存储在服务器端,

用户操作完对应的网站后会被销毁,此时 session 会将用户访问的相关信息临时存储在服务器上。

3. token

目前 web、APP 进行认证的最佳方式。完成 token 身份认证有如下特征:无状态、扩展性高、支持移动平台、跨程序应用、安全等。

基于 token 认证的过程:

  • 用户通过用户名、密码发送请求
  • 程序验证
  • 程序返回一个签名的 token 给客户端
  • 客户端存储 token,并且用于每次发送请求
  • 服务端验证 token,并返回数据
具体实现授权的方式有: cookie、session、token 等

cookie v.s. session

  • 1)cookie 客户端存储;session 服务器存储
  • 2)cookie 只支持字符串存储(如有其他类型,会先转成字符串);session 可存储任意数据类型
  • 3)cookie 可设置长时间保存(如网页几天内不用登录);session 一般客户端关闭或 session 超时就失效
  • 4)cookie 保存的数据容量有限,最大不超过 4K;session 存储数据容量大于 cookie,但一般不会存储过多,否则影响服务器资源

token v.s. session

  • 1)session 是有状态化的,会记录并存储会话信息;token 无状态化,不会存储会话信息
  • 2)session 依赖 链路层 提高通信安全;token 通过身份认证方式,对请求进行签名从而防止监听或重放攻击等
  • 3)session 的认证是通过 sessionID 完成存储,只是相对安全,只要存在 sessionID,就可以获得用户全部权限;token 不同机制认证方式不同,如果是 oAuth token 或类似机制,提供的是 认证和授权两种形式,认证对用户,授权对应用程序,此时 token 是唯一的,不能转移到其他用户或程序
如果系统的用户信息需要与第三方共享,甚至允许第三方调用其 API 接口,就需要考虑 token 方式

读后笔记 -- Python 全栈测试开发 Chapter8:接口测试的更多相关文章

  1. 【Python全栈-后端开发】嵩天老师-Django

    嵩天老师-Python云端系统开发入门教程(Django) 视频地址:https://www.bilibili.com/video/av19801429 课前知识储备: 一.课程介绍: 分久必合.合久 ...

  2. 【Python全栈-后端开发】Django入门基础

    Django基础知识 一. 什么是web框架? 框架,即framework,特指为解决一个开放性问题而设计的具有一定约束性的支撑结构,使用框架可以帮你快速开发特定的系统,简单地说,就是你用别人搭建好的 ...

  3. 【Python全栈-后端开发】Django进阶2-Form表单

    Django进阶2-Form表单 Django的Form主要具有一下几大功能: 生成HTML标签(可以保留上次输入内容) 验证用户数据(显示错误信息) HTML Form提交保留上次提交数据 初始化页 ...

  4. 【Python全栈-后端开发】数据库进阶

    数据库进阶 python关于mysql的API---pymysql模块 pymsql是Python中操作MySQL的模块,其使用方法和py2的MySQLdb几乎相同. 模块安装 pip install ...

  5. 【Python全栈-后端开发】Django进阶之Model操作复习

    Django进阶之Model操作复习 一.字段 AutoField(Field) - int自增列,必须填入参数 primary_key=True BigAutoField(AutoField) - ...

  6. 【Python全栈-后端开发】Django进阶1-分页

    Django[进阶篇-1 ]分页 分页 一.Django内置分页 from django.core.paginator import Paginator, EmptyPage, PageNotAnIn ...

  7. 【Python全栈-后端开发】Django入门基础-2

    Django入门基础知识-2 一 .模版 一.模版的组成 HTML代码+逻辑控制代码 二.逻辑控制代码的组成 1  变量(使用双大括号来引用变量) {{var_name}} 2  标签(tag)的使用 ...

  8. 【Python全栈-后端开发】MySQL数据库-练习题

    MySQL数据库-练习题 一.表关系 请创建如下表,并创建相关约束 二.操作表 1.自行创建测试数据 2.查询“生物”课程比“物理”课程成绩高的所有学生的学号: 3.查询平均成绩大于60分的同学的学号 ...

  9. Python 全栈开发 -- 监控篇

    如果你已经玩转了 Python 编程语言语法,肯定想用这些知识,开发一款应用程序,它可以是在网上,可以炫耀或出售,那就需要全栈式开发 Python.具体如何创建,部署和运行生产 Python Web ...

  10. python 全栈开发之路 day1

    python 全栈开发之路 day1   本节内容 计算机发展介绍 计算机硬件组成 计算机基本原理 计算机 计算机(computer)俗称电脑,是一种用于高速计算的电子计算机器,可以进行数值计算,又可 ...

随机推荐

  1. Windows家庭版安装本地组策略编辑器【gpedit.msc】

    由于我们买的电脑一般默认安装的Windows家庭版本 家庭版本默认不带有本地组策略编辑器 当我们运行gpedit.msc的时候会提示 Winodws找不到文件'gpedit.msc'.请确定文件名是否 ...

  2. JZOJ 5355. 【NOIP2017提高A组模拟9.9】保命

    题目 为了加快社会主义现代化,建设新农村,农夫约(Farmer Jo)决定给农庄做一些防火措施,保障自己.猫.奶牛的生命安全. 农夫约的农庄里有N+1 座建筑,排成了一排,编号为0-N.对于0 < ...

  3. Eureka高可用集群服务端和客户端配置

    微服务应用中,生产环境一般都需要保障服务注册中心的高可用!高可用也分好几个等级,例如:同数据中心(可用Zone区)高可用-->同地域(Region)跨数据中心(可用Zone区)高可用--> ...

  4. DESIR队列:早期axSpA的脊柱放射学进展

    DESIR队列:早期axSpA的脊柱放射学进展 EULAR2015; PresentID: FRI0234 SPINAL RADIOGRAPHIC PROGRESSION IN EARLY AXIAL ...

  5. GPIO 和轮询控制 LED 的状态

    GPIO 概念 I/O 是输入(Input)和输出(Output)的意思,GPIO(General Purpose I/O)是基本输入输出,是 I/O 的最基本形式.STM32F103ZET6 大概有 ...

  6. Switchquery:移动端秒级配置触达平台

    作者:京东零售 胡本奎 一 背景 随着移动互联网的快速发展,为满足各类用户及人群的体验需求,移动端的开发者们开发了丰富多彩的体验与功能.同时对于快速控制各类功能的切换.灰度,降级等能力的要求也越来越高 ...

  7. 难搞的electron之安装

    做了几个electron项目,感觉最难搞的地方竟然是安装!这怎么能忍!经过几天试错,把自己能够顺利安装的流程记录下来,仅供参考. 使用框架为quasar+vue+quasar_electron qua ...

  8. 关于el-popover的箭头颜色

    因为会从四个方向不定弹出 所以需要写入4个方向: 注意弹出框是动态插入body中的,需写入根部样式中 如果有多个地方用到且颜色都不一样,可以用类名区分,elm提供了 然后把前面的 .el-popper ...

  9. 2022-05-20内部群每日三题-清辉PMP

    1.一位团队成员通知项目经理有一个问题可能会破坏项目.项目经理将该问题添加到问题日志中,并要求团队找到解决方案. 项目经理下一步应该怎么做? A.更新风险登记册 B.修订项目管理计划 C.确定适当的风 ...

  10. JavaSE——遍历字符串与统计字符个数

    package com.zhao.stringtest; import java.util.Scanner; public class test2 { //键盘录入一个字符串,统计该字符串中大写字母, ...