如何做好接口测试?资深测试老鸟总结,一篇带你打通...

前言

1、接口测试

1)什么是接口测试?

接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。

测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等

2)为什么要做接口测试?

互联网的快速发展,公司内部系统或与外部系统的关联越来越多,一个业务流程关联多个后端系统,它们的关联都是基于接口来实现,接口测试可以将复杂的系统关联进行简化,只要做好每个接口的测试就能够较好的保证系统质量。

单个系统的变更,是否会影响到关联业务系统,比较难用常规的测试方面来覆盖相关的应用系统(例如使用此接口的外部 系统有N个,不可能每个做功能兼容性测试),但可以通过对接口功能的覆盖来验证是否影响它人对接口的调用。

接口功能比较单一,能够比较好的进行测试覆盖,也相对容易实现自动化持续集成,,可以减少人工回归成本与时间,缩短测试周期。

接口相对于界面功能,会更底层一些,测试覆盖会更容易(如业务在调用接口时做了判断,当不满足条件时链接就不显示,此时从界面无法测试相关功能是否做好判断,通过接口就比较容易)

3)接口测试范围

业务功能(包括正常、异常场景是否实现) 业务规则(覆盖度是否全面) 参数验证(边界、业务规则是否达到要求) 异常场景(重复提交、并发提交、事务中断、多机环境、大数据量测试) 性能测试(响应时间、吞吐量、并发数、资源要求) 安全测试(权限验证、SQL注入等)

4)接口测试的重点

检查接口返回的数据是否与预期结果一致。 检查接口的容错性,假如传递数据的类型错误时是否可以处理。 接口参数的边界值。例如,传递的参数足够大或为负数时,接口是否可以正常处理。 接口的性能,http请求接口大多与后端执行的SQL语句性能、算法等比较相关。 接口的安全性,外部调用的接口尤为重要。

现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:691998057【暗号:csdn999】

2、做好接口测试的前提

1)系统化的接口文档

传统的接口文档,一般采用word或wiki等系统来记录,从单次使用上似乎比较简单,因为大家会更习惯这样的操作,但这种形式存在比较大的问题:

接口文档非标准化,无法直接与接口测试工具接口使用; 接口维护困难,接口有变化时比较难标识清楚,沟通成本很高;

系统化接口文档,例如rap(淘宝分源的一个系统),具备接口维护标准化、版本化管理、MOCK测试等功能;对标准化的接口内容做二次开发,可以直接导出Soapui等工具使用的格式,直接导入工具中使用,有以下好处:

接口测试时不再需要手工输入相关字段,节省时间成本 版本化管理,能够清晰的知道哪些接口有变化

2)标准化的接口规范

接口管理是做好接口测试很重要的前提,如果一个系统有哪些接口都不太清楚,测试就很难覆盖到,接口管理建议采用以下方式:

按接口提供方为单位进行首次划分,按接口使用方进行二次划分,再按业务模块进行细分,分类原则根据内容多少进行优化,不需要固定,如本身接口较少就没有必要分得过细,较多时就需要多划分模块

如:系统A,提供有 1、2、3、4、5、6、7、8、9 这9个接口,接口分别给B系统、C系统使用,其中1、2为公用接口,3、4、5为B专用,6、7、8、9为C系统专用。

划分如下: 按接口链接URL做为唯一,不同的接口参数做为接口变量,接口有参数变更时在原来接口上进行维护,而不是新增加接口

为接口增加版本号,方便清楚哪些接口本次有变更,易于维护用例

3、接口测试常用工具

工具名类型特点使用建议
JMeter开源开源个人觉得使用起来还是比较麻烦,对JMeter非常熟悉的建议使用,新手不建议使用
SOAPUI开源&商业开源版本有功能限制,不能直接使用循环等、支持groovy语言操作比较简单,但对具有一定的流程的接口测试用例不是太方便维护,对于独立的接口推荐使用
PostMan免费流利器插件,易用,功能相对简单相对比较简单的接口
Loadrunner免费主要做性能测试使用,具备接口请求录制自动生成脚本、添加判断等功能具有一定流程性的接口、及具备LR使用经验的人使用

1)JMeter

JMeter是Apache组织开发的基于Java的压力测试工具,能够将请求转换为脚本来实现,并允许使用正则表达式创建断言来对请求返回结果进行判断,具备接口测试功能和性能的能力。

2)SOAPUI

SoapUI是一个完整的自动化测试解决方案。支持SOAP和REST的Web服务,JMS企业消息层,数据库,丰富的互联网应用,等等。而在SoapUI,你从它的直观和强大的用户界面这一切。

对于自动化程度较高,SoapUI还提供了命令行工具,让您运行的功能/负载测试和几乎所有的任务调度程序,或作为您的构建过程中的一个组成部分MockServices集。

3)PostMan

Postman是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件,具备Fiddler\httpwatch之类的工具调试请求的功能,同时具备接口管理功能,官网提升脚本保存同步功能,支持接口导入导出

4)Loadrunner

HP公司的性能测试工具,使用C语言或JAVA语言编写脚本,易学易用

4、持续集成接口测试

对接口测试而言,持续集成自动化是核心内容,通过自动化的手段才能有效降低成本,提高接口测试的价值。

如果使用LR、JMeter、SoapUI工具做自动化测试,工具本身支持命令行模式运行,可以接合Jenkins 等自动化平台,实现项目版本更新后的自动化回归测试

关于持续自动化回归测试的建议:

1)接口脚本开发时要注意参数的取值的可用性,不因为时间或数据状态的变化引起脚本不能正常运行,降低脚本维护成本

2)接口回归功能的覆盖度控制,需要根据脚本的实际功能和重要性判断自动化回归覆盖度,回归内容越多脚本维护成本越高,一般应用接口不建议全功能覆盖(毕竟接口有变化会做详细测试,如果没修改其它变更可能对其产生的影响一般不会影响其逻辑判断)

3)接口脚本需要一定的自动化校验能力,除请求http状态的判断外,还需要对核心内容的正常性做判断(判断内容可与数据库内容匹配等方式,不建议用写死的内容)。

4)持续性能测试,还需要做好相关的监控、性能指标的分析自动化,减少人工操作。

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走! 

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/577339.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

TCP协议工作原理及实战(一)

实战项目目标: ui搭建:clientconnect 客户端连接 clientdisconnect 客户端断开 socketreaddate 使用套接字传输数据 newconnection新的连接 获取本机的IP地址: 获取本机的ip地址可以参考前面的QT网络编程协议 将得到的ip地址放入combox中…

Golang ssl 证书 验证

代码平平无奇,需要注意的是http client初始化部分。 因为是短连接,如果是大量域名去验证的话,短时间内将导致大量TIME_WAIT package utilimport ("context""crypto/tls""errors""fmt""net&quo…

VMware安装linux系统一

1、创建虚拟机 1.1、创建新的虚拟机 1.2、进入安装向导 1.3、安装操作系统,选择稍后安装操作系统 1.4、选择Linux,版本选择CentOS64位 1.5、设置虚拟机名称和安装位置 1.6、设置磁盘大小 1.7、创建虚拟机 1.8、完成安装 2、配置虚拟机 2.1、选择编辑虚拟机 2.2、修…

sql_lab之sqli注入中的cookie注入

Cookei注入(gxa的从cookei注入) 1.打开控制台 2.验证id2时的值 document.cookie"id2" 3.判断是上面闭合方式 document.cookie"id2 -- s" 有回显 说明是’单引号闭合 4.用order by 判断字段数 5.用联合查询判断回显点 接下来的…

“用户名不在 sudoers文件中,此事将被报告” 解决方法

原因 当普通用户需要安装文件时,无法用yum install ** -y直接安装时,采用sudo yum install **; 但是发现提示“用户名不在 sudoers文件中,此事将被报告” 解决方法。 这是因为该普通用户不在sudoers文件中,所以要找到该文件&am…

java数据结构与算法刷题-----LeetCode167:两数之和 II - 输入有序数组

java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.csdn.net/grd_java/article/details/123063846 思路 题目要求我们找到两个数相加的和,等于target指定的值。而…

数据库01_增删改查

1、什么是数据?什么是数据库? 数据:描述事物的符号记录称为数据。数据是数据库中存储的基本对象。数据库:存放数据的仓库,数据库中可以保存文本型数据、二进制数据、多媒体数据等数据 2、数据库的发展 第一阶段&…

不可能得到的最短骰子序列

说在前面 🎈不知道大家对于算法的学习是一个怎样的心态呢?为了面试还是因为兴趣?不管是出于什么原因,算法学习需要持续保持。 题目描述 给你一个长度为 n 的整数数组 rolls 和一个整数 k 。你扔一个 k 面的骰子 n 次,…

linux运行服务提示报错/usr/bin/java: 没有那个文件或目录

如果是直接从官网下载的jdk解压安装,那么/usr/bin/没有java的软连接,即/usr/bin/java,所以即使在/etc/profile中配置了jdk的环境变量也没用,识别不到。 方法一:用java的执行路径配置/usr/bin/java软连接(优…

【知识点随笔分享 | 第九篇】常见的限流算法

目录 前言: 1.固定窗口限流: 缺点: 2.滑动窗口限流: 优点: 滴桶限流: 缺点: 令牌桶限流: 优点: 总结: 前言: 当今互联网时代,随着网络…

creo投影的使用-如何将一个实体的轮廓曲线单独画出来

第一步:先建立一个平面: 比如你需要将实物的曲线正对自己,然后建立此面的偏移平面,然后选中新建立的偏移平面, 然后进入新偏移平面的草绘,然后就可以进行投影了。 第二步:建立参考:…

备忘录模式(Memento)

备忘录模式(Memento Pattern)是一种行为型设计模式,允许在不破坏封装的前提下捕获并保存一个对象的内部状态,以便在以后可以将该对象恢复到原先保存的状态。 备忘录模式通常涉及以下几个角色: 发起人(Originator):创建一个含有其当前状态的备忘录对象,并可以使用备忘录…

低代码实施复杂应用的实践方法

内容来自演讲:韦有炬 | 柳州知行远企业管理咨询有限公司 | 总经理 摘要 本文探讨了在全民开发时代如何使用低代码实施复杂应用并降低上线风险。文章分析了复杂系统实施失败的风险,包括项目规划不周、人员变动、企业基础管理不足等,并对比了低…

基于ssm航空信息管理系统论文

摘 要 传统信息的管理大部分依赖于管理人员的手工登记与管理,然而,随着近些年信息技术的迅猛发展,让许多比较老套的信息管理模式进行了更新迭代,飞机票信息因为其管理内容繁杂,管理数量繁多导致手工进行处理不能满足广…

Crow:Middlewares 庖丁解牛6 middleware_call_helper

Crow:http请求到Rule绑定的handler_的调用链-CSDN博客 介绍了handler_的调用顺序,其中的一个调用过程是Connection::->handle void handle() {...ctx_ = detail::context<Middlewares...>();req_.middleware_context = static_cast<void*>(&ctx_);req_.m…

Go语言的自给自足:编译自身的神奇之旅

关注公众号【爱发白日梦的后端】分享技术干货、读书笔记、开源项目、实战经验、高效开发工具等&#xff0c;您的关注将是我的更新动力&#xff01; Go语言的自给自足&#xff0c;即能够用自身编译自身&#xff0c;听起来似乎是一个矛盾的悖论&#xff0c;一个鸡生蛋或蛋生鸡的困…

2023年山东省职业院校技能大赛高职组 “软件测试”赛项竞赛任务四 单元测试

任务四 单元测试 任务要求 题目1&#xff1a;任意输入2个正整数值分别存入x、y中&#xff0c;据此完成下述分析&#xff1a;若x≤0或y≤0&#xff0c;则提示&#xff1a;“输入不符合要求。”&#xff1b;若2值相同&#xff0c;则提示“可以构建圆形或正方形”&#xff1b;若2…

解锁微信群发新功能,一键轻松达到5000人!

随着社交媒体的不断发展和智能手机的普及&#xff0c;微信已经成为我们日常生活中不可或缺的一部分。作为一个商家或者个人品牌&#xff0c;利用微信进行群发消息是一种非常便捷和高效的方式来推广产品或者传递信息。 然而&#xff0c;传统的微信群发功能却有着一些限制&#…

Linux怎么解压zip格式文件?

Linux解压命令zip是一种常见的文件压缩格式&#xff0c;用于把文件打包成一个zip文件&#xff0c;当我们需要共享或是发送时&#xff0c;能够更快速的发送&#xff0c;储存起来能够减少储存空间。那我们在Linux上怎么使用解压命令zip来解压zip格式文件呢&#xff1f;我们一起来…

H266/VVC帧内预测编码技术概述

预测编码技术 预测编码&#xff08;Prediction Coding&#xff09;是指利用已编码的一个或多个样本值&#xff0c;根据某种模型或方法&#xff0c;对当前的样本值进行预测&#xff0c;并对样本真实值和预测值之间的差值进行编码。 视频中的每个像素看成一个信源符号&#xff…