接口测试_理论

前言

在这里插入图片描述

  有些人说:“理论不重要,能干活就行了”。说道这里我就有点不乐意了,你光会干活,最后干的是什么都不知道。出了问题就百度,都不思考一下。怎么能做好一件事?再说了测试这个工作要的就是细心和理论,不懂理论,上去就是一顿测试,能有什么结果出来?回头一看不还是要看看理论的。

  话说回来:“我不是说理论多重要,也不是说技术多没用。总体来说理论,技术结合才是关键”。

  下面小编我介绍一下接口测试的理论知识,包括:什么是接口、什么是API、接口测试的位置、接口测试流程、等等的好多呢,我可是看了两天资料才写出来的。

什么是接口

  在XX公司有两个项目,《员工信息管理系统-信管》、《员工考勤管理系统-考管》,其中信管系统中保存中公司所有员工信息,包括:ID,姓名,年龄,入职时间,职位等信息。而考管系统正在开发中,考管系统要用到信管系统中的员工信息,那么怎么样才能拿到信息呢?

  1. 将信管系统中的数据库拷贝到考管中一份。
    a) 不好维护,员工有变动不能第一时间通知考管系统
    b) 需要了解数据结构,不然不能对数据库中数据进行操作。
  2. 考管系统直接连接信管的数据库
    a) 需要了解数据结构,不然不能对数据库中数据进行操作。
  3. 在信管系统中写一个接口,接收信管发送过来的请求,处理后返回相关信息。
    a) 不需要维护新的数据库,不需要了解数据结构,只需要了解这个接口的参数即可。

  前两种就不介绍了,第三种方法,添加了一个接口,降低开发成本,和运维成本,完
成考管系统对员工信息的需求。

  那么接口是什么:
  接口就是内部模块对模块,外部系统对其他服务提供的一种可调用或者连接的能力的标准。就好比信管系统对考管系统提供的接口服务,他是系统向外接提供的一种用于数据传输的一个服务,只要满足接口定义协议,就能调用接口,实现数据传输功能。

  接口的分类:
  外部接口: 一个程序对给另一个程序的服务。
  内部接口: 一个程序中一个接口需要另一个接口提供的数据。

  http协议请求方法介绍:
  常见的接口分类http:get,post,delete,put 等等。但是呢,我我做的接口测试 还真的就用过一个请求方法,就是 POST 方式提交的JSON数据。

在这里插入图片描述
系统对外的接口:
  比如你要从别的网站或服务器上获取资源或信息,别人肯定不会把数据库共享给你,他只能给你提供一个他们写好的方法来获取数据,你引用他提供的接口就能使用他写好的方法,从而达到数据共享的目的。

程序内部的接口:
  方法与方法之间,模块与模块之间的交互,程序内部抛出的接口,比如bbs系统,有登录模块、发帖模块等等,那你要发帖就必须先登录,那么这两个模块就得有交互,它就会抛出一个接口,供内部系统进行调用。

接口分类:

web service 接口
  webService接口是走soap协议通过http传输,请求报文和返回报文都是xml格式的,我们在测试的时候都用通过工具才能进行调用,测试。

http api接口
  http api接口是走http协议,通过路径来区分调用的方法,请求报文都是key-value形式的,返回报文一般都是json串,有get和post等方法,这也是最常用的两种请求方式。

GET和POST的区别

  不知道为什么,别人都写了get 和 post 的区别,所以我也写了。
  这个问题,面试中经常被提到。简单来说,可以从三个方面去回到这个区别:方式、大小、安全

1)提交方式
  方式指的是参数的传入方式,GET方法一般是指获取服务器上的数据,参数直接跟着URL后边,直接可以放到浏览器地址栏里,例如登录就是采用GET方法。而POST方法是指客户端给服务器上提交表单数据,所以POST是通过表单提交的,例如你网页上的调查问卷和答题就是采用POST方法。

2)提交大小
  上面已经知道GET是直接在浏览器地址栏输入,由于浏览器有限制,一般整个URL的长度可以很长,但是不能超过2049KB的大小限制,而这个POST就没有大小限制。

3)安全性
  由于GET的参数是在浏览器地址栏直接拼接,暴露在互联网中,肯定不安全。POST是通过表单数据提交,相对比GET方法更安全。

JSON是什么?

  JSON是一种通用的数据类型,所有的语言都认识它。JSON的本质是字符串,他与其他语言无关,只是可以经过稍稍加工可以转换成其他语言的数据类型,比如可以转换成Python中的字典,key-value的形式,可以转换成JavaScript中的原生对象,可以转换成java中的类对象等。

接口API与SDK介绍

随着软件规模的日益庞大,常常需要把复杂的系统划分成小的组成部分,编程接口的设计十分重要,程序设计的实践中,编程接口的设计首先要使软件系统的职责得到合理划分,良好的接口设计可以降低系统各部分的相互依赖,提高组成单元的内聚性,降低组成单元间的耦合程度,从而提高系统的维护性和扩展性。API是接口的一种,在程序交互中具有重要的作用,而SDK与API有着密不可分的关系。

API的概念

  API即“应用程序编程接口”,是一些预先定义的函数,目的是作为“介面”沟通两个不同的东西,提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。
其实就是别人已经写好的可以实现特定功能的函数,而你只需要根据他提供好的接口,也就是调用他的方法,传入他规定的参数,然后这个函数就会帮你实现这些功能。
在这里插入图片描述
  从接口interface来说,在计算机领域是指两个不同事物之间交互的地方,大可以到两个完整的不同系统,小可以到两段程序。所以这个I就这么理解。

  人和程序交互的叫做UI(user interface),所有人输入的包括鼠标键盘触摸屏声音输入都算。
程序和程序交互叫做API,所有非人对非人交互都通过API进行交互,所谓交互,其实就是传递数据,触发功能。

SDK的概念

  SDK即“软体开发工具包”,一般是一些被软件工程师用于为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件的开发工具的集合。通俗点是指由第三方服务商提供的实现软件产品某项功能的工具包。

  通常SDK是由专业性质的公司提供专业服务的集合,比如提供安卓开发工具、或者基于硬件开发的服务等。也有针对某项软件功能的SDK,如推送技术、图像识别技术、移动支付技术、语音识别分析技术等,在互联网开放的大趋势下,一些功能性的SDK已经被当作一个产品来运营。

  开发者不需要再对产品的每个功能进行开发,选择合适稳定的SDK服务并花费很少的经历就可以在产品中集成某项功能。

SDK和API的区别

在这里插入图片描述
实际上SDK包含了API的定义,API定义一种能力,一种接口的规范,而SDK可以包含这种能力、包含这种规范。但是SDK又不完完全全只包含API以及API的实现,它是一个软件工具包,它还有很多其他辅助性的功能。
SDK 包含了使用 API 的必需资料,所以人们也常把仅使用 API 来编写 Windows 应用程序的开发方式叫做“SDK编程”。

通俗语言解释
API: 前端调用后端数据的一个通道,就是我们俗说的接口,通过这个通道,可以访问到后端的数据,但是又无需调用源代码。
SDK: 工程师为辅助开发某类软件的相关文档、范例和工具的集合,使用SDK可以提高开发效率,更简单的接入某个功能。
举例说明: 一个产品想实现某个功能,可以找到相关的SDK,工程师直接接入SDK,就不用再重新开发了。

为什么做接口测试

接口测试介绍

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

为什么做接口测试

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

  由于如今的系统复杂度不断上升,传统的测试方法成本急剧增加且测试效率大幅下降,所以就要做接口测试。同时,接口测试相对容易实现自动化持续集成,且相对UI自动化也比较稳定,可以减少人工回归测试人力成本与时间,缩短测试周期,支持后端快速发版需求。接口持续集成是为什么能低成本高收益的根源。

  现在很多系统前后端架构是分离的,从安全层面来说,只依赖前端进行限制已经完全不能满足系统的安全要求(绕过前面实在太容易), 需要后端同样进行控制,在这种情况下就需要从接口层面进行验证。前后端传输、日志打印等信息是否加密传输也是需要验证的,特别是涉及到用户的隐私信息,如身份证,银行卡等。

接口测试怎么做

后端接口测试测什么?

从下面这张图可以看出后端接口测试主要测了些什么:
在这里插入图片描述

怎么做接口测试

  一般情况下,由于我们项目前后调用主要是基于http协议的接口,所以测试接口时主要是通过工具或代码模拟http请求的发送和接收。所以我们下面整理了一下使用Jmeter工具进行http接口测试。

开发接口测试案例的整体方案

  第一步: 分析出测试需求,并拿到开发提供的接口说明文档。

  第二步: 从接口说明文档中整理出接口测试案例,里面要包括详细的入参和出参数据以及明确的格式和检查点。

  第三步: 和开发一起对接口测试案例进行评审。

  第四步: 结合开发库,准备接口测试案例中的入参和出参数据,并整理成csv格式的文件。

  第五步: 结合接口测试案例文档和csv格式的数据文档,做接口测试案例的自动化案例开发。

接口测试流程

在这里插入图片描述

接口自动化适用场景

测试前置、开发自测:
  一个新的自动化接口测试案例开发完成后,直接发给接口对应的开发,安排在开发本地环境执行,一旦开发确认完成接口开发,就开始执行接口测试案例,基本上可以实时拿到测试结果,方便开发快速做出判断。(开发本地运行的方式就是打开JMeter工具,导入JMX文件,开始执行可。)

回归测试:
  开发本地测试通过后,或整个需求手工测试通过后,把自动化的接口测试案例做分类整理,挑选出需要纳入到回归测试中的案例,在持续集成环境重新准备测试数据,并把案例纳入到持续集成的job中来,这些用于回归的接口测试案例需要配置到持续集成平台自动运行。

接口测试工具介绍

  这里呢 就是简单给你个列表,后续呢我会写jmeter 和 postman 的使用方法。

在这里插入图片描述

接口测试用例

先看一下 接口文档中一个接口时怎么描述的。
当中有点保密的数据我给挡上了,没关系,不影响怎们参考他。
在这里插入图片描述

基本信息(简要)

列名描述
接口名称这个接口的名称
状态这个接口的状态,已完成、未完成
接口路径接口访问的网址

请求参数

Headers:

  请求头需要携带的值

Body:

  请求体的参数,这个是接口的关键之一
  传递哪些参数,什么数据类型,一般只有 number 和 string 类型。

返回数据

  这里声明了这个接口调用成功返回什么结果,失败返回什么结果。

设计用例

在这里插入图片描述

接口测试报告

  另外写一篇:https://blog.csdn.net/weixin_43664254/article/details/89951142

在这里插入图片描述
本文参考:
https://www.cnblogs.com/zoraliu66/p/6743126.html
https://blog.csdn.net/qq_33642117/article/details/56013432
https://www.jianshu.com/p/98563fa6c8d5
https://www.cnblogs.com/zoraliu66/p/6743126.html
https://blog.csdn.net/nikita1995/article/details/82494416
https://www.cnblogs.com/yang20923/p/8295358.html
本文参考的很多论坛,他们都写了让我声明文章出处,我就写在这里了。

  • 11
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
接口测试是软件测试中的一部分,主要用于测试不同系统、组件或模块之间的接口是否正常工作。接口测试可以通过手动测试或自动化测试来完成。在接口测试的面试中,通常会涉及以下几个问题: 1. 接口测试的作用和重要性:接口测试可以帮助发现系统之间的集成问题,早期发现和修复问题的成本更低。而且接口测试非常快速,通常比UI自动化测试更快。 2. 接口测试和UI测试的区别和联系:接口测试是直接调用接口测试接口的正确性,而UI测试是通过前端界面来调用接口测试前端逻辑的正确性。在理论上,接口测试可以覆盖所有UI测试的功能点,但在实际过程中,需要根据项目的具体情况来确定测试的范围和重点。 3. 在手工接口测试或自动化接口测试中处理上下游接口的数据依赖:当存在上下游接口的数据依赖时,可以通过抓包工具将接口的数据捕获下来,然后针对性地进行测试。如果接口中某些字段的信息不清楚,可以与开发人员沟通并寻求解答。常用的抓包工具包括Fiddler和Charles等。 总结起来,在接口测试的面试中,需要展示你对接口测试的理解和实践经验,包括接口测试的作用、与UI测试的区别和联系,以及处理上下游接口的数据依赖的方法。同时,也要展示你的抓包工具使用经验和与开发人员的有效沟通能力。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [接口测试面试题汇总(含答案)](https://blog.csdn.net/weixin_60870637/article/details/127228879)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [python 接口自动化测试-----常见面试题汇总](https://blog.csdn.net/weixin_44602565/article/details/108704374)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值