• 在自动化测试中使用TestNG【第 5 章 RPC 接口自动化测试 5.1RPC简介5.2部署待测程序5.3 手工测试用例设计】


    5.1 RPC 简介

    RPC(Remote Procedure Call,远程过程调用)协议是一种计算机通信协议,该协议允许本地计算机上的程序远程调用另一台计算机上的程序,而在此过程中,开发人员不需要额外编程。另外,在面向对象编程的程序中,远程过程调用又可称为远程调用或远程方法调用。常见的 RPC 协议实现如下

    Java RMI:Java Remote Method Invocation,即 Java 远程方法调用,采用了 JDK 中标准的 java.rmi.*实现

    Apache Dubbo(以下简称 Dubbo:是阿里巴巴开源的一款高性能、轻量级的 Java RPC 框架。Dubbo 的特点包括可面向接口的远程方法调用、智能容错、负载均衡和服务自动注册及发现等

    Hessian:Hessian 是一种二进制协议,它非常适合发送二进制数据,且无须通过附件的形式对该协议进行任何扩展

    XML-RPC:XML-RPC 是一个规范和一组实现,它允许程序运行在不同的操作系统和环境中,以通过 Internet 进行过程调用。它是一种基于 HTTP 和 XML 实现的远程过程调用。XML-RPC 的设计虽然非常简单,但它支持传输、处理和返回复杂的数据结构

    Apache Thrift:是一种 RPC 协议实现的框架,适用于跨语言服务的开发,它将软件堆栈与代码生成引擎结合起来构建高效的服务,且可无缝连接 Java、Python、C++、JavaScript、C#和 PHP 等编程语言

    在众多 RPC 协议的实现中,Dubbo 作为分布式微服务的主流框架之一,在企业级应用开发中使用频率较高,因此本章使用 Dubbo 作为 RPC 接口自动化测试的示例

    Dubbo 中的重要角色如图 5-1 所示

    图 5-1

    服务提供者:提供远程调用的接口

    容器:运行服务提供者

    服务消费者:调用服务提供者提供的接口

    注册中心:服务提供者将服务注册到注册中心,服务消费者从注册中心获取需要使用的服务

    监控中心:监控服务提供者和服务消费者的调用过程。监控中心是可选的

    5.2 部署待测程序

    1.安装 JDK

    在即将部署待测程序的服务器上安装 JDK,并配置系统变量如下。这里以 Windows 为例

    ① 新建 JAVA_HOME,变量值填写如下

    C:Program FilesJavajdk1.8.0_212

    ② 新建 CLASSPATH,变量值填写如下

    .;%JAVA_HOME%libdt.jar;%JAVA_HOME%lib ools.jar

    ③ 编辑 Path,变量值追加如下

    ;%JAVA_HOME%in

    2.安装 ZooKeeper

    在 Dubbo 中,注册中心只是一个角色,可以充当该角色的中间件有很多,ZooKeeper 就是其中最常用的一个,同时也是官方推荐使用的。ZooKeeper 可以部署为单机模式或分布式模式,为简明步骤,示例部署为单机模式。这里以 Windows 为例

    ① 从官网下载 ZooKeeper

    ② 解压缩到指定目录,笔者解压缩到 D:Program Files 目录

    ③ 将 conf 目录下的 zoo_sample.cfg 文件重命名为 zoo.cfg,编辑 zoo.cfg 文件,在文件最后加上 admin.serverPort=8081

    # The number of milliseconds of each tick
    tickTime=2000
    # The number of ticks that the initial 
    # synchronization phase can take
    initLimit=10
    # The number of ticks that can pass between 
    # sending a request and getting an acknowledgement
    syncLimit=5
    # the directory where the snapshot is stored.
    # do not use /tmp for storage, /tmp here is just 
    # example sakes.
    dataDir=D:javawebapache-zookeeper-3.5.8data
    # the port at which the clients will connect
    clientPort=2181
    # the maximum number of client connections.
    # increase this if you need to handle more clients
    #maxClientCnxns=60
    #
    # Be sure to read the maintenance section of the 
    # administrator guide before turning on autopurge.
    #
    # http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
    #
    # The number of snapshots to retain in dataDir
    #autopurge.snapRetainCount=3
    # Purge task interval in hours
    # Set to "0" to disable auto purge feature
    #autopurge.purgeInterval=1
    
    admin.serverPort=8081
    zoo.cfg

    ④ 双击 bin 目录下的 zkServer.cmd 文件,运行成功后如图 5-2 所示

    3.部署待测程序

    从笔者的 GitHub 中下载待测程序,程序名为 rpcinterface-0.0.1-SNAPSHOT.jar,下载后放在服务器上,执行以下命令运行即可

    java-jar E: pcinterface-0.0.1-SNAPSHOT.jar

    这里把本地电脑作为服务器,且待测程序放在了 E 盘根目录,读者需要根据实际情况替换以上路径。运行成功后如图 5-3 所示

    5.3 手工测试用例设计

    5.3.1 分析待测接口

    Dubbo 接口的分析方式和 HTTP 接口类似,接口文档如表 5-1 所示

    表 5-1

    从接口中可以看出待测程序只有一个接口,但有两个方法,即 getMobilePhone 和 saveMobilePhone,这与第 4 章中的待测程序相同。其中,com.lujiatao.rpcinterface.domain.MobilePhone 为一个实体类,由于不是 Java 的内置类型,因此在接口文档中最好写出全路径

    5.3.2 测试用例设计

    这里仅以入参作为示例来设计测试用例,5.4 节会将这部分手工测试用例转换成自动化测试用例

    1.getMobilePhone 测试用例设计

    (1)参数必填项

    (2)参数长度

    接口文档未提及参数长度,但我们可以提交一个相对较长的参数

    Case 4:model=「01234567890123456789012345678901234567890123456789」——返回空

    (3)参数组合

    在多个参数接口中,参数可能相互响应或制约,因此对参数组合的用例设计必不可少。本接口不涉及(因为只有一个参数

    (4)参数规则

    一般特殊的参数会有相应规则,比如手机号、身份证号和统一社会信用代码等。本接口不涉及

    (5)参数枚举

    有些参数只能接收固定的几个参数值,这类参数在服务端大多用枚举定义,在这种情况下,需要测试每种枚举值。本接口不涉及

    综合以上各种情况,getMobilePhone 一共设计了 4 条手工测试用例

    2.saveMobilePhone 测试用例设计

    (1)参数必填项

    (2)参数长度

    接口文档未提及参数长度,但我们可以提交一个相对较长的参数

    这里没有对 os 参数做参数长度测试,稍后会说明原因

    (3)参数组合

    本接口不涉及

    (4)参数规则

    本接口不涉及

    (5)参数枚举

    os 参数代表操作系统,而手机操作系统目前主流的只有 Android 和 iOS,且在接口文档的示例中,os 的值为「IOS。在 Java 中,枚举用大写表示,故推测该字段在后台以枚举方式定义

    os 的值为「ANDROID,上述已有用例覆盖,因此这里不再单独设计用例进行覆盖

    Case 6 和 Case 11 试图给枚举赋值空字符串或不存在的枚举,这两种情况会导致编译报错,因此没有必要测试。综合以上各种情况,saveMobilePhone 方法一共设计了 9 条手工测试用例

     

    参考资料:

    apache-zookeeper-3.5.8-bin.tar.gz

    https://github.com/lujiatao2/rpcinterface

  • 相关阅读:
    SWFUpload说明文档
    Ubuntu中root用户和user用户的相互切换
    不用IF比较两数大小
    Linux服务器下验证码图片不显示问题
    常用CSS语法
    常用CSS语法
    漫谈DataList的用法
    Session丢失浅析
    浅谈C#托管程序中的资源释放问题
    C#2.0 泛型详解
  • 原文地址:https://www.cnblogs.com/MarlonKang/p/14220482.html
Copyright © 2020-2023  润新知