七个步骤覆盖 API 接口测试
接口测试作为最常用的集成测试方法的一部分,通过直接调用被测试的接口来确定系统在功能性、可靠性、安全性和性能方面是否能达到预期,有些情况是功能测试无法覆盖的,所以接口测试是非常必要的。首先需要对接口测试的基本信息做一些了解:
接口测试的意义
- 低 - 低成本
因为接口的相对稳定性,不需要大量的重新编写,做好基础的维护,用例的扩充,能满足日常的使用范围
- 稳 - 相对稳定
当接口自动化创建后,可以相对稳定的运行。接口相对稳定,不会频繁更换,顶多增加字段或者新增接口(相对于UI测试来说,维护、编写成本很大,实际过程中一点点的放弃了UI自动化测试)
- 快 - 执行速度快,反馈速度快
涉及到持续集成,把接口集成到 jenkins 上,自动触发或定时任务触发,触发后就反馈结果。
测试和监控 API 对确保应用程序的功能和性能变得越来越重要,我们在本文中可以详细了解完成API 测试的操作步骤,详细信息请参照下文:
七个基本步骤
1. 了解 API 的范围
在尝试测试 API 之前,了解 API 的作用及其职责是至关重要的。此步骤应从访问 API 文档开始。应该手动对 API 端点进行一些调用,以深入了解它们的工作方式以及它们返回的数据
2. 了解用户流程
在这一步中,应该超越单个 API,查看使用它的应用程序。尝试并了解用户如何使用这些应用程序,以及它们的使用会触发哪些 API 调用。这将帮助你了解API在实际生活中使用的场景,并使你能够开发测试,以测试和验证 API 在实际生活中的使用方式。
例如,如果直接从 Web 应用程序调用 API,可以使用浏览器开发人员工具记录对 API 发出的所有请求并检查请求和响应负载。这有助于了解 API 的使用方式。
3. 编写API测试
- 测试接口选择
项目有几十个或者几百个接口。一方面,不可能对每一个接口都做自动化测试,所以要分主要接口和非主要接口;另一方面,也不是每个接口都适合做自动化测试,所有要分稳定接口和不稳定接口;还有一方面,有些接口只能调用一次,所有要分可重复执行接口和不可重复执行接口。当然其中还有其他银色影响接口的选择,要根据实际情况进行筛选,然后对接口逐步分析,来确定最后需要自动化测试的接口,做到可以在接口层面成本最大化。
- 注册接口
这是一个重要的接口,但却是不可重复执行的接口,因为同样的数据第二次是无法注册成功的,所以这个接口不适合做这类自动化。
- 登录接口
这个接口是可以重复执行的,而且相对于来说不太会随意改动的借口,所以这个接口适合做自动化。
- 用户信息查询
这个接口可以反复请求,适合做自动化。
结合自身项目并在具体的实践过程中,我们会发现大多数做自动化的接口都是查询接口,因为不涉及对数据库的改动,仅仅是查询可以重复操作的,而且返回数据也是相同的,便于对返回结果的判断验证。
4. 覆盖异常情况和边界值情况
上一节介绍 API 测试接口的选择,并验证它在“正常”使用情况下是否按预期工作。在这一步中,判断 API 在边界值和异常情况下的行为是否正确。例如:
- 是否试图让一个不存在的实体返回正确的错误代码(404 响应)?
- 如果提供了错误数据类型的参数(400 响应),API 是否会失败?
- 如果我们尝试访问我们没有权限的实体(401 响应)会发生什么?
这一步的技巧是查看HTTP 错误代码列表(尤其是 4xx 范围 - 用户错误)并尝试创建生成这些代码的场景。
5. 针对 Dev 和 Stage 环境执行测试
自动化需要一个干净的测试环境,不然很难重复运行起来。自动化测试要做到绝对只能也是不可能的,尤其运行过程中会遇到脏数据活着异常就会中断。首先需要在测试环境跑一遍正常流程,中间通过抓包获取数据信息,一方面需要确定这些数据作为自动化测试的数据基础,另一方面需要了解数据结构是什么,可能是包含列表的字典,也可能是一个纯元组。前提是可以测试通过一套流程,不然获取这些数据没有必然意义。
编写测试后,你应该能够开始在非生产环境中使用它们并看到它们通过。理想情况下,如果正确编写了测试,应该可以通过向不同环境传递不同的变量来针对不同环境执行测试。这可以帮助你开始验证 API 的开发版本。
6. 持续集成 Jenkins
Jenkins 是一个功能强大的工作,测试人员可以根据各自的测试需求灵活运用其中的部分功能。引进持续集成思想是为了帮助测试人员提高测试效率,一旦可以看到针对开发/阶段环境运行的所有测试,你就可以将它们连接到你的 CI/CD 管道,以便在你推送新代码时开始自动化测试过程。这可以通过源代码管理工具(如 GitHub 或 GitLab)或构建工具(如 Jenkins 或 CircleCI)来完成。这有助于保持测试运行并“强制”使测试保持最新,因为无法在测试失败的情况下推送代码。
7. 运行测试以监控生产环境
维护 API 测试用例的好处之一是你可以轻松地在多个环境中运行它们。具体来说,你可以在生产环境中定期运行测试以确保其按预期运行。这还可以帮助你收集有关 API 的性能数据,实时查看性能的降级或更改。
以上内容测重于对接口操作流程及一些简单操作步骤具体的作用,给出的只是借助工具对于基本操作方向性的指导,没有详细的具体实践,不过没关系呀,这都是正常的,关于如何使用/借助工作去做接口测试的方式非常多,也不是一两篇文章能够全部讲完,最重要的是先知道大概的方向,然后就去大胆实践,在做的过程中成长最快。
近期,,Eolink推出面向初创企业的公益扶持计划,可免费使用API研发管理和API自动化测试企业版,可前往 Eolink 公众号/官网了解详情、提交申请。
七个步骤覆盖 API 接口测试的更多相关文章
- [label][翻译][JavaScript-Translation]七个步骤让你写出更好的JavaScript代码
7 steps to better JavaScript 原文链接: http://www.creativebloq.com/netmag/7-steps-better-javascript-5141 ...
- 初步探究Android App API接口测试--实战
一.Android App API接口测试 1.如何学好Android App API接口测试 postman可以用来实现API接口自动化测试,但是也有弊端,无法实现接口测试数据的参数化,为了达到接口 ...
- 实战Rest API接口测试
一.Android App API接口测试 1.如何学好Android App API接口测试 postman可以用来实现API接口自动化测试,但是也有弊端,无法实现接口测试数据的参数化,为了达到接口 ...
- HTTP二、HTTP请求处理过程的七个步骤
HTTP02 HTTP请求处理过程的七个步骤 1.web服务处理步骤 web服务的处理过程可总结为七个步骤: 1)发起请求:客户端向服务器端发起连接请求,建立”三次握手“: 2)接收请 ...
- HTTP API接口测试利器PostMan介绍
一.什么是API接口测试? API接口有多种,个人将其划分为三类.第一种是函数级别的,测试需要对接口的各个参数进行测试,如:Int getResult(String key, String ID, I ...
- api接口测试工具和接口文档管理工具
api接口测试工具和接口文档管理工具 1.postman(https://www.getpostman.com) Postman 是一个很强大的 API调试.Http请求的工具.她可是允许用户发送任何 ...
- Windows Azure入门教学系列 (七):使用REST API访问Storage Service
本文是Windows Azure入门教学的第七篇文章. 本文将会介绍如何使用REST API来直接访问Storage Service. 在前三篇教学中,我们已经学习了使用Windows Azure S ...
- 使用JMeter3.0实战之分布式并发测试以及web API接口测试
简介: 该文档是以Apche JMeter-3.0为例进行编写的,通过网上的学习资料和官方文档的说明手册学习后,进行项目操作实践,将测试的过程记录下提供给大家学习. 本博文的内容主要是进行配置JMet ...
- REST API接口测试
背景介绍 为什么要做借口测试? 很多系统关联都是基于接口来实现的,接口测试可以将复杂的系统关联进行简化. 接口功能比较单一,能够比较好的进行测试覆盖,也相对容易实现自动化持续集成. 接口相当于界面功能 ...
- Web Api 接口测试工具:WebApiTestClient
前言:这两天在整WebApi的服务,由于调用方是Android客户端,Android开发人员也不懂C#语法,API里面的接口也不能直接给他们看,没办法,只有整个详细一点的文档呗.由于接口个数有点多,每 ...
随机推荐
- nsis插件nsisSlideshow.dll更新
更新至1.7版本,作者wiz0u已解决关于ie9的兼容问题.Good 下载地址: http://wiz0u.free.fr/prog/nsisSlideshow/latest.php
- HDU3949/AcWing210 XOR (高斯消元求线性基)
求第k小的异或和,用高斯消元求更简单一些. 1 //用高斯消元求线性基 2 #include<bits/stdc++.h> 3 using namespace std; 4 #define ...
- 陆地观测卫星数据服务(CRESDA)订单ftp地址错误—已解决不能下载问题
陆地观测卫星数据服务订单ftp地址错误 问题:本人在陆地观测卫星数据网站上申请GF1-WFV10幅数据,订单完成后返回的FTP地址出现无法连接服务器现象.(数据订单申请已通过) 一.情况介绍: 我 ...
- Java登录专题-----创建用户(一)
Java登录专题-----创建用户(一) 我来填坑了 创建用户 入参 应该包括: 用户姓名,用户密码,用户手机号,用户所属机构 用户版本号,角色id 出参: 没有 数据结构: JavaBean ...
- 支持JDK19虚拟线程的web框架,之一:体验
欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 关于虚拟线程 随着JDK19 GA版本的发布,虚拟线程 ...
- 二、Celery执行一步任务
二.Celery执行异步任务 2.1.基本使用 创建项目celerypro 创建异步任务执行文件celery_task: import celery import time backend='redi ...
- 常用Linux命令(常年更新)
Linux后台运行脚本: nohup python -u test.py > out.log 2>&1 & nohup sh **.sh > /dev/null 2& ...
- ISCTF2022WP
ISCTF2022改名叫套CTF吧(bushi),博主菜鸡一个,套题太多,挑一些题写下wp,勿喷. MISC 可爱的emoji 下载下来是个加密压缩包,根据hint掩码爆破密码 得到密码:KEYI ...
- Android 跨进程渲染
本项目用于验证 Android 是否能够跨进程渲染 View,最终实现了在子进程创建WebView,主进程显示的功能. 一.跨进程渲染的意义 有一些组件比如 WebView 如果在主进程初始化,会大大 ...
- 华为云 MRS 基于 Apache Hudi 极致查询优化的探索实践
背景 湖仓一体(LakeHouse)是一种新的开放式架构,它结合了数据湖和数据仓库的最佳元素,是当下大数据领域的重要发展方向. 华为云早在2020年就开始着手相关技术的预研,并落地在华为云 Fusio ...