接口测试总结分享(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,见下图:

----- 此部分摘抄自:https://blog.csdn.net/github_36032947/article/details/78222654
三、RPC接口测试
1)RPC接口其应用框架比较多,各有特色,广泛使用的有RMI、Hessian、Dubbo等,这次我们主要介绍一下Dubbo框架。
Dubbo是一个高性能、轻量级的RPC框架。主要提供三个关键功能,包括基于接口的远程调用、容错和负载平衡、以及自动服务注册和发现。
2)流程图:

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);
}
}
四、接口测试用例设计

五、测试思路总结
1)查看接口文档,了解接口功能及其业务逻辑
2)确定接口调用协议(http、rpc等)
3)确定请求类型(post、get等)
4)确定请求地址/调用方法
5)组装请求报文 ☆☆☆☆☆(参考测试设计)
6)选用适用工具或编写脚本测试
7)检查返回码,及其描述
8)检查返回值,及其对应数据库数据变化
----- 以上仅为个人测试经验,当然接口测试不仅仅如此,更多还需要大家自己去发掘,同时欢迎各路大神指点。
接口测试总结分享(http与rpc)的更多相关文章
- RPC 框架要实现这个功能,我们可以使用泛化调用。那什么是泛化调用呢?我们带着这个问题,先学习下如何在没有接口的情况下进行 RPC 调用。
RPC 框架要实现这个功能,我们可以使用泛化调用.那什么是泛化调用呢?我们带着这个问题,先学习下如何在没有接口的情况下进行 RPC 调用.
- java接口调用——webservice就是一个RPC而已
很多新手一听到接口就蒙逼,不知道接口是什么!其实接口就是RPC,通过远程访问别的程序提供的方法,然后获得该方法执行的接口,而不需要在本地执行该方法.就是本地方法调用的升级版而已,我明天会上一篇如何通过 ...
- RESTful 接口调试分享利器 restc
这个工具来自于https://elemefe.github.io/restc/ 这里对Abp进行了一次封装 1.在项目中添加nuget包 Abp.Web.Api.Restc 2.在项目Abp模块的D ...
- Python微信-- 分享接口(分享到朋友圈、朋友、空间)
生成JS-SDK权限验证的签名 获取signature(签名)首先要获得 1.#获得jsapi_ticket 2.#获取当前页面的url #获取当前页面的url url="{}://{}{} ...
- asp.net mvc 如何调用微信jssdk接口:分享到微信朋友(圈)| 分享到qq空间
如何在asp.net mvc 项目里, 调用微信jssdk接口,现实功能: 分享到微信朋友(圈)| 分享到qq空间 1 创建一个Action,准备一些数据,初始化数据(签名): /// <sum ...
- 微信js接口自定义分享内容
最近客户有个要求,需要给网页添加微信分享功能,当然指的是用微信自带浏览器的时候,希望用户在最后一页点击分享的时候是分享的首页.曾经无意中看到过微信公众开发者平台提供了js接口,所以试着做了做,果然,跌 ...
- 谈谈如何用eoLinker管理各类API接口及分享API接口管理小技巧教程
在前后端分离的开发模式下,前后端往往需要接口文档来进行交互.我的上一篇随笔中已经写到用传统的文档写接口时,由于需求经常变动,接口文档也会随之变动.一开始,某接口信息已经写入文档,但后期因为需求变动,发 ...
- 通过JiaThis API接口自定义分享功能按钮实现分享功能本地化
http://www.mdaima.com/jingyan/20.html 最早李雷博客采用的是百度分享插件,为此还发过博文讲解如何在一个页面调用多个按钮分享不同的文章,感兴趣的朋友可以在本站搜索一下 ...
- 微信公众号的分享接口,分享提示config:fail,invalid signature的解决办法(2017年12月)
微信中打开网页,使用微信右上角菜单中自带的分享功能的经历及总结: 最开始,微信分享页面时,直接读取页面的标题(title)和页面中的第一张符合条件的图片[此种方式在2017-03-29之前管用,这一天 ...
随机推荐
- mysql 外键和子查询,视图
1.mysql 外键约束 建表时生成外键 foreing key ('sid') references' student'('id'); 建表后添加外键 alter table' course ...
- element 时间选择器——年
<el-date-picker v-model="fileYear" type="year" placeholder="选择年"> ...
- oracle数据库连接缓慢
今天连接数据库时非常的慢,大概将近1分钟,才能连上,感觉不对,登录数据库所在的服务器,进行检查,常规的内存.硬盘.CPU全都正常,然后想要进入oracle用户时报错了:su: cannot set u ...
- JDBCTM中Statement接口提供的execute、executeQuery和executeUpdate之间的区别
Statement 接口提供了三种执行 SQL 语句的方法:executeQuery.executeUpdate 和 execute.使用哪一个方法由 SQL 语句所产生的内容决定. 方法execut ...
- cocos creator
动画效果: 如图在场景中创建一个空节点,点击添加Animatiion 选中要改变的属性.(以spriteFrame为例) 将选中的图片拖动到所示位置,此时点击播放按钮即可预览. 保存之后将层级管理器中 ...
- 2.3 i++/i--与++i/--i的运算
一.i++/i--: i先参与运算,运算完成后自加/减1: public class Test{ public static void main(String[] args){ // [1] ; i+ ...
- Ajax的工作原理以及优缺点
Ajax的工作原理 : 相当于在客户端与服务端之间加了一个抽象层(Ajax引擎),使用户请求和服务器响应异步化,并不是所有的请求都提交给服务器,像一些数据验证和数据处理 都交给Ajax引擎来完成,只有 ...
- CCS的文本及字体
1.文本 CSS 文本属性可定义文本的外观 通过文本属性,您可以改变文本的颜色.字符间距,对齐文本,装饰文本,对文本进行缩进,等等. 缩进文本 把 Web 页面上的段落的第一行缩进,这是一种最常用的文 ...
- 学习笔记CB002:词干提取、词性标注、中文切词、文档分类
英文词干提取器,import nltk,porter = nltk.PorterStemmer(),porter.stem('lying') . 词性标注器,pos_tag处理词序列,根据句子动态判断 ...
- [Python学习笔记] 数字类型及操作
数字类型 整数类型 十进制:1110,-123 二进制:以0B或0b开头 0b110,-0B101 八进制:以0O或0o开头 0o123,-0O567 十六进制:以0X或0x开头 0x555,-0X8 ...