当前位置: 首页 > news >正文

吊打面试官系列之:我这样回答 “如何更高效的进行接口测试“,面试官果然跪了。

高效的进行接口测试

  • 1、引言
  • 2、什么是接口测试
  • 3、为什么要做接口测试
  • 4、接口测试的范围
  • 5、接口测试的重点
  • 6、接口测试原则
    • 6.1 基本原则
    • 6.2 关键原则
    • 6.2 其他原则
      • 6.2.1. 系统角度
  • 7、接口测试常用工具
  • 8、总结

1、引言

小屌丝:鱼哥,有一个粉丝私信我,让我给她培训接口测试;
小鱼:哎呦~ ~ 是 “他” 还是 “她”;
小屌丝:鱼哥,你这不是闹呢嘛。你懂得…
小鱼:我还不懂,就是不懂…
小屌丝:别闹… 再闹,就向成都哪有,网络没信号,无法扫码做核酸…
小鱼:别… 这个事影响挺大的…
小屌丝:那你还不给我讲一讲,如何进行高效的接口测试。
在这里插入图片描述
虽然不情愿,但是为了小屌丝的幸福,我还是要讲一讲,
如何能提高接口测试效率。

2、什么是接口测试

定义
测试系统组件间接口的一种测试。

用途
接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。

测试重点
测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。

3、为什么要做接口测试

通常有以下几点:

  • 互联网的快速发展,公司内部系统或与外部系统的关联越来越多,一个业务流程关联多个后端系统,它们的关联都是基于接口来实现,接口测试可以将复杂的系统关联进行简化,只要做好每个接口的测试就能够较好的保证系统质量;
  • 单个系统的变更,是否会影响到关联业务系统,比较难用常规的测试方面来覆盖相关的应用系统,但可以通过对接口功能的覆盖来验证是否影响它人对接口的调用;
  • 接口功能比较单一,能够比较好的进行测试覆盖,也相对容易实现自动化持续集成,可以减少人工回归成本与时间,缩短测试周期;
  • 接口相对于界面功能,会更底层一些,测试覆盖会更容易。

4、接口测试的范围

以下几点:

  • 业务功能:正常、异常场景是否实现;
  • 业务规则:覆盖度是否全面;
  • 参数验证:边界、业务规则是否达到要求;
  • 异常场景:重复提交、并发提交、事务中断、多机环境、大数据量测试;
  • 性能测试:响应时间、吞吐量、并发数、资源要求;
  • 安全测试:权限验证、SQL注入等;

5、接口测试的重点

以下几点:

  • 检查接口返回的数据是否与预期结果一致。
  • 检查接口的容错性,假如传递数据的类型错误时是否可以处理。
  • 接口参数的边界值。例如,传递的参数足够大或为负数时,接口是否可以正常处理。
  • 接口的性能,http请求接口大多与后端执行的SQL语句性能、算法等比较相关。
  • 接口的安全性,外部调用的接口尤为重要。

6、接口测试原则

6.1 基本原则

  • 自动化:接口测试是非交互式的自动化执行,不需要人参与;
  • 独立性:接口测试之间不应该相互依赖(个别情况除外);
  • 可重复性:接口测试可重复执行,不受环境影响;
  • 接口测试遵守BCDE原则,保障接口交付质量
    • Border:边界测试;
    • Correct:正确输入,预期情况;
    • Design:按照需求和设计文档编写测试用例;
    • Erorr:错误输入,预期情况;
  • 数据准备:数据准备通过系统服务进行,不能通过直接插入db方式;
  • 可测试性:对于不可测的代码需要进行重构成合理的结构;
  • 覆盖性:接口测试需要覆盖所有UC,同时代码覆盖率和分支覆盖率应达到一定标准,新增代码必须被覆盖;
  • 持续性:如果代码修改导致已有接口测试执行失败,必须修复代码问题或者测试代码逻辑;
  • 时间要求:接口测试应该在项目发布之前完成,不应放到项目发布之后补充;

6.2 关键原则

有效的接口测试关键原则是要覆盖所有入口,mock所有依赖,校验执行过程中所留下的痕迹,所以:

  • 入口覆盖:接口测试用例必须覆盖所有服务入口、消息入口、定时任务入口。
  • mock依赖:在基本原则中,有可重复这个原则,即接口测试不能受环境依赖,需要mock掉对外依赖。但对于db依赖,不建议完全mock掉,一方面mock成本高,另外可能覆盖不到sql和表约束逻辑。
  • 完整校验:效的接口测试,应该具备完整的校验,没有校验的接口测试是没有意义的。只要执行过程中,留下的痕迹对业务有影响,都要进行完整校验,方能保障接口测试的有效性。
    • 接口返回值校验;
    • DB校验;
    • 缓存校验;
    • 依赖入参校验;
    • 消息校验;

6.2 其他原则

6.2.1. 系统角度

从系统角度来分析入口调用,以HSF服务为例:

  • 外围系统调用由我们系统提供的服务;
  • 系统执行了一堆代码逻辑,其中包含有分支逻辑;
  • 系统执行过程中依赖外部HSF服务,进行了调用,并得到了返回值;
  • 系统执行过程中依赖DB查询或者落地了数据,依赖缓存查询或者落地了数据;
  • 系统执行过程中对外发送了消息;
  • 给上游系统返回HSF执行结果。

7、接口测试常用工具

这里,我就列举几个常用的,和众所周知的测试工具,
免得被说我这又在给某某 厂商打广告…
在这里插入图片描述

  • Jmeter
  • Postman
  • ApiFox
  • SoapUI
  • ApiJson
  • ApiPost

8、总结

今天的分享,差不多就完事了。
关于如何提高接口有效性的测试,希望大家也都能彻底的掌握并应用于实际项目中。

关于吊打面试官系列的文章,小鱼也会持续的更新,例如

  • 吊打面试官系列之:UI自动化面试题汇总,对标P7,从此再也不怕面试官了
  • 从P6 到P7,到底要做哪些准备,掌握多少知(姿)识(势),小鱼亲身分享!!
  • 吊打面试官系列之:移动APP测试开发面试题汇总,对标P7职位~ ~熬夜整理,建议收藏!!!
  • 吊打面试官系列之:什么是 认证、鉴权、授权、权限控制,这一篇必须安排的明明白白。
  • 吊打面试官系列之:掌握兼容性测试21个知识点,让面试官也对你膜拜。
  • 吊打面试官系列之:掌握了这166个Linux常用命令,面试官果然被我征服了。
  • 记住这几点,你的offer会拿到手软
  • 一本正经的聊一聊面试官的心理
    更多的吊打面试官系列博文,我就不列举了, 可以直接点击吊打打面试官专栏去查看。

我是小鱼:

  • CSDN博客专家
  • 51Testing认证讲师

关于小鱼,带你学习更多更专业的测试开发知识。

相关文章:

  • 云资源管理
  • 【机器学习】树模型预剪枝和后剪枝
  • 性能提升 25 倍:Rust 有望取代 C 和 C++,成为机器学习首选 Python 后端
  • python一些操作的笔记
  • 4、乐趣国学—“行有不得,反求诸己。”
  • Github每日精选(第42期):web前端自定义Alert窗口sweetalert
  • “大厂”角力移动办公系统市场,钉钉和企微向左、WorkPlus向右
  • 面向有监督学习与文本数据的通用分类器
  • 为了学明白中断机制,我努力了
  • Python中的super函数,你熟吗?
  • 护眼灯频闪是什么意思?无频闪护眼灯哪个好
  • 「设计模式」六大原则之里氏替换原则小结
  • springboot+篮球场馆预约系统 毕业设计-附源码211706
  • vue实现【接口数据渲染随机显示】和【仅显示前五条数据】
  • JVM原理及优化_子系统
  • 《微软的软件测试之道》成书始末、出版宣告、补充致谢名单及相关信息
  • 「前端」从UglifyJSPlugin强制开启css压缩探究webpack插件运行机制
  • 5、React组件事件详解
  • Docker 笔记(1):介绍、镜像、容器及其基本操作
  • ERLANG 网工修炼笔记 ---- UDP
  • KMP算法及优化
  • Mithril.js 入门介绍
  • Python 基础起步 (十) 什么叫函数?
  • SpringBoot几种定时任务的实现方式
  • vue总结
  • Web Storage相关
  • 阿里研究院入选中国企业智库系统影响力榜
  • 多线程 start 和 run 方法到底有什么区别?
  • 基于Mobx的多页面小程序的全局共享状态管理实践
  • 解析带emoji和链接的聊天系统消息
  • 两列自适应布局方案整理
  • 买一台 iPhone X,还是创建一家未来的独角兽?
  • 那些被忽略的 JavaScript 数组方法细节
  • 文本多行溢出显示...之最后一行不到行尾的解决
  • 一个项目push到多个远程Git仓库
  • 看到一个关于网页设计的文章分享过来!大家看看!
  • C# - 为值类型重定义相等性
  • mysql面试题分组并合并列
  • ​html.parser --- 简单的 HTML 和 XHTML 解析器​
  • #LLM入门|Prompt#1.7_文本拓展_Expanding
  • #Ubuntu(修改root信息)
  • #使用清华镜像源 安装/更新 指定版本tensorflow
  • $.ajax()参数及用法
  • (11)工业界推荐系统-小红书推荐场景及内部实践【粗排三塔模型】
  • (C语言)逆序输出字符串
  • (ibm)Java 语言的 XPath API
  • (LeetCode 49)Anagrams
  • (poj1.3.2)1791(构造法模拟)
  • (zt)最盛行的警世狂言(爆笑)
  • (附源码)spring boot校园拼车微信小程序 毕业设计 091617
  • (考研湖科大教书匠计算机网络)第一章概述-第五节1:计算机网络体系结构之分层思想和举例
  • (免费领源码)python+django+mysql线上兼职平台系统83320-计算机毕业设计项目选题推荐
  • (一)kafka实战——kafka源码编译启动
  • (原創) 系統分析和系統設計有什麼差別? (OO)
  • (转)程序员疫苗:代码注入