接口测试总结(http与rpc)

server/2025/1/16 15:43:59/

🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快

接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。

一、了解一下HTTP与RPC

1. HTTP(HyperText Transfer Protocol)

说明:超文本传输协议,是互联网上应用最为广泛的一种网络协议。

优点:就是简单、直接、开发方便,利用现成的http协议进行传输。

流程图:

https://i-blog.csdnimg.cn/blog_migrate/3022bc25d92198fd6f1b19b4fbd6b4eb.png" width="303" />

2. RPC(Remote Procedure Call)

说明:远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。

优点:提升系统可扩展性,传输效率更快,安全性更高。

流程图:

https://i-blog.csdnimg.cn/blog_migrate/60d7b7c592f5ae575d2c1fe3e907cd90.png" width="390" />

二、HTTP接口测试

常见请求类型: post(增)、get(查)、put(改)、delete(删)等。

1)get型接口

格式: 请求数参数写在网址后面,用"?"连接,多个参数之间用"&"连接。如:https://api.douban.com/v2/book/search?q='',这是一个豆瓣查询图书信息的开发api,q='',单引号里就是查询的参数,

如查询《小王子》这本书的信息,则q='小王子',使用postman工具来试验一下,如下图:

https://i-blog.csdnimg.cn/blog_migrate/7be2586566862cfeef3f11e8ccca07f0.png" width="720" />

​场景: get型接口用于获取信息,多用于查询数据,如列表查询功能,点击查询按钮就调用一个get接口,然后把信息返回出来。

特点: 请求数据量小,参数暴露于url地址中,故存在安全隐患。

2)post型接口

说明: 向指定资源位置提交数据(如提交表单、上传文件)来进行请求,post请求可能会导致新资源的建立

场景: 如注册、上传、发帖等功能,如用户在豆瓣网站对某本书进行收藏、写笔记、发表评论

特点: 请求数据量大,安全性高

如豆瓣的发表评论的开放api,见下图:

https://i-blog.csdnimg.cn/blog_migrate/f18f82a76e58999e6b5d0696f7ae090b.png" width="703" />

3)put型接口

说明: put请求用于向指定资源位置上传最新内容

场景: 如用户在豆瓣网站修改对某本书的收藏、修改某篇笔记或修改评论

如豆瓣的修改评论的开放api,见下图:

https://i-blog.csdnimg.cn/blog_migrate/0623f7b007128fc57fc0e8993d0df3f9.png" width="703" />

4)delete型接口

说明: 请求服务器删除请求里url所标识的资源

场景: 如用户在豆瓣网站取消对某本书的收藏、删除某篇笔记或删除评论

如豆瓣的删除评论的开放api,见下图:

https://i-blog.csdnimg.cn/blog_migrate/9680b4dd7d3ff388791b467b4d832772.png" width="699" />

三、RPC接口测试

1)RPC接口其应用框架比较多,各有特色,广泛使用的有RMI、Hessian、Dubbo等,这次我们主要介绍一下Dubbo框架。

Dubbo是一个高性能、轻量级的RPC框架。主要提供三个关键功能,包括基于接口的远程调用、容错和负载平衡、以及自动服务注册和发现。

2)流程图:

https://i-blog.csdnimg.cn/blog_migrate/89bcf9910616014d45a60de04d32a91d.png" width="523" />

3)测试环境搭建:

a. pom.xml引入相关service应用jar依赖(示例)

   <dependencies><dependency><groupId>com.test.service</groupId><artifactId>base-service-test</artifactId><version>0.0.1-SNAPSHOT</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><dependency>  <groupId>jdk.tools</groupId>  <artifactId>jdk.tools</artifactId>  <version>1.8</version>  <scope>system</scope>  <systemPath>${JAVA_HOME}/lib/tools.jar</systemPath>  </dependency></dependencies>

b. dubbo服务spring配置(示例)

<!-- 引入资源配置 -->
<import resource="spring-resource.xml"/>
<!-- 具体的实现bean -->
<bean id="demoServer" class="com.dub.provider.impl.DemoServerImpl" />
<!-- 提供方应用信息 -->
<dubbo:application name="xs_provider" />
<!-- zookeeper服务器地址 -->
<dubbo:registry address="zookeeper://localhost:2181" />
<!-- 用dubbo协议暴露服务 -->
<dubbo:protocol name="dubbo" port="20880" />
<!-- 声明需要暴露的服务接口 -->
<dubbo:service interface="com.dub.provider.DemoServer" ref="demoServer" />
<!------------------------------------------------------------------------>
<!-- 在工程resources下添加其资源配置文件-->
<dubbo:application name="hjy_consumer" /><dubbo:reference interface="com.dub.provider.DemoServer" id="demoServer"url="dubbo://localhost:20880" timeout="10000" />

c. 基于TESTNG数据驱动编写方法(示例)

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:/spring.xml"})
@Configuration//++++++++++++继承方法++++++++++++
public class BaseTestNGTest extends AbstractTestNGSpringContextTests {//++++++++++++数据收集++++++++++++@DataProvider(name = "testdata")public Object[][] dataprovide()throws IOException{System.out.println("dataprovide");// return new Object[][]{{2000020013,2},{2001000138,0},{2001000139,2}};Object[][] testData =ExcelHandle.readXlsx(excel, "sheet2");return testData;}//++++++++++++数据传递++++++++++++@Test(dataProvider="testdata")public void test_case_1(HashMap<String, String> map) throws Exception {operatorUserId=Integer.valueOf(map.get("userId"));exceptedvalue=Integer.valueOf(map.get("excepted"));//++++++++++++实际值++++++++++++Integer actual_value=billService.getUserEmailNameCount(operatorUserId);//++++++++++++预期值++++++++++++Integer excepted_value=get_excepted_value(operatorUserId);//+++++++++++++验证+++++++++++++Assert.assertEquals(actual_value,exceptedvalue);}
}

四、接口测试用例设计

https://i-blog.csdnimg.cn/blog_migrate/871edac1c4cd0cea7882a381b86e7eec.png" width="720" />

五、测试思路总结

1)查看接口文档,了解接口功能及其业务逻辑

2)确定接口调用协议(httprpc等)

3)确定请求类型(post、get等)

4)确定请求地址/调用方法

5)组装请求报文 ☆☆☆☆☆(参考测试设计)

6)选用适用工具或编写脚本测试

7)检查返回码,及其描述

8)检查返回值,及其对应数据库数据变化

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

https://i-blog.csdnimg.cn/direct/4436fe038c7a400e866a0cd31d1e0806.png" width="541" />

这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。

https://i-blog.csdnimg.cn/blog_migrate/8aa415d83f8b8623566ef60c9fbf8042.jpeg" />


http://www.ppmy.cn/server/158850.html

相关文章

【行空板K10】上传温湿度信息到EasyIoT平台

目录 引言 EasyIoT平台 程序编写 测试结果 结语 引言 今天测试一下使用行空板K10上传数据到EasyIoT平台。这个平台是DFRobot自由的物联网云平台&#xff0c;也是Mind支持的4个MQTT平台之一。 EasyIoT平台 EasyIoT平台的优点是非常简单&#xff0c;没有阿里云、华为云那…

FPGA EDA软件的位流验证

位流验证&#xff0c;对于芯片研发是一个非常重要的测试手段&#xff0c;对于纯软件开发人员&#xff0c;最难理解的就是位流验证。在FPGA芯片研发中&#xff0c;位流验证是在做什么&#xff0c;在哪些阶段需要做位流验证&#xff0c;如何做&#xff1f;都是问题。 我们先整体的…

浅谈云计算02 | 云计算模式的演进

云计算计算模式的演进 一、云计算计算模式的起源追溯1.2 个人计算机与桌面计算 二、云计算计算模式的发展阶段2.1 效用计算的出现2.2 客户机/服务器模式2.3 集群计算2.4 服务计算2.5 分布式计算2.6 网格计算 三、云计算计算模式的成熟与多元化3.1 主流云计算服务模式的确立3.1.…

特制一个自己的UI库,只用CSS、图标、emoji图 第二版

图&#xff1a; 代码&#xff1a; index.html <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>M…

【STM32-学习笔记-1-】GPIO

文章目录 GPIOⅠ、GPIO函数Ⅱ、GPIO_InitTypeDef结构体参数①、GPIO_Mode②、GPIO_Pin③、GPIO_Speed GPIO Ⅰ、GPIO函数 // 将指定的GPIO端口寄存器重置为默认值 void GPIO_DeInit(GPIO_TypeDef* GPIOx);// 将GPIO的备用功能寄存器重置为默认值 void GPIO_AFIODeInit(void);…

stack_queue的底层,模拟实现,deque和priority_queue详解

文章目录 适配器Stack的模拟实现Queue的模拟实现vector和list的对比dequedeque的框架deque的底层 priority_queuepriority_queue的使用priority_queue的底层仿函数的使用仿函数的作用priority_queue模拟实现 适配器 适配器是一种模式&#xff0c;这种模式将类的接口转化为用户希…

9.7 visual studio 搭建yolov10的onnx的预测(c++)

1.环境配置 在进行onnx预测前&#xff0c;需要搭建的环境如下: 1.opencv环境的配置&#xff0c;可参考博客:9.2 c搭建opencv环境-CSDN博客 2.libtorch环境的配置&#xff0c;可参考博客&#xff1a;9.4 visualStudio 2022 配置 cuda 和 torch (c)-CSDN博客 3.cuda环境的配置…

庖丁解java(一篇文章学java)

(大家不用收藏这篇文章,因为这篇文章会经常更新,也就是删除后重发) 一篇文章学java,这是我滴一个执念... 当然,真一篇文章就写完java基础,java架构,java业务实现,java业务扩展,根本不可能.所以,这篇文章,就是一个索引,索什么呢? 请看下文... 关于决定开始写博文的介绍 …