深入了解接口测试:方法、工具和关键考虑因素(一)

接口测试是软件测试中的一项重要工作,它涉及到系统与系统之间的交互点。接口可以是外部接口,也可以是内部接口,包括上层服务与下层服务接口以及同级接口。在接口测试中,我们需要确保接口能够按照预期的方式进行通信和交互,并且能够正确处理输入和输出数据。

什么是接口?

接口是具有特定输入和输出的一套逻辑处理单元,它不需要了解内部的实现逻辑,可以看作是黑盒处理逻辑。接口可以是外部系统与系统之间的交互点,也可以是系统内部不同子系统之间的交互点。

如果模块请求由 HTTP 改为 HTTPS,测试方案应该如何制定和修改?

首先,尝试使用 HTTP 和 HTTPS 分别进行登录。如果使用 HTTPS 可以正常登录,并且浏览器地址栏显示一个锁头图标,说明该网站已经部署了 SSL。如果 HTTP 和 HTTPS 都可以正常登录,进一步说明该网站没有设置强制使用 HTTPS 登录,或者没有设置 HTTP 自动跳转到 HTTPS。

如果使用 HTTP 登录后跳转到 HTTPS 页面,说明该网站已经部署了 SSL,并且设置了 HTTP 自动跳转到 HTTPS。
根据实际情况和需求,可以调整测试方案并相应地修改模块的请求方式。

常用的 HTTP 协议调试代理工具有哪些?详细说明抓取 HTTPS 协议的设置过程。

常用的 HTTP 协议调试代理工具包括 Fiddler、Charles、Postman 等。以下以 Fiddler 为例,详细说明抓取 HTTPS 协议的设置过程:

打开 Fiddler 工具,在菜单栏选择 “Tools”,然后选择 “Options”。

在 “Options” 窗口中,选择 “HTTPS” 选项卡,并勾选 “Capture HTTPS CONNECTs” 和 “Decrypt HTTPS traffic” 选项。

根据需要选择要解密的来源,可以选择 “All Processes” 或者手动添加需要解密的进程。

可选择是否忽略服务证书错误,根据测试需求进行设置。

完成以上设置后,可以在浏览器中设置代理地址为 “IP:8888”,然后安装 Fiddler 提供的证书,即可在浏览器中抓取 HTTPS 协议的数据流量。

接口产生的垃圾数据如何清理?

利用数据库操作进行数据的增删改查,通过造数据和数据清理来处理垃圾数据。

在测试用例的前置操作中,可以使用 setUp 方法进行数据准备。

在后置操作中,可以使用 tearDown 方法进行数据清理。

在执行测试前整库备份,测试完毕,备份还原(不推荐)

依赖第三方接口的处理方法是什么?

搭建一个模拟服务,以模拟第三方接口的返回数据。例如,可以使用 Moco 这样的开源框架来搭建模拟服务。搭建模拟服务需要熟悉相关工具和框架,并能够掌握如何模拟返回的数据、数据格式以及请求方式等。

利用一些模拟工具(如 JSON Server、EasyMock)来模拟第三方接口的数据返回,以尽可能减少对第三方数据接口的依赖。

测试数据应该放在哪里?

测试数据的存放位置可以根据实际情况和需求来决定。以下是一些常用的测试数据存放方法:

对于登录账户数据、注册账户数据、接口参数以及邮箱配置数据等不同类型的数据,可以根据其特点进行存放。例如,登录账户数据和注册账户数据可以使用配置文件(如 INI 文件)存放;接口参数可以使用 YAML、JSON、Excel 等格式进行存放。

对于一些需要多组测试参数的接口,可以采用参数化的方式进行数据存放。可以使用 YAML、文本、JSON、Excel 等文件来管理参数化数据。

对于需要反复使用的数据,例如订单状态数据,可以将其存放到数据库中,在每次数据初始化之后使用,并在使用完毕后进行清理。

对于少量的静态数据,如单个接口的测试数据,可以将其写入到脚本的开头部分,或者使用全局变量进行存储。

什么是数据驱动,如何进行参数化?

数据驱动是一种测试方法,通过将测试数据和测试逻辑分离,实现对测试数据的灵活管理和重复使用。参数化是数据驱动的一种常见方式,它通过在测试用例中引入参数,根据不同的参数生成多个测试用例。

在接口测试中,数据驱动和参数化的概念非常重要,可以提高测试效率和覆盖率。以下是一些常用的数据驱动和参数化的实现方式:

在 Python 的 unittest 框架中,可以使用 ddt 模块来实现数据驱动和参数化。通过使用 @ddt 和 @data 这两个装饰器,可以在测试用例中传入不同的参数,并生成对应的测试用例。

在 pytest 框架中,可以使用 @pytest.mark.parametrize 装饰器实现参数化。通过传入不同的参数组合,生成对应的多个测试用例。

如何处理下一个接口请求参数依赖上一个接口的返回数据?

将不同的接口封装为不同的函数或方法,让其返回所需的数据。使用一个中间变量来接收上一个接口返回的数据,并将其传递给下一个接口。可以使用全局变量或者测试类的属性来保存中间数据或者数据库等等。

对于单接口测试中,如果依赖接口只需要在测试开始执行一次,可以将依赖接口的请求放在类级别的前置方法中,并通过全局变量或者当前用例类的属性来传递依赖数据。例如,使用类属性 cls.token = data[‘token’] 来保存依赖的 token 数据。

对于单接口测试中,如果依赖接口需要在每个用例前执行,可以将依赖接口的请求放在方法级别的前置方法中,并通过用例对象的属性来传递依赖数据。例如,使用实例属性 self.order_id= res[‘id’] 来保存依赖的 ID 数据。

对于多接口的业务流测试,可以通过当前用例类的属性来传递下一个接口所需的依赖数据。例如,使用类属性 self.class.order_id = self._response.json()[‘data’][‘id’] 来传递下一个接口需要的数据。

如何处理依赖登录状态的接口?

对于需要 token 的登录接口,可以在登录后将 token 存储到一个 YAML、JSON 文件中,或者直接使用全局变量或测试类的属性进行保存。后续的请求可以从存储的位置获取 token 并使用。

对于需要 cookies 参数的接口,可以使用 requests.session() 创建一个会话对象,并在后续的请求中使用该会话对象进行自动关联 cookies。通过 s.get() 和 s.post() 方法发送请求,会话对象会自动关联 cookies。

接口测试的步骤有哪些?

发送接口请求:使用合适的工具或框架发送请求,并携带请求参数。

测试接口获取返回值:获取接口返回的数据,包括响应状态码、响应头和响应体等。

断言:根据预期结果,对接口返回的数据进行断言判断,验证实际结果是否符合预期。

如何测试依赖登录状态的接口?

在测试开始前先进行登录操作,获取有效的登录凭证(如 token 或 cookies)。

在每个需要登录状态的接口测试用例中,先进行登录操作,并获取登录凭证。

将获取的登录凭证保存在全局变量、测试类的属性或者配置文件中,以便在后续的请求中使用。

在发送请求时,将登录凭证作为请求参数或者请求头的一部分进行携带。

在接口返回结果中验证登录状态相关的信息,确保接口正确处理了登录状态。

解释什么是 SOAP?

SOAP代表简单对象访问协议(Simple Object Access Protocol),它是一种基于XML的协议,用于在计算机之间交换结构化信息。SOAP被设计用于不同的应用程序和操作系统之间的通信,它使用XML格式来定义消息的结构和内容,并使用HTTP、SMTP等协议进行消息的传输。SOAP通常用于Web服务之间的通信,通过SOAP协议,应用程序可以以标准的方式进行远程过程调用(RPC)。

解释什么是 REST API?

REST API是一组用于实现网络应用程序之间通信的功能集合。REST代表表现层状态转移(Representational State Transfer),它是一种基于HTTP协议的设计风格,被广泛应用于构建分布式系统和互联网应用。REST API使用HTTP方法(GET、POST、PUT、DELETE等)来实现对资源的访问和操作,并使用URL来定位资源。相比于SOAP等复杂的协议,REST API更加简单、轻量且易于理解,它已成为创建Web服务和移动应用程序的常用标准。

API测试发现的Bug类型是什么?

缺少或重复的功能:API未实现某些功能或存在重复的功能。

无法正常处理错误条件:API未能正确处理错误情况,如无效的输入、异常情况等。

可靠性:API在高负载、并发或异常网络情况下的表现不稳定或不可靠。

安全:API存在安全漏洞,如未经身份验证的访问、敏感数据泄露等。

未使用的标志:API中存在未使用或废弃的标志或参数。

未实现错误:API中存在未实现或未正确实现的功能。

错误处理不一致:API对不同的错误条件没有统一的处理方式或错误信息不一致。

性能:API在处理大数据量或高并发情况下性能下降或出现延迟。

多线程问题:API在多线程环境下出现数据竞争、同步问题等。

错误不正确:API返回的错误信息或状态码与预期结果不符。

你测试的接口属于哪一类?

测试的接口属于服务器接口,即基于HTTP协议的接口。这类接口通常是B/S架构的,由客户端(如浏览器)调用或模拟客户端调用服务器提供的请求接口,服务器完成处理并返回响应。例如,Web服务接口、HTTP接口、JMS接口、Hessian接口等都属于这一类别。

Cookie 保存在哪里?

Cookie可以保存在不同的位置,具体取决于是否设置了过期时间:

如果设置了过期时间,Cookie将保存在客户端的硬盘中,即存储在浏览器的Cookie文件中。

如果没有设置过期时间,Cookie将保存在客户端的内存中,即存储在浏览器的内存中。这种类型的Cookie通常称为会话Cookie,它只在浏览器会话期间有效,关闭浏览器后会被删除。

HTTP 有哪些请求方法?

GET:用于请求获取指定资源的表示。通过URL传递参数,通常用于获取数据。

POST:用于向指定资源提交数据,通常用于提交表单或进行资源创建。

PUT:用于向指定资源位置上传新的表示,通常用于资源的更新。

DELETE:用于请求删除指定的资源。

OPTIONS:用于获取目标资源所支持的通信选项。

HEAD:类似于GET请求,但只返回响应头部信息,不返回响应体。

PATCH:对资源进行部分修改。

接口自动化测试的流程?

需求分析:了解接口的功能和需求,明确测试的目标和范围。

用例设计:根据需求编写测试用例,包括正向测试、边界测试、异常测试等不同场景的测试用例。

脚本开发:使用合适的编程语言和测试框架编写自动化测试脚本,实现接口的请求和响应验证等功能。

测试执行:执行自动化测试脚本,发送接口请求并获取响应结果。

结果分析:对测试结果进行分析和比对,判断接口是否符合预期结果。

缺陷跟踪:如果发现接口存在缺陷,及时记录并跟踪缺陷,确保问题得到解决。

报告生成:生成测试报告,包括测试覆盖率、测试结果、缺陷统计等信息,供团队和管理层查阅。

接口测试用例的编写要点有哪些?

必填字段:测试请求参数的必填项和可选项。

合法性:验证输入和输出数据的合法性,包括合法的参数值、数据类型等。

边界:测试请求参数的边界值,例如最大值、最小值、临界值等。

容错能力:测试接口在大容量数据、频繁请求、重复请求等异常情况下的处理能力。

响应数据校验:对接口的响应数据进行断言和校验,验证返回结果是否符合预期。

逻辑校验:测试不同接口之间的逻辑关系,如某些请求需要按严格的先后顺序调用。

性能:进行接口的并发测试,逐步增加负载,分析系统的性能瓶颈点。

安全性:测试接口的安全性,如输入恶意字符、注入攻击、敏感信息泄露等。

异常处理:测试接口在各种异常情况下的处理能力,如网络异常、服务器错误等。

UI 级别测试和 API 测试之间的关键区别?

目标、方法、技术。

UI级别测试(User Interface Testing)关注于测试应用程序的用户界面,验证用户如何与应用程序进行交互,测试应用程序元素的外观和行为,例如按钮、表单、布局等。UI级别测试主要关注应用程序的外观和用户体验。

API测试(Application Programming Interface Testing)关注于测试应用程序接口,验证接口的功能、性能、可靠性等。API测试主要关注应用程序的功能和内部逻辑,独立于用户界面。API测试可以通过直接调用接口发送请求并验证响应结果来进行,无需依赖UI界面。

UI级别测试和API测试是在不同层面上进行的测试,UI级别测试更加关注应用程序的外观和用户交互,而API测试更加关注应用程序的功能和内部实现。

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

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你! 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

BMS实战: BMS产品介绍,电池外观分析,电芯种类分析,焊接方式分析,充电方式,电压平台,电芯型号分析。

快速入门的办法就是了解产品,了解现在市面上正在流通的成熟产品方案。光看基础知识是没有效果的。 首先我们找到了一张市面上正在出售的电池pack包。 图片来源网上,侵权删 电池外观分析 外壳: 一般是金属外壳,大部分都是铁壳加喷漆,特殊材质可以定制。 提手 一般是…

内衣专用洗衣机怎么样?口碑最好的小型洗衣机

随着人们的生活水平的提升,越来越多小伙伴来开始追求更高的生活水平,一些智能化的小家电就被发明出来,而且内衣洗衣机是其中一个。现在通过内衣裤感染到细菌真的是越来越多,所以我们对内衣裤的清洗频次会高于普通衣服,…

案例018:基于微信小程序的实习记录系统

文末获取源码 开发语言:Java 框架:SSM JDK版本:JDK1.8 数据库:mysql 5.7 开发软件:eclipse/myeclipse/idea Maven包:Maven3.5.4 小程序框架:uniapp 小程序开发软件:HBuilder X 小程序…

iview table 默认排序字段不高亮解决办法

iview treeSelect 组件封装 1、表格增加排序时触发的方法2、定义三个变量,sortColumnDefaultStyle存放默认的样式,定义页面默认的列以及顺序3、显示的列加上 sortable, 和样式4、使用下面这块代表默认选中5、点击时清除掉默认的排序6、把排序的字段查询时…

为什么,word文件在只读模式下,仍然能编辑?

Word文档设置了只读模式,是可以编辑的,但是当我们进行保存的时候就会发现,word提示需要重命名并选择新路径才能够保存。 这种操作,即使可以编辑文字,但是原文件是不会受到影响的,编辑之后的word文件会保存到…

uniApp微信支付实现

后端:小程序下单 - 小程序支付 | 微信支付商户文档中心 服务端需要请求:https://api.mch.weixin.qq.com该地址获取微信支付Api接口需要的参数。 服务端请求接口需要的Body参数: 客户端(前端)需要调用:wx.…

22款奔驰S400L升级原厂360全景影像 高清环绕 无死角

360全景影像影像系统提升行车时的便利,不管是新手或是老司机都将是一个不错的配置,无论是在倒车,挪车以及拐弯转角的时候都能及时关注车辆所处的环境状况,避免盲区事故发生,提升行车出入安全性。 360全景影像包含&…

VINS-MONO代码解读----vins_estimator(重点部分)

1. 代码目录如下,重点和难点是factor部分,是关于IMU部分的,有较多关于IMU预积分公式的推导。 1. 条件变量con.wait读取测量值:getMeasurements() 读取buf中IMU和IMG的数据,并进行align,最后的结果是这样…

Linux-Ubuntu环境下搭建SVN服务器

Linux-Ubuntu环境下搭建SVN服务器 一、背景二、前置工作2.1确定IP地址保持不变2.2关闭防火墙 三、安装SVN服务器四、修改SVN服务器版本库目录五、调整SVN配置5.1查看需要修改的配置文件5.2修改svnserve.conf文件5.3修改passwd文件,添加账号和密码(window…

【Unity】 UGUI的PhysicsRaycaster (物理射线检测)组件的介绍及使用

1. 什么是PhysicsRaycaster组件? PhysicsRaycaster是Unity UGUI中的一个组件,用于在UI元素上进行物理射线检测。它可以检测鼠标或触摸事件是否发生在UI元素上,并将事件传递给相应的UI元素。 2. PhysicsRaycaster的工作原理 PhysicsRaycast…

Java零基础——Linux篇

1.【熟悉】认识Linux 1.1 什么是操作系统 1.2 现实生活中的操作系统 1.2.1 Win10 1.2.2 Mac 1.2.3 Android(Linux) 1.2.4 iOS(Unix) 1.3 操作系统的发展史 1.3.1 Unix 1965年之前的时候,电脑并不像现在一样普遍,它可不是一般人能碰的起的&#xff0c…

11月24日星期五今日早报简报微语报早读

11月24日星期五,农历十月十二,早报微语早读。 1、第十批在韩中国人民志愿军烈士遗骸迎回仪式在沈阳举行; 2、港媒:乱港分子林卓廷等7人被裁定暴动罪表证成立; 3、深圳:欠缴路边临停车费不再纳入个人征信…

智能医疗越发周到!新的机器人系统评估中风后的活动能力

原创 | 文 BFT机器人 中风是在医疗界上最难的解决的病例之一,全球每年有超过1500万人中风,四分之三的中风患者的手臂和手部会出现损伤、虚弱和瘫痪。 许多中风患者日常生活是依靠他们强壮的手臂来完成的,从拿一些小东西到梳头,即…

提供开箱即用的一站式数据库云平台,「 沃趣科技」完成数千万B+轮战略融资

近日,36氪获悉,国内数据库基础设施厂商沃趣科技完成数千万B轮战略融资,本轮融资由翌马投资(恒生电子产业基金)领投,金蚂投资跟投,融资金额将用于研发投入及市场拓展。 沃趣科技成立于2012年&am…

vulnhub4

靶机地址: https://download.vulnhub.com/admx/AdmX_new.7z 信息收集 fscan 扫一下 ┌──(kali㉿kali)-[~/Desktop/Tools/fscan] └─$ ./fscan_amd64 -h 192.168.120.138 ___ _ / _ \ ___ ___ _ __ __ _ ___| | __ / /_\/____/ __|/ …

SpringBoot整合SpringSecurity+jwt+knife4生成api接口(从零开始简单易懂)

一、准备工作 ①&#xff1a;创建一个新项目 1.事先创建好一些包 ②&#xff1a;引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency>&…

Whatweb简单使用

目录 简介 安装 debian/ubtuntu redhat/centos 特性 使用 常用参数如下&#xff1a; whatweb -v whatweb --version whatweb -i 1.txt whatweb -v www.baidu.com 扫描等级 whatweb -a 4 www.baidu.com 扫描网段 whatweb --no-errors -t 255 192.168.71.0/24 导出…

Word怎么看字数?简单教程分享!

“我在写文章时&#xff0c;总是想看看写了多少字。但是我发现我的Word无法看到字数。在Word中应该怎么查看字数呢&#xff1f;请帮帮我&#xff01;” Word是一个广泛使用的文档编辑工具。在我们编辑文章时&#xff0c;如果想查看写了多少字&#xff0c;也是可以轻松完成的。 …

黑马点评笔记 redis实现优惠卷秒杀

文章目录 难题全局唯一IDRedis实现全局唯一Id 超卖问题问题解决方案乐观锁问题 一人一单 难题 要解决优惠卷秒杀的问题我们要考虑到三个个问题&#xff0c;全局唯一ID&#xff0c;超卖问题&#xff0c;一人一单。 全局唯一ID 用户抢购时&#xff0c;就会生成订单并保存到同一…

LeetCode.283移动零(双指针)

LeetCode.283移动零 1.问题描述2.解题思路3.代码 1.问题描述 给定一个数组 nums&#xff0c;编写一个函数将所有 0 移动到数组的末尾&#xff0c;同时保持非零元素的相对顺序。 请注意 &#xff0c;必须在不复制数组的情况下原地对数组进行操作。 示例 1: 输入: nums [0,1…