接口测试面试题总结

  1. 什么是接口?
    接口就是API,application program interface,应用程序接口。
    接口本质上是程序开发的函数和方法,提供参数和返回值。
    模块与模块之间相互作用的部分,A模块向B模块发送数据并且B模块向A模块响应数据。
  2. 什么是接口测试?
    A模块发送不同的数据,B模块也能响应不同的结果值,我们判断响应值是否与期望值一致。
  3. 没有接口文档怎么做接口测试?
    1)首先了解被测试的业务,理解设计层面和需求层面的业务
    2)如果确实没有接口文档,我会先做一部分(大概10%),然后组织开发针对完成的部分进行评审,吸取大家的意见,大家同意接口文档后,开发继续完成接口文档的剩余部分。
    3)抓包的确是可以了解接口的通信细节,但是抓出来的数据是实际结果,而我们希望在接口文档中看到期望结果,我们不能拿实际结果当期望值用,所以不能用抓包的数据当接口测试的依据。
  4. 你们公司的接口测试流程是怎样的?
    1)从开发要接口文档,了解接口业务,主要包括接口地址、请求方式、入参、出参、返回格式等信息
    2)使用Jmeter进行接口测试,创建一个线程组,然后建立一个http请求默认值,再新建多个http请求,一个请求是一个用例,输入相应接口路径、访问方式、参数等,创建断言和察看结果树
    3)最后调用并执行测试用例,编写测试报告
    4)在做接口测试的时候遇到很多问题,都是自己独立解决的,比如:返回值乱码(修改Jmeter的配置文件为UTF-8)
  5. 接口组成要素有哪些?
    1)接口名称
    2)请求的url
    3)请求的方法:get、post
    4)请求的参数:名称、类型、选填/必填、含义、取值范围、缺省值
    5)请求示例,返回示例
    6)返回参数说明:名称、类型、含义、取值范围
  6. python做接口测试要用哪些插件?
    1)requests:是一个HTTP库,作用是发送HTTP请求,获得响应
    2)unittest:自动化测试框架
    3)ddt:data driver test,数据驱动测试
    4)pymysql:连接数据库
    5)openpyxl:可读写excel表
    6)yagmail:发送邮件
    7)BeautifulReport:测试报告
  7. 为什么要做接口测试?
    1)接口测试属于集成测试,测试介入越早,越能在项目早期发现问题,修复问题成本降低;
    2)接口测试找bug的能力要比基于ui做自动化测试强一些,找的的bug严重程度要高一些。
  8. 接口测试过程中发现过哪些bug?
    1)常规错误,接口没有实现,没按照约定返回结果,边界值处理异常等 输入异常值,比如:空值、特殊字符、超过约定长度等,接口抛错,没做封装处理
    2)输入错误的参数、多输入、少输入参数,接口可能出现错误
    3)安全性问题,比如:明文传输、返回结果含有敏感信息,没对用户身份信息做校验,没做恶意请求拦截等
    4)性能问题,比如:接口并发插入多条相同操作,响应时间过长,接口压测出现瓶颈等。
  9. 为什么要写接口测试用例?
    1)理清思路,避免漏测和重复测试
    2)提高测试效率、跟进测试进度、告诉领导做过、跟进重复性工作
    3)更好的记录问题、发现问题、复现问题、同时这也是接口测试流程中的一个产物
  10. 接口测试用例设计主要考虑哪些?
    1)功能是否正常
    2)功能是否按照接口文档实现、是否依赖业务、异常情况(参数异常、数据异常)、安全测试等。
  11. 接口测试用例包含哪些内容?
    用例名称、接口地址、请求方式、前置条件、用例描述、请求头部、请求参数、状态码、预期返回结果。
  12. 接口测试如何设计用例?
    接口测试一般考虑入参形式的变化和接口的业务逻辑。
    一般设计接口测试用例采用等价类、边界值、场景法居多。
    接口测试用例设计思路:
    1)接口业务逻辑测试,接口逻辑测试是根据业务逻辑,输入参数,输出值的描述,对正常输入情况下所得输出值是否正确的测试,也就是测试对外提供的接口服务是否正常。
    2)模块接口测试,模块接口测试是为了保证数据的安全及程序在异常情况下的逻辑正确性而进行的测试模块,接口测试主要包括以下几个方面:
    a.鉴权码token异常(为空、没有、错误、过期)
    b.其他参数的异常,必填项的检查,参数的长度、类型、格式异常。
    常规的参数有数字、字符串、日期;
    参数长度有位数、身份证、电话的长度;
    参数的类型有数字精度、字母、中文、带空格的参数、特殊字符;
    日期格式,日期年月日、年月日时分秒、日期格式(包含/-:等)
    c.错误码异常覆盖
  13. 通用接口用例设计?
    1)通过性验证:首先需要保证这个接口的功能是正常的,也就是通过性测试,按照接口文档上的参数,正常传入,是否可以返回正确的结果
    2)参数组合:比如现在有一个操作商品的接口,有个字段type,传1的时候代表修改商品,商品id、商品名称、商品价格有一个是必传的,这样就要测参数组合了,type传1的时候,只传商品名称能不能修改成功,id、名称、价格都传的时候能不能修改成功
    3)接口安全:
    a.绕过验证,比如说购买了要给商品,它的价格是300元,那我在提交订单的时候,把商品的价格改成100元,后端有没有做验证,再狠一点,我把金额改成-100,是不是我的余额还会增加?
    b.绕过身份验证,比如说修改商品信息接口,必须得是卖家才能修改,那我传一个普通用户,能不能修改成功,我传一个其他的卖家能不能修改成功?
    c.参数是否加密,比如说我登陆的接口,用户名和密码是否加密,如果不加密的话,别人拦截到你的请求,就能获取到你的信息,加密规则是否容易破解。密码安全规则,密码的负责程度校验。
    4)异常验证:所谓异常验证,也就是我不按照你接口文档上的要求输入参数,来验证接口对异常情况的校验。比如说必填的参数必填;输入整数类型的,传入字符串类型;长度是10的,传入11,总结三种,必传非必传、参数类型、入参长度。
  14. 接口测试报告包含哪些内容?
    系统接口概况、测试目的与范围、测试工具与资源、测试记录及结果分析(单场景接口、混合场景接口)、测试结论。
  15. 测试指标范围包含哪些?
    1)被测接口接收请求和返回报文
    2)被测接口返回状态、被测接口对应业务逻辑处理、涉及数据沉淀的处理、复杂场景下多个接口串联交互。
  16. 做接口测试运用过哪些测试工具?
    1)Postman
    2)JMeter
    3)python + requests
  17. 抓包工具用过哪些?
    1)Fiddler
    2)Wireshark
  18. 为什么进行抓包测试?
    1)有些时候公司没有标准的接口文档,只能抓包来获取接口信息
    2)抓包可以迅速找到请求,通过抓包可以查看整个请求过程,以及响应过程,可以通过抓包来分辨前台还是后台bug
    3)通过抓包可以查看是否有敏感信息泄露,比如用户密码和个人账号信息等数据
    4)通过抓包进行测试,拦截请求,修改请求数据,查看对应响应结果,抓包本身就是接口测试的一部分。
  19. TCP/IP参考模型有哪几层?
    应用层、传输层、网络层、网络接口层
    OSI七层参考网络模型:
    应用层、表示层、会话层、传输层、网络层、数据链路层、物理层
  20. 常用协议端口号?
    1)21/TCP,FTP文件传输协议
    2)22/TCP,SSH安全登录、文件传送(SCP)和端口重定向
    3)23/TCP,Telnet不安全的文本传送
    4)25/TCP,SMTP简单邮件传输协议
    5)69/UDP,TFTP(Trivial File Transfer Protocol)微型文件传输协议
    6)80/TCP,HTTP超文本传输协议
    7)443/TCP,HTTPS
    8)1433,SqlServer服务端口号
    9)1521,Oracle服务端口号
    10)3306,Mysql服务端口号
    11)8080,Tomcat默认服务端口号
  21. 常见的状态码有哪些?
    1XX:信息提示,用于指定客户端响应的某些动作
    2XX:成功,用于表示请求成功
    3XX:重定向,用于移动的文件并且常被包含在定位头信息中制定的新的地址信息
    4XX:客户端错误,用于指出客户端的错误
    5XX:服务器错误,用于指出服务器的错误
  22. 接口测试注意事项?
    1)改变请求参数,看响应结果是否和接口文档一致
    2)查看参数是否有敏感信息(比如个人账户信息,资金信息等)
    3)查看是否对关键参数进行加密处理(密码信息)
    4)所有列表页接口必须考虑排序值
    5)接口返回的图片地址能否打开,图片尺寸是否符合需求
    6)接口有翻页时,页码与页数的异常值测试
    7)当输出参数有联动性时,需要校验返回两参数的实际结果是否都符合需求每个接口入参的默认值、异常类型、非空校验
    8)入参支持多个值时,要考虑传的值个数多的情况下,接口会不会报错。
  23. 接口测试执行中对比数据库吗?
    肯定要对比,应为接口返回值的数据来源于数据库,接口对数据的操作还要进行深层次的数据库检查。
  24. 请简述一下cookie、session、token的区别?
    cookie数据存放在客户的浏览器上,session数据放在服务器上,token是接口测试时鉴权码,一般情况下登陆后才可以获取到token,然后在每次请求接口时需要带上token参数。
    cookie不安全,别人可以分析存在本地的cookie并进行cookie欺骗,考虑到安全应当使用session可以将登陆信息等重要信息存放为session,其他信息可以保存在cookie中。
  25. 谈谈你对HTTP协议的了解?
    超文本传输协议,端口为80,是由请求和响应两部分组成。
    请求是由请求头、请求行、请求正文组成,响应是由响应头、响应行、响应正文组成。
    面向安全使用HTTPS。
  26. 谈谈你对HTTP请求和webservice请求的了解?
    1)HTTP接口:走http协议,通过路径来区分调用的方法,请求报文都是key-value形式,返回报文一般都是json格式,由get和post等方法,这也是最常用的两种请求方式。可以使用的工具有postman、jmeter、loadrunner等。
    2)webservice接口:走soap协议,通过http传输,请求报文和返回报文都是xml格式的,都是通过工具才能进行调用与测试,可以使用的工具有soapUI、jmeter、loadrunner等。
  27. 在接口测试中,关联是什么含义?如何使用postman设置关联?
    关联就是把上一个接口返回值的部分截取出来,作为下一个接口的参数,能让接口串联运行。
    在postman中设置关联的步骤如下:
    1)通过正则表达式提取的方式或者json取值的方式,把下一个接口需要的信息从上一个接口截取出来
    2)使用设置全局变量的代码把取出来的值保存到全局变量中
    3)在下一个接口中,使用全局变量代替要替换的静态值
  28. 接口自动化测试框架一般分为几层?
    自动化测试框架一般分为5层:配置层、脚本层、数据层、测试报告层、驱动层
    接口项目工程规划大致分为:
    1)测试结果类,比如叫test_result,存放一些日志文件、测试报告
    2)测试用例类,比如叫testcase,分模块存放测试用例
    3)公共方法类,比如叫common,存放读取excel数据的方法,发送http请求的方法,手机log日志的方法,发送邮件,操作数据库的方法
    4)配置文件类,比如叫config,存放指定运行部分用例的配置文件,连接数据库的配置文件
    5)驱动运行类,比如叫run方法,运行所有用例
  29. 测试框架里如何做到数据和代码分离?
    1)数据写在excel表格中,常用的读取excel的第三方库有openpyxl,xlrd等,当然读取excel数据最好用的还是用来做数据分析的pandas模块,不用写那么多for循环
    2)数据存放到yaml文件中,一个模块或者是一个功能写一个yaml文件,最后写一个读取yaml文件的公共方法
    3)数据存放在数据库中
    4)数据存放在json文件中
  30. python做接口测试要用到哪些插件?
    requayts、unittest、ddt、openpyxl、pymysql、yagmail、beautifulreport

你可能感兴趣的:(接口测试,python)