zoukankan      html  css  js  c++  java
  • 接口自动化学习(7)

    什么是API?

    API是(Application Programming Interface)首字母缩略词,即应用程序编程接口。 API是一组用于构建软件应用程序的规程,协议和工具。API充当软件应用程序之间的接口,并允许两个软件应用程序相互通信。 API是一组软件功能,可以由其他软件执行。

    什么是API测试?

    API测试是一种软件测试,涉及直接测试API,也是集成测试的一部分,用于检查API是否满足应用程序的功能,可靠性,性能和安全性方面的期望。在API测试中,我们主要关注软件架构的业务逻辑层。可以在包含多个API的任何软件系统上执行API测试。

    常见的API测试类型有哪些?

    API测试通常涉及以下实践:

    • 单元测试
    • 功能测试
    • 负载测试
    • 运行时/错误检测
    • 安全测试
    • UI测试
    • 互操作性和WS一致性测试
    • 渗透测试
    • 模糊测试

    列举API测试中使用的一些常用协议?3个即可。

    • thrift
    • HTTP
    • REST
    • SOAP
    • JMS
    • UDDI
    • dubbo

    API和Web服务之间的区别?

    Web服务:

    • 所有Web服务都是API
    • 所有Web服务都需要通过Web(HTTP)公开
    • Web服务只有三种使用方式:SOAP,REST和XML-RPC进行通信

    接口:

    • API有很多并不基于HTTP
    • API使用多种方式进行通信,例如C / C ++中的DLL文件,java中的Jar文件/ RMI,Linux内核API中的中断等。

    什么是Soap?

    SOAP代表简单对象访问协议(Simple Object Access Protocol)。它是一种基于XML的消息传递协议。虽说名字带了简单,但是协议比较罗嗦,已经远没有后来居上的JSON使用广泛。

    什么是Rest API?

    REST即Representational State Transfer。它是一组帮助开发人员执行请求和接收响应的函数。通过REST API中的HTTP协议进行交互。

    SOAP和REST的区别?

    SOAP:

    • 通过共享XML文档进行通信
    • 仅支持XML格式
    • 不支持缓存
    • SOAP比REST慢
    • SOAP就像自定义桌面应用程序,紧密连接到服务器
    • SOAP基于HTTP进行封装

    REST: - 基于网络的软件架构的服务架构和设计 - 支持不同的数据格式 - 支持缓存 - 比SOAP更快 - REST客户端就像浏览器并使用应用程序必须适合的标准方法 - REST使用HTTP标头来保存元信息

    API常见测试有哪些?

    我们在API上执行的一些常见测试如下。

    • 验证不同输入条件的返回。
    • 验证不同数据结构
    • 验证API是否触发其他事件或请求其他API
    • 在没有返回值时验证API的行为

    API测试有哪些优势?

    • 更快及更高的测试覆盖率。
    • API测试有助于我们降低测试成本。通过API测试,我们可以在GUI测试之前找到小错误。在GUI测试期间,这些小错误将变得更大。因此,在API测试中发现这些错误将对公司具有成本效益。
    • API测试与语言无关。
    • API测试在测试核心功能方面非常有用。我们可以在没有用户界面的情况下测试API。在GUI测试中,我们需要等到应用程序可用于测试核心功能。
    • API测试有助于我们降低风险。

    API测试中究竟需要验证哪些内容?

    • 数据准确性
    • HTTP或其他协议状态代码
    • 响应时间
    • API返回任何错误时的错误代码
    • 授权检查
    • 非功能测试,如性能测试,安全测试

    列举一些用于API测试的工具?

    用于API测试的一些工具如下:

    列出一些最常用的API文档模板?

    一些API文档模板如下。

    • Swagger
    • FlatDoc
    • RestDoc
    • API blueprint
    • Slate
    • Miredot
    • Web服务API规范。

    列举一些非常受欢迎的API。

    • Google Maps API
    • YouTube的
    • 推特Twitter
    • 亚马逊广告API
    • 微博认证API
    • 钉钉开放接口

    API测试和单元测试之间的区别?

    单元测试: - 多由开发团队进行 - 白盒测试 - 构建中的过程之前 - 涉及源代码 - 测试范围有限,只考虑基本功能

    API测试

    • 多由QA团队进行
    • 多为黑盒测试
    • 在构建部署后进行
    • 大多不涉及源代码API测试
    • 测试范围很广

    API测试面临的主要挑战是什么?

    • 适当的参数及其组合
    • 正确分类参数
    • 顺序
    • 验证输出
    • 由于缺少GUI,提供输入值较困难

    执行API测试时我们面临的BUG类型是什么?

    • 压力,性能和安全问题
    • 功能重复或缺失
    • 可靠性问题
    • 消息不当
    • 不兼容的错误处理机制
    • 多线程问题
    • 不合适的错误

    UI测试与API测试有何不同?

    UI(用户界面)测试是测试应用程序的图形界面部分。它的主要重点是测试应用程序的外观和感觉。API测试支持两个不同软件系统之间的通信。它的主要重点是应用程序的业务层。

    列举一些最常用的HTTP方法?

    • GET:从服务器检索数据
    • POST:将数据添加到服务器中的现有文件或资源
    • PUT:它允许您替换服务器中的现有文件或资源
    • DELETE:它允许您从服务器中删除数据
    • PATCH:用于对资源进行部分修改 选项:用于描述目标资源的通信选项
    • HEAD:它要求响应与GET请求相同,但没有响应正文

    可以使用GET请求而不是PUT来创建资源吗?

    不,GET请求仅允许只读权限。它使您可以从服务器检索数据,但不能创建资源。应使用PUT或POST方法来创建资源。

    PUT和POST方法有什么区别?

    POST用于在服务器上创建新对象,PUT请求用于在替换对象。

    当客户端将页面发送到服务器,然后服务器让客户端知道它放在何处时,应该使用POST。当客户端指定页面的位置时,应使用PUT

     

    什么是API
    在进行Api测试之前,让我们先了解一下什么是API?
    API是应用程序编程接口(Application Programming Interface)的首字母缩写。
    它支持两个独立软件系统之间的通信和数据交换。实现API的软件系统包含可以由其他软件系统执行的功能/子程序。
    什么是API测试?
    API测试与GUI测试完全不同,主要集中在软件架构的业务逻辑层。这种测试不太关注应用程序的外观和感觉。
    在API测试中,您不必使用标准用户输入(键盘)和输出,而是使用软件将调用发送到API,获取输出并记下系统的响应。
    在API测试中测试需要应用程序与API进行交互。为了测试API,你需要

    • 使用测试工具来驱动API
    • 编写你自己的代码来测试API


    设置API测试环境

    • API测试与其他测试类型不同,因为GUI不可用,但您需要设置初始环境,以调用具有所需参数集的API,然后最终检查测试结果。
    • 因此,为API测试设置测试环境似乎有点复杂。
    • 数据库和服务器应按照应用程序要求进行配置。
    • 安装完成后,应调用API函数来检查该API是否正常工作。

    API的输出类型
    API的输出可能是

    • 任何类型的数据

    例如:有一个API函数应该为两个整数求和:
    Long add(int a,int b)
    数字必须作为输入参数给出。输出应该是两个整数的总和。这个输出需要用预期的结果进行验证。
    调用比如
    add (1234, 5656)
    如果超过整数限制,则必须处理例外情况。

    • 状态(例如Pass或Fail)

    考虑下面的API函数:
    Lock() Unlock() Delete()
    它们返回任何值,如True(成功的情况下)或False(如果有错误)作为输出。
    更精确的测试用例可以调用任何脚本中的函数,并在数据库或应用程序GUI中中检查更改。

    • 调用另一个API函数。

    例如 - 第一个API函数可用于删除表中的指定记录,而此函数又调用另一个函数来刷新数据库。
    API测试的测试用例:

    • 基于输入条件的返回值:测试相对容易,因为可以定义输入并且可以验证结果
    • 不返回任何内容:当没有返回值时,检查系统上API的行为
    • 触发其他API/事件/中断:如果API的输出触发某个事件或中断,则应跟踪这些事件和中断侦听器
    • 更新数据结构:更新数据结构会对系统产生一些结果或影响,并且应该进行认证
    • 修改某些资源:如果API调用修改了一些资源,则应通过访问各自的资源来验证它

    API测试方法:

    • 了解API程序的功能并明确定义程序的范围
    • 用等效类,边界值分析和错误猜测等测试技术,并为API编写测试用例
    • API的输入参数需要进行适当的规划和定义
    • 执行测试用例并比较预期结果和实际结果。

    API测试和单元测试的区别
    单元测试 API测试 多为开发人员执行 多为测试人员执行 独的功能 端到端功能 以访问源代码 经常无法访问源代码 涉及到UI测试 只有API 通常只有基本功能 通常涉及所有功能 范围有限 范围更广 通常在check-in前运行 builid完成后运行 在API测试中测试什么
    除了通常的SDLC(Software Development Life Cycle 软件生命周期)过程外,API测试应覆盖至少以下测试方法

    • 发现测试:测试组应手动执行API中记录的一组调用,例如验证是否可以产看,创建和删除由API公开的特定资源
    • 可用性测试:验证API是否可用和用户友好。 API是否与另一个平台完美集成
    • 安全测试:此测试包括需要哪种类型的身份验证以及敏感数据是通过HTTP进行加密还是两者兼而有之
    • 自动化测试:API测试应最终创建一组脚本或可用于定期执行API的工具
    • 文档:测试团队必须确保文档足够,并提供足够的信息与API进行交互。文档应该是最终可交付成果的一部分

    API测试的最佳实践:

    • 测试用例应按测试类别进行分组
    • 在每个测试的最上面,你应该包括被调用的API的声明。
    • 参数选择应该在测试用例本身中明确提及
    • 优先考虑API函数调用,以便测试人员能够轻松测试
    • 每个测试用例应该尽可能独立
    • 避免在开发过程中使用“测试链”
    • 处理一次调用函数时必须特别小心,如 - Delete,CloseWindow等等。
    • 调用队列
    • 为确保完整的测试覆盖率,请为API的所有可能输入组合创建测试用例。

    测试检测到的错误类型

    • 无法正常处理错误条件。比如分母为0、文件不存在、忘记导入库等。
    • 未使用的标志
    • 缺少或重复的功能
    • 可靠性问题。连接并获取API响应时遇到困难。
    • 安全问题
    • 多线程问题
    • 性能问题。 API响应时间非常高。
    • 不正确的错误/警告给调用者
    • 错误的有效参数值处理
    • 响应数据结构不正确(JSON或XML)

    API测试工具
    由于API和单元测试都针对源代码,因此可以使用类似的工具进行测试。

    API测试的挑战

    • API测试中的主要挑战是参数组合,参数选择和调用排序
    • 没有GUI可用于测试难以给出输入值的应用程序
    • 验证和验证不同系统中的输出对于测试人员来说很难
    • 测试人员需要了解参数选择和分类
    • 异常处理功能需要测试
    • 编码知识对于测试人员是必要的

    结论:
    API由代表业务逻辑层的一组类/功能/程序组成。如果没有正确测试API,则不仅会导致API应用程序出现问题,而且还会导致在调用应用程序中出现问题。

  • 相关阅读:
    python基础语法
    DNS解析原理
    (4)获取servlet常用api
    (2)struts2配置祥解
    (1)WEB框架概念和struts2体验
    10.1--登录认证拦截器
    10--拦截器
    9--RESTful支持
    8--json交互
    7---上传图片
  • 原文地址:https://www.cnblogs.com/chenyablog/p/15166839.html
Copyright © 2011-2022 走看看