接口自动化测试设计!

news2024/11/29 3:41:22

一、接口测试基础

1.什么是接口测试?

  • 接口测试是测试系统组件间接口的一种测试。
  • 接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。
  • 接口测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。
  • 从接口形式来看各种应用程序的API(最著名的Windows系统API),硬件的驱动程序,数据库DAO层接口,及WebService 接口和Http Rest接口。
  • 接口测试通常包括两类,底层模块之间的接口测试和上层服务接口测试。前者通常由开发工程师做单测覆盖,后者则通常由测试工程师测试保证。

2.接口测试原理?

通过测试程序或工具模拟客户端向服务器发送请求报文,服务器接收请求报文后做出处理,然后将应答报文返回给客户端,即客户端发送应答报文的过程(Request -> Response)

3.接口测试分类?

  • 系统与系统之间的调用:银行会提供接口供电子商务网站调用,或者说支付宝会提供接口给百度外卖调用。
  • 上层对下层服务的调用:如Service层会调用DAO层的接口,而应用层又会调用服务层提供的接口。
  • 系统内的服务之间的调用:如注册用户时,先调用用户查询的服务,查看该用户是否已经注册

4.为什么接口测试?

测试金字塔概念由Mike Cohn提出,在《Succeeding with Agile》中做详细论述。核心观点:底层的单元测试应多于UI层的端到端测试。

1).UI:通常指 Web、App的测试;2).Service:一般针对接口、服务,如 HTTP、WebService 接口测试;3).Unit:包含比较多,如:Web应用的dao、service、model,controller的junit单元测 试,javascript、css的前端单元测试,大部分应由开发做测试保证。

参考金字塔层次划分,不能层次的测试投入量是不同的,越上层比重应越小,以尽量低的测试成本防御不同类型的风险。金字塔分层测试的ROI则是倒金字塔,即 Unit > Service > UI。Service测试层于QA而言是重要一环,也是性价比相对较高的。总之,分层自动化测试是追求覆盖的传统自动化测试的一种修正,充分利用自动化测 试的优点,规避自动化测试的缺点。

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

5.接口测试范围?

新增及改动接口的测试(接口的改动点,可通过代码及配置 diff 测试,圈定最小测试范围。服务端接口迭代过程,需测试接口依次增多。测试时间足够条件下,当然需要进行全回归测试。但时间较短,应考虑接口的重要性与优先级,优先对核心且调用频繁的接口测试。)新增及改动业务功能测试。接口的性能与安全测试(是否需要对接口实施性能和安全测试,取决于接口特点。一个对第三方电商平台提供支付功能的接口,如:支付宝接口,性能和安全测试是 必须要例行化测试的。一个系统内部调用的获取列表页接口,性能和安全性考虑优先级相对不那么高。整体而言,从接口的业务特点,即流量大小、调用方式、服务 架构、业务闭环的重要性等角度考虑。)

二、接口测试策略

检查: 接口设计检查,通过接口文档定义对接口交互数据做有效性检查,整数型数据位数、浮点型数据精度、字符串数据范围值等,要求客户端传入的整数型、浮点型、字 符串型数据及最大值和最小值都能作为服务端接口有效输入,确保服务端不会自动进行截断或四舍五入操作。(接口设计评审阶段即可进行)

接口依赖关系检查,通常用户的一个操作可能对应服务端调用多个接口完成,从业务操作角度来看,各种业务操作所涉及的多个接口之间调用进行测试。依赖关系检 查,主要通过接口的输出值为另一接口的输入值来实现的,因此在进行接口测试之前,需要分析所测试接口的输入值是通过客户端还是其他接口输出来获取的,在设 计测试用例时,加入接口的依赖关系说明以便于测试。

验证:接口输入/输出验证,服务端接口功能测试类似于单元测试,在设计测试用例时,侧重点在于接口模块输入/输出项的正确性验证,根据接服务端接口处理方式分类有多种:条件判断接口、数据查询接口、逻辑运算接口。

构造:接口测试过程,常常需要构造测试数据。通常是数据库插入,mock 接口,调用依赖接口,开发脚本工具批量等。

自动化:相对于UI层自动化测试,服务端接口的自动化测试更容易实施,较稳定且维护成本低。参考接口case的优先级做自动化覆盖,回归测试、线上监控等收益均较大。

1.接口测试关注点?

  • 入参数据:每个接口入参的默认值、异常类型、非空交易。 参数是否有默认值,若没有,接口逻辑是如何处理的;参数必须输入值,若不输入或输入错误,接口如何返回;接口报错,服务端和客户端是否都做了容错处理。
  • 出参返回:接口返回数据是否正确。
  • 页码页数的异常值:接口有翻页时,如:第一页有数据,翻到第二页。第二页的数据是否与第一页重复,第二页接口是否报错,页码、页数,传很大的值,接口是否报错。
  • 数据库增删改查,如对某接口post请求后,对列表页接口刷新请求,新数据是否与post数据一致。典型case,发布评论,post请求后是否返回评论数据,若无则检查是否缓存未写入数据库导致。
  • 参数个数:入参支持多个值时,考虑传值个数多的情况,接口是否报错,接口应返回友好提示。
  • 参数类型:输入参数类型必须校验,输出参数必须正确。即是int类型的,不能返回string类型。
  • 排序:列表页接口应考虑排序值,升降序、时间排序等是否正确。
  • 版本兼容:接口的改动(增加、减少字段)需要兼容老版本。
  • 参数联动性:校验返回的多个参数的实际结果是否符合需求,如:返回一个商户的列表,总数字段和列表数据是否一致。
  • 业务:从业务中来,到业务中去。接口测试是对业务逻辑的测试覆盖,对业务架构的理解。

2.接口测试Case设计?

Case参考点:输入参数测试,功能测试,逻辑测试,异常情况。

设计思路:a)优先级-针对所有接口,外部接口 > 系统内部核心接口 > 系统内部非核心接口。

b)优先级-针对单接口, 正向用例 > 逆向用例(通常情况,非绝对);前置条件 > 默认参数 > 参数必填 > 参数关联 > 参数类型限制 > 参数数据范围限制。

Case覆盖:主流程 -> 分支流程 -> 异常流程。

三、接口自动化演进

接口自动化演进,通常是从手动测试 -> 工具测试 -> 代码测试 -> 平台服务化演进。

手动:从客户端的业务场景测试去覆盖服务层接口,借助Fillder、Charles、FireBug等工具抓包分析。优点:简单,模拟真实业务场景;缺点:接口逻辑覆盖不够,异常和输入校验不足,重复繁琐,回归成本高。

工具:使用PostMan,HttpRequest,Jmeter, SoapUI 等工具做接口测试。优点:容易保证接口逻辑覆盖,便于异常和输入校验,提高回归效率;缺点:缺乏自定义灵活性,接口依赖处理繁琐,不便自动化工程化。

代码: 选择如,Java + Httpclient,Python + Requests, PHP + Requests/cURL/HTTPFul,搭建接口自动化框架,开发接口自动化case。优点:灵活性好,扩展性强,逻辑覆盖容易,异常和输入校验充 分,回归效率高;缺点:存在一定学习成本,框架及case脚本需持续维护。

平台:通用的接口自动化测试平台,简而言之满足接口自动化测试的Web平台,如:Numen。优点:通用性强,上手快,一键式,配套服务全等;缺点:业务契合度,灵活性,维护成本,API扩展等。

1.接口测试工具?

代理抓包工具
Fillder, http://www.telerik.com/fiddler
Charles, https://www.charlesproxy.com/
Wireshark, https://www.wireshark.org/

调试工具
Firebug(Firefox), https://addons.mozilla.org/en-US/firefox/addon/firebug/
DevTools(Chrome), https://github.com/CN-Chrome-DevTools/CN-Chrome-DevTools

Json&Url encode工具
json在线解析,格式验证, http://json.cn/
json压缩转义, http://www.sojson.com/yasuo.html
jsonview插件(Chrome), https://chrome.google.com/webstore/detail/jsonview/chklaanhfefbnpoihckbnefhakgolnmc?hl=zh-cn
url encode工具, http://tool.chinaz.com/Tools/URLEncode.aspx

测试工具
PostMan, https://chrome.google.com/webstore/detail/postman/
SoapUI, https://www.soapui.org/
Jmeter, http://jmeter.apache.org/

2.接口自动化框架设计?

接口自动化测试框架设计关键点,其实可以用Driven、Organize、Support、CI概括。

Driven:Data Driven(数据驱动),接口测试关注输入、输出及各种异常数据,归根结底其实就是做数据测试。如何设计合理的参数化实现,降低测试数据维护成本,是自 动化框架设计的重要内容。KeyWord Driven(关键字驱动,即封装),将测试过程中公共过程、通用步骤尽量封装为通用函数,其中分别为业务、过程common 函数。合理的封装函数设计,将使得自动化脚本简洁化、一致性,可维护性高。

Organize:组织。考虑两个维度,如何管理组织自动化工程?如何组织自动化case?以Java语言举例,接口自动化case较少只有几个,创建一个普通java工程项目,在 main方法中,罗列写出case实现即可。无可厚非,这是一种简单实现。但随着接口数量增加,接口case越来越多,这种方式的维护成本越来越高,冗余越来越重。我们需要考虑将自动化工程化而不是脚本化,即做工程管理,如使用maven管理工程,配置各类jar包依赖,定义测试等。测试case使用单测 工具管理组织,如:junit/TestNG,有什么好处?定义了case的执行顺序,通用丰富的assert验证,结果统计收集等。

Support:接口自动化测试不只是模拟一个请求发送及响应解析的过程,做为框架需考虑的远不只这些。如:json数据的比对,数据库增删改查操作,接口的数据mock构造,md5值校验,url的unicode/encode,report,email等等。

CI:自动化框架搭建了,自动化case工程化了。选择什么方式调度,什么时候执行。IDE 手动调度执行,bat/sh?CI 是一种高效的机制,每次代码编译打包部署,都应该触发CI的自动化执行,自动化框架需要考虑CI的集成。

四、外面团队,如何做接口自动化?

测试工具:PostMan, SoapUI,Jmeter……

自动化框架

Java:java + httpclient + junit/testng + ant/maven + Jenkins

java + jmeter.jar + + junit/testng + ant/maven + Jenkins

Python:python + (robotFrameWork) + (requests) + (xlrd) + pyUnit + Jenkins

Ruby:ruby + (cucumber/rspec) + (http/net) + TestUnit + Jenkins

PHP:php + requests + phpUnit + Jenkins

NodeJS:node.js + mocha +supertest + Jenkins

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

软件测试面试文档

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

在这里插入图片描述

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

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

相关文章

01【保姆级】-GO语言特点 下载安装 hello

01-GO语言基本概念和安装使用 一、概念1.1 Go语言的诞生1.2 GO语言的特点: 二、安装go2.1 安装2.2 安装环境变量 三、下载&安装goland3.1 官网下载3.2 下载后,进行安装: 四、Go语言的特性(重点)4.1 第一个hello wo…

Spire.doc读取模板文档,并在书签处插入内容

在书签位置插入文字 //加载模板文档 Document document new Document(Server.MapPath("~/File/评价结果.doc")); //创建书签导航器 BookmarksNavigator bn new BookmarksNavigator(document); //添加一个section到文档 Section newSec document.AddSection(); …

Redis Sentinel 哨兵模式

Sentinel 哨兵模式 Redis Sentinel 官网 Redis 的 Sentinel 文档 -- Redis中国用户组(CRUG) Sentinel Redis 命令参考(红色) Sentinel 通过监控的方式获取主机的工作状态是否正常,当主机发生故障时, Senti…

生产制造业如何进行进销存管理?建议收藏!

进销存是什么?生产制造业如何进行进销存管理?制造进销存都能为企业提供什么?进销存管理系统的优势?本文将带大家深入浅出的聊聊制造进销存,全面剖析制造进销存的前世今生,并且为大家提供2023年十大制造进销…

「linux基础」上传代码到github/gitee

一、在gitee创建一个仓库 1.创建仓库 2.获取仓库地址 二、克隆仓库文件到linux中 1.查看Linux中是否安装git:git --version 如果没有,在root下使用指令 yum install -y git 安装。 2.使用 git clone 仓库地址,克隆仓库文件到linux中 三、第…

第一章 02Java入门-常环境变量的意义

前言 上次我们学习了常见的CMD命令,这次我们做一个用它做一个练习打开QQ(CMD方式打开),最后引出环境变量的意义。 一、CMD打开qq 可以看到,如果直接在CMD里面打开QQ,是不可以的,因为QQ的路径不在默认路径C盘,而在D盘下面的develop文件夹下面的qq下面的qq.exe下(自己…

软考高级之系统架构师之计算专题

操作系统 需要一定操作系统基础知识才能计算的题目。 吞吐率 某指令流水线由5段组成,各段所需要的时间如下图所示。连续输入100条指令时的吞吐率为()。 解析: 指令流水线的吞吐率定义为: 吞吐率 T P 指令数 执行时…

Gcov 查看代码覆盖率

GCOV 工具简介 gcov是一个测试代码覆盖率的工具。 它是 gcc 自带的查看代码覆盖率的工具,无需额外安装,在嵌入式的 arm-eabi-none-gcc 中同样可以使用(需要重写部分系统函数)。 使用效果如下图所示: 程序运行完成后…

云尘-Potato(Suncsr)1

vulhub的题目 继续渗透吧 我们依旧打开nmap 开扫 首先扫描目标网段nmap -sP 127.25.0.1/24 nmap -sS -sV -p- -v 172.25.0.13然后扫描端口 获取到两个 80和 7120 80机会很多 22就一次 爆破弱口令 报完没有就去80测试 hydra -l potato -P 字典 -vV ssh://172.25.0.13:7120 …

MySQL数据库入门到精通——运维篇(1)

MySQL数据库入门到精通——运维篇(1) 1. 日志1.1 错误日志1.2 二进制日志1.3 查询日志1.4 慢查询日志 2. 主从复制2.1 主从复制的概述2.2 主从复制的原理2.3 主从复制的搭建2.3.1 服务器准备2.3.2 主库配置2.3.3 从库配置2.3.4 测试 1. 日志 在任何一种…

轻量封装WebGPU渲染系统示例<11>- WebGP实现的简单PBR效果(源码)

当前示例源码github地址: https://github.com/vilyLei/voxwebgpu/blob/main/src/voxgpu/sample/SimplePBRTest.ts 此示例渲染系统实现的特性: 1. 用户态与系统态隔离。 2. 高频调用与低频调用隔离。 3. 面向用户的易用性封装。 4. 渲染数据和渲染机制分离。 5. 用户操作…

【Linux】第九站:make和makefile

文章目录 一、 Linux项目自动化构建工具make/Makefile1.make/makefile工作现象2.依赖关系与依赖方法3.如何清理4.为什么这里我们需要带上clean5.连续的make6.特殊符号 二、Linux下实现一个简单的进度条1.回车换行2.缓冲区3.倒计时的实现 一、 Linux项目自动化构建工具make/Make…

518抽奖软件,数字滚动抽奖,可批量生成数字号码

518抽奖软件简介 518抽奖软件,518我要发,超好用的年会抽奖软件,简约设计风格。 包含文字号码抽奖、照片抽奖两种模式,支持姓名抽奖、号码抽奖、数字抽奖、照片抽奖。(www.518cj.net) 批量生成数字号码 入口:主界面点…

supervisor 配置自动启动服务

一、编写服务 nano /usr/lib/systemd/system/supervisord.service内容开始 [Unit] DescriptionProcess Monitoring and Control Daemon Afterrc-local.service nss-user-lookup.target [Service] Typeforking ExecStart/usr/bin/supervisord -c /etc/supervisord.conf ExecSto…

实在智能携手品牌商家,在活动会面中共谋发展

金秋十月,丰收的季节,也是商家们在双11大展拳脚的时刻。为迎战一年一度的双11大促,品牌商家在10月份卯足劲,制定一系列营销方案,争取为店铺带来更多流量和订单。 其中,舍得、同科医药、梅子熟了、宝洁、维…

软考高级之系统架构师系列之操作系统基础

概念 接口 操作系统为用户提供两类接口:操作一级的接口和程序控制一级的接口。操作一级的接口包括操作控制命令、菜单命令等;程序控制一级的接口包括系统调用。 UMA和NUMA UMA,统一内存访问,Uniform Memory Access&#xff0c…

搞清Lighttpd、webserver、CGI、fastCGI这几个概念

一、webserver: 网页浏览也是网络通信,浏览器相当于TCPclient客户端程序,和浏览器相对应的是机房里运行的网站服务器,里面运行着TCPserver服务端程序,因为网页传输使用的是HTTP协议(加密的是HTTPS协议&…

MySQL连接的原理⭐️4种优化连接的手段性能提升240%

MySQL连接的原理⭐️4种优化连接的手段性能提升240%🚀 前言 上两篇文章我们说到MySQL优化回表的三种方式:索引条件下推ICP、多范围读取MRR与覆盖索引 MySQL的优化利器⭐️索引条件下推,千万数据下性能提升273%🚀 MySQL的优化…

Midjourney保姆级入门教程

文章目录 一、Midjourney注册二、新建自己的服务器三、开通订阅 AI绘画即指人工智能绘画,是一种计算机生成绘画的方式。是AIGC应用领域内的一大分支。 AI绘画主要分为两个部分,一个是对图像的分析与判断,即“学习”,一个是对图像的…

【MySQL进阶之路丨第十四篇】一文带你精通MySQL重复数据及SQL注入

引言 在上一篇中我们介绍了MySQL ALTER命令及序列使用;在开发中,对MySQL重复数据的处理是十分重要的。这一篇我们使用命令行方式来帮助读者掌握MySQL中重复数据的操作。 上一篇链接:【MySQL进阶之路丨第十三篇】一文带你精通MySQL之ALTER命令…