python接口自动化(二)--什么是接口测试、为什么要做接口测试(详解)

什么是接口测试

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

  一般来说,测试接口,就是指测试接口的功能,性能和稳定性测试,当然可能还有安全性测试。这个入门系列会让你掌握接口的功能测试。一般,来说我们听说到的接口基本上都是指HTTP或者HTTPS协议的接口测试,也就是一些web服务请求。一个软件项目中,

有很多接口,少的有几十个,多的有几百上千个接口。这个时候,我们没有软件界面,没有具体的测试场景,只有一个接口描述文档。我们需要把接口这样抽象的东西,通过软件测试的理论和方法去测试接口,找出接口的功能和安全性的缺陷。接口有内部接口和外部

接口。内部接口就是开发人员自己开发的接口。外部接口,好比网站调用微信支付和支付宝支付接口。还有一些模块与模块之间的接口。学习过Java或者用过selenium的人,应该对接口有了解。你的自动化脚本调用了很多selenium的接口。

 为什么要做接口测试

  1、现在很多系统前后端架构是分离的,因为不同端(前段,后端)的工作进度不一样,所以我们要针对最开始出来的接口,以及需要调用其他公司的(银行,支付宝,微信,qq等)一些接口进行接口测试及验证数据,从安全层面来说,

只依赖前端进行限制已经完全不能满足系统的安全要求(绕过前端太容易了), 需要后端同样进行控制,在这种情况下就需要从接口层面进行验证。在这种情况下就需要从接口层面进行验证。前后端传输、日志打印等信息是否加密传输也是需

要验证的,特别是涉及到用户的隐私信息,如身份证,银行卡等。

 2、如今系统越来越复杂,传统的靠前端测试已经大大降低了效率,而且现在我们都推崇测试前移也叫测试左移,希望测试能更早的介入测试,那接口测试就是一种及早介入的方式。例如传统测试,你是不是得等前后端都完成你才能进行测试,才能进行自动化代码编

写。 而如果是接口测试,只需要前后端定义好接口,那这时自动化就可以介入编写接口自动化测试代码,手工测试只需要后端代码完成就可以介入测试后端逻辑而不用等待前端工作完成。  

  测试左移这个是一次偶然的机会在群里看到的,孤陋寡闻的我,第一次看到,也是一知半解,后来查了一些资料供大家参考。

  测试左移的原则支持测试团队在软件开发周期早期和所有干系人合作。因此他们能清晰地理解需求以及设计测试用例去帮助软件“快速失败”,促使团队更早的修改所有的bug。  

  测试左移并没有什么独特的,只是让测试人员在软件开发生命周期内更早的参与进来,同时让他们去理解需求、软件设计、软件架构以及软件功能,也让他们去向客户、商业分析师和开发人员问问题,寻找答案,提供反馈结果已达到支持团队的工作得可能性。参

与和理解会使测试人员获取产品完整的知识,彻底想清楚各种场景,根据软件行为设计实时的场景,这些都会帮助团队在编码完成之前识别出一些缺陷。这样也可以更好的的体现我们作为一个QA的价值体                                                                


金字塔模型

通过之前对金字塔结构的学习,大概了解到了金字塔模型想告诉我们的几个道理:

  1.越底层,越稳定。

  金字塔主要观点认为单元测试的稳定性高,需要多投入。

  2.越底层,越高效。

  程序的问题,最终还得落在具体的代码上,所以底层的测试更容易发现问题。

  3.越底层,越低成本。

  越底层测试能越早发现问题,越早发现问题,修复的成本自然越低。

  4.越底层,越难实施。

  越底层的实现对技术专业性要求越高,这点跟第三点有点矛盾,往往越专业的人才也意味着人力成本越高。

  综合下金字塔模型,随着前后端分离越来越清晰,我个人愚见提出了灯笼模型,拿接口测试和UI层测试以及单元测试做了比较,从图中各部分所占有的比重,可以一目了然的看出并最终认定接口(API)测试可以获得较高的投资回报。

                                                                                   

  灯笼模型

  个人愚见,如有过错,请批评指正:

  接口将前端和后端进行很好的分离,帮前后端实现数据交互,这样在项目初期就可以和前端工程师讨论需要的后端数据,然后后端根据需求开发后接口,将数据返回给前端,测试人员提前进入测试接口,前后端然后在各自开发自己模块。

 项目迁移,以及后期维护,接口带来的便利性,试想一下,如果没有项目交付以后,后端人员将数据库的某个字段的长度、类型修改后发版,而由于某些原因没有及时通知前端工程师,而此时前端的获取的这个字段的类型、长度是以前的,那么就可能引发线上事故。如

果前端技术牛叉,存储获取字段是一个变量,工作量还小点。只需要改变变量类型、长度即可,如果是一个差一点的没有用变量,而前端又是好几百个页面都用到这个字段,这样就造成后果无法想象的,但是用到接口就有不一样了,如果出现类似的情况,后端人员只需

要将这个字段通过接口做处理是返回的字段保持一致即可,也就是分分钟的事,可能用户都没有察觉就修复了。而且前端、后端、测试也很好排查问题,跑一下接口,查看接口文档返回数据有差异,修给接口就可以,这样处理问题效率也会大大提高。

  简单概括:

①.越底层发现bug,它的修复成本是越低的。

②.前端随便变,接口测好了,后端不用变,前后端是两拨人开发的。

③.检查系统的安全性、稳定性,前端传参不可信,比如京东购物,前端价格不可能传入-1元,但是通过接口可以传入-1元。

④.如今的系统复杂度不断上升,传统的测试方法成本急剧增加且测试效率大幅下降,接口测试可以提供这种情况下的解决方案。

⑤. 接口测试相对容易实现自动化持续集成,且相对UI自动化也比较稳定,可以减少人工回归测试人力成本与时间,缩短测试周期,支持后端快速发版需求。接口持续集成是为什么能低成本高收益的根源。

⑥.   现在很多系统前后端架构是分离的,从安全层面来说:

(1)、只依赖前端进行限制已经完全不能满足系统的安全要求(绕过前面实在太容易), 需要后端同样进行控制,在这种情况下就需要从接口层面进行验证。

(2)、前后端传输、日志打印等信息是否加密传输也是需要验证的,特别是涉及到用户的隐私信息,如身份证,银行卡等。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/4330.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Qt】Qt单元测试详解(一):通过QtCreator创建测试工程

1、简述 Qt程序支持多种测试框架,其中QtCreator可以协助创建4种测试框架,分别是: Boost的测试框架——Boost.Test Google测试框架——GTest Qt测试框架——QTest Qt Quick测试框架——QtQuickTest其他框架需要自行创建:Catch2、CTest 2、QtCreator创建测试工程 2.1 创建…

jenkins+sonarqube+自动部署服务

一、jenkins 配置Pipeline 二、新建共享库执行脚本 共享库可以是一个普通的gitlab项目,目录结构如下 三、添加到共享库 Jenkins Dashboard–>系统管理–>系统配置–>Global Pipeline Libraries Name: 共享库名称,自定义即可; Defa…

从CNN到Transformer:基于PyTorch的遥感影像、无人机影像的地物分类、目标检测、语义分割和点云分类

我国高分辨率对地观测系统重大专项已全面启动,高空间、高光谱、高时间分辨率和宽地面覆盖于一体的全球天空地一体化立体对地观测网逐步形成,将成为保障国家安全的基础性和战略性资源。随着小卫星星座的普及,对地观测已具备多次以上的全球覆盖…

输出数组的长度-课后程序(JavaScript前端开发案例教程-黑马程序员编著-第3章-课后作业)

【案例3-5】输出数组的长度 一、案例描述 考核知识点 length()方法 练习目标 掌握length()方法获取数组长度。掌握数组的遍历。 需求分析 数组中保存五个学生的数学成绩,遍历数组分别获取每一个学生的数学成绩分数,用length()函数获取数组的长度。 案…

帝国CMS7.2/7.5火车头配置说明以及使用教程

一淘模板 56admin.com给大家写一个帝国cms火车头采集器配置的教程,由于录视频太麻烦,所以直接打字上图了,希望能帮助到小伙伴! 火车头简要来讲分为 3 个部分的配置:1、发布地址配置;2、文件保存地址与图片…

数据结构|AOE网活动的最早、最迟发生时间及关键路径问题

一些知识点: 整个活动的完成时间是AOE图中从始点到终点的最长路径的长度,这条路径称为关键路径。关键路径上的活动称作关键活动。 注意:关键路径不一定只有一条。 1.最早发生时间:从前往后,前驱结点到当前结点所需时…

SpringBoot使用详解

概念 Spring Boot的启动器实际上就是一个依赖。这个依赖中包含了整个这个技术的相关jar包,还包含了这个技术的自动配置,以前绝大多数XML配置都不需要配置了。 如果是Spring自己封装的启动器的artifact id名字满足:spring-boot-starter-xxxx&…

Java分布式锁面试题

1.为什么需要分布式锁? public synchronized void test() {System.out.println("获取到锁"); } public void test2() {synchronized (Test.class) {System.out.println("获取到锁");} }假设我们把上述代码部署到多台服务器上,这个互斥锁还能生…

BPI-R3开发板 - atf编译

一. 获取源码 https://github.com/mtk-openwrt/arm-trusted-firmware 二. 编译步骤 和编译uboot一样,编译环境为ubuntu 18.04。交叉编译工具链我用的是openwrt编译生成的工具链,并设置到环境变量,如下: export PATH$PATH:/root/mt…

【大屏设计方案】

大屏设计方案一、非等比放大(填充满整个屏幕)目的屏幕比例大小和设计稿的差的不多目的屏幕比例大小和设计稿的差很多二、等比放大(比如16:9)解决方案之后就可以用rem了,有两种便利的方式:也可以用media 根据不同的屏幕…

膳食真菌在癌症免疫治疗中的作用: 从肠道微生物群的角度

谷禾健康 癌症是一种恶性肿瘤,它可以发生在人体的任何部位,包括肺、乳房、结肠、胃、肝、宫颈等。根据世界卫生组织的数据,全球每年有超过1800万人被诊断出患有癌症,其中约有1000万人死于癌症。癌症已成为全球范围内的主要健康问题…

@LoadBalanced注解原理

1.概述 使用注解就像是在代码中加入了一段魔法,让我们轻而易举的就实现了至关重要的功能。 就像LoadBalanced一样,将该注解使用在RestTemplate的Bean上,就可以实现负载均衡,就像下面这段代码: Configuration public…

新手UI设计师必读:火爆海外设计圈的设计资源!

Hello,各位好! 作为一名新手UI设计师,你是否无法完全搞清楚某些UI设计的基本原则和概念?你是否为使用哪款设计软件来开启你的设计之路而困扰?你是否想要在线学习设计排版、色彩搭配、形状和线条设计? 今天这…

rabbitMQ的详细介绍

1.概述 RabbitMQ是一个消息中间件:它接受并转发消息。你可以把它当做一个快递站点,当你要发送一个包裹时,你把你的包裹放到快递站,快递员最终会把你的快递送到收件人那里,按照这种逻辑RabbitMQ是一个快递站,一个快递员…

实验记录项目

1. 关于语谱图的通道的均值与方差 2023年 03月 27日 星期一 10:10:22 CST 使用tqwt 对每一份音频进行分解: 每份音频得到三个分量, cA分量: 近似分量,用于表征低频部分; cD分量: 高频分量,  res 剩余分量: 1.1 问题: 对每个分量使用如下变换,  使用Mel,  Shar…

SQL面试必会50题

引用: 视频讲解:https://www.bilibili.com/video/BV1q4411G7Lw/ SQL面试必会50题: https://zhuanlan.zhihu.com/p/43289968 图解SQL面试题:经典50题:https://zhuanlan.zhihu.com/p/38354000 其中重点为:1/2…

ChatGLM本地部署应用的实战方案

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法…

系统分析师每日练习错题知识点2

嵌入式系统---多核cpu 多核是多微处理器核的简称,是将两个或更多的独立处理器封装在一起,集成在一个电路中。多核处理器是单枚芯片(也称为硅核),能够直接插入单一的处理器插槽中,但操作系统会利用所有相关…

Java Web中的ServletContext对象

目录 ServletContext对象 获取上下文初始化参数的相关方法 创建ServletContext对象 1)通过 GenericServlet 提供的 getServletContext() 方法 2)通过 ServletConfig 提供的 getServletContext() 方法 3)通过 HttpSession 提供的 getServletCo…

Apache iotdb-web-workbench 认证绕过漏洞 CVE-2023-24829

漏洞简介影响版本 0.13.0 < 漏洞版本 < 0.13.3漏洞主要来自于 iotdb-web-workbench IoTDB-Workbench是IoTDB的可视化管理工具&#xff0c;可对IoTDB的数据进行增删改查、权限控制等&#xff0c;简化IoTDB的使用及学习成本。iotdb-web-workbench 中存在不正确的身份验证漏…