• 接口测试总结


    一、了解一下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,见下图:

        

    三、RPC接口测试

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

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

      2)流程图:

      3)测试环境搭建:

      a.  pom.xml引入相关service应用jar依赖(示例:)

    1. <dependencies>
    2. <dependency>
    3. <groupId>com.test.service</groupId>
    4. <artifactId>base-service-test</artifactId>
    5. <version>0.0.1-SNAPSHOT</version>
    6. </dependency>
    7. <dependency>
    8. <groupId>org.springframework.boot</groupId>
    9. <artifactId>spring-boot-starter-actuator</artifactId>
    10. </dependency>
    11. <dependency>
    12. <groupId>jdk.tools</groupId>
    13. <artifactId>jdk.tools</artifactId>
    14. <version>1.8</version>
    15. <scope>system</scope>
    16. <systemPath>${JAVA_HOME}/lib/tools.jar</systemPath>
    17. </dependency>
    18. </dependencies>

      b.  dubbo服务spring配置(示例:)

    1. <import resource="spring-resource.xml"/>
    2. <bean id="demoServer" class="com.dub.provider.impl.DemoServerImpl" />
    3. <dubbo:application name="xs_provider" />
    4. <dubbo:registry address="zookeeper://localhost:2181" />
    5. <dubbo:protocol name="dubbo" port="20880" />
    6. <dubbo:service interface="com.dub.provider.DemoServer" ref="demoServer" />
    7. <dubbo:application name="hjy_consumer" />
    8. <dubbo:reference interface="com.dub.provider.DemoServer" id="demoServer"
    9. url="dubbo://localhost:20880" timeout="10000" />

      c.  基于TESTNG数据驱动编写方法(示例:)

    1. @RunWith(SpringJUnit4ClassRunner.class)
    2. @ContextConfiguration(locations = {"classpath:/spring.xml"})
    3. @Configuration
    4. //++++++++++++继承方法++++++++++++
    5. public class BaseTestNGTest extends AbstractTestNGSpringContextTests {
    6.  
    7. //++++++++++++数据收集++++++++++++
    8. @DataProvider(name = "testdata")
    9. public Object[][] dataprovide()throws IOException{
    10.   System.out.println("dataprovide");
    11.   // return new Object[][]{{2000020013,2},{2001000138,0},{2001000139,2}};
    12.   Object[][] testData =ExcelHandle.readXlsx(excel, "sheet2");
    13.   return testData;
    14. }
    15. //++++++++++++数据传递++++++++++++
    16. @Test(dataProvider="testdata")
    17. public void test_case_1(HashMap<String, String> map) throws Exception {
    18.   operatorUserId=Integer.valueOf(map.get("userId"));
    19.   exceptedvalue=Integer.valueOf(map.get("excepted"));
    20.   //++++++++++++实际值++++++++++++
    21.   Integer actual_value=billService.getUserEmailNameCount(operatorUserId);
    22.    //++++++++++++预期值++++++++++++
    23.   Integer excepted_value=get_excepted_value(operatorUserId);
    24.    //+++++++++++++验证+++++++++++++
    25.   Assert.assertEquals(actual_value,exceptedvalue);
    26. }
    27. }

    四、接口测试用例设计

    五、测试思路总结

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

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

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

      4)确定请求地址/调用方法

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

      6)选用适用工具或编写脚本测试

      7)检查返回码,及其描述

      8)检查返回值,及其对应数据库数据变化

    2023最新Jmeter接口测试从入门到精通(全套项目实战教程)

  • 相关阅读:
    CFGPT: Chinese Financial Assistant with Large Language Model
    惠普打印机秋季新品震撼登场,以卓越品质赢得用户信赖,打造无限创新打印体验
    JavaScript循环语句(for、while)
    Axure RP仿QQ音乐app高保真原型图交互模板源文件
    华钜同创:跨境运营培训如何提升亚马逊产品转化率
    openEuler 亮相全球顶级开源盛会 OSSUMMIT 2023,持续推动智能化未来的实现
    java计算机毕业设计西藏民族大学论文管理系统源程序+mysql+系统+lw文档+远程调试
    Ansible之Playbooks的when语句
    同样是数据库 SQL和MySQL的区别是什么?
    【C】atoi和offsetof的介绍和模拟实现
  • 原文地址:https://blog.csdn.net/mashang123123123/article/details/133363003