• 11
  • 11
分享
  • 接口测试总结分享(http与rpc)——软件测试圈
  • 饭团🍙 2021-05-25 09:56:48 字数 3824 阅读 1485 收藏 11

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

 一、了解一下HTTP与RPC

1. HTTP(HyperText Transfer Protocol) 

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

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

流程图:

1.jpg

2. RPC(Remote Procedure Call)

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

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

流程图:

2.jpg

二、HTTP接口测试

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

1)get型接口

格式: 请求数参数写在网址后面,用"?"连接,多个参数之间用"&"连接。如:https://api.douban.com/v2/book/search?q='',这是一个豆瓣查询图书信息的开发api,q='',单引号里就是查询的参数,如查询《小王子》这本书的信息,则q='小王子',使用postman工具来试验一下,如下图:

3.jpg

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

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

2)post型接口

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

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

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

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

4.jpg

3)put型接口

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

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

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

5.jpg

4)delete型接口

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

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

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

6.jpg

三、RPC接口测试

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

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

2)流程图:

7.png

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);
  }
}

四、接口测试用例设计

8.png

五、测试思路总结

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

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

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

  • 确定请求地址/调用方法;

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

  • 选用适用工具或编写脚本测试;

  • 检查返回码,及其描述;

  • 检查返回值,及其对应数据库数据变化。


作者:Leo Zhang

原文链接:https://www.cnblogs.com/leozhanggg/p/9930741.html

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • android app自动化测试框架Appium资料整理1 自动化测试1.1 自动化测试简介自动化测试是把以人为驱动的测试行为转化为机器执行的一种过程。从广义上来讲,一切通过工具(程序)的方式来代替或辅助手工测试的行为都可以看做自动化测试。从狭义上来讲,自动化测试就是通过工具记录或编写脚本的方式模拟手工测试的过程,通过回放或运行脚本来执行测试用例,从而代替人工对系统的功能进行验证。1.2 自动化测试的优点提高效率:通过运行自动化测试脚本,就可以在夜间、午休等时间进行测试用例回归,实现无人值守测试,大大提高了测试效率。避免重复工作:每发布一个新的版本,其中大部分功能和界面都和上一个版本相似或完全...
            11 11 1765
            分享
          • 备受关注的《三体》剧集(网飞版)24日发布首个幕后花絮。花絮中,制片人和主演纷纷现身,首季场景和人设曝光,为广大科幻迷揭开该剧神秘面纱的同时,也让国内观众不禁猜想:网飞推出的国际版和腾讯打造的国产版哪部更出色?在网飞最新曝光的《三体》花絮中,3名在好莱坞颇有资历的主创——曾打造《权力的游戏》和《极地恶灵》的大卫·贝尼奥夫、丹尼尔·威斯和亚历山大·吴作为执行制片人,率先介绍了剧集改编的重点和亮点。虽然是好莱坞主导的科幻剧集,但刘慈欣笔下的中国文化和历史痕迹随处可见,花絮第一个镜头就是带有浓重时代色彩的中式科学仪器,上面的简体汉字格外醒目。“我们刚拍摄完《三体》第一季,目前正在抓紧做后期。”制片人...
            0 0 989
            分享
          •   1.Api文档导入  如果你的旧项目数据存储在其他软件上,那么迁移到apifox也很简单,apifox支持多种格式的接口文档的导入。  导入完毕之后,Apifox会将实体类数据自动生成一个数据结构,方便后面复用。  2.后端接口测试  成功导入后的项目API文档如图所示,接口的请求方法,url和参数 会自动填写到界面中,测试人员只需要手动修改相应的参数即可对单个接口进行测试。 对于接口测试常规涉及到的需求 1)校验接口传参是否合理(少传,漏传,多传,边界值测试和空值测试等); 2)response返回值是否符合api文档约定,数据是否存在异常,是否有做容错机制 3)接口的安全性测试等 Ap...
            0 0 2117
            分享
          • 测试小白如何进行接口测试?Postman从入门到上手就这么简单!在我们日常的测试工作中,接口测试其实很普遍,无论你是做什么测试,功能、自动化亦或是性能测试,都会或多或少接触到接口。最近也有许多人来询问我:接口测试怎么测?接口测试工具有哪些?其实要想学会接口测试,真的可以很简单。下面我来帮你一一剖析:一.什么是接口?可以简单理解成用来连接而开放的入口,比如前端和后端的连续需要用接口,移动端和后台的链接也需要用到接口。连接前端后端和移动端。二.接口都有哪些类型?接口一般分为两种:程序内部的接口系统对外的接口系统对外的接口:比如你要从别的网站或服务器上获取资源或信息,别人肯定不会把数据库共享给你,他...
            0 0 1491
            分享
          • 以下总结了初、中级软件测试工程师的面试常见知识及考点。面试前复习,事半功倍。本节考点主要从以下五大类分解~测试基础理论类软件测试技术实战类测试工具类测试周边相关类测试人员软技能类一、测试基础理论类1、白盒、黑盒测试的概念2、系统测试的过程3、什么是敏捷测试4、传统模式的软件开发过程5、软件质量的非功能需求6、测试用例包含哪些要素7、软件测试的结束标准8、如何进行测试需求分析9、制订测试策略的基本要素10、功能测试一般包含哪些测试类型11、功能测试用例的设计方法12、测试用例的评审流程13、缺陷报告有哪些要素14、缺陷的生命周期15、测试设计如何保证需求覆盖率16、一般缺陷都有哪些类型17、如何...
            2 10 4920
            分享
      • 51testing软件测试圈微信