| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 开发测试 -> 互联网服务端测试之RPC接口测试 -> 正文阅读 |
|
[开发测试]互联网服务端测试之RPC接口测试 |
开篇碎碎念: ????????18年的时候写过一篇《互联网服务端测试是个啥(入门科普)》(指路https://blog.csdn.net/wangyueshu/article/details/81944250),主要面向的是那些没有接触过服务端测试,尤其是已有端上测试经验、而面对服务端测试时急需转换测试思维的那部分读者。 ????????3年过去了,转一圈再回来做服务端测试时,内容也有了扩展。原篇的接口更多的是指代HTTP接口,服务也更多的指代数据服务。而随着算法模型应用的逐渐深入,服务扩展到了模型、策略服务,RPC接口也变得更为普遍,成了服务端测试的对象之一。 ? ? ? ? 正文将包含三部分,基础概念、服务输出(开发视角)和服务测试(测试视角)三个部分。 一、基础概念: ????????在正式介绍RPC接口测试之前,先明确几个基本概念,服务、语言、协议。 ????????服务,即为达到一定的产品或技术目标而实现的一套软硬件系统或子系统。 ????????语言,服务为了实现软件功能而采用的代码语言,如Java、php、python等。 ????????协议,数据通信规范,可以是终端到服务端,也可以是服务端和服务端之间。两个软硬件各不相同的两个系统,只要采用相同的协议即可正常通信。 ????????RPC(Remote Procedure Call Protocol),远程过程调用协议,其允许像调用本地服务一样调用远程服务。相比HTTP或socket一类的通信协议,更多的是表示一种技术框架,可以通过HTTP、socket或其它封装的私有协议来实现。 二、服务输出: ????????现在假设你是一个服务提供者,先选定了开发语言A开发了一套系统,为了实现对外服务,就需要通过API封装把服务接口提供出去。这时候可选的方案就有HTTP的接口、RPC的接口或其它协议基础的通信接口,至于具体如何选择我们不在此作展开。 ????????对于接口调用,这里有一个隐藏概念,即server端和client端的协议数据收发模块。对于HTTP类型的接口,大多数的终端、浏览器、语言代码包都提供了完备的HTTP request功能,因此服务提供者不需要考虑对方如何调用的问题。 ????????但对于RPC接口就需要显性的去考虑别人怎么调用的问题。要让别人像调用本地服务一样调用自己的server端,就需要提供一个负责RPC协议数据收发的client代码包给对方。对方引入代码包后,根据client代码包的request对象结构拼接数据,调用client代码包的方法以使用server的接口服务,并用client代码包的response对象结构来解析返回数据。 ????????且考虑到对方的开发语言是多样的,为了更多的支持服务调用者,client代码包也会有多个语言版本。也就是说,你自己的服务可能是java写的,提供出去的client代码包可能是java的、php的等等。当然RPC大多在公司内部的大系统内相互调用,因此技术栈范围是有限的,固定支持一种或几种即可。 三、服务测试: ????????下面我们再回到测试视角。 ????????测试靠调用RPC接口完成RPC服务的测试。而测试是没有固定的语言要求的,不需要RPC服务端来适配我们。因此我们在选测试脚本语言的时候需要看开发提供的client代码包的语言是什么,我们就用什么,跟开发的技术栈保持一致。 ????????选定语言后就可以进行测试代码开发了,基本流程如图所示。 ? ????????先进行环境配置,主要包括3个方面:
????????环境配置完成之后开始代码编写。先引入代码包,进行环境上下文Context初始化(rpc框架不同,这部分的工作也会不一样),然后按照Client代码包中的类和方法定义,进行Request数据准备、service服务调用和Response结果校验。 ????????同样,调用方式不是最关键的,服务端不等同于简单的接口测试,接口调用只是手段,用来帮助我们进行服务及系统本身的测试验收。所以,重要的是对于被测服务的理解。例如RPC接口大多提供的是模型及策略服务,因此我们要明确的是被测对象。如果是模型,核心需要关注的指标是什么?如何评估?测试数据有什么要求(各类型数据的构成比例及数量等)?如果是策略,针对的是什么输入数据?输出的期望是什么?这些才是RPC测试的根本所在。? ? |
|
开发测试 最新文章 |
pytest系列——allure之生成测试报告(Wind |
某大厂软件测试岗一面笔试题+二面问答题面试 |
iperf 学习笔记 |
关于Python中使用selenium八大定位方法 |
【软件测试】为什么提升不了?8年测试总结再 |
软件测试复习 |
PHP笔记-Smarty模板引擎的使用 |
C++Test使用入门 |
【Java】单元测试 |
Net core 3.x 获取客户端地址 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/17 20:50:47- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |