news 2026/4/22 18:57:36

接口测试总结(http与rpc)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
接口测试总结(http与rpc)

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

一、了解一下HTTP与RPC

1. HTTP(HyperText Transfer Protocol)

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

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

流程图:

2. RPC(Remote Procedure Call)

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

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

流程图:

二、HTTP接口测试

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

1)get型接口

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

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

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

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

2)post型接口

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

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

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

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

3)put型接口

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

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

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

4)delete型接口

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

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

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

三、RPC接口测试

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

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

2)流程图:

3)测试环境搭建:

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

  1. <dependencies>

  2. <dependency>

  3. <groupId>com.test.service</groupId>

  4. <artifactId>base-service-test</artifactId>

  5. <version>0.0.1-SNAPSHOT</version>

  6. </dependency>

  7. <dependency>

  8. <groupId>org.springframework.boot</groupId>

  9. <artifactId>spring-boot-starter-actuator</artifactId>

  10. </dependency>

  11. <dependency>

  12. <groupId>jdk.tools</groupId>

  13. <artifactId>jdk.tools</artifactId>

  14. <version>1.8</version>

  15. <scope>system</scope>

  16. <systemPath>${JAVA_HOME}/lib/tools.jar</systemPath>

  17. </dependency>

  18. </dependencies>

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

  1. <!-- 引入资源配置 -->

  2. <import resource="spring-resource.xml"/>

  3. <!-- 具体的实现bean -->

  4. <bean id="demoServer" class="com.dub.provider.impl.DemoServerImpl" />

  5. <!-- 提供方应用信息 -->

  6. <dubbo:application name="xs_provider" />

  7. <!-- zookeeper服务器地址 -->

  8. <dubbo:registry address="zookeeper://localhost:2181" />

  9. <!-- 用dubbo协议暴露服务 -->

  10. <dubbo:protocol name="dubbo" port="20880" />

  11. <!-- 声明需要暴露的服务接口 -->

  12. <dubbo:service interface="com.dub.provider.DemoServer" ref="demoServer" />

  13. <!------------------------------------------------------------------------>

  14. <!-- 在工程resources下添加其资源配置文件-->

  15. <dubbo:application name="hjy_consumer" />

  16. <dubbo:reference interface="com.dub.provider.DemoServer" id="demoServer"

  17. url="dubbo://localhost:20880" timeout="10000" />

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

  1. @RunWith(SpringJUnit4ClassRunner.class)

  2. @ContextConfiguration(locations = {"classpath:/spring.xml"})

  3. @Configuration

  4. //++++++++++++继承方法++++++++++++

  5. public class BaseTestNGTest extends AbstractTestNGSpringContextTests {

  6. //++++++++++++数据收集++++++++++++

  7. @DataProvider(name = "testdata")

  8. public Object[][] dataprovide()throws IOException{

  9. System.out.println("dataprovide");

  10. // return new Object[][]{{2000020013,2},{2001000138,0},{2001000139,2}};

  11. Object[][] testData =ExcelHandle.readXlsx(excel, "sheet2");

  12. return testData;

  13. }

  14. //++++++++++++数据传递++++++++++++

  15. @Test(dataProvider="testdata")

  16. public void test_case_1(HashMap<String, String> map) throws Exception {

  17. operatorUserId=Integer.valueOf(map.get("userId"));

  18. exceptedvalue=Integer.valueOf(map.get("excepted"));

  19. //++++++++++++实际值++++++++++++

  20. Integer actual_value=billService.getUserEmailNameCount(operatorUserId);

  21. //++++++++++++预期值++++++++++++

  22. Integer excepted_value=get_excepted_value(operatorUserId);

  23. //+++++++++++++验证+++++++++++++

  24. Assert.assertEquals(actual_value,exceptedvalue);

  25. }

  26. }

四、接口测试用例设计

五、测试思路总结

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

2)确定接口调用协议(http、rpc等)

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

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

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

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

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

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

总结:

感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

软件测试面试文档

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

视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/21 0:35:46

springboot个人健康管理网站的设计与实现

3 个人健康管理网站的设计 健康知识、疫情资讯是个人健康管理网站的重要组成部分&#xff0c;信息清晰、详细、准确&#xff0c;能够有效地促进个人健康管理网站的运行[5]。基础设定函数是对整个系统的总体布局进行合理安排&#xff0c;包括&#xff1a;健康知识、疫情资讯等。…

作者头像 李华
网站建设 2026/4/22 9:07:56

【AI+教育】AI幻觉问题及秘塔AI解决方案解析

核心问题引入:AI幻觉与元认知能力的关联 刚刚或多或少也提到过一个问题,就是AI的幻觉问题。生成式人工智能会产生幻觉,也就是编造错误的内容。如果我们缺乏元认知能力,就很容易让这些错误悄然蒙混过关。幻觉问题在教育、社会科学、计算机等多个领域都有大量热门研究展开,包…

作者头像 李华
网站建设 2026/4/22 4:50:11

开源NER模型哪个强?AI智能实体侦测服务RaNER实测报告

开源NER模型哪个强&#xff1f;AI智能实体侦测服务RaNER实测报告 1. 引言&#xff1a;为何我们需要高性能中文NER&#xff1f; 在信息爆炸的时代&#xff0c;非结构化文本数据&#xff08;如新闻、社交媒体、文档&#xff09;占据了企业数据总量的80%以上。如何从这些杂乱文本…

作者头像 李华
网站建设 2026/4/22 16:30:21

AI实体识别WebUI实战:基于RaNER的高效部署案例

AI实体识别WebUI实战&#xff1a;基于RaNER的高效部署案例 1. 引言&#xff1a;AI 智能实体侦测服务的现实需求 在信息爆炸的时代&#xff0c;非结构化文本数据&#xff08;如新闻、社交媒体、客服对话&#xff09;占据了企业数据总量的80%以上。如何从中快速提取关键信息&am…

作者头像 李华
网站建设 2026/4/22 16:05:38

RaNER模型对比分析:不同预训练模型的效果

RaNER模型对比分析&#xff1a;不同预训练模型的效果 1. 引言&#xff1a;AI 智能实体侦测服务的背景与选型需求 在信息爆炸的时代&#xff0c;非结构化文本数据&#xff08;如新闻、社交媒体、文档&#xff09;中蕴含着大量关键信息。如何高效地从中提取出有价值的内容&…

作者头像 李华