接口测试之基础概念,流程,文档系统ShowDoc

目录

1 接口测试背景

1.1 接口测试的必要性

1.2 接口测试的原理

1.3 接口测试的范围

2. 接口测试基础

2.1 接口的定义

2.2 接口的分类

2.3 HTTP

2.3.1 什么是HTTP?

2.3.2 设计HTTP的目的?

2.3.3 HTTP主要特点

2.4 HTTP请求

2.4.1 统一资源定位符URL

2.4.2 Method

2.4.3 Headers 和 Body

2.5 HTTP响应

2.5.1 什么是HTTP响应?

2.5.2 HTTP响应报文

2.5.3 JSON

3. 接口测试流程

3.1 编写接口测试计划

3.2 编写,评审接口测试用例

3.3 执行接口测试

3.4 接口自动化测试持续集成要点

4. 接口文档系统

4.1 ShowDoc简介

4.2 ShowDoc部署

4.3 接口测试文档的简单示例


1 接口测试背景

1.1 接口测试的必要性

(1)接口测试能使测试团队更早更深入文档介入项目,测试人员在项目初期就能发现系统深层次的问题,降低问题修复的成本。

(2)接口测试变更概率小于用户界面的变更概率,因此,接口测试自动化维护成本比UI自动化成本低

(3)接口测试相对更容易实现自动化测试持续集成,可以减少回归测试的人力与时间成本,缩短测试周期,满足后端快速发布版本的需求。

(4)持续集成是接口测试低成本,高收益的根源,是接口测试的灵魂。

1.2 接口测试的原理

测试人员借助工具模拟客户端向服务器端发送请求报文,

服务器端接收请求报文后,对相应的报文做出处理,并向客户端返回应答,

工具模拟客户端接收应答,

然后测试人员检查应答是否准确。

1.3 接口测试的范围

(1)是否所有的接口都需要测试?

答:想覆盖所有的接口很困难。主要测试最外层的两类接口:

一个是数据进入系统的接口(调用外部系统的参数为本系统使用)

一个是数据流出系统的接口(验证系统处理后的数据是否正常)

(2)被测接口需要测试哪些方面?

功能是否实现?

性能是否达标?

安全性是否满足?

重点关注数据的交换,传递,处理次数,控制管理过程

2. 接口测试基础

2.1 接口的定义

(1)两个不同的系统,或者一个系统中两个不同的功能之间的连接部分称为接口。

软件测试中的接口一般有两种:

图形用户接口GUI(人与程序的接口)

应用程序编程接口API        !!!

(2)什么是API?

API是一组定义,程序和协议的集合。

API可实现计算机软件之间的相互通信。

API的一个主要功能是提供通用功能集,程序员通过使用API函数开发应用程序,从而避免编写无用程序,减轻编程任务。

前端工程师和后端工程师一般会协商接口的定义方式,其中一方定义接口(后端工程师),另一方调用接口实现预期功能。

(3)前后端分离有哪些优势?

后端工程师专注于数据的处理,对外提供API即可,不用了解前端技术。

前端工程师通过API获取数据,专注于页面设计

前后端分离可扩大接口的应用范围,开发的接口可以应用到web页面或者APP上。

2.2 接口的分类

(1)HTTP接口

它是基于超文本传输协议开发的接口,但不能排除没有使用其他协议。

(2)Web Service接口

它是系统对外的接口,比如要从别的网站或服务器上获取资源。

通常别人不会把数据库共享给你,但是会提供一个写好的方法,让你用来获取数据,你使用这些方法就能引用他们提供的接口,进而同步数据。

(3)RESTful接口,简称REST

它描述了一个架构样式的网络系统,核心是面向资源。

REST专门针对网络应用设计和开发方式,降低开发的复杂性,提高系统的可伸缩性。

2.3 HTTP

2.3.1 什么是HTTP?

HTTP是应用最为广泛的网络协议之一,所有的万维网文件都必须遵循这个标准。

2.3.2 设计HTTP的目的?

是为了提供一种发布和接收HTML页面的方法。

2.3.3 HTTP主要特点

(1)支持客户端/服务器模式

客户端向服务器请求服务时,只需传送请求方法和路径。常用方法有GET, POST。 

(2)简单

HTTP简单,服务器的程序规模小,通信速度快。

(3)灵活

HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type标记。

(4)无连接

限制每次连接,使其只处理一个请求。

服务器处理完客户端的请求,并收到客户端的应答后,即断开连接。节省传输时间。

(5)无状态

无状态是指协议对于事物处理没有记忆能力。

缺少状态意味着如果后续处理需要前面的信息,则必须重新上传,这样可能导致每次连接传送的数据量增加。如果服务器不需要前面的信息,则应答就会比较快。

2.4 HTTP请求

HTTP请求包含4部分:统一资源定位符URL,方法Method,请求头Headers,请求体Body

2.4.1 统一资源定位符URL

(1) 什么是URL?

URL是用于完整地描述互联网上网页和其他资源地址的一种标识方法

URL给资源的位置提供一种抽象的表示方法,并用这种方法给资源定位

只要能对资源定位,用户就可以对资源进行各种操作,如存取,更新,替换和查看属性等。

资源,是指:在互联网上可以被访问的任何对象,包括目录,文件,图像,声音等。

URL相当于文件名在网络范围的扩展。

不同资源所用协议不同,所以URL还给出了访问某个资源时所使用的协议。

(2)URL的一般形式

<协议>://<主机>:<端口>/<路径>/<文件名>

解析:

协议:获取该互联网资源所使用的协议,HTTP协议,FTP文件传输协议

主机:指出万维网文档是在哪个主机上,可以给出域名,也可以给处IP地址

端口:服务器监听的端口,HTTP默认80, FTP默认21

路径和文件名:进一步给出资源在服务器上的位置,但它们的名称是虚拟的,和服务器上的物理名称可能不同。

<协议>://<主机>:<端口>/<路径>/<文件名>?<参数1>=<值1>&<参数2>=<值2>

动态网页参数:对于动态网页,用户需要给服务器提供访问动态网页的参数,因此,URL后面可以加上一个英文问号"?",问号后面以“参数名称=参数值”的形式给出多个参数,每组之间用“&”分隔 , 称为查询串。

2.4.2 Method

(1)什么是Method?

HTTP定义了与服务器交互的4种不同方法: GET, POST, PUT, DELETE 等。

即,method对应URL资源的增删改查等操作。

(2)GET方式和POST方式有什么区别?

1)提交数据的方式不同

GET方式:请求的数据会附在URL后,即把数据放置在HTTP协议头<request-line>中

如果数据是英文字母和数字,则直接发送。

如果是空格,则转换为+,然后发送。

如果是中文和其他字符,则会用Base64加密字符串,然后发送。

POST方式:把提交的数据放置在HTTP包的请求体<request-body>中(不在地址栏显示出来)。

2)传输数据的大小不同

HTTP对传输的数据大小和URL长度没有限制,但实际开发中还是存在一些限制。

GET方式:特定浏览器和服务器对URL长度有限制。比如IE对URL长度的限制是2083byte。因此GET传输的数据会受到URL长度的限制。

POS方式:不通过URL,理论上数据不受限制。但实际上各个Web服务器会规定对使用POST方式提交的数据大小进行限制,Apache, IIS6.0都有各自的配置。

3)安全性不同

POST方式比GET方式安全性高。

2.4.3 Headers 和 Body

HTTP报文是面向文本的,报文中的每个资源都是ASCII码串

各个字段的长度是不确定的。

HTTP请求报文由:请求头行,头,空行,请求数据4个部分组成,格式一般如下:

<request-line>

<headers>

<blank line>

<request-body>

2.5 HTTP响应

2.5.1 什么是HTTP响应?

服务器返回的应答消息,称为HTTP响应。

2.5.2 HTTP响应报文

HTTP响应报文由3个部分组成:状态行,消息报头,响应正文

HTTP响应的格式:

<status-line>

<headers>

<blank line>

<response-body>

解析:

(1)状态行

提供一个状态码来说明所请求的资源情况。

状态行格式(3部分): HTTP-version Status-Code Reason-Phrase CRLF

HTTP-Version:表示服务器HTTP的版本

Status-Code:表示服务器返回的响应状态代码

解析:状态代码由3位数字组成,第一个数字定义了响应的类别,有5种可能的取值:

1XX:指示信息,表示请求已接收,继续处理

2XX:成功,表示请求已经被成功接收,理解和接受

3XX:重定向,要完成请求必须进行更进一步的操作

4XX:客户端错误,请求有语法错误或请求无法实现

5XX:服务器错误,服务器未能实现合法的请求

常见的状态代码如下:

200 OK:客户端请求成功

400 Bad Request:客户端请求有语法错误,不能被服务器所理解

401 Unauthorized:请求未经授权

403 Forbidden:服务器收到请求,但是拒绝提供服务

404 Not Found:请求资源不存在,如输入了错误的URL

500 Internal Server Error:服务器发生不可预期的错误

503 Server Unavailable:服务器当前不能处理客户端的请求,一段时间后可能恢复正常

Reason-Phrase:表示状态代码的文本描述

CRLF:表示一个回车符和一个换行符

(2)HTTP响应报文的简单示例

HTTP/1.1 200 OK

Date: Sat, 23, Dec 2020 23:59:59 GMT

Content-Type: text/html; charset=ISO-8859-1

Content-Length: 122

<html>

        <head>

                <title>Storm<title>

        </head>

        <body>

                <!-- body goes here -->

        </body>

</html>

2.5.3 JSON

(1)JS对象标记的定义

JSON, JS对象标记,是一种轻量级的数据交换格式。

基于ECMAScipt的子集,采用完全独立于编程语言的文本格式来存储和表示数组

是一种简洁的数据交换语言。易于阅读编写和解析,有效提升网络传输效率。

HTTP接口响应一般为JSON格式。

(2)JSON语法规则

包括用大括号保存对象,用键值对表示对象,用逗号分隔每个对象,用中括号保存数组。

键值对中的"键"要用引号,这个不同于JS。

(3)JSON示例

{"name": "Sheryl", "age": "30", "sex": "female"}

3. 接口测试流程

3.1 编写接口测试计划

(1)接口测试计划的目标:

为了确认需求,确定测试环境及测试方法,为设计测试用例做准备,初步制定接口测试进度方案。

(2)接口测试计划包含(6部分):

概述,测试资源,测试功能和重点,测试策略,测试风险,测试标准。

3.2 编写,评审接口测试用例

开始测试之前,需要根据需求文档,接口文档等项目相关文档编写并评审接口测试用例。

接口测试的思路如图:

3.3 执行接口测试

根据接口测试用例,借助测试工具(JMeter, Postman,  SoapUI等)执行接口测试,报告问题。

3.4 接口自动化测试持续集成要点

(1)为什么要进行接口的自动化测试?

进行项目测试时,接口会增加,变更,减少等,测试用例也会相应更新。

因此,需要借助工具(GitHub等)来维护测试用例进行持续更新,通过自动化测试来实时监控项目接口运行情况。

(2)持续集成是接口测试的核心内容

通过自动化手段,才能做到低成本高收益。

(3)接口自动化测试持续集成主要包括哪些内容?

1)流程方面:在回归阶段加强接口异常场景的覆盖,并逐步向系统测试,冒烟测试阶段延伸,最终达到全流程自动化。

2)结果展示:更加丰富的结果展示,趋势分析,质量统计和分析等。

3)问题定位:报错信息,日志更精准,方便问题复现与定位。

4)结果校验:加强自动化校验能力,如数据库信息校验。

5)代码覆盖率:不断尝试由目前的黑盒向白盒下探,提高代码覆盖率。

6)性能需求:完善性能测试体系,通过自动化的手段监控接口性能指标是否正常。

4. 接口文档系统

功能测试的依据有产品需求文档,开发设计文档等。

接口测试的主要依据是接口测试文档

由于前后端分离,需要采用更好的API文档工具来维护接口信息,比如ShowDoc。

4.1 ShowDoc简介

ShowDoc特点:

(1)一个开源免费的工具。

(2)一个非常适合IT团队的在线API文档,技术文档工具,它可以实现实时同步,用户无需花费过多的精力维护文档。

(3)借助ShowDoc可以方便快速的编写出美观的API文档,并且可以用它编辑数据字典和一些技术规范说明文档供团队查阅。

(4)提供免费在线文档托管服务,用户可以通过ShowDoc官网创建自己的项目,并将其保存在云端,也可以选择将ShowDoc部署到本地服务器。

4.2 ShowDoc部署

(1)既然ShowDoc提供了在线托管服务,为什么还需要搭建本地服务器呢?

主要是从安全角度考虑,毕竟接口文档不适合暴露在大众视野下。

(2)如何在本地服务器上部署ShowDoc?

环境:CentOS7, docker

1)安装Docker

Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到Linux系统上,也可以实现虚拟化。容器使用沙箱机制,相互之间不会有任何接口。

登录服务器(CentOS7),切换到root用户,使用以下命令进行安装。

yum install docker

2)启动Docker服务

        service docker start

3)设置Docker服务为开机启动

        chkconfig docker on

4)借助yum, 安装git

        yum install git

5)安装ShowDoc

        从GitHub上复制代码到本地某个目录,这里进入根目录下的test文件夹

        cd /test

        git clone -o gitbug https://github.com/start7th/showdoc

6)进入ShowDoc目录开始安装

        cd showdoc/

        docker build -t showdoc ./

        docker run -d --name showdoc -p 4999:80 showdoc 

        (如果想在不同端口启动,可将4999改为其他的)

7)访问ShowDoc

在浏览器中输入: http://192.168.132.132:4999/install/, (IP是自己服务器的IP, 端口是上面设置的4999),在页面上完成安装步骤。

最后,提示安装成功后,最好按照提示信息删除/install目录,使用命令: rm -rf XXX/install

8)备份

API文档很重要,需要备份。

/XXX/showdoc/Sqlite目录下有个showdoc.db.php文件,定期备份该文件即可。

可以手动命令备份:

mv /XXX/showdoc/Sqlite/showdoc.db.php /test/showdoc.db.php.bak

4.3 接口测试文档的简单示例

 

猜你喜欢

转载自blog.csdn.net/sulia1234567890/article/details/120743548