原文链接https://blog.csdn.net/u011541946/article/details/77745217

目录

1. 为什么要做接口测试

2.什么是接口测试

3.接口的分类

HTTP请求方法(原文链接)

4、设计接口测试用例方法

1.接口测试的流程

2.为什么要写用例

3、接口主要设计用例点

4、接口测试的工具


1. 为什么要做接口测试

在日常开发过程中,有人做前端开发,有人负责后端开发。接口就是连接前后台,由于前端开发和后端开发的速度可能不一样,例如后端开发好了,但是前端没有开发。那么我们是不是就不需要测试呢?大部分人都是做功能测试,很多是界面的功能测试。

如果你理解了接口测试,那么你就可以针对接口进行测试。

同时,接口测试也是后端测试常见的一种测试种类。
    

看看测试金字塔,接口测试是在中间部分,底层是单元测试,最顶端是界面测试。从三者的面积大小来看,单元测试和接口测试,才是重点,而界面测试真的是太少。这个面积,你可以理解为代码覆盖,也可以理解为测试的工作量。这里要提出一个观点:现在国内公司越来越重视接口测试,之前的几年,很多测试资源都放在了界面的测试,今后会逐步放在接口测试功能,性能,自动化和稳定性测试上面。白盒测试目前还是开发自己测试,有些大公司,注重软件产品质量,也会安排一些有代码能力的测试人员,去辅助和指导开发人员进行单元测试,共同保证软件的质量。

2.什么是接口测试

一般来说,测试接口,就是指测试接口的功能,性能和稳定性测试,当然可能还有安全性测试。

这个入门系列会让你掌握接口的功能测试。一般,来说我们听说到的接口基本上都是指HTTP或者HTTPS协议的接口测试,也就是一些web服务请求。一个软件项目中,有很多接口,少的有几十个,多的有几百上千个接口。这个时候,我们没有软件界面,没有具体的测试场景,只有一个接口描述文档。我们需要把接口这样抽象的东西,通过软件测试的理论和方法去测试接口,找出接口的功能和安全性的缺陷。

接口有内部接口和外部接口。内部接口就是开发人员自己开发的接口。外部接口,好比网站调用微信支付和支付宝支付接口。还有一些模块与模块之间的接口。学习过Java或者用过selenium的人,应该对接口有了解。你的自动化脚本调用了很多selenium的接口。

3.接口的分类

在开始做接口测试之前,有必要了解一下接口的分类。这里的分类,主要是HTTP请求方法分类。

HTTP请求方法(原文链接)

根据HTTP标准,HTTP请求可以使用多种请求方法。

HTTP1.0定义了三种请求方法: GET, POST 和 HEAD方法。

HTTP1.1新增了五种请求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法。

序号 方法 描述
1 GET 请求指定的页面信息,并返回实体主体。
2 HEAD 类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头
3 POST 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。
4 PUT 从客户端向服务器传送的数据取代指定的文档的内容。
5 DELETE 请求服务器删除指定的页面。
6 CONNECT HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
7 OPTIONS 允许客户端查看服务器的性能。
8 TRACE 回显服务器收到的请求,主要用于测试或诊断。

附:GET和POST的区别,可以参考另一篇文章https://blog.csdn.net/weixin_30363263/article/details/80060456,这个问题,面试中经常被提到。简单来说,可以从三个方面去回到这个区别:方式、大小、安全

1).方式

方式指的是参数的传入方式,GET方法一般是指获取服务器上的数据,参数直接跟着URL后边,直接可以放到浏览器地址栏里,例如登录就是采用GET方法。而POST方法是指客户端给服务器上提交表单数据,所以POST是通过表单提交的,例如你网页上的调查问卷和答题就是采用POST方法。

2).大小

上面已经知道GET是直接在浏览器地址栏输入,由于浏览器有限制,一般整个URL的长度可以很长,但是不能超过2049KB的大小限制,而这个POST就没有大小限制。

3).安全性

由于GET的参数是在浏览器地址栏直接拼接,暴露在互联网中,肯定不安全。POST是通过表单数据提交,相对比GET方法更安全。

4、设计接口测试用例方法

前面我们已经介绍了什么是接口测试和接口测试的意义。在开始接口测试之前,我们来想一下,如何进行接口测试的准备工作。或者说,接口测试的流程是什么?有些人就很好奇,接口测试要流程干嘛?不就是拿着接口文档直接利用接口测试工具测试嘛。其实,如果只是三五个接口,你可以这么做一个临时的接口测试。但是,如果是上百个接口,或者,你们公司的这个项目,第一次做接口测试,那么,我们还是很有必要遵守测试的流程。

1.接口测试的流程

接口测试和功能测试一样,流程也大致遵守V模型,请看下图

一般来说,接口测试左边的每个阶段,每个公司可能都侧重点不同,例如有些公司就没有需求讨论和需求评审这个阶段。不管如何,用例设计,这个是少不了,而且是重点,要花时间的阶段。只有覆盖全面的接口测试用例,才能有比较好的测试接口覆盖率,才会找出更多的接口的Bug.

2.为什么要写用例

功能测试用例,大家都写过。接口测试用例,很多人没有写过。在写之前,我们来讨论下,为什么要写接口用例。

  1. 理清思路,避免漏测
  2. 提高测试效率
  3. 跟进测试进度
  4. 告诉领导做过
  5. 跟进重复性工作,回归功能使用

上面五点,结合自己测试实际经验,应该来说是很好理解和认同的。有用例,就有思路,避免漏掉测试点。跟着用例测试,避免随机测试那种没有目的性的测试,提高测试效率。有用例,上级问你完成的进度,你好用数据回答。有用例,用来标记你执行的结果,证明你做过测试。避免将来发生问题,人家说你没有测试,有数据和证据说话。接口测试也需要重复跑,跑几轮,或者用自动化天天跑。这样的重复性工作,用例可以保证每次重复做的是一样的情况。

3、接口主要设计用例点

主要从四个方面来设计接口用例:功能,逻辑业务,异常,安全

功能

1)功能是否正常;

2)功能是否按照接口文档实现

举例:有些添加到购物车,需要登录才能添加。也就是业务要求不支持游客添加购物车功能,如果设计一个没有登录的用户,然后去测试添加购物车接口,结果接口能添加到购物车,说明功能不正常,不符合需求和接口文档描述。

逻辑业务:是否依赖业务;

举例:该接口调用之前,需要调用登录接口,如果不登录也能请求数据,不符合业务规则。

异常:参数异常和数据异常
参数异常:关键字参数,参数为空,多,少参数,错误参数

数据异常:关键字数据,数据为空,长度不一致,错误数据
         举例:不管数据异常还是参数异常,测试点差不多,一个参数有key和value,key表示参数,value表示数据。第一,看看参数和数据能不能支持关键字,例如Java中的保留关键字等等。第二个就是参数和数据都为空,看看是否做了判断。第三个,参数多和少,例如有两个参数的接口,你需要设计一个三个参数的用例,一个只有一个参数的用例。数据那边长度不一致,例如设计很长的字符串是否支持,因为数据库创建表过程都设置好了每个字段的长度。输入错误的参数和数据,例如故意输出单词等等。

安全测试用例设计:

  1. cookie:有cookie才能获取数据,如果不带cookie还有信息返回,说明有问题
  2. header:正常接口带header信息,删除header看是否能够返回数据。
  3. 唯一识别码:app手机识别码,一般是唯一的。

安全测试主要从上面三点检查。第三个是唯一识别码,主要是指app上手机的识别码,一般很少用到,除非很严格的接口测试,例如银行app登录,需要指纹,而指纹来源手机,一般有一个手机识别码判断过程。

4、接口测试的工具

目前,市场上有很多支持接口测试的工具。利用工具进行接口测试,能够提供测试效率。例如,加入让你一天完成100个接口测试任务,你觉得你加班能否完成。如果有工具,但是不是所有工具都能够支持你完成这个任务。下面我们就来挑选几个工具,简单介绍一下。

1.我画了一个图

1.fiddler

首先,这是一个HTTP协议调试代理工具,说白了就是一个抓http包的工具。web测试和手机测试都能用到这个工具。既然是http协议,这个工具也能支持接口测试。稍后文章,我们会专门介绍fiddler这个工具。

2.postman

这是一款google工程师开发的一个插件,可以安装到chrome浏览器上。支持不同接口测试请求,能够管理测试套件和自动化运行,弱点在于,自动化断言功能不强大。不能和jenkins和代码管理库进行持续集成测试。但是,绝对是一个很好的半手工,半自动化测试工具,我一般在写自动化接口测试用例,会打开postman进行辅助测试和debug。这个工具也会稍后在文章介绍。

3.wireshak

这个是一款计算机上抓包工具,支持抓各种包,TCP,UDP,HTTP都支持。如果做底层网络数据测试,一般都需要用到它。作为接口测试,这个软件有点不友好。因为刷新数据太快,不好定位每个操作对应的接口。所以,我们不会进行过多介绍这个工具。

4.soupUI

这个是一个开源免费和,企业版收费的软件。在国外的接口测试,使用非常多。这个工具能够支持接口自动化测试和接口性能测试,也能支持和jenkins做持续集成测试。了解一下就可以,自己可以下载一个社区免费版,做一个demo试试。

5.java代码做接口测试

代码是万能,笔记工具也是代码开发出来的。为什么要用代码做接口自动化测试呢。因为,有些工具功能是有限制,很多公司,需要一些特定的功能,工具不支持,只好用代码进行开发。一般用Java做自动化测试,主要是利用httpclient.jar这个包,然后利用junit或者testng这样的单元测试工具,进行测试用例的开发,然后在jenkins上创建一个job,进行持续集成测试。

6.Python代码做接口测试

和Java一样,Python中利用一个很好,功能强大的第三方库requests,能够方便都创建接口自动化用例。python下单元测试框架,一般采用unittest。生成测试报告,一般选择HTMLTestRunner.py。同样,可以和jenkins做持续集成测试。

7.LoadRunner

不要以为LR只能做性能测试,loadrunner同样可以做接口自动化和接口压力测试。只是我们很多人,不会利用LR的函数,进行开发接口测试用例。

8.JMeter

JMeter同loadrunner一样,都是以性能测试出名,一般用JMeter也是做接口性能测试。例如java+Jmeter+ant+jenkins做接口性能监听测试。JMeter如何做接口测试,请看我JMeter系列文章。

上面说了这么多工具,基本覆盖了接口功能测试,接口自动化测试,接口性能测试。这里提一下,在Python语言下有一个性能测试工具推荐:Locust。自己百度,安装下,很简单的web界面,感觉很不错,作为一个轻量级的协程测试工具。

为啥要做接口测试?接口测试用例怎么写?哪些工具可以用?相关推荐

  1. 接口测试用例怎么写?

    测试流程 需求规格说明书--测试计划--测试用例--用例评审--开发 接口文档--接口分析--接口用例设计--评审--接口测试执行(关注数据库)--前后端对接 系统界面测试--测试结束 如何设计接口测 ...

  2. 接口测试用例怎么写? 模板示例 2021

    接口测试用例 字段 含义 用例ID 编号 项目名称 测试项目 所属模块 模块 接口名称 哪个接口 用例标题 用例作用 请求方式 GET/POST或者其他方式 请求RUL地址 URL地址 请求参数 需要 ...

  3. 接口测试(二)接口测试用例设计

    接口测试做什么? 接口测试主要检查接口返回的接口数据是否正确.是否和接口文档中定义的一致. 接口测试用例怎么写? 接口测试用例可以参照黑盒测试用例规则来编写,如边界值法.等价类划分法.正交试验法等. ...

  4. 有了这些接口测试用例+工具,测试效率想不提升都难

    写在前面:在日常开发过程中,有人做前端开发,有人负责后端开发.接口的主要作用就是连接前后台.但是,由于前端和后端开发的速度可能不一样,尤其是后端开发好了,但前端还未开发.这种时候我们需要做接口测试吗? ...

  5. 接口测试的原理,什么是接口测试?为什么要做接口测试?如何开展接口测试?

    什么是接口? 业内常说的接口一般指两种: API:应用程序编程接口,程序间的接口 GUI:图形用户界面,人与程序的接口 软件接口测试中的接口特指API接口 接口测试又称API测试 接口实例:系统与系统 ...

  6. 接口测试用python怎么做_请问一下python怎么做接口测试工具?

    茅侃侃 之前使用过urllib和urllib2做接口测试,在做的途中,感觉使用urllib2直接进行的get,post 请求并没有那么好用.作为测试人员,所需要的测试工具应当以方便为第一要务,测试的耗 ...

  7. python接口自动化 一个变量 其他接口要用_python接口自动化(二)--什么是接口测试、为什么要做接口测试(详解)...

    简介 上一篇和大家一起科普扫盲接口后,知道什么是接口,接口类型等,对其有了大致了解之后,我们就回到主题-接口测试. 什么是接口测试 接口测试是测试系统组件间接口的一种测试.接口测试主要用于检测外部系统 ...

  8. python接口自动化(二)--什么是接口测试、为什么要做接口测试(详解)

    简介 上一篇和大家一起科普扫盲接口后,知道什么是接口,接口类型等,对其有了大致了解之后,我们就回到主题-接口测试. 什么是接口测试 接口测试是测试系统组件间接口的一种测试.接口测试主要用于检测外部系统 ...

  9. 怎么设计接口测试用例更好——百度大佬“教你写用例”

    一.简介 在开始接口测试之前,我们想一下,接口测试的流程是什么?说到这里,有些人就会产生好奇和疑问,心里mmp:接口测试要什么流程哈???不就是参考接口文档,直接利用接口测试工具(例如jmeter和p ...

最新文章

  1. 通过Java代码装配bean
  2. java取模多位数_JAVA大数类—基础操作(加减乘除、取模、四舍五入、设置保留位数)...
  3. 腾讯QQ空间g_tk算法
  4. 什么叫做java程序中的继承_【Java】基础16:什么叫继承?
  5. docker network host模式
  6. python 下载文件-Python实现HTTP协议下的文件下载方法总结
  7. 锐捷长ping_锐捷实战系列(二) Wireshark抓包分析Ping过程
  8. wsimport生成Java客户端
  9. 大学生网课答案查询公众号搭建教程
  10. 安装SVN后,更新项目没有对号等图标
  11. 实习生如何在平淡无奇的工作中凸显自我价值?
  12. wordpress中主机名填写的是什么主机名?
  13. 苦逼程序员的真实生活
  14. 内网渗透-cs之模拟钓鱼攻击
  15. 前端面试题:如何让元素水平垂直居中?
  16. 使用biblatex时如何改变指定参考文献的颜色
  17. pat-1069 The Black Hole of Numbers (20分)
  18. apt、yum、dnf 和 pkg比较
  19. 产品经理的逻辑思维培养(一)
  20. 如何把组件放到左上角或者右上角(position:absolute的使用)

热门文章

  1. IntelliJ IDEA 生成变量名快捷键
  2. antd Tabs组件自定义头部
  3. 厦门理工 oj 1003 第三届程序设计大赛 让气球飞起来
  4. 总热搜60次,票房突破53亿。这部电影究竟为什么能如此火爆?
  5. “熊猫视图”.Net图形控件功能介绍 [十六]:图元旋转
  6. 基于单颗地平线征程®3芯片,福瑞泰克推出轻量级行泊一体解决方案
  7. SATA-SAS-USB-PCIE带宽和传输速率
  8. 〖Python语法进阶篇㉑〗- 综合实战 - 抽奖系统之优化补充
  9. 学霸君面试php,我是如何通过学霸君面试的?
  10. Vue 项目Active Reports JS PDF乱码解决