• SOAP和REST API测试技巧


    API(应用程序编程接口)本质上是应用程序或软件中各层和系统的“中间人”。 API测试是在没有GUI的消息层执行的。它是集成测试的一部分,确定API是否满足测试人员对功能、可靠性、性能和安全性的期望。

    API测试技巧

    Web API有两大类Web服务:SOAP和REST。
    SOAP(简单对象访问协议)是W3C标准定义的一种标准协议,用于发送和接收Web服务请求和响应。
    REST(表示状态传输)是使用HTTP的基于Web标准的体系结构。与基于SOAP的Web服务不同,RESTful Web API没有官方标准。

    以下是API测试所需了解的基本技巧:

    1.了解API要求

    在测试API之前,需要回答以下问题彻底了解API的要求:
    API的用途是什么?
    了解API的用途为准备好输入和输出的测试数据奠定坚实的基础。此步骤还可以定义验证方法。例如,对于某些API,针对数据库验证响应;对于其他一些API,最好根据其他API来验证响应。

    应用程序的工作流程是什么?该流程中的API在哪里?
    通常,应用程序中的API用于在读取(GET),创建(POST),更新(PUT)和删除(DELETE)中操作资源。例如,“创建用户” API的输出将是“获取用户” API的输入以进行验证。“获取用户”API的输出可用作“更新用户”API的输入。

    2.指定API输出状态

    在API测试中需要验证的最常见API输出是响应状态代码。
    验证响应代码是否等于200来确定API测试是通过还是失败,对于新的API测试人员来说很熟悉的,这不是错误的验证。但是,它并不反映API的所有测试场景。

    在全球标准中,所有API响应状态代码被分为五个类。状态码的第一位数字定义响应的类别。后两位数字没有任何类别或分类角色。

    第一个数字有五个值:
    1xx(信息性):收到请求并继续进行处理
    2xx(成功):成功接收,理解并接受了请求
    3xx(重定向):需要采取进一步的操作才能完成请求
    4xx(客户端错误):请求包含错误的语法或无法实现
    5xx(服务器错误):服务器无法满足看似有效的请求
    但是,API的实际响应状态代码由构建该API的开发团队指定。因此,作为测试人员,需要验证:代码是否遵循全球标准类,是否在要求中规定了代码。

    3. 专注于小型功能性API

    在测试项目中,总有一些简单的API,只有一个或两个输入,例如登录API,获取token API,运行状况检查API等,这些API是必需的,被认为是进入更多API的“大门”。首先关注这些API确保API服务器、环境和身份验证正常工作。

    还应该避免在一个测试案例中测试多个API。如果发生错误是很痛苦的,必须按顺序调试API生成的数据流。让API测试尽可能简单。在某些情况下,需要调用一系列API来实现端到端测试流程,这些任务应该在所有API都经过单独测试之后执行。

    4.利用自动化功能进行API测试

    尽可能早地利用自动化功能进行API测试。自动化API测试的一些重要好处:
    (1)测试数据和执行历史记录可以与API端点一起保存。使得以后重新运行测试变得更加容易。
    (2)API测试稳定且需要谨慎更改。API反映了系统的业务规则,API的任何更改都需要明确的要求,因此,测试人员始终可以随时了解任何更改并及时进行调整。
    (3)与Web UI测试相比,测试执行速度要快得多。
    (4)API测试被认为是黑盒测试,用户可以发送输入并获取输出进行验证。采用数据驱动方法的自动化(即在同一测试场景中应用不同的数据集)有助于提高API测试覆盖率。
    (5)数据输入和输出遵循某些特定的模板或模型,因此创建一次测试脚本,这些测试脚本也可以在整个测试项目中重复使用。
    (6)可以在软件开发生命周期的早期阶段执行API测试。具有模拟技术的自动化方法可以帮助在开发实际的API之前验证API及其集成。因此,减少了团队内部的依赖程度。

    5.选择合适的自动化工具

    选择API测试自动测试工具时,应考虑以下一些标准:
    (1)是否支持测试AUT(被测应用程序)正在使用的API / Web服务类型?如果在AUT使用SOAP服务时,所选的工具支持测试RESTful服务,则没有意义。
    (2)是否支持AUT服务所需的授权方法?这是一项必不可少的任务,因为无法在未经授权的情况下开始测试API。
    (3)是否支持从WSDL,Swagger,WADL和其他服务规范中导入API / Web服务?这是一项可选功能。但是,如果要测试数百个API,没有该功能非常耗时。
    (4)是否支持数据驱动的方法?这也是一项可选功能。如果工具有此功能,测试覆盖范围将大大增加。

    6.选择合适的验证方法

    当响应状态代码告诉请求状态时,响应主体的内容是API在给定输入下返回的内容。

    API响应内容因数据类型和大小而异。响应可以是纯文本,JSON数据结构,XML文档等。它们可以是简单的几个单词的字符串(甚至为空),也可以是一个一百页的JSON / XML文件。因此,必须为给定的API选择合适的验证方法。

    Eolinker:www.eolinker.com提供了丰富的类型来使用匹配,正则表达式、JsonPath和XmlPath验证不同的数据类型。

    有一些基本方法可以验证API响应主体内容:
    将整个响应正文内容与预期信息进行比较,这种方法适用于静态内容的简单响应。动态信息,如日期时间、增加ID等,会在断言中造成麻烦。

    比较响应的每个属性值
    对于JSON或XML格式的响应,很容易获得给定键或属性的值。因此,该方法在验证动态内容或单个值而不是整个内容时非常有用。

    比较匹配与正则表达式
    与验证单个属性值一起,该方法用于验证具有特定模式的数据响应,用来处理复杂的动态数据。

    每种验证方法都有优点和缺点,并且没有“一刀切”的选项。需要选择最适合测试项目的解决方案。

    7.创建正面和负面的测试

    API测试需要正反两种测试来确保API正常工作。由于API测试被视为一种黑盒测试,所以这两种测试都是由输入和输出数据驱动的。对于测试方案的生成,有一些建议:

    正面测试
    验证API是否已收到输入并按要求中指定的方式返回了预期的输出。
    验证响应状态代码是否按照需求中的指定返回,无论它返回2xx还是错误代码。
    用最小必填字段和最大字段指定输入。
    负面测试
    验证当预期输出不存在时,API是否返回适当的响应。
    执行输入验证测试。
    使用不同的授权级别验证API的行为。

    8.现场测试流程

    建议在测试过程中每天安排时间执行API测试。由于API测试执行速度快、稳定且足够小,所以很容易以最小的风险将更多的测试添加到当前的测试过程中。

    9.不要低估API自动化测试

    API测试流程非常简单,只需三个主要步骤:

    1.发送带有必要输入数据的请求
    2.获取具有输出数据的响应
    3.验证响应是否按需求中的预期返回

    API测试最重要的部分既不是发送请求也不是接收响应。对于API来说,测试任务变得越来越困难。因此,API测试任务很容易被低估。

    在某个时间点,会发现自己处于选择测试数据和验证方法中间。这是因为返回的数据具有相似的结构,但在测试项目中却不相同。

    建议将API自动化测试考虑为实际的开发项目。它的结构应该是可扩展、可重用和可维护的。

  • 相关阅读:
    Viewer.js 图片预览插件使用
    SqlServer关于“无法删除数据库 "XXXX",因为该数据库当前正在使用”问题的解决方案
    MySQL数据类型详解
    Node.js安装详细步骤教程(Windows版)
    RGB颜色查询对照表
    HTML加载FLASH(*.swf文件)详解
    Cesium区分单击【LEFT_CLICK】和双击事件【LEFT_DOUBLE_CLICK】
    SpringBoot访问jsp页面
    Servlet详解
    Session的生命同期
  • 原文地址:https://www.cnblogs.com/dc20181010/p/14927995.html
Copyright © 2020-2023  润新知