简介

  上一篇和大家一起科普扫盲接口后,知道什么是接口,接口类型等,对其有了大致了解之后,我们就回到主题-接口测试。

什么是接口测试

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

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

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

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

为什么要做接口测试

  1、现在很多系统前后端架构是分离的,因为不同端(前段,后端)的工作进度不一样,所以我们要针对最开始出来的接口,以及需要调用其他公司的(银行,支付宝,微信,qq等)一些接口进行接口测试及验证数据,从安全层面来说,
 
只依赖前端进行限制已经完全不能满足系统的安全要求(绕过前端太容易了), 需要后端同样进行控制,在这种情况下就需要从接口层面进行验证。在这种情况下就需要从接口层面进行验证。前后端传输、日志打印等信息是否加密传输也是需
 
要验证的,特别是涉及到用户的隐私信息,如身份证,银行卡等。
 
 2、如今系统越来越复杂,传统的靠前端测试已经大大降低了效率,而且现在我们都推崇测试前移也叫测试左移,希望测试能更早的介入测试,那接口测试就是一种及早介入的方式。例如传统测试,你是不是得等前后端都完成你才能进行测试,才能进行自动化代码编
 
写。 而如果是接口测试,只需要前后端定义好接口,那这时自动化就可以介入编写接口自动化测试代码,手工测试只需要后端代码完成就可以介入测试后端逻辑而不用等待前端工作完成。
  
  测试左移这个是一次偶然的机会在群里看到的,孤陋寡闻的我,第一次看到,也是一知半解,后来查了一些资料供大家参考。
  
  测试左移的原则支持测试团队在软件开发周期早期和所有干系人合作。因此他们能清晰地理解需求以及设计测试用例去帮助软件“快速失败”,促使团队更早的修改所有的bug。  
  
  测试左移并没有什么独特的,只是让测试人员在软件开发生命周期内更早的参与进来,同时让他们去理解需求、软件设计、软件架构以及软件功能,也让他们去向客户、商业分析师和开发人员问问题,寻找答案,提供反馈结果已达到支持团队的工作得可能性。参
 
与和理解会使测试人员获取产品完整的知识,彻底想清楚各种场景,根据软件行为设计实时的场景,这些都会帮助团队在编码完成之前识别出一些缺陷。这样也可以更好的的体现我们作为一个QA的价值体                                                                

金字塔模型
通过之前对金字塔结构的学习,大概了解到了金字塔模型想告诉我们的几个道理:
 
  1.越底层,越稳定。
 
  金字塔主要观点认为单元测试的稳定性高,需要多投入。
 
  2.越底层,越高效。
 
  程序的问题,最终还得落在具体的代码上,所以底层的测试更容易发现问题。
 
  3.越底层,越低成本。
 
  越底层测试能越早发现问题,越早发现问题,修复的成本自然越低。
 
  4.越底层,越难实施。
 
  越底层的实现对技术专业性要求越高,这点跟第三点有点矛盾,往往越专业的人才也意味着人力成本越高。
 
  综合下金字塔模型,随着前后端分离越来越清晰,我个人愚见提出了灯笼模型,拿接口测试和UI层测试以及单元测试做了比较,从图中各部分所占有的比重,可以一目了然的看出并最终认定接口(API)测试可以获得较高的投资回报。
                                                                                   

 
  灯笼模型
  个人愚见,如有过错,请批评指正:

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

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

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

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

  简单概括:

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

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

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

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

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

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

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

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

python接口自动化(二)--什么是接口测试、为什么要做接口测试(详解)的更多相关文章

  1. python接口自动化(十九)--Json 数据处理---实战(详解)

    简介 上一篇说了关于json数据处理,是为了断言方便,这篇就带各位小伙伴实战一下.首先捋一下思路,然后根据思路一步一步的去实现和实战,不要一开始就盲目的动手和无头苍蝇一样到处乱撞,撞得头破血流后而放弃 ...

  2. python接口自动化(十三)--cookie绕过验证码登录(详解)

    简介 有些登录的接口会有验证码:短信验证码,图形验证码等,这种登录的话验证码参数可以从后台获取的(或者查数据库最直接).获取不到也没关系,可以通过添加cookie的方式绕过验证码.(注意:并不是所有的 ...

  3. python接口自动化-Cookie_绕过验证码登录

    前言 有些登录的接口会有验证码,例如:短信验证码,图形验证码等,这种登录的验证码参数可以从后台获取(或者最直接的可查数据库) 获取不到也没关系,可以通过添加Cookie的方式绕过验证码 前面在“pyt ...

  4. python接口自动化-参数化

    原文地址https://www.cnblogs.com/yoyoketang/p/6891710.html python接口自动化 -参数关联(一)https://www.cnblogs.com/11 ...

  5. python接口自动化 -参数关联(一)

    原文地址https://www.cnblogs.com/yoyoketang/p/6886610.html 原文地址https://www.cnblogs.com/yoyoketang/ 原文地址ht ...

  6. python接口自动化6-重定向(Location)

    前言 某屌丝男A鼓起勇气向女神B打电话表白,女神B是个心机婊觉得屌丝男A是好人,不想直接拒绝于是设置呼叫转移给闺蜜C了,最终屌丝男A和女神闺蜜C表白成功了,这种场景其实就是重定向了. 一.重定向 1. ...

  7. python接口自动化5-Json数据处理

    前言 有些post的请求参数是json格式的,这个前面第二篇post请求里面提到过,需要导入json模块处理. 一般常见的接口返回数据也是json格式的,我们在做判断时候,往往只需要提取其中几个关键的 ...

  8. python接口自动化4-绕过验证码登录(cookie)

    前言 有些登录的接口会有验证码:短信验证码,图形验证码等,这种登录的话验证码参数可以从后台获取的(或者查数据库最直接). 获取不到也没关系,可以通过添加cookie的方式绕过验证码. 一.抓登录coo ...

  9. python接口自动化3-自动发帖(session)

    前言 上一篇模拟登录博客园,但这只是第一步,一般登录后,还会有其它的操作,如发帖,评论等,这时候如何保持会话呢? (敲黑板!!!由于博客园最近登录机制变了,登录全部走cookie登录) 一.sessi ...

  10. python接口自动化1-发送get请求

    前言 requests模块,也就是老污龟,为啥叫它老污龟呢,因为这个官网上的logo就是这只污龟,接下来就是学习它了. 一.环境安装 1.用pip安装requests模块 >>pip in ...

随机推荐

  1. 25个让Java程序员更高效的Eclipse插件

    Eclipse提供了一个可扩展插件的开发系统.这就使得Eclipse在运行系统之上可以实现各种功能.这些插件也不同于其他的应用(插件的功能是最难用代码实现的).拥有合适的Eclipse插件是非常重要的 ...

  2. Latex数学公式中的空格表示方法

    两个quad空格 a \qquad b 两个m的宽度 quad空格 a \quad b 一个m的宽度 大空格 a\ b 1/3m宽度 中等空格 a\;b 2/7m宽度 小空格 a\,b 1/6m宽度 ...

  3. 【bzoj1045】【HAOI2008】 糖果传递

    Description 有n个小朋友坐成一圈,每人有ai个糖果.每人只能给左右两人传递糖果.每人每次传递一个糖果代价为1. Input 第一行一个正整数n<=987654321,表示小朋友的个数 ...

  4. 使用bat打开多个cmd窗口执行gulp、node

    一.使用场景 使用场景:项目发布前 操作步骤: 1.执行gulp,对文件进行压缩.合并等操作: 2.在1执行完成后,对1中合并的文件如default.css进行多主题色的自动生成,在这里使用node处 ...

  5. IE浏览器下ajax和缓存的那些事儿

    项目经理最近返回了一些问题: (客户浏览器为IE11,本地360,谷歌没发现任何问题) 1.加载页面时下拉框中没有数据,关闭之后再打开出现数据: 2.数据保存之后页面没有刷新: 我也是接手别人的项目, ...

  6. Postman-----设置环境变量

    1.环境变量的作用域: 使用环境变量(可用于切换开发环境/生产环境.设置动态参数),有4个作用域(优先级由高到低):Global, Environment, Local, Data.同名变量会使用优先 ...

  7. nginx日志模块及日志定时切割

    一:作用 Ngx_http_log_module:定义日志格式,并且以指定的格式保存. 二:示例配置 log_format compression '$remote_addr - $remote_us ...

  8. .Net开发者必知的技术类RSS订阅指南

    目录 RSS订阅资源 .Net基金会 MSDN中文版 杂志 微软 Github 系列 微软DevBlog系列 InfoQ中文版系列 如何找到大佬的 Twitter/Youtube/Stackoverf ...

  9. 事务是什么?事务的4个特点(ACID),事务的开启与结束

    事务是指作为单个逻辑工作单元执行的一组相关操作.这些操作要求全部完成 或者全部不完成.使用事务是为了保证数据的安全有效. 事务有一下四个特点:(ACID) 1.原子性(Atomic):事务中所有数据的 ...

  10. WinForm的DataGirdView判断CheckBox是否被选中

    首先我们先设置下DataGirdView的列. 然后启动下编辑,就可以选中与不选中了.在之后通过. #region 便利被选中的行,然后导出 DataTable dtreport = new Data ...