互联网服务端测试之RPC接口测试「建议收藏」

互联网服务端测试之RPC接口测试「建议收藏」开篇碎碎念:18年的时候写过一篇《互联网服务端测试是个啥(入门科普)》(指路https://blog.csdn.net/wangyueshu/article/details/81944250),主要面向的是那些没有接触过服务端测试,尤其是已有端上测试经验、而面对服务端测试时急需转换测试思维的那部分读者。3年过去了,转一圈再回来做服务端测试时,内容也有了扩展。原篇的接口更多的是指代HTTP接口,服务也更多的指代数据服务。而随着算法模型应用的逐渐深入,服务扩展到了模型、策…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

开篇碎碎念:

        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服务的测试。而测试是没有固定的语言要求的,不需要RPC服务端来适配我们。因此我们在选测试脚本语言的时候需要看开发提供的client代码包的语言是什么,我们就用什么,跟开发的技术栈保持一致。

        选定语言后就可以进行测试代码开发了,基本流程如图所示。

互联网服务端测试之RPC接口测试「建议收藏」

 

        先进行环境配置,主要包括3个方面:

  1. RPC运行环境配置,包括一些协议、referer等配置。
  2. Client代码包的安装,例如maven通过pom文件的depedencies安装。
  3. 服务器地址配置,包括group、直连地址等(RPC一般起的云服务)。

        环境配置完成之后开始代码编写。先引入代码包,进行环境上下文Context初始化(rpc框架不同,这部分的工作也会不一样),然后按照Client代码包中的类和方法定义,进行Request数据准备、service服务调用和Response结果校验。

        同样,调用方式不是最关键的,服务端不等同于简单的接口测试,接口调用只是手段,用来帮助我们进行服务及系统本身的测试验收。所以,重要的是对于被测服务的理解。例如RPC接口大多提供的是模型及策略服务,因此我们要明确的是被测对象。如果是模型,核心需要关注的指标是什么?如何评估?测试数据有什么要求(各类型数据的构成比例及数量等)?如果是策略,针对的是什么输入数据?输出的期望是什么?这些才是RPC测试的根本所在。 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/182423.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 本地tomcat 配置环境变量[通俗易懂]

    本地tomcat 配置环境变量[通俗易懂]1、官网下载tomcat,并解压Tomcat官网2、找到tomcat解压路径,配置三个环境变量新建CATALINA_HOME环境变量,CATALINA_HOME=E:\tomcat\apache-tomcat-8.5.38新建CATALINA_BASE环境变量,CATALINA_BASE=E:\tomcat\apache-tomcat-8.5.38…

    2022年6月4日
  • win10eplan激活码破解步骤3月最新在线激活

    win10eplan激活码破解步骤3月最新在线激活,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月15日
  • MAC Unity安装教程「建议收藏」

    MAC Unity安装教程「建议收藏」缘起这边app要做一个简单调研,验证是否可以利用unity改善app中h5页面需要展示的3d和复杂报表效果。于是就此开始了调研,这边只是想简单将unity集成到工程中,然后想办法嵌入h5来进行展示测试。安装地址https://unity3d.com/cn/get-unity/download/archive这里根…

    2022年6月27日
  • python中输入输出

    python中输入输出一个程序要进行交互,就需要进行输入,进行输入→处理→输出的过程。所以就需要用到输入和输出功能。同样的,在Python中,怎么实现输入和输出?Python3中的输入方式:Python提供了&#160

    2022年7月5日
  • 关系数据库的设计_关系型数据库的设计原则

    关系数据库的设计_关系型数据库的设计原则1、设计一个合适的关系数据库系统的关键是关系数据库模式的设计,即应构造几个关系模式, 每个模式有哪些属性,怎样将这些相互关联的关系模式组建成一个适合的关系模型,关系数据库 的设计必须在关系数据库设计理论的指导下进行。2、关系数据库设计理论有三个方面的内容:函数依赖、范式和模式设计。函数依赖起核心作用, 它是模式分解和模式设计的基础,范式是模式分解的标准。【例1】设计一个学生课程数据库,其关系…

    2022年8月18日
  • jnpf开发文档_java开发最新技术

    jnpf开发文档_java开发最新技术JNPF快速开发平台JNPF快速开发平台采用前后端分离技术、采用B/S架构开发,形成一站式开发多端(APP+PC)使用。使用JNPF开发平台可以简单、快速、高效的构建各种类型java项目。JAVA版介绍JNPF.java版采用前后端分离,可将代码直接导入idea运行,也可将前后端代码利用ngnix分开部署。JNPF主体架构、技术采用前后端分离技术,主体架构为B/S,PC端和APP混合开发。前后端分离特点JNPF快速开发平台平台采用全新的前后端分离架构模式。前…

    2022年8月23日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号