热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【重要】接口测试----必知常见问题解答(面试常会被问到)

业务稳定为啥要测接口?为了回归。而且接口有个好处,定位问题简单,一出问题基本都是服务端的问题,而且肯定是和这个接口相关的代码,不用花时间再去抓包->分析(->撕逼)对

业务稳定为啥要测接口?

  为了回归。而且接口有个好处,定位问题简单,一出问题基本都是服务端的问题,而且肯定是和这个接口相关的代码,不用花时间再去抓包->分析(->撕逼)

 

对于page的接口测试,测试点如何设计?

  第一页、中间页、最后一页,那么如何获取到的页数就是最后一页?让开发协助写获取最后一页的接口,测试来调用。

 

接口测试是否成功的校验点是?

  (1)从reponse中是否包含指定内容开始。

  (2)扩展到数据库的校验

 

接口测试的用例验证点(容错性验证)?

  ADD/MOD(添加/修改):

  (1)字段边界值,最大最小字符,为空以及格式校验

  (2)重复提交相同的参数

  (3)权限校验

  (4)业务逻辑

  DEL:(删除)

  (1)删除不存在的

  (2)删除无权限删除的

  (3)删除后再添加相同的

  (4)重复删除

  LST:(列表)

  (1)为空时获取

  (2)数量大时获取

  (3)分页

  (4)获取无权限获取的  

 

接口测试的本质?

  通过测试参数的排列组合验证返回值/数据库变更是否符合预期,从而确定接口相关代码是否正确。

 

接口测试的优点?

  (1)简单(对于开发基础比较好的同学来说)

  (2)稳定(成功率高,很少出现ui自动化的各种状况)

  (3)效率(1个接口下的100条用例几秒可执行完成)

  (4)可信(ui自动化测试报告天天执行,一堆fail,由于各种环境问题、兼容等问题导致排查测试报错的原因较麻烦)

  (5)时间(用例编写时间短,相对来说复用性高)

 

简单的一个接口测试(用例编写、开始执行)的步骤?

  (1)开始编写前置条件、入参、返回参数、预期结果等测试相关的信息

  (2)运用工具去执行测试用例或者执行自己写的脚本

  (3)校验返回结果是否正确

 

接口测试是什么?

  接口测试是功能测试不可或缺的一部分,抛开了前段的逻辑和限制对于服务器的功能进行了完整的测试,一个好的功能测试人员应该充分了解所测系统有多少个接口,接口的核心参数和响应,完成对接口代码的走读,接口有没有白名单,防刷,内部接口和外部接口等。

 

接口测试的作用是什么?

  从接口测发起的测试弥补了界面测试的遗漏点,能将接口测试纳入功能测试的一部分,测试的完整性得到了很大的提高,界面测试起码遗漏了如下的信息:

  (1)服务器端接口参数校验

  (2)接口是否存在安全漏洞或者逻辑漏洞,实时性,防刷

  (3)接口是否存在越权的可能

 

接口测试注意点?

  【第一步:看】

  (1)、看接口的请求参数构造是否合理

  (2)、看所传参数有无敏感参数需要加密传输。比如说用户userid、password等数据如果不使用https进行通信,最好使用加密的方式进行传输,这也是业界通用的标准,并且入库也需是加密的

  (3)、看所测服务的代码。第一看对于传入参数的校验部分,第二是看整体逻辑处理部分。举个例子,大家在测试过程中经过会遇到如图五所示,有多个必填或者选填项、输入条件特别多、每个输入条件都需要做校验。有些测试人员会对此类问题用正交的方式一项一项测试,这类效率太慢。个人认为效率最高的方式为对于接口参数的校验,以静态测试为主,review代码的过滤条件,页面控件实际输入测试为辅助。很多的输入界面,其中判空处理是必须的。开发代码中常用的一个判空函数是if(xxx.isempty())。首先界面类查找是否有控件对象未使用该函数,若未使用肯定存在bug;其次即使使用这个函数也是有bug,该函数并未完全满足需求。这个函数漏掉了输入空格的情况,正确的做法是if(xxx.trimme().isempty())。那么如果在全工程内,搜索isempty,对比发现bug,最后可以选择一个输入项进行测试,通过后所有输入控间判空测试均告完毕。

  (4)、看接口的返回体是否返回一些不必要的敏感信息,返回格式是否合理

  【第二步:改】

  (1)请求体中参数的常规修改。常规修改就是通用的边界值方法,如极大值、极小值、极长值、null、空。未对这些值做校验的后果可大可小。小的方面仅仅是服务器throw一个统一的错误提示,如网络错误等。中等一点的为前端页面会返回如图六形式的内部错误,这种错误会泄露一些敏感信息。严重的后果可能就是影响现有或者后续业务,使得业务往不可控的方向进行。

  (2)与业务强相关的参数修改。

  (3)请求消息体中的字段修改。有些人习惯在COOKIE中传输大量的信息,也是值得关注的测试点。

 

接口测试的主要关注点?

  (1)业务逻辑(业务逻辑覆盖)

  (2)响应结构

  (3)数据格式

  (4)数据正确性(依据来源:查数据库与服务器和接口返回值比较)

 

测试的原则?

  (1)基础配置,如域名,环境配置等,单独文件配置,方便不同环境测试,脚本维护

  (2)明确接口实现什么样的功能,实际需要什么样的功能。是否一致

  (3)接口测试数据太多,用数据驱动模式更有层次,且易维护

  (4)要众多用例中选出冒烟测试用例及可用于性能测试的用例

  (5)先单接口测试,在多接口测试

  (6)测试完成后,需要清理脏数据

 

为什么选择JMeter做为接口测试的技术方案?

   (1) 基于配置实现接口测试的自动化,免代码开发
   (2)丰富的断言能力支持,返回值校验,数据库比对校验
   (3) 比较好的支持流程控制
   (4) 比较完善的结果监听
   (5)和Jenkins易于集成,集成后支持接口性能趋势的查看能力
   (6)非标准协议或者对接方有特殊安全处理的情况可以使用JavaSample的方式处理

 

接口测试的流程?

  类似于功能测试,需求讨论--评审需求—确定需求—产出接口定义—根据需求文档及接口定义设计测试用例(测试用例主要从业务场景,功能以及异常测试几个方面考虑)—评审用例—执行测试

 

需求的频繁变化,做接口测试的测试人员应该如何应对?

  个人觉得此在于团队开发的流程,团队之间的沟通和测试人员的警觉性。

  在开发阶段,需求的变更是一件极为频繁和正常的事情,对于此点团队中的任何一个人都应该正确的心态来面对,团队需要规范的开发流程,良好的沟通方式,测试人员更需要及时跟进软件进度,和开发人员并进齐行,同时,测试与开发需要相对独立的工作环境,总结而言为知己知彼,亦敌亦友。

 

接口测试的原理?

  通过测试程序模拟客户端向服务器发送请求报文,服务器接收请求报文后对相应的报文做出处理然后再把应答报文发送给客户端,客户端接收应答报文这一过程(request→response)

 

接口测试的范围?

  (1)、新增接口的测试;

  (2)、新增业务功能接口测试;

  (3)、整个服务器的接口测试,所需测试接口一次增多,在测试时间足够的条件下,当然需要对所有接口进行测试用例的设计,如果测试较短的情况下,则应该首先根据用户的典型操作对测试接口进行优先级划分,对调用平凡接口需要优先进行测试。

   

 接口测试策略? 

  (1)、接口设计检查(整数型数据位数、浮点型数据精度、字符串数据范围值)
  (2)、接口依赖关系检查
  (3)、接口输入/ 输出验证
    3.1 、条件判断接口
       3.1.1、条件判断的验证:要对判断条件进行验证,则需要知道接口是根据哪些输入项来进行判断的
           3.1.2、异常数据的响应:对于密码重置接口,用户ID不存在、不合法,邮箱输入格式错误、用户邮箱信息不存在或未激活就是测试时需要考虑的异常场景,设计这类输入值,并且检查接口返回的响应码,响应码的正确才能保证客户端根据异常情况来显示相应的提示信息。
    3.2、数据查询接口
       除了像条件判断接口之外根据请求参数设计合法/不合法/正常/异常测试值之外,还需要结合数据库来对查询结果进行验证。
      3.2.1、是否根据 正确的关联数据表进行查询
      3.2.2、验证查询结果是否从数据表中正确项中获取,涉及到多表联合查询时,不同表中的相同项设计不同测试数据来进行验证。
      3.2.3、修改查询结果在数据表中对应项中的数据,使其为空值或客户端相应项的范围值的最大和最小值,查看接口输出是否正确。
    3.3、逻辑运算接口

 后端接口都测试什么?

  回答这个问题,我们可以从接口测试活动内容的角度下手,看一下面这张图,基本反应了当前我们项目后端接口测试的主要内容:

  

 

后端接口测试一遍 ,前端也测试一遍,是不是重复测试了?

 

  回答这个问题,我们可以直接对比接口测试和app端测试活动的内容,如下图为app测试时需要覆盖或考虑内容:

  

 

接口测试持续集成:  

  

 对接口测试而言,持续集成自动化是核心内容,通过持自动化的手段我们才能做到低成本高收益。目前我们已经实现了接口自动化,主要应用于回归阶段,后续还需要加强自动化的程度,包括但不限于下面的内容:

  a) 流程方面:在回归阶段加强接口异常场景的覆盖度,并逐步向系统测试,冒烟测试阶段延伸,最终达到全流程自动化。

  b) 结果展示:更加丰富的结果展示、趋势分析,质量统计和分析等

  c) 问题定位:报错信息、日志更精准,方便问题复现与定位。

  d) 结果校验:加强自动化校验能力,如数据库信息校验。

  e) 代码覆盖率:不断尝试由目前的黑盒向白盒下探,提高代码覆盖率。

  f) 性能需求:完善性能测试体系,通过自动化的手段监控接口性能指标是否正常。

 

接口测试质量评估标准:

   a) 业务功能覆盖是否完整 

  b) 业务规则覆盖是否完整

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

  d) 接口异常场景覆盖是否完整

  e) 接口覆盖率是否达到要求

  f)  代码覆盖率是否达到要求

  g) 性能指标是否满足要求

  h) 安全指标是否满足要求

 

 

 

 


推荐阅读
  • 本文介绍了使用postman进行接口测试的方法,以测试用户管理模块为例。首先需要下载并安装postman,然后创建基本的请求并填写用户名密码进行登录测试。接下来可以进行用户查询和新增的测试。在新增时,可以进行异常测试,包括用户名超长和输入特殊字符的情况。通过测试发现后台没有对参数长度和特殊字符进行检查和过滤。 ... [详细]
  • 解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法
    本文介绍了解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法,包括检查location配置是否正确、pass_proxy是否需要加“/”等。同时,还介绍了修改nginx的error.log日志级别为debug,以便查看详细日志信息。 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • javascript  – 概述在Firefox上无法正常工作
    我试图提出一些自定义大纲,以达到一些Web可访问性建议.但我不能用Firefox制作.这就是它在Chrome上的外观:而那个图标实际上是一个锚点.在Firefox上,它只概述了整个 ... [详细]
  • 本文介绍了高校天文共享平台的开发过程中的思考和规划。该平台旨在为高校学生提供天象预报、科普知识、观测活动、图片分享等功能。文章分析了项目的技术栈选择、网站前端布局、业务流程、数据库结构等方面,并总结了项目存在的问题,如前后端未分离、代码混乱等。作者表示希望通过记录和规划,能够理清思路,进一步完善该平台。 ... [详细]
  • Google Play推出全新的应用内评价API,帮助开发者获取更多优质用户反馈。用户每天在Google Play上发表数百万条评论,这有助于开发者了解用户喜好和改进需求。开发者可以选择在适当的时间请求用户撰写评论,以获得全面而有用的反馈。全新应用内评价功能让用户无需返回应用详情页面即可发表评论,提升用户体验。 ... [详细]
  • 在重复造轮子的情况下用ProxyServlet反向代理来减少工作量
    像不少公司内部不同团队都会自己研发自己工具产品,当各个产品逐渐成熟,到达了一定的发展瓶颈,同时每个产品都有着自己的入口,用户 ... [详细]
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
  • 本文介绍了一些Java开发项目管理工具及其配置教程,包括团队协同工具worktil,版本管理工具GitLab,自动化构建工具Jenkins,项目管理工具Maven和Maven私服Nexus,以及Mybatis的安装和代码自动生成工具。提供了相关链接供读者参考。 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • 背景应用安全领域,各类攻击长久以来都危害着互联网上的应用,在web应用安全风险中,各类注入、跨站等攻击仍然占据着较前的位置。WAF(Web应用防火墙)正是为防御和阻断这类攻击而存在 ... [详细]
  • 恶意软件分析的最佳编程语言及其应用
    本文介绍了学习恶意软件分析和逆向工程领域时最适合的编程语言,并重点讨论了Python的优点。Python是一种解释型、多用途的语言,具有可读性高、可快速开发、易于学习的特点。作者分享了在本地恶意软件分析中使用Python的经验,包括快速复制恶意软件组件以更好地理解其工作。此外,作者还提到了Python的跨平台优势,使得在不同操作系统上运行代码变得更加方便。 ... [详细]
author-avatar
天勤-科技
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有