zoukankan      html  css  js  c++  java
  • 接口测试基础知识(二)—— 接口测试

    一. 接口测试的定义

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

    通俗的讲就是通过测试接口不同的入参以及其对应的出参,验证接口是否满足或符合相应的功能性和安全性

    二. 为什么做接口测试

    1. 能更早的介入测试,只需要后端接口完成即可,不用等前端工作完成

    2. bug修复成本低,接口测好了,前端随意变,后端都不用改

    3. 现在很多系统前后端架构是分离的,从安全层面来说,只依赖前端进行限制已经完全不能满足系统的安全要求(绕过前端太容易了), 需要后端同样进行控制,在这种情况下就需要从接口层面进行验证,例如登录的接口

    4. 参数限制可以从后端控制,避免出现通过SQL注入来操作

    5. 可以检查系统的异常处理能力

    6. 接口自动化更容易实现,比UI自动化稳定,可以进行持续集成

    7. 可以提升测试效率

    三. 接口测试形式及常用工具

    1. 测试形式

    手动测试:使用相关工具

    自动化测试:自己开发的工具、jmeter,SoapUI、RobotFramework。。。

    2. 常用工具

    1). postman(首选):谷歌的一款接口测试插件,它使用简单,支持用例管理,支持get、post、文件上传、响应验证、变量管理、环境参数管理等功能,可以批量运行,并支持用例导出、导入。其实它还有一款对应的postwoman,功能差不多

    2). RESTClient

    3). jmeter

    4). loadrunner

    5). SoapUI

    工具的使用方式可以自行百度,网上有很多资料的

    四. 接口测试的流程

    1. 接口需求转移

    2. 接口文档测试

    3. 根据接口文档编写用例

    4. 编写自动化(看版本时间,之前我们都是验完等版本发布后再在下一个版本开发阶段时补自动化用例,测试时间太紧。。。)

    5. 根据用例执行测试

    6. 编写测试报告

    五. 接口文档

    接口文档必须具备的信息:

    1. 接口所属的项目

    2. 接口信息:接口调用方式,get或者post,接口的url

    3. 功能描述:描述接口功能

    4. 接口参数说明:参数(包括大小写),参数的含义,参数的格式(string或者int), 参数说明,参数是否可选,参数是否必填,是否有默认值

    5. 返回值说明:提供模板返回值,并说明每个参数的含义

    6. 提供一个真实的接口信息,真实的参数,真实的返回值

    7. 文档修订历史,包括版本,修订内容,修订说明,日期及修订人等

    六. 接口测试的原理

    模拟客户端向服务器发送请求报文,服务器接收请求报文后对相应的报文做处理并向客户端返回应答,客户端接收应答的过程,重点检查数据的交换,传递和控制管理过程,包括处理的次数

    七. 接口测试用例设计方法

    接口测试点(图源百度):

    1)通用接口用例设计

    基本功能验证:即通过性测试,按照接口文档上的参数,正常传入,是否可以返回正确的结果。

    边界值验证:根据参数边界值设置用例

    参数组合验证

    参数必填验证

    异常参数验证

    2)场景用例

    根据业务需要,针对不同的场景设计用例,该部分大部分和功能用例一致,接口验证时主要关注功能流程及数据的传递

    3)接口安全

    a、绕过验证,比如说购买了一个商品,它的价格是300元,那我在提交订单时候,我把这个商品的价格改成3元,后端有没有做验证,更狠点,我把钱改成-3,是不是我的余额还要增加?

    b、绕过身份授权,比如说修改商品信息接口,那必须得是卖家才能修改,那我传一个普通用户,能不能修改成功,我传一个其他的卖家能不能修改成功

    c、参数是否加密,比如说我登陆的接口,用户名和密码是不是加密,如果不加密的话,别人拦截到你的请求,就能获取到你的信息了,加密规则是否容易破解。

    d、密码安全规则,密码的复杂程度校验

    4)接口性能

    吞吐量,响应时间,并发数,服务器的资源使用率

    5)接口可靠性(仅针对特定业务)

    这个需要针对具体的接口,实际是验证功能的可靠性,如下发接口创建一个装有mysql数据库的虚拟机,创建过程会先创虚拟机,再安装mysql数据库(ui上看是该虚拟机处于创建中),安装过程中,下发另一个接口重启虚拟机,验证第一次下发的接口(装有mysql数据库的虚拟机)是否创建成功

    八. 接口测试质量评估标准

    a) 业务功能覆盖是否完整

    b) 业务规则覆盖是否完整

    c) 参数验证是否达到要求(边界、业务规则)

    d) 接口异常场景覆盖是否完整

    e) 接口覆盖率是否达到要求

    f)  代码覆盖率是否达到要求

    g) 性能指标是否满足要求

    h) 安全指标是否满足要求

    九. 接口自动化

    实现方式可以百度,网上有很多资料,常用的实现框架可以是:python+excel+ddt+unittest,也可以直接使用jmeter实现,待完成任务:我的自动化框架还没优化完,也没整理成博客

    十. 接口测试的持续集成

    1. 根据测试用例实现用例自动化

    2. 使用jenkins实现(具体实现方式可以百度),待完成任务:还没写这个,电脑搭jenkins一直失败。。。)

    3. 将自动化用例不间断执行,并对结果进行统计分析,实现结果可视化

    十一. 接口测试与功能测试的异同

    1. 从测试点分析

    基本功能验证:基本一致

    边界值验证和异常参数验证:功能测试基本是前端校验,接口测试验证的后端,可验证的参数更广,同时功能测试还需重视接口调用不成功或者接口异常情况下UI的呈现方式和用户体验

    参数组合验证和参数必填验证:接口验证效率更高

    性能:关注点不同,接口性能主要关注接口响应时间、并发、服务端资源的使用情况等

    安全:

    2. 从可介入时间点分析

    接口测试可以在后端开发完成就可介入,从而更早发现bug

    3. 从安全分析

    接口测试可以验证接口是否满足安全要求,因为绕过前端很容易

    4. 从测试注重点分析

    接口测试注重于校验功能和参数,及数据的交换,传递和系统间的逻辑依赖,功能测试偏向于页面展示和前端与服务器间的逻辑验证,可以理解为接口测试需要保证数据和逻辑的准确性,UI测试需要考虑交互和界面展示的逻辑正确性

    ps:待完成任务是用来提醒自己的

  • 相关阅读:
    函数匹配
    特殊用途语言特性——默认参数、内联函数和constexptr函数
    函数重载
    返回数组指针的4种函数写法
    返回数组引用的4种函数写法
    返回类型和return语句
    exception is the version of xbean.jar correct
    window.location
    plsql 导出查询结果
    plsql 如何导入excel数据?
  • 原文地址:https://www.cnblogs.com/leslie12956/p/12992033.html
Copyright © 2011-2022 走看看