关于接口测试

接口定义

接口泛指实体把自己提供给外界的一种抽象化物,用以由内部操作分离出外部沟通方法,使其能被修改内部而不影响外界其他实体与其交互的方式。

举例:有各种各样的接口,比如电视遥控器的操作界面上的各种按钮 ,电脑上主板的网卡,插槽,硬盘数据线插槽, 软件菜单,DOS命令窗口,软件API函数

注意:接口不关注内部具体实现---过程,而是关注功能实现---结果。

接口分类

根据接口的定义和特性,可以分为以下两类:

1.  外部接口

说明:说明资源实体本身同外界环境的交互方式。

接口分类:

(软件产品为例说明)

1.  用户接口----方便用户与软件产品交互方式,沟通方式。

常见说明示例:

外部接口的用户界面部分按Windows应用软件用户界面的规范来设计,界面设计风格与XXX环境保持一致,采用XXX以及对话框等方式作为用户界面,便于用户使用。

用户接口分类

命令接口:软件产品向用户提供了命令接口供用户使用或管理软件产品。

图形接口:用户可通过鼠标、菜单和对话框来完成对软件产品的相关操作。图形用户接口元素包括窗口、图标、菜单和对话框等

程序接口:软件产品提供给软件开发人员进行编程的接口,俗称API。

2.  硬件接口----软件产品与其它硬件资源之间的接口。

常见说明示例:

Inter或其他系列的微型计算机,内存XXXG以上,硬盘XXXG以上。

3.  软件接口----软件产品同其它应用软件/系统之间的接口。

常见说明示例:

本软件运行于XXX软件及以上版本上,整个环境需要运行在Windows某某版本及更高版本并装有XXX(依赖软件)的操作系统之上。

4.  通信接口---指定软件产品采用的网络传输等通信接口。

常见说明示例:

本软件使用的xxx通信协议。

2.  内部接口

说明:说明软件内部各个模块/系统元素之间的接口或规范,软件各个模块间数据交换的格式等。

常用说明示例:软件内部的接口是通过XXX来进行交换的。用户使用XXX软件……可以说软件的各个模块之间主要通过XXX来进行关联,传送数据并交换信息,从而降低软件模块间的耦合程度。

接口测试

1.  狭义定义

通常,我们软件测试中所说的接口测试,是指外部接口中用于与外部系统交互接口及软件系统内部模块/组件或子系统之间的内部接口测试。例如:

1、系统与系统之间的调用,比如银行会提供接口供电子商务网站调用,或者说,支付宝会提供接口给淘宝调用

2、上层服务对下层服务的调用,比如service层会调用DAO层的接口,而应用层又会调用服务层提供的接口

3、服务之间的调用,比如注册用户时,会先调用用户查询的服务,查看该用户是否已经注册。

注意:

1.不管是内部接口还是外部接口,表现形式一般是以API形式出现

2.代码角度看接口

interface 动物 { void 叫(); }

class 狗 implements 动物 { void 叫() { System.out.println("汪"); } }

class 猫 implements 动物 { void 叫() { System.out.println("喵"); } }

这里,叫() 就可以接口函数,反正我不管你叫()函数里面是怎么样实现的,我只认接口叫()。如上,对猫和狗的叫声不一样,也就是说实现不一样,但是接口一样都是叫(),猫也好,狗也好,都调用叫()。如果不是采用接口形式,而是对猫采用猫叫(),对狗采用狗叫(),当外界环境变化,比如,来的是狐狸叫,那就要修改函数为狐狸叫(),那就麻烦了。

通常比较规范的接口文档都应该具备类似下图中的特点:包含接口名,参数名,参数类型,参数含义说明,取值限制,是否可空等

关于接口测试 Part 1" title="测试思想-集成测试 关于接口测试 Part 1" border="0">


2. 

适用情况

接口测试一般以用于多系统间交互开发,或者拥有多个子系统的应用系统开发的测试。接口测试适用于为其他系统提供服务的底层框架系统和中心服务系统,主要测试这些系统对外部提供的接口,验证其正确性和稳定性。接口测试同样适用于一个上层系统中的服务层接口。


3. 

接口测试和单元测试

接口测试和单元测试之间并无严格的界限划分,根据接口的定义和特性,建议把接口测试同单元测试进行区别看待。个人理解两者之间主要区别在于:

1.单
元测试从代码角度对函数代码的逻辑进行测试,考虑的是函数内部实现,逻辑结构,一般由开发人员执行,而接口测试则是站在用户角度对函数接口定义进行的测
试,考虑的是数据的交换,传递和控制管理过程及系统间的相互逻辑依赖,一般由测试人员执行。可以把接口测试看成是功能黑盒测试,如下:

输入接口参数值->API接口->查看接口的输出

2.一个接口函数可能会包含多个单元模块,所以接口测试和单元测试并不是完全相同的。

3.
接口测试是要满足需求的,有自己特定的业务定义,接口测试所依赖的也是需求说明书,做接口测试的时候,更多的需要从业务的角度去考虑如何测试这个接口

4.
接口测试可以看成是单元测试和集成测试中的一部分。


4. 

测试流程

需求评审->接口定义->用例设计->测试执行->结果分析

注:.接口一般是开发人员定义的

5.   用例设计思想(举例说明)

如上表,是某个接口说明文档中的一个接口,课程检索,其中“v1/Lesson/testsrch/?”
为接口调用地址,此外,还给出了接口函数输出(即Server
Response)及返回值。

问:怎么设计?

答:思路应该是这样的

1.理解需求

客户需求->业务需求->测试需求,对接口测试用例设计也不例外。拿到接口,首先要明白这个接口的主要功能是做啥用的,调用它可实现什么业务。如上述,接口功能:课程检索

2.理解接口参数

对每个参数都要明白它们各自的含义。除了接口文档上简单的说明,还必须理解它真正的作用。按我个人观点,要想更好的理解接口参数,则应该多站在操作流程(或业务流程)及场景上进行考虑,尽量把对应操作数据或输入步骤映射到接口函数。

举例:

场景(操作流程),通场,对于数据查询类操作:输入关键词,然后点击查询,如图

紧接着如果有匹配数据的记录则在列表中显示,然后如果页面超过一页,列表下方会出现提供翻页操作,并显示当前处于第几页,如图

说明:实际中往往没有提供产品demo或者需求说明书,这个时候就要结合我们个人的经验或者生活经历来思考了,如果有更好了。

好了,回过头来看接口参数,这时就很清晰了

k  
string 
检索的关键词,拿上图说,就是我们输入的查询内容“接口测试”

pageIndex   int
当前页码,那上图来说,我们知道它有个很重要的作用就是翻页

pageSize   
int 每页数量,上图虽然没提供页面容量设置,但是实际也隐藏了每个页面展示的记录条数

3.关注接口输出

仅关注接口参数的输入还不够,还应该关注接口的输出,特别是输出结果不唯一的时候:如下课程检索输出。

4.寻找测试点

记住,

一、主要是基于步骤2(输入)、步骤3(输出)的

根据步骤挖掘测试点和测试数据

举例:

测试点:查询内容k(类型>中文,英文大小写,数字,特殊符;长度>是否字数限制;是否可为空>不输入,即””;查询内容存在;查询内容不存在)

测试点:页面翻页pageIndex(当前页,非当前页,不存在的下一页,不存在的上一页,如果提供手动输入页码,然后跳转,还得考虑负数等容错)

测试点:页面展示记录数设置(默认;限制每页展示记录数;翻页至不存在页面)

测试点:对资源的处理输出(视频解码;审核;删除;是否精品推荐判断)

二、其次依据接口参数本身

1、类型->能否传递类型不符的参数值;

个数->能否不传递某些参数;

类型->能否传递类型不同的参数,比如要求是int,你传入string类型的或者要求string类型的,你要求传入int

类型值>能否传递超过参数类型能容纳的值,比如有符号int的范围是-32768~32767,而无符号0~65535,那传递个65536会咋样呢?

注意:

1、一和二中有些是交叉的,他们的关系是互补关系

2、要知道测试是不能穷尽的,要时间成本投入的,如果每个参数每种情况都要细致测的话是要花很多时间的。所以,要折中考虑,考虑测试数据是否意义,适当的取舍,特别是时间有限的情况下。

5.根据测试点设计用例

这个和功能设计用例一样。合理安排优先级,先设计常规用例,典型操作流程,典型业务场景用例,然后设计异常容错等用例。


6.测试方法

功能测试用例设计方法都适用

时间: 2024-08-01 22:29:24

关于接口测试的相关文章

微信接口测试

<!docType html> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimu

Python+Requests接口测试教程(1):Fiddler抓包工具

本书涵盖内容:fiddler.http协议.json.requests+unittest+报告.bs4.数据相关(mysql/oracle/logging)等内容.刚买须知:本书是针对零基础入门接口测试和python+requests自动化的,首先本书确实写的比较基础,对基础内容也写的很详细,所以大神绕道. 为什么要先学fiddler? 学习接口测试必学http协议,如果直接先讲协议,我估计小伙伴们更懵,为了更好的理解协议,先从抓包开始.结合抓包工具讲http协议更容易学一些. 1.1 抓fir

接口测试概述:概念、目的、流程、工具、技能以及接口用例设计

一.什么是接口测试 二.接口测试流程 三.接口测试目的 四.接口测试用例设计 五.接口测试内容 六.接口测试工具 七.接口测试需要掌握的知识

chrome插件 postman插件 接口测试、API &amp; HTTP 请求调试工具

Postman 是一个非常棒的Chrome扩展,提供功能强大的API & HTTP 请求调试. 它能够发送任何类型的HTTP requests (GET, HEAD, POST, PUT..),附带任何数量的参数+ headers. 支持不同的认证机制(basic, digest, OAuth),接收到的响应语法高亮(HTML,JSON或XML). Postman 能够保留了历史的请求,这样我们就可以很容易地重新发送请求,有一个“集合”功能,用于存储所有请求相同的API/域. 这个扩展还有一些更

jmeter关联和接口测试的内容

[接口测试之添加测试计划-线程组-sampler] 1.建立测试计划    只要打开执行Jmeter.bat,就会有Jmeter的桌面运行界面出来,会自动建立一个测试计划,如下图所示: 2.添加完测试计划后,就要添加对应的线程组,所有的测试步骤都是在线程组下面执行的,如下所示: 添加完成后,就可以看到自己所添加的线程组了. 由于我是要测试多个接口,为了方便控制,我是为每一个业务逻辑建立了对应的线程组. 3.根据自己测试的接口类型,建立对应的测试步骤,我这里就是HTTP接口,所以请求是基于HTTP

接口测试 总结

前言: 本文主要针对http接口进行测试,使用Jmeter工具实现. Jmter工具设计之初是用于做性能测试的,它在实现对各种接口的调用方面已经做的比较成熟,因此,本次直接使用Jmeter工具来完成对Http接口的测试. 1.介绍什么是接口 现在最常用的2种接口就是webservice和http api接口,webservice接口是走soap协议通过http传输,请求报文和返回报文都是xm格式,可以通过jme.soapui工具进行测试: http api接口是走http协议通过路径来区分调用的

Python 接口测试(一)

1. 概念: 接口测试是测试系统组件间接口的一种测试.接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点.测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等. 2.    环境准备: (1.)安装python https://www.python.org/downloads/ 下载你想用的版本(本文介绍的版本是3.5的版本).安装后,添加系统环境变量.在cmd中输入python, (2.)安装requests库. https://pypi.pyth

Python 接口测试(五)

五:使用python进行组织编写接口测试用例 接口测试其实就是几个步骤. 拿到接口的url地址 查看接口是用什么方式发送 添加请求头,请求体 发送查看返回结果,校验返回结果是否正确 明白了接口测试的测试步骤,那么我们就可以来组织我们的代码. import requests # 接口的url url = "http://fanyi.baidu.com/v2transapi" # 接口的参数 params = { "from":"en", "

接口测试-测试人员必备技能

接口测试,其实并没有那么可怕,但是作为测试人员也是必不可少的技能. 接口分为:内部接口和外部接口. 内部接口:是浏览器与服务器的接口.这个很容易理解,web开发一般分前端和后端,前端开发人员用html/css/javascript等技术.后端开发人员用php/java/python等各种语言.用户输入的数据是输入到前端页面上.怎样把这些数据传递到后台呢?通过http协议的get.post请求来实现前后端的数据传递.这也可以认为是接口测试,这通常称之为内部接口. 外部接口:大部分都是服务端与服务端

关于接口测试的好东东,自己的整理的

什么是接口测试? 接口是指系统模块与模块或系统与系统间进行交互,一般我们用的多的是HTTP协议的接口.WebService协议的接口,还有RPC(Remote Procedure Call Protocol)--远程过程调用协议 的接口.? 不管是哪种接口,其本质就是发送一个request,然后服务器响应后返回一个response,然后我们对response进行分析,这即是接口测试. 为什么要做接口测试? 随着系统越来越多,以及复杂性越来越高,为了保证系统的独立性,也为了使业务更加的独立,系统间