自学接口自动化测试

         成都这个只是人口达到标准的“一线城市”,工资和岗位要求不匹配,还要求蛮多的,就算是这样,还是要去争抢,要去上班卷,这哪里是安逸?或许真的就是先解决温饱吧,毕竟已经从70kg掉到了58kg,再这样下去真的会瘦死。接下来就先补充点脑存量吧。

        这篇总结的是(一)接口自动化测试-基础知识,纯理论,有点枯燥无味,但确是站稳脚步的底气。


CSDN话题挑战赛第2期

参赛话题:学习笔记


目    录

        一、基础知识回顾

        1、网络体系结构

        2、TCP/IP网络体系结构层级及各层协议

        3、JSON(JavaScript Object Notation)

        二、接口测试概述

        1、与界面处功能测试相比较

        2、接口测试好处

        3、定义

        4、流程

        5、常用接口类型

        6、接口测试重点

        7、接口测试范围

        8、接口测试适用场景

        三、接口测试必备条件

        1、接口测试的必要条件

        2、标准和规范的接口文档

        3、如何获取接口信息

        四、接口测试必备知识

        1、常见的接口传输协议

        2、常见的接口测试工具

        3、常见的接口数据组织形式

        五、接口测试用例设计

        1、用例设计方法(通用)

        2、接口测试用例模板

        六、HTTP协议

        1、HTTP协议基础

        2、HTTP请求及其结构

        3、HTTP响应及其结构


        一、基础知识回顾

        1、网络体系结构

        (1)定义

        网络体系结构(network architecture):是计算机之间相互通信的层次,以及各层中的协议和层次之间接口的集合。

        (2)层级

        物理层(PhysicalLayer)

        数据链路层(DataLinkLayer)

        网络层(Network layer)

        传输层(Transport layer)

        会话层(Session layer)

        表示层(Presentation layer)

        应用层(Application layer)

        (3)常用网络体系结构

        TCP/IP(传输控制协议/互联协议)---四层

        OSI/RM(开放系统互连参考模型)---七层

        五层协议的体系结构

        2、TCP/IP网络体系结构层级及各层协议

        (1)应用层

        主要工作:定义数据格式并按照对应的格式解读数据。

        HTTP(超文本传输协议,明文,TCP端口:80

        HTTPS(超文本传输安全协议,SSL/TLS加密,TCP端口:443

        FTP(文件传输协议,TCP数据/控制端口:20(不一定)/21

        POP3(邮局协议版本3,收发,TCP端口:110

        IMAP/SMTP(交互邮件访问协议/简单邮件传输协议,TCP端口:143/25

        DNS(域名系统,UDP端口:53

        SNMP(简单网络管理协议,UDP代理/管理站端口:161/162

        Telnet(远程登录协议,TCP端口:23

        (2)传输层

        主要工作:定义端口,标识应用程序身份,实现端口到端口的通信,TCP协议可以保证数据传输的可靠性。

        TCP(传输控制协议:面向连接、可靠、传输大量数据、慢,电子邮件、远程登录)

        UDP(用户数据报协议:无连接、不可靠、传输少量数据、快,网站看视频、听音乐)

        (3)网络层

        主要工作:定义网络地址、区分网段、子网内MAC寻址、对于不同子网的数据包进行路由。

        IP协议(IP地址(32位)分为两部分:前面部分代表网络地址(IP地址和子网掩码按位与运算后得到),后面部分表示该主机在局域网中的地址)

        ARP协议(地址解析协议:根据IP地址获取MAC地址的一个网络层协议)

        路由协议(根据信道情况,选择并设定路由,以最佳路径来转发数据包)

        (4)网络接口层

        主要工作:对电信号进行分组并形成具有特定意义的数据帧,然后以广播的形式通过物理介质发送给接收方。

        3、JSON(JavaScript Object Notation)

        (1)JavaScript对象表示法;轻量级的文本数据交换格式;独立于语言和平台; 具有自我描述性、更易理解;使用JavaScript语法来描述数据对象;解析器和库支持不同编程语言。

        (2)特点

        纯文本

        自我描述性

        层级结构-值中存在值

        通过JavaScript解析

        AJAX传输

        (3)语法规则

        数据在键值对中

        逗号分隔

        花括号保存对象

        方括号保存数组

        (4)JSON文件的文件类型

        .json

        (5)JSON文本的MIME类型

        application/json


        二、接口测试概述

        1、与界面处功能测试相比较

        (1)接口测试没有具体页面;

        (2)通过接口规范文档上的调用地址、请求参数,拼接请求信息;

        (3)然后发送请求、检查返回结果;

        (4)只需测入参和出参。

        2、接口测试好处

        (1)可发现页面操作无法发现的bug;

        (2)检查系统的异常处理能力;

        (3)检查系统的安全性、稳定性;

        (4)前端随便变,接口测好,后端不用变。

        3、定义

        (1)接口

        一种是程序内部的接口,如模块之间调用,方法与方法之间,前端与后端之间的调用。另一种是系统对外的接口,如调用第三方平台,调用开源的接口。

        (2)API(Application Program Interface)

        系统或程序的调用接口

        (3)GUI(Graphic User Interface)

        图形界面的操作软件的系统接口

        (4)接口测试

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

        4、流程

需求文档(接口API文档)→接口相关业务场景了解→接口用例设计及评审→接口测试及结果

        5、常用接口类型

        (1)webService接口

        走soap协议通过http传输,请求报文和返回报文都是xml格式的,我们在测试的时候都是通过工具才能进行调用、测试。

        可以使用的工具有SoapUI、jmeter、loadrunner等;

        (2)http api接口

        走http协议,通过路径来区分调用的方法,请求报文都是key-value形式的,返回报文一般都是json串,有get和post等方法,这也是最常用的两种请求方式。

        可以使用的工具有postman、RESTClient、jmeter、loadrunner等;

        (3)开放API

        制定自己的系统接口标准,当需要执行系统整合、自定义或程序应用操作时,公司所有成员都可通过该接口标准调用源代码。

        6、接口测试重点

        (1)检查数据的交换

        (2)传递和控制管理过程

        (3)系统间的相互逻辑依赖关系

        7、接口测试范围

         (1)业务功能测试

        正常场景

        异常场景

        (2)边界值测试

        业务规则边界分析

        输入输出参数边界分析:覆盖所有的必填参数;组合可选参数;参数有、无或null;参数的顺序、个数、类型;参数类型数值大小,输入的数值范围;参数字符串类型null 长度;参数包含特殊字符;参数包含空格

        (3)参数组合测试

        多参数组合测试

        少参数组合测试

        (4)异常场景测试

        幂等(重复提交)

        并发测试

        事务测试

        分布式测试

        环境异常测试

        大数据量测试

        服务不可用测试

        (5)性能测试

        关注各个性能指标情况:响应时间、并发数、吞吐量、每秒事务处理量TPS、输入/输出IO、硬件资源使用情况(CPU,硬盘,内存,网络)

        (6)安全测试

        敏感信息是否加密(前后端数据传输、日志信息)

        SQL注入

        批量送红包

        8、接口测试适用场景

        (1)应用于多系统间交互开发

        (2)为其他系统提交服务的底层框架系统和中心服务系统

        (3)上层系统中的服务层接口


        三、接口测试必备条件

        1、接口测试的必要条件

        (1)接口说明(作用功能)

        (2)接口调用url(uniform resource locator统一资源定位服务)方式

        (3)接口请求方法(get/post)

        (4)接口请求参数、参数类型、请求参数说明

        (5)返回参数说明

        2、标准和规范的接口文档

        (1)v2EX社区API:V2EX API

        (2)百度翻译通用API:百度翻译开放平台

        (3)京东联盟开放平台:开放平台 - 京东联盟

        (4)支付宝支付API:支付宝开放平台

        (5)腾讯开放平台:腾讯开放平台

        3、如何获取接口信息

        (1)标准化的接口文档

        (2)询问开发人员

        (3)测试人员自己抓包获取数据和信息


        四、接口测试必备知识

        1、常见的接口传输协议

        (1)http/https(超文本传输协议)(应用层)

        (2)ftp(文件传输协议)(应用层)

        (3)jdbc(数据传输标准,java连接数据库标准)

        2、常见的接口测试工具

        (1)Google浏览器

        (2)Firefox浏览器

        (3)POSTMAN(模拟发送接口请求工具,只能做基于http)

        (4)apache JMeter(模拟发送接口请求工具)

        (5)Telerik Fiddler(抓包工具)

        3、常见的接口数据组织形式

        (1)HTML

        HyperText Markup Language,是一种用于创建网页的标准标记语言。

        (2)JSON(用的较多)

        JavaScript Object Notation,JS对象简谱,是一种轻量级的数据交换格式。

        (3)String

        (4)XML

        可扩展标记语言。


        五、接口测试用例设计

        1、用例设计方法(通用)

        (1)等价类、边界值(接口传输的数据)

        (2)因果图(在需求文档中,期望结果已知)、判定表(全部组合)

        (3)正交实验法(部分组合)

        (4)场景法(正常环境、异常环境)

        (5)错误猜测法(经验、直觉)

        (6)随机测试(monkey)

        2、接口测试用例模板

        (1)用例名称、接口地址、请求方式、开始(sql)、结束(sql)、描述

        (2)HTTP头参数、HTTP参数、JSON参数、状态码、返回结果(包含)、数据库查询是否存在(包含)


        六、HTTP协议

        1、HTTP协议基础

        (1)HTTP协议(Hyper Text Transfer Protocol,超文本传输协议);用于从WWW(万维网Worl Wide Web)服务器传输超文本到本地浏览器的传送协议。

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

        (3)HTTP协议工作于客户端-服务端(C/S)架构上。浏览器作为HTTP客户端通过URL向HTTP服务端(即WEB服务器:Apache、IIS)发送所有请求。

        (4)HTTP服务端根据接收到的请求,向客户端发送响应。

        (5)HTTP协议特点

        无连接(请求和响应可不同时在线)

        媒体独立(传输过程中的数据和通信协议无关系,只需双方识别数据)

        无状态(请求即重新响应,不管是否响应)

        (6)HTTPS(Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道。在HTTP基础上加了SSL协议(通过证书验证服务器身份,提供通信加密)

        (6)HTTP/HTTPS区别

        HTTPS需要CA证书、需要交费;

        HTTPS具有安全性的SSL加密传输协议;

        完全不同的连接方式,端口不一样80/443;

        HTTPS是HTTP+SSL加密传输、身份认证。

        2、HTTP请求及其结构

        (1)HTTP请求的组成

        请求行(request line)

        请求头(header)

        空行

        请求数据

        (2)HTTP请求方法

        GET:请求指定的页面信息,并返回实体主体。

        POST:向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能导致新的资源建立或已有资源的修改。

        HEAD:类似于GET请求,只不过返回的响应中没有具体内容,用于获取报头。

        OPTIONS:允许客户端查看服务器的性能。

        PUT:从客户端向服务器传送的数据取代指定的文档的内容。

        DELETE:请求服务器删除指定的页面。

        TRACE:回显服务器收到的请求,主要用于测试或诊断。

        CONNECT:HTTP1.1协议中预留给能够将连接改为管道方式的代理服务器。

        (3)Requests库常用函数

        requests.request() #构造一个请求,支持以下各种方法

        requests.get() #获取html的主要方法(至少有一个参数-接口地址、有返回值的方法。返回值就是本次请求的服务器响应结果)

        requests.post() #向html网页提交post请求的方法

        requests.head() #获取html头部信息的主要方法

        requests.put() #向html提交put请求的方法

        requests.patch() #向html提交局部修改的请求

        requests.delete() #向html提交删除请求

        (4)Response常用属性

        r.status_code #http请求的返回状态,若为200则表示请求成功

        r.text #http响应内容的字符串形式,即返回的页面内容

        r.recoding #从http header中猜测的相应内容编码方式

        r.rapparent_encoding #从内容中分析处的响应内容编码方式(备选)

        r.content #http响应内容的二进制形式

        (5)Requests用于接口测试

1、不带参数的GET请求

(1)发送不带参数的GET请求requests.get("url")

(2)获取和输出各种响应值

2、带参数的GET请求

(1)发送带参数的GET请求requests.get("url", params=params)

(2)获取和输出各种响应值

3、带参数的POST请求

(1)发送带参数的POST请求requests.get("url", data=params)(等同于以字典的形式提交form表单数据)

(2)获取和输出各种响应值

4、响应结果转换为JSON格式

response.json()等同于json.loads(response.text)

        3、HTTP响应及其结构

        (1)HTTP响应的组成

        状态行

        消息报头

        空行

        响应正文

        (2)HTTP响应头信息

        Allow:服务器支持哪些请求方法(如GET、POST等)。

        Content-Encoding:文档的编码(EnCode)方法。只有在解码之后才可以得到        Content-Type头指定的内容类型。

        Content-Length:表示内容长度。只有当浏览器使用持久HTTP连接时才需要这个数据。

        Content-Type:表示后面的文档属于什么MIME类型。Servlet默认为text/plain,但通常需要显式地指定为text/html 。由于经常要设置Content-Type,因此HttpservletResponse提供了一个专用的方法setContentType。

        Date:当前的GMT时间。你可以用SetDateHeader来设置这个头以避免转换时间格式的麻烦。

        Expires:应该在什么时候认为文档已经过期,从而不再缓存它?

        WWW-Authenticate:客户应该在Authorization头中提供什么类型的授权信息。在包含401(Unauthorized)状态行的应答中这个头是必需的。

        Last-Modified:文档的最后改动时间。客户可以通过If-MOdified-SinCe 请求头提供一个日期,该请求将被视为一个条件GET,只有改动时间迟于指定时间的文档才会返回,否则返回一个304 (Not Modified)状态。

        Location:表示客户应当到哪里去提取文档。Location通常不是直接设置的,而是通过HttpServletResponse的sendRedirect方法,该方法同时设置状态代码为302。

        Refresh:表示浏览器应该在多少时间之后刷新文档,以秒计。注意Refresh 的意义是“N秒之后刷新本页面或访问指定页面”,而不是“每隔N秒刷新本页面或访问指定页面”。

        Server:服务器名字。由Web服务器自己设置。

        Set-Cookie:设置和页面关联的Cookie。

        (3)HTTP响应状态码

        响应信息头(server header)→HTTP状态码(HTTP Status Code)

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

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

200:请求成功。一般用于GET与P0ST请求

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

304:未修改,所请求的资源未修改,服务器返回此状态码时,不会返回任何资源。客户端通常会缓存访问过的资源,通过提供一个头信息指出客户端希望只返回在指定日期之后修改的资源

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

404:服务器无法根据客户端的请求找到资源(网页)

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

500:服务器内部错误,无法完成请求


        愿你我都能为中华民族的伟大复兴尽一份绵薄力量,让中华文化的根扎根在中国这片绿水青山之上,让新一代中华儿女传承与发扬!!!

---无名之辈


以上内容均是本人自学,当然是有网上公布的内容,如有冒犯,请留言,立即改正,谢谢!


        看完要是觉得对自己有用,动一下您那根金色的会一指禅的右手食指,按一下您的鼠标左键,在对应的那个位置点个赞,亦或者在评论区留下您的绝顶好句,亦或者收藏在您的收藏夹里,再走也不迟嘛!您说要不要得!谢谢您的阅读和赞赏!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值