• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

博客园    首页    新随笔    联系   管理    订阅  订阅
接口自动化常见面试题

1、按你的理解,软件接口是指什么?
  答:就是指程序中具体负责在不同模块质检传输或接受数据,并做处理的类或者函数。

2、HTTP和HTTPS协议区别?
  答:HTTPS协议需要到CA(Certificate Authority,证书颁发机构)申请证书,一般免费证书比较少,因而需要一定费用;
         HTTP是超文本传输协议,信息是明文传输,HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全;
         http和https使用的是全完不同的连接方式,用的端口也不一样,http是80,HTTPS是444。

3、HTTPS在哪一层?
  答:应用层。

4、get和post区别是什么?
  答:post和get都是向服务器提交数据,并且都会从服务器获取数据。
    区别:1.传送方式:get通过地址栏传输,post通过报文传输
       2.传送长度:get参数有长度限制(受限于url长度),而post无限制
       3.get产生一个TCP数据包(对于get方式的请求,浏览器会把http header和data一并发送出去,服务器响应200返回数据),
        post产生两个TCP数据包(对于post,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 返回数据)
       4.get请求参数会被完整保留再浏览历史记录里,而post中的参数不会被保留
       5.再做数据查询时,建议用get方式;而在做数据添加、修改或删除的时候,建议用post

5、常见的post提交数据方式?
  答:主要有四种方式:application/x-www-form-urlencoded、multipart/form-data、application/json、text/xml等。

6.什么是http协议无状态协议?怎么解决http协议无状态协议
  答:无状态是指协议对于事务处理没有记忆能力,服务器不知道客户端是什么状态。即我们给服务器发送http请求后,服务器根据请求会给我们发送数据过来,但是,发送完不会记录任何信息。http是一个无状态协议,这意味着每个请求都是独立的,Keep-Alive没能改变这个结果。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时,它的应答就较快。http协议这种特性有优点也有缺点,优点在于解放了服务器,每一次请求“点到即止”不会造成不必要连接占用,缺点在于每次请求会传输大量重复的内容信息。客户端与服务器进行动态交互的web应用程序初选之后,http无状态的特性严重阻碍了这些应用程序的实现,毕竟交互是需要承前启后的,简单的购物车程序也要知道用户在之前选择了什么商品。于是,两种用于保持http连接状态的技术就营运而生了,一个是cookie,一个则是session。

7.cookie和session的区别
  答:cookie数据存放在客户的浏览器上,session数据放在服务器上
    cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗,考虑到安全应使用session
    session会在一段时间内保存在服务器上。当访问增多,会比较占用服务器的型能,考虑到减轻服务器性能方面应使用cookie
    单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie
    可以将登录信息等重要信息存放为session;其他信息需要保存,可以放在cookie

8.请求接口中常见的返回状态码?
  答:1××  -  信息提示(表示临时的响应,客户端在收到常规响应之前,准备接受一个或多个1××响应)
    2××  -  成功(表明服务器成功接受了客户端请求)
    3××  -  重定向(客户端浏览器必须采取更多操作来实现请求。例如:浏览器可能不得不请求服务器上的不同的页面,或通过代理服务器重复该请求)
    4××  -  客户端错误(发送错误,客户端有问题。例如:客户端请求不存在的页面,客户端未提供有效的身份验证信息)
    5××  -  服务器错误(服务器由于遇到错误而不能完成该请求)

9、什么是DNS?
  答:DNS是域名系统,是用来做域名解析的,它会在你上网输入网址后,把它转换成IP,然后去访问对方服务器;没有它,你想上百度就要记住百度的IP,但有了DNS的处理,就只需要记住对应网站的域名,即网址就行。

10、你们公司是如何做接口测试的?
  答:接口测试实际跟一般测试不同就是测试用例的涉及部分。
    1.获取接口规范
    2.涉及接口测试功能用例(主要从用户角度出发看接口能否实现业务需求,用例设计就是黑盒用例那一套)
    3.各种入参验证(正常情况,异常情况包括输入参数个数不对,类型不对,必选,非必选,还有考虑参数有互斥或关联的情况)
    4.接口返回值各种验证(符合接口文档需求)
    5.了解接口实现逻辑,实现逻辑覆盖(语句/条件/分支.....)
    6.接口能并发执行吗、安全吗、性能满足要求吗
    7.发现问题跟功能测试一样,该报bug报bug,该跟踪状态的跟踪状态

11、怎么设计接口测试用例?
  答:通常,设计接口测试用例需要考虑以下几个方面:
    1.是否满足前提条件:
     有些接口需要满足前提,才可成功获取数据。常见的,需要登录token
     逆向用例:针对是否满足前置条件,设计0-n条用例
    2.是否携带默认值参数
     正向用例:待默认值的参数都不填写,不传参,必填参数都填写正确且存在的常规值,其他不填写,设计1条用例
    3.业务规则、功能需求
     这里根据时间清空,结合接口参数说明,可能需要设计N条正向用例和逆向用例
    4.参数是否必填
     逆向用例:针对每个必填参数,都设计1条参数值为空的逆向用例
    5.参数之间是否存在关联
     有些参数彼此之间存在相互制约的关系
    6.参数数据类型限制
     逆向用例:针对每个参数都设计1条参数值类型不符的逆向用例
    7.参数数据类型自身的数据范围限制
     正序用例:针对所有参数,设计1条每个参数的参数值再数据范围内为最大值的正向用例

12、接口测试,测什么?
  答:接口功能是否正确实现;
    返回值测试 - 返回值除了内容要正确,类型也要正确,保证调用方能正确地解析;
    参数值边界值、等价类测试;
    错误和异常处理测试
    
    输入异常值(空值、特殊字符、超过约定长度等),接口能正确处理,且按预期响应;
    输入错误的参数,接口能正确处理,并按预期响应;
    多输入,少输入参数,接口能正确处理,且按预期响应;
    错误传输数据格式(如json格式写成form格式)测试;
    安全性测试,主要指传输数据的安全性

    敏感数据(如密码、秘钥)等是否加密传输
    返回数据是否含有敏感数据,如用户密码、完整的用户银行账号信息等
    接口是否防止恶意请求(如大量伪造请求接口致使服务器崩溃)
    性能测试,如接口的响应时间、并发处理能力、压测处理情况

    并发请求相同的接口(特别为post请求),接口的处理情况(如插入了相同的记录导致数据出错,引发系统故障)
    接口响应时长在用户可忍受的范围内
    对于请求量大的接口做压测,确定最大的瓶颈点是否满足当前业务需要

13、平常用什么工具测接口?
  答:常用的http协议接口测试工具,如:postman,fiddler,jmeter;webService接口用SoapUI,jmeter等。

14、没有接口文档,如何做接口测试?
  答:本题主要考情商,用抓包工具把接口抓取处理,然后针对性进行测试;接口中字段信息不清楚的,找时间集中寻求开发解答(常用的抓包工具Fiddler、Charles等)

15、在手工接口测试或者自动化接口测试过程中,上下游接口有数据依赖如何处理?
  答:用一个全局变量来处理依赖的数据,比如登录后返回token,其他接口都需要这个token,那就用全局变量来传token参数

16、接口测试中,依赖登录状态的接口如何测试?
  答:依赖登录状态的接口的本质上是在每次发送请求是需要带上session或者cookie才能发送成功,在构建post请求时添加必要的session和cookie

17、如何模拟弱网做测试?
  答:Fiddler和Charles都可以模拟弱网测试,平常说的模拟丢包,也是模拟弱网测试

18、你平常做接口测试的过程中发现过哪些bug?
  答:常规错误,接口没实现,没按约定返回结果,边界值处理出错
    输入异常值(空值,特殊字符,超过约定长度等),接口报错,没错封装助理
    输入错误的参数,多输入,少输入参数,接口可能出现的错误
    安全性问题,如明文传输、返回结果含有敏感信息,没有对用户身份信息做校验,没做恶意请求拦截等
    性能问题,如接口并发插入多条相同操作,响应时间过长,接口压测瓶颈等

19、当一个接口出现异常时,你是如何分析异常的?
  答:先抓包,用fiddler或Charles工具抓包,或者浏览器上F12调试工具,查看请求和返回报文;
    查看后端日志,如Linux系统通过xshell脸上服务器,查看接口日志,查看是否有报错信息(命令:tail -f 日志文件)

20、如何分析一个bug是前端还是后端的?
  答:先抓包看请求报文,对着接口文档,看请求报文有没有问题,有问题就是前端发的数据不对;
    请求报文没问题,就看返回报文,返回的数据不对,那就是后端的问题。

21、你们做接口测试自动化吗?
  答:现在针对大量应用,普遍推崇做接口测试自动化,维护成本低,收益高。常用的工具:jmeter,pytest

22、不可逆操作,如何处理,比如删除接口如何测试?
  答:比如工作流这种,流向不同的人状态不一样,操作权限不一样,测试的时候,每种状态都要测,就需要自己会造数据了。
    平常手工测试造数据,直接在数据改字段状态。那么自动化也是一样,造数据可以用Python连数据库,做增删改查的操作,业务上一般都是假删除,即改字段
    测试用例前置操作,setUp做数据准备;后置操作,tearDown做数据清理
    所以每个接口用例跑之前和之后都清理下产生的数据,保证了账号的重复使用

23、怎么检查接口返回的数据是否正确(即怎么做断言)?
  答:1.通过断言的方式,即对传入的参数自己实现设定好预期返回值,根据返回值做断言
    2.对比接口返回的数据与我们数据库中查询到的数据是否相符;可通过接口返回的数据和数据库查询到的数据先转为list,然后进行list对比,相等返回True,不相等返回False

24、你之前的接口自动化具体是怎么做的?
  答:主要通过Python,unittest框架和request库来完成。case目录存放所有的测试用例,lib目录存放自己封装的一些代码,result目录存放测试结果和日志,run.py是主程序。
    1.提取脚本可重复项,封装简化脚本,利用公共类或公共函数等方法,提高脚本的利用率、可读性及可维护性
    2.提取脚本中可变的参数,修改成变量
    3.利用Excel、ini、数据库、yaml等参数化数据信息,使业务与数据分离,实现数据驱动测试
    4.引入日志,出现问题能迅速定位(import logging)
    5.添加断言并生成可视化报告(安装HTMLRunner - 下载后,放入lib中调用HTMLTestRunner中的方法,来生成报告)
    6.利用Jenkins持续集成工具,实现自动打包,按时发布并执行,生成结果邮件发送项目相关人

25、在使用pytest框架时,遇到过什么问题

 

26、你对pytest框架做过哪些优化?
 
 答:1.在应用自动化框架时,由于之前遇到的都是在同一个库里查询数据,所以框架里只适用于单库查询的断言,但语音问答中有接口的数据需要从多库查询的,所以框架数据库断言需要做出调整
     即在用例Excel中sql字段采用字典{库名:sql}的格式,先将Excel里取到的字符串转成字典,循环该字典,key即为库名,然后链接数据库,执行value也就是对应的sql,取得查询结果为list
    2.原来的框架中,有前置条件和没有前置条件的是分两个模板,后来就是做了个判断,现在已经优化到一个模板中,使得代码更简洁,模板包容性更强
    3.原来的框架中断言的实际结果层级需要手动改代码,且一个测试类只能写死一个层级,非常不方便,通过学习,现在把实际结果的层级单独提取出来,作为一个配置项,这样即使多个接口的层级都不一样,也能使用一个测试类执行用例,使框架更灵活
    4.原来的框架生成的报告后,如果删掉一个用例,再次执行时,报告中仍会有删掉的那条用例的数据,通过优化,每次执行都会先把原来的报告彻底删除,再重新生成,就不会再有历史脏数据

26、面向对象的三大特性?

27、线程和进程的区别?

28、pytest的装饰器的作用?

29、sql主键、 索引、事务的区别?
  答:1. 主键一定是唯一性索引,唯一性索引并不一定就是主键。 
    2. 一个表中可以有多个唯一性索引,但只能有一个主键。
    3. 主键列不允许空值,而唯一性索引列允许空值。 
    4. 索引可以提高查询的速度。 
    主键和索引都是键,不过主键是逻辑键,索引是物理键,意思就是主键不实际存在,而索引实际存在在数据库中

30、怎么保证接口自动化的稳定性?
  
答:

31、你的框架中excel里面的断言内容都是什么格式的,比如有很长的断言 json,怎么去断言?
  
答:

32、发送邮件 授权码怎么取的
  答:

33、测试平台和接口自动化那个框架有啥区别?平台跟这个框架比优势是什么?
  答:

34、写了多少接口,大概多少条用例?
  
答:

 

posted on 2022-04-12 17:12  搁浅小夕  阅读(345)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3