接口测试概括+HTTP+requests+fiddler+JMeter总结

一、接口测试基本概念:

1.什么是接口:

应用程序中的第三方登录、支付

2.接口测试

是测试系统内部各个组件间接口,以及系统之间与外部之间的交互点

一般用于多系统间交互开发

3.接口测试的主要测试点

数据的交互

过程的管理和控制

系统间的逻辑依赖关系

4.与界面功能测试相比

没有具体的界面;

只需接口的说明(地址、请求方式、返回值及说明、发送请求时参数说明)

5.接口测试必须满足的条件:

接口的功能说明;

接口地址;

接口请求方式;

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

返回参数说明。

6.接口信息获取渠道

从标准文档

7.测试用例设计方法

与功能测试方法没区别。

1、 分析需求(接口文档进行分析和阅读)

2、 设计用例,只写预期结果,不写实际结果
在这里插入图片描述

二、HTTP协议详解

1.HTTP协议

HTTP协议是Hyper Text Transfer Protocol(超文本 传输协议)的缩写;

是用于从万维网(WWW:World Wide Web )服务 器传输超文本到本地浏览器的传送协议;

HTTP是一个基于TCP/IP通信协议来传递数据 (HTML 文件, 图片文件, 查询结果等)。

2.HTTP的特性

无连接、无状态、媒体独立的

3.HTTPS简介

HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目 标的HTTP通道,简单讲是HTTP的安全版。

HTTPS在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏 览器和服务器之间的通信加密。

4.HTTP和HTTPS的区别:

https协议需要ca证书,免费的整数很少,需要交费;

https需要具有安全性的ssl加密传输协议;

http和https连接方式不同,前者:80,后者:443;

https协议是由ssl+http协议构建的可进行加密传输、身份认证的网路传输,比http协议安全。

5.http协议的请求

基本格式:

请求行(request line)、请求头部(header)、空行和请求数据四 个部分组成

请求方式:

get(获取实体主体)、post(会引起资源的增加或者更新)、head、options、connect、put、delete、trace

6.http响应

基本格式:

状态行、响应头、空行、响应正文

响应状态码分类:

1**:信息,服务器收到请求,需要请求者继续执行操作

2** :成功,操作被成功接收并处理

3** :重定向,需要进一步的操作以完成请求

4** :客户端错误,请求包含语法错误或无法完成请求

5**: 服务器错误,服务器在处理请求的过程中发生了错误

常见状态码:

200 -请求成功

301 -资源被永久转移到其它URL

404 -请求的资源(网页等)不存在

500 -内部服务器错误

三、Postman工具应用

能够用语言描述每个postman操作步骤的过程

1.创建请求和测试集合

2.发送一个没有参数的get请求

1)创建一个请求

2)选择和设置请求的方式为get

3)在URL输入框中输入请求地址

4)发送请求

3.发送一个带参数的get请求-Params

1)创建一个请求

2)选择和设置请求的方式为get

3)在URL输入框中输入请求地址

4)在Postman的Params中设置参数的key和value

5)发送请求

4.发送一个带参数的post请求

1)创建一个请求

2)选择和设置请求的方式为post

3)在URL输入框中输入请求地址

4)在Postman的body中设置参数的key和value 选择参数的组织形式(form-data,x-www-form-urlencoded,raw)

5)发送请求

5.参数化的实现

请求中将常量改为变量:{ {}}

1) 先把请求创建好

2) 将请求中需要进行参数化的数据,设置为参数变量{ {}}

3) 准备好数据文件(text或者CSV文件,CSV文件中,第一行应该是参数变量的名称)

4) 打开runner模块 选择被参数化的Collection或者folder

5) 设置循环次数,设置请求的间隔时间,

6) 设置参数数据文件和数据格式

7) 预览运行形式

8) 运行集合测试

9) 查看结果

6.断言

在test模块实现断言

断言的代码由js语言开发的

postman有内置的断言语言和测试点

测试人员自己有时也需要单独编写和修改断言脚本

对于返回值为json的数据(简单数据和复杂数据)要能够分析数据

7.其他的

环境变量的应用-环境变量、全局变量

导出postman代码-code模块

四、requests库的应用:

能够用语言描述requests库在接口测试中的应用

1.安装和配置requests库

Pip install requests (安装位置:/Lib/site-packages/的目录)

2.requests包

1) request:请求。专门发送请求的模块

2) Response:响应。专门接收服务器的响应内容。

3) Session:会话。专门用来接收应用服务器的返回session。

4) Cookies:服务器返回给客户端浏览器的缓存数据。保存用户登陆信息和其他验证身份的信息。

5) HTTP请求的各种方法:get、post、delete、head、options、put、

6) Status_codes:获取HTTP响应的状态码

3.使用Postman进行接口测试和requests进行接口测试的几个区别:

1) requests更加灵活。对于响应的结果,想看什么才看什么。,不想看的就不显示

2) Postman更加方便。不写代码是最大的优势。

3) Requests进行参数化,纯代码完成;Postman可以纯手工点击完成。

4.使用requests发送请求

1) 没有参数的get请求的发送。只需要使用requests.get(url)即可完成

2) 携带请求头部信息(数据)发送get请求。提前定义好一个表示请求头部信息的字典,发送请求的时候,将头部信息以参数的方式传递,使用requests.get(url=tar_url,headers=需要携带的头部信息)

注意:所有请求的头部信息都是字典,都可以提前定义好,发送请求的时候都可以如此方法携带和传递。

5.对响应值的接收和分析:

状态码、编码格式、text、content、json()

import requests
"""
状态码
响应头:
文件的编码信息
输出相应内容的文本值
"""
# 单独定义一个变量,保存url地址
url_get="https://www.baidu.com"
r=requests.get(url=url_get)
# r=requests.get("https://www.baidu.com")
print(r.status_code)
print(r.headers['content-type'])
print(r.encoding)
print(r.text)
print(r.content)


3.创建请求:请求的方法、请求地址、请求的参数(get-params)

Post请求的参数data,请求头可以用json

import requests
# 定义url
tar_url = "https://www.baidu.com"
# 定义头部信息
headers = {
    
    "Host":"www.baidu.com","Referer":"https://www.baidu.com"}
r = requests.get(url=tar_url,params=headers)
print(r.status_code)
print(r.encoding)
print(r.headers["Server"])

import requests
"""
1.使用post形式
2.使用请求头 content-type application/x-www-form-urlencoded
3.
"""
# 定义url

tar_url = "https://fanyi-api.baidu.com/api/trans/vip/translate"
toubu={
    
    
        'content-type':'application/x-www-form-urlencoded'
}
canshu={
    
    "q":"promise","from":"auto","to":"zh",
        "appid":20200211000382774,"salt":19981114,
        "sign":"833476f0165b5419a5ceaa54e94b5364"}
r=requests.get(url=tar_url,json=toubu,params=canshu)

print(r.status_code)
print(r.json())
print(r.text)
print(r.encoding)


  1. request+unittest+HTMLTestRunner结合编写测试项目
import requests
import unittest
from HTMLTestRunner import HTMLTestRunner

"""
1.使用unittest框架
2.对接口测试脚本进行组织管理
"""


class Vtex(unittest.TestCase):
    def setUp(self):
        print("测试开始执行")

    # 获取最热主题
    def test_hot(self):
        hot_url = "https://www.v2ex.com/api/topics/hot.json"
        res = requests.get(url=hot_url)
        print(res.status_code)
        print(res.encoding)
        print(res.text)

    # 获取最新主题
    def test_new(self):
        new_url = "https://www.v2ex.com/api/topics/latest.json"
        res = requests.get(url=new_url)
        print(res.status_code)
        print(res.encoding)
        print(res.text)

    # 获取节点信息
    def test_node(self):
        node_url = "https://www.v2ex.com/api/nodes/show.json"
        canshu = {
    
    
            "name": "python"
        }
        res = requests.get(url=node_url, params=canshu)
        print(res.status_code)
        print(res.encoding)
        print(res.text)

    # 获取用户主页的参数用户 和 id
    def test_user(self):
        user_url = "https://www.v2ex.com/api/members/show.json"
        canshu = {
    
    
            "id": 1, "username": "Livid"
        }
        res = requests.get(url=user_url, params=canshu)
        print(res.status_code)
        print(res.text)
        print(res.encoding)

    def tearDown(self):
        print("测试执行结束")


suite = unittest.TestSuite()
suite.addTest(Vtex("test_hot"))
suite.addTest(Vtex("test_new"))
suite.addTest(Vtex("test_node"))
suite.addTest(Vtex("test_user"))
fp = open("test.html", "wb")
runner = HTMLTestRunner(stream=fp, title="测试用例", description="用例执行情况")
# 创建测试用例
runner.run(suite)
fp.close()

五、抓包工具-Fiddler

只是用于数据抓包;可以借鉴抓包工具的特性完成手工测试无法完成的事情-让请求发送暂停、修改

1、设置HTTPS代理-默认情况下,Fiddler不支持HTTPS协议的数据捕获

2、在主界面中常用的模块:

1> 请求信息统计-Statistics

2>请求信息的详细检查-Insapectors

3>数据过滤-Filter:

局域网额和互联网的过滤

主机/服务器的过滤

客户端进程的过滤

请求信息的过滤

断点功能

响应信息过滤:状态码、内容大小和形式进行过滤

响应头进行过滤

六、JMeter工具

在接口测试方面:必须能够用语言描述其操作

1、搭建和配置JMeter运行环境:

Java开发环境支持-安装JDK。;并且配置JDK环境变量;

直接解压缩JMeter即可;

在JMeter的bin目录中,运行jmeter.bat(Apache JMeter.jar)完成Windows版的启动.

2、应用JMeter

最基本的应用

​ 测试计划
​ 计划之下创建线程组
​ 线程组中添加取样器
​ 线程组中添加监听器

最齐全的应用

​ 除了基本应用外,额外添加-断言-响应断言
​ 参数化

3、断言的设置

​ 设置断言的应用范围
​ 验证的内容
​ 设置匹配模式,包括匹配时的逻辑条件
​ 设置期望/断言的内容(可以是单个的,也可是多个);如果考虑逻辑条件的话,断言内容的数量需要注意

4、设置参数化

​ 设置好csv表格
​ 使用函数助手功能-__CSVRead
​ 将生成的变量引用代码复制和添加到JMeter请求中
​ 设置线程数量-和参数的数量保持一致

5、发送各种请求

​ get-无参数
​ get请求-有参数
​ post请求-有参数(启用专门post请求数据的格式)

6、录制脚本

​ 录制脚本:第三方工具-badboy;自身的技术
​ badboy-安装和应用----主要作用就在于录制脚本
​ 将badboy脚本导出为JMeter可执行的文件-.jmx
​ JMeter直接打开badboy录制的脚本,进行适当的修改即可

猜你喜欢

转载自blog.csdn.net/qq_42305961/article/details/108711679
今日推荐