10年测试专家深度解读接口测试

2023-10-30

01、对于接口测试来说

      项目测试用例的重复运行首先是表现在单个测试用例的独立性方面的,也就是说,每一个测试用例的运行除了依赖被测对象和对应的数据库环境外,是不依赖于其他任何测试用例的,并且这个测试用例执行完毕后,对系统来说,也是没有任何痕迹的,这样就保证了每个测试用例运行时,都在一个干净的环境中运行。

      要实现测试用例的独立性,就必须对被测系统的设计有详细的了解,这样,不会出现测试用例执行后遗漏数据,环境未改变,另外,还需要对测试用例进行详细的设计。

      另外,要保证测试用例的重复使用,还需要做到测试用例的及时更新,在这个方面,我们是做接口测试的人会维护对应的系统的接口测试用例,要保证,代码每次更新,测试用例都必须全部执行通过。

      接口测试用例的设计方法其实和功能测试用例的设计方法是类似的,因为接口是需要满足需求的,而接口测试所依赖的也是需求说明书,但是,因为接口测试毕竟是通过代码去测试代码,所以,为了保证覆盖率,可能会使用到单元测试的方法,具体的测试用例设计,我考虑的如下,请参考,如果有错误,一起讨论。

输入参数测试:针对输入的参数进行测试,也可以说是假定接口参数的不正确性进行的测试,确保接口对任意类型的输入都做了相应的处理:输入参数合法,输入参数不合法,输入参数为空,输入参数为null,输入参数超长。

功能测试:接口是否满足了所提供的功能,相当于是正常情况测试,如果一个接口功能复杂时推荐对接口用例进行结构划分,这样子用例具有更好的可读性和维护性。

逻辑测试:逻辑测试严格讲应为单元测试,单元测试应保持内部逻辑的正确性,可单元测试和接口测试界限并不是那么清楚,所以我们也可以从给出的设计文档中考虑内部逻辑错误的分支情况和异常;异常情况测试:接口实现是否对异常情况都进行了处理,接口输入参数虽然合法,但是在接口实现中,也会出现异常,因为内部的异常不一定是输入的数据造成的,而有可能是其他逻辑造成的,程序需要对任何的异常都进行处理。

图片

 

02、接口测试作为集成测试的一部分

      通过直接调用被测试的接口来确定系统在功能性、可靠性、安全性和性能方面是否能达到预期,有些情况是功能测试无法覆盖的,所以接口测试是非常必要的。

      接口测试分为两种,一种是webservice接口,走soap协议通过http传输,请求报文和返回报文都是xml格式的,测试时通过工具soapUI进行测试。使用情况比较少;另一种http api接口,走http传输协议,通过路径来区分调用的方法,最常用的是get和post请求。

      上面说过,get和post请求是通过路径来区分的,get请求的请求参数都是写在URL里的,格式为:http://url?param1¶m2。而post的请求一般都是写在body里的,可能是key-value格式,或者json串格式,也可能是上传一个文件。。。那么问题来了,get请求和post请求的区别在哪里呢?我们百度时,大多数的答案是这样的:

1、get请求可以在浏览器中请求到,post请求的测试需要借助工具

2、get请求使用url和cookie传参,post的数据放在body中

3、post比get更安全,因为传递的参数在url上是看不到的

4、get请求的url会有限制,而post请求的数据可以非常大

5、一般get请求是来获取数据,post请求是传递数据的

  其实,对于现在飞速发展的互联网来说,上面的说法已经不严谨了。首先,post请求的参数也可以写在url里,但是这种情况不多见;其次表面上看起来,post利用body传参,比get的url传参安全,但其实只要用抓包工具(fiddler,Charles等),post的参数也是一览无余;再次,现在的浏览器非常强大,可以输入支持很长的URL,所以也不再有限制一说了。这么说来,种种区别只有最后一条是最根本的了。

怎么来测试接口呢?根据什么来测呢?这就需要开发提供的接口文档了,接口文档和功能测试的需求说明书的功能是一样的。包括:接口说明、调用的url,请求方式(get or post),请求参数、参数类型、请求参数说明,返回结果说明。有了接口文档后,我们就可以设计用例了。

一般接口测试的用例分为以下几种:

1、通过性验证,说白了就是传递正确的参数,是否返回正常的结果

2、参数组合,因为参数有必传和非必传,参数的类型和长度,以及传递时可能业务上的一些限制,所以在设计用例时,就要排列组合这些情况,保证所有情况都能覆盖到

接口的安全性,这个又分为几种情况:

1、绕过验证,比如提交订单时,在传递商品价格参数时,修改商品价格,就要看后端有没有验证了。或者我支付时,抓个包将订单金额一改,   如果能以我改后的金额支付,那这个借口就有问题了。

2、绕过身份验证,就是某个功能只有有特殊权限的用户才能操作,那我传递一个普通的用户,是不是也能操作呢。

3、参数是否加密,这个关系到一些账户的安全,比如我们在登录一些网站时,它要将我们的登录信息进行加密,如果不加密我们的信息就会暴露,危害性极大。

4、密码安全规则,设置密码时复杂程度的校验。

5、根据业务逻辑来设计用例。

       用例设计完了,用什么来测试接口呢?我们可以借助一些工具,比如postman和jmeter。postman使用比较简单,可以在列表中选择请求方式,在输入框中输入URL,如果是get请求,直接点击send就可以看返回结果了。

图片

 

03、什么是接口测试?

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

  为什么要做接口测试?

  a)互联网的快速发展,公司内部系统或与外部系统的关联越来越多,一个业务流程关联多个后端系统,它们的关联都是基于接口来实现,接口测试可以将复杂的系统关联进行简化,只要做好每个接口的测试就能够较好的保证系统质量。

    b)单个系统的变更,是否会影响到关联业务系统,比较难用常规的测试方面来覆盖相关的应用系统(例如使用此接口的外部 系统有N个,不可能每个做功能兼容性测试),但可以通过对接口功能的覆盖来验证是否影响它人对接口的调用。

    c)接口功能比较单一,能够比较好的进行测试覆盖,也相对容易实现自动化持续集成,,可以减少人工回归成本与时间,缩短测试周期。

    d)接口相对于界面功能,会更底层一些,测试覆盖会更容易(如业务在调用接口时做了判断,当不满足条件时链接就不显示,此时从界面无法测试相关功能是否做好判断,通过接口就比较容易)

  接口测试范围

    a)业务功能(包括正常、异常场景是否实现)

    b)业务规则(覆盖度是否全面)

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

    d)异常场景(重复提交、并发提交、事务中断、多机环境、大数据量测试)

    e)性能测试(响应时间、吞吐量、并发数、资源要求)

     f)安全测试(权限验证、SQL注入等)

图片

 

04、接口测试的重点

1、检查接口返回的数据是否与预期结果一致。

2、检查接口的容错性,假如传递数据的类型错误时是否可以处理。

3、接口参数的边界值。例如,传递的参数足够大或为负数时,接口是否可以正常处理。

4、接口的性能,http请求接口大多与后端执行的SQL语句性能、算法等比较相关。

5、接口的安全性,外部调用的接口尤为重要。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

10年测试专家深度解读接口测试 的相关文章

  • 软件测试|Windows系统配置pytest+allure环境教程

    前言 allure可以输出非常精美的测试报告 也可以和pytest进行完美结合 不仅可以渲染页面 还可以控制用例的执行 本文我们将介绍Windows系统中如何配置allure环境 第一步 配置Java环境 因为 allure 的运行依赖于J
  • 接口测试之Fiddler弱网测试

    前言 目前市面上的APP功能越来越丰富 移动端测试也越显为重要 因为用户在网速慢的情况下 你的网站 软件 总能出现各种各样的问题 请不要忽略这一点 针对在不同的网络情况下 接下来 本篇要讲述的就是在通过fiddler对APP进行模拟弱网测试
  • 小白也能学会的创建Git仓库实操

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 2k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • Locust负载测试工具实操

    本中介绍如何使用Locust为开发的服务 网站执行负载测试 Locust 是一个开源负载测试工具 可以通过 Python 代码构造来定义用户行为 避免混乱的 UI 和臃肿的 XML 配置 步骤 设置Locust 在简单的 HTTP 服务上模
  • 2种方法,教你使用Python实现接口自动化中的参数关联

    通常在接口自动化中 经常会参数关联的问题 那么什么是参数关联 参数关联就是上一个接口的返回值会被下一个接口当做参数运用 其中Python中可以实现参数关联的方法有很多种 今天小编给大家介绍下 如何通过Python来实现接口自动化中的参数关联
  • Jenkins 插件下载速度慢、安装失败了!我教你怎么解决!

    Jenkins部署完毕 如果不安装插件的话 那它就是一个光杆司令 啥事也做不了 所以首先要登陆管理员账号然后点击系统管理再点击右边的插件管理安装CI CD必要插件 但是问题来了 jenkins下载插件速度非常慢 而且经常提示下载插件失败 真
  • 外包干了3个月,技术退步明显。。。。。

    先说一下自己的情况 本科生 19年通过校招进入广州某软件公司 干了接近4年的功能测试 今年年初 感觉自己不能够在这样下去了 长时间呆在一个舒适的环境会让一个人堕落 而我已经在一个企业干了四年的功能测试 已经让我变得不思进取 谈了2年的女朋友
  • APP端网络测试与弱网模拟

    当前APP网络环境比较复杂 网络制式有2G 3G 4G网络 还有越来越多的公共Wi Fi 不同的网络环境和网络制式的差异 都会对用户使用app造成一定影响 另外 当前app使用场景多变 如进地铁 上公交 进电梯等 使得弱网测试显得尤为重要
  • 测试开发必知:有Tomcat,为什么还要Nginx?

    只用Tomcat 不用Nginx搭建Web服务 行不行 我曾经提出的愚蠢问题 今天详细给自己解释下 为什么必须用Nginx 不用Nginx 只用Tomcat的Http请求流程 浏览器处理一个Http请求时 会首先通过DNS服务器找到域名关联
  • 新入职一个00后卷王,每天加班到2点,太让人崩溃了····

    在程序员职场上 什么样的人最让人反感呢 是技术不好的人吗 并不是 技术不好的同事 我们可以帮他 是技术太强的人吗 也不是 技术很强的同事 可遇不可求 向他学习还来不及呢 真正让人反感的 是技术平平 却急于表现自己的人 每天加班到12点 在老
  • 软件测试|深入了解Python中的super()函数用法

    简介 Python中的super 函数是一种强大的工具 用于在子类中调用父类的方法 它在面向对象编程中非常有用 可以让你轻松地扩展和重用现有的类 本文将详细介绍super 函数的用法 并提供一些示例来帮助你更好地理解它的功能 什么是supe
  • 软件测试|使用matplotlib绘制平行坐标系图

    简介 绘制平行坐标系图 Parallel Coordinates Plot 是一种用于可视化多维数据的强大方法 在这篇文章中 我们将介绍如何使用Matplotlib库创建平行坐标系图 以及如何解释和定制这种图表 我们将使用一个示例数据集来演
  • 软件测试|web自动化测试神器playwright教程(三十八)

    简介 在我们使用selenium时 我们可以获取元素的属性 元素的文本值 以及输入框的内容等 作为比selenium更为强大的web自动化测试神器 playwright也可以实现对元素属性 文本值和输入框内容的抓取 并且实现比seleniu
  • 软件测试|教你使用Python下载图片

    前言 我一直觉得Windows系统默认的桌面背景不好看 但是自己又没有好的资源可以进行替换 突然我一个朋友提醒了我 网络上的图片这么多 你甚至可以每天换很多个好看的背景 但是如果让我手动去设置的话 我觉得太麻烦了 我不如使用技术手段将图片下
  • 盲猜你不懂H5架构和原生架构的区别

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 3k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • 跨平台UI自动化框架:Airtest,游戏开发和应用测试的利器

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 3k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • 月薪2W的软件测试工程师,到底是做什么的?

    在生活中 我们常常会遇到以下几种窘迫时刻 准备骑共享单车出行 却发现扫码开锁半天 车子都没有反应 手机导航打车 却发现地图定位偏差很大 司机总是跑错地方 买个水 却遭遇自动售货机吐币 或者不找零钱 好不容易休息打个游戏 却一直出现卡顿 闪退
  • UI自动化测试之Jenkins配置

    背景 团队下半年的目标之一是实现自动化测试 这里要吐槽一下 之前开发的测试平台了 最初的目的是用来做接口自动化测试和性能测试 但由于各种原因 接口自动化测试那部分功能整个废弃掉了 其中和易用性有很大关系 另外 也和我们公司的接口业务也有关
  • 软件测试面试:还没有自动化测试项目经验,3个项目帮你走入软测职场!

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 3k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • 深入解析 YAML 配置文件:从语法到最佳实践

    一 认识YAML YAML YAML Ain t Markup Language 是一种人类可读的数据序列化语言 它的设计目标是使数据在不同编程语言之间交换和共享变得简单 YAML采用了一种简洁 直观的语法 以易于阅读和编写的方式表示数据结

随机推荐

  • 全局变量和局部变量在堆和栈的区别

    全局变量和局部变量在堆和栈的区别主要体现在它们的存储位置和生命周期上 存储位置 全局变量存储在静态存储区 也就是程序的全局数据区或者称为全局内存 这个区域在程序运行期间一直存在 并且在整个程序中都可以被访问到 局部变量存储在栈 stack
  • asp and javascript: sql server export data to csv and to xls

  • SnailApp---数据流的控制(一)

    SnailApp 数据流的控制 一 一 简介 搭建Flux框架及其辅助框架 二 技术应用 1 Flux 插件安装 npm install flux save homepage https github com facebook flux 作
  • android中服务的生命周期示例

    如何在android中建立一个服务 使用androidstudio新建一个继承自Service的MyService类 并在Android manifest xml文件中注册 在MyService类中需要实现onBind这个类 但是启动一个服
  • 如何更改vue项目窗口的标题title和图标icon

    Vue CLI创建的项目窗口的标题默认是打包后的项目名称 默认图标是Vue的图标favicon ico 解决方法 修改图标 直接将新图标导入public文件夹 然后将favicon ico替换为新图标的名字即可 此处可以不用ico文件 但是
  • 重排序架构行人重识别代码复现

    参考教程 https blog csdn net Layumi1993 article details 84849506 https zhuanlan zhihu com p 50387521 一 需要安装的软件包 1 Python 3 6
  • 看门狗电路 通俗理解

    视频讲解 李想STM32初级教程 哔哩哔哩 bilibili 看门狗通俗理解 转自 STC89C5X单片机 看门狗 原理详解 电子工程世界 很多人初次接触不太理解怎么用 书上也讲的含含糊糊 故意说的很复杂很玄妙 可能是现在写书人的通病 生怕
  • MindManager2022Mac版本支持导入XMind、FreeMind文件格式

    Mindjet MindManager 2022 Win macOS版 思维导图软件 由coco玛吉多整理 MindManager 是一个强大的思维导图软件 它可以让你定制 发现隐藏的潜力 与人合并信息 释放生产力 更快地完成好工作 它作为
  • Spring的控制反转与依赖注入

    学习过Spring的都知道Spring有三大核心的概念 分别是控制反转 IOC 依赖注入 DI 和面向切面编程 AOP 今天就来聊聊我对控制反转和依赖注入的了解 至于面向切面编程放到后面讲解 一 控制反转 Ioc 控制反转 Inversio
  • 分别用Eigen和C++(OpenCV)实现图像(矩阵)转置

    1 标量 scalar 一个标量就是一个单独的数 2 向量 vector 一个向量是一列数 这些数是有序排列的 通过次序中的索引 可以确定每个单独的数 3 矩阵 matrix 矩阵是一个二维数组 其中的每一个元素被两个索引而非一个所确定 4
  • statmodels库分解时间序列(趋势、周期性、季节性、残差)

    import pandas as pd import matplotlib pyplot as plt from statsmodels tsa seasonal import STL df pd read csv time series
  • em算法长文

    https blog csdn net u010834867 article details 90762296 em算法长文 mark
  • 如何在VSCode配置PHP开发环境(详细版)

    这篇博文是当初笔者上课需要配置XAMPP 整理出来配置方法 错漏之处没有认真核对 给造成麻烦的同学道个歉 以下有两场修正之处 第一处 XAMPP国内下载地址改成了XAMPP中文网最新版本下载链接 给之前误下p2p的同学再次道个歉 第二处 下
  • px、em、rem

    px em rem简介 px像素 Pixel 相对长度单位 相对于显示屏幕分辨率 em 相对长度单位 相对于父元素设置的font size 页面层级越深 em的换算就越复杂 rem 相对长度单位 相对于HTML根元素设置的font size
  • 重装系统(安装版)——磁盘分区——Windows启动过程——\\.\PhysicalDrive1的操作失败

    搜罗整理自csdn博客 百度百科 远景论坛 无忧论坛等 1 PhysicalDrive1的操作失败 这是由于U盘既作磁盘 添加磁盘时使用U盘作为磁盘即PhysicalDrive1 又作USB连接设备即真正的U盘 当虚拟机启动时 就会检测到这
  • [Python从零到壹] 四十七.图像增强及运算篇之腐蚀和膨胀详解

    欢迎大家来到 Python从零到壹 在这里我将分享约200篇Python系列文章 带大家一起去学习和玩耍 看看Python这个有趣的世界 所有文章都将结合案例 代码和作者的经验讲解 真心想把自己近十年的编程经验分享给大家 希望对您有所帮助
  • bootstraptable 删除指定多行_Python Pandas处理Excel多列到多行转换

    Excel能够实现的功能 目前Pandas都能够实现 倘若你已经能够熟练运用Pandas的 宽转长 wide to long 和透视表pivot table 函数 建议您直接跳过本文 需求说明 需求是将材料变更的多列记录数据转成多行 演示数
  • C++复习笔记--STL的基本概念和使用

    目录 1 STL基本概念 2 STL六大组件 2 1 容器的基本概念 2 2 算法的基本概念 2 3 迭代器的基本概念 3 代码实例 3 1 vector容器的使用 3 2 使用vector容器存储自定义类型 3 3 容器嵌套容器 1 ST
  • Angular4--【数据绑定】

    数据绑定 事件绑定 属性绑定 很多人对于DOM属性还是HTML属性易混 那我们首先来区分一下HTML和DOM 少量的HTML和DOM属性之前存在着1 1的映射 比如id 有些HTML属性没有对应的DOM属性 有些DOM属性没有对应的HTML
  • 10年测试专家深度解读接口测试

    01 对于接口测试来说 项目测试用例的重复运行首先是表现在单个测试用例的独立性方面的 也就是说 每一个测试用例的运行除了依赖被测对象和对应的数据库环境外 是不依赖于其他任何测试用例的 并且这个测试用例执行完毕后 对系统来说 也是没有任何痕迹