接口测试面试题

1.如何把自动化测试在公司中实施并推广起来

首先选择自动化工具比如ui自动化选择selenium,接口自动化选择python++requests+pytest+allure

然后搭建自动化测试框架,然后逐步开展自动化,自动化开展的顺利并在项目中取得一定的成果之后在推广到其他项目组

2.自动化测试用例如何编写?

自动化测试案例包括三部分,setup、测试步骤(包括请求场景、断言)、teardown

3.自动化测试的价值是什么

自动化测试的价值不是在于发现新的bug而是在于发现旧的功能是否有bug出现

回归测试人工跑测试案例远不如自动化效率高

4.在上一家公司做自动化测试用的什么框架

pytest+requests+allure

5.什么是持续集成

关联git进行代码管理,持续集成可以帮助开发人员把代码合并到共享分支,然后通过自动构建运行,如果新代码与现有代码存在冲突可以轻松快速的进行修复

测试用例代码集成到主干之前必须执行通过,执行失败就不能集成

持续集成一般流程:提交代码--代码仓库配置了钩子,只要代码提交或合并到主分支就跑自动化测试--构建(自动化测试通过后运用jenkins构建成可执行的任务)--全面测试

开发-合并(集成)-测试(自动化测试脚本)-jenkins构建测试

6.你是怎么测试接口的

先了解业务功能-入参出参意义-单接口-多接口-正向流程,异常流程-数据库-日志检查

先了解业务功能-入参出参-依据测试用例方法完成测试用例的设计,先业务场景后参数判断(边界值、格式、异常情况、组合场景)然后使用接口测试工具完成接口测试并在测试过程中查看日志及数据以确保接口测试结果的正确性

7没有接口文档如何做接口测试

如果需要补充的话:先跟开发沟通,然后整理接口文档

不需要的话就可以通过抓包工具或者F12、查日志查看接口请求参数,有不懂的再问开发同学

8、接口测试用例的编写要点有哪些?

1)必填字段:请求参数必填项、可选项

2)合法性:输入输出合法、非法参数

3)边界:请求参数边界值等

4)容错能力:大容量数据、频繁请求、重复请求(如:订单)、异常网络等的处理

5)响应数据校验:断言、数据提取传递到下一级接口

6)逻辑校验:如两个请求的接口有严格的先后顺序,需要测试调转顺序的情况

接口通过参数值或数据库的状态控制测试顺序

7)性能:对接口模拟并发测试,逐步加压,分析瓶颈点

8)安全性:构造恶意的字符请求,如:SQL注入、XSS、敏感信息、业务逻辑(如:跳过某 些关键步骤;未经验证操纵敏感数据)

9、说一下什么是Sql注入?

通过sql语句(web表单恶意输入sql语句)实现无账号登录,篡改数据库

因为客户端输入的参数是sql语句的一部分,

降低数据库权限,参数对特殊字符转换或校验,用检测工具扫描

10、接口测试中的加密参数如何处理

首先了解参数的加解密方式,常见的有md5aesrsa等等,如果是aes的需要找开发要私钥,如果是rsa需要找开发要公钥和私钥,然后在接口测试工具中引用加解密的代码实现参数的加解密过程,实现参数加解密的处理;如果公司有自定义的加密算法则需要找开发要加解密的代码实现,然后在测试工具中使用

11、pytest里如何运行case

python -m pytest -s -v test.py

12、*自动化测试中数据怎么处理的?

放到fixture中,

放到excel文件里,

conftest.py文件存放参数化函数,可以作用于模块内的所有测试用例

13、*简单介绍一下自动化项目整体框架的结构

自动化测试框架涵盖基础方法封装、自定义异常封装、工具类封装、元素管理封装、Page Object模式封装、日志封装、数据管理封装、失败重试封装、浏览器/手机适配封装、数据库操作封装、测试用例管理封装、测试报告

14、Jmeter工具如何做接口之间的关联,简述?

接口关联指的就是一个接口要使用另一个接口的返回值作为参数,这种我们在jmeter中叫做关联。

关联的实现方式有多种:

a使用正则表达式提取器获取上一个请求的响应结果中的某个值,储存在某个变量中,然后下一个接口使用变量进行引用

b使用json提取器获取上一个请求的响应结果中的某个值,储存在某个变量中,然后下一个接口使用变量进行引用

c使用beanshell后置处理器,解析响应结果存储在变量中,然后下一个接口使用变量进行引用

跨线程组关联则需要将关联字段设置为全局属性

15、你们公司业务中,自动化和手工分别占比多少?分别用来做什么业务?

首先各公司自动化和手工的占比取决于对自动化测试的投入,这个问题的回答建议做好数据,比如我们的功能测试用例总计1000,从其中分析出要实现的自动化用例300条,那么自动化的占比就出来了。那么哪些测试用例会被用来做自动化,稳定模块的用例、功能优先级高的用例。手工测试一般用来做新功能测试业务,自动化一般用来做旧的功能用来回归业务

16、cookie 和 session 的区别?

Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份

区别:

1、数据存放位置不同:

cookie数据存放在客户的浏览器上,session数据放在服务器上。

2、安全程度不同:

cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗,考虑到安全应当使用session

3、性能使用程度不同:

session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,考虑到减轻服务器性能方面,应当使用cookie

4、数据存储大小不同:

单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20cookie,而session则存储与服务端,浏览器对其没有限制

17、自动化测试中用例依赖的数据如何构造

不管是接口自动化还是ui自动化都会存在自动化case依赖数据如何构造的问题,可以从三个方面去考虑,

第一个是

在测试前采用接口去构造需要的数据;

第二个是

使用初始化sql去初始化数据,但是如果说表结构复杂的话,sql编写也是比较大的工作量;

第三个是

提前准备好一套数据,并且将该数据对应的数据库进行备份,在之后每次执行测试前先备份当前数据库数据,再导入之前的测试数据,再执行测试,测试执行完后再恢复原有的数据

18、接口测试时碰到接口重定向如何去测试?

首先接口测试方式不同则处理方式不同,如果用的jmeter则无需特殊处理,jmeter默认会自动处理重定向接口自动发起对重定向的接口地址的访问并返回结果;如果是采用代码框架的方式则需要特殊处理,拿到第一个接口响应header中的location字段对应的接口地址,发起对该地址的请求

19、接口依赖第三方接口,但是第三方接口却有问题怎么

办? 

这种情况下我们会采用mock的方式来模拟第三方接口的返回,但是注意这种mock一般都需要开发配合,将自己公司的接口调用指向mock出来的接口服务

20、mock技术一般用在什么场景

接口依赖第三方接口,但是第三方接口却有问题

21、数据库校验哪些场景用到了

一,比如项目没有注册功能,需要我们手动向表中添加用户名和密码

  • 需要核对数据的准确性,对比前后台操作,确保数据流转准确
  • 比如需要新建用户,只需要测某个输入框的边界值,如果在前台页面一直新建保存提交,并且输入其他不需要的测试的必输项,这样效率很低,这时候可以直接在数据库修改某个字段
  • 数据库怎么备份还原

  • mysqldump -u root -p 123456 -P3306 数据库名 > 0101.sql
  • mysqldump -u root -p 123456 -P3306 数据库名 < 0101.sql

22、接口测试时碰到接口重定向如何去测试?

首先接口测试方式不同则处理方式不同,如果用的jmeter则无需特殊处理,jmeter默认会自动处理重定向接口自动发起对重定向的接口地址的访问并返回结果;

如果是采用代码框架的方式则需要特殊处理,拿到第一个接口响应header中的location字段对应的接口地址,发起对该地址的请求

23、接口直接的关联怎么处理?

比如贷款申请需要签约成功返回的合同编号字段,那么签约接口renturn的合同编号可以用一个中间变量去接收,贷款申请请求的时候传入中间变量就可以了,如果是依赖登录接口,就把登录成功返回的token存到文件中,请求的时候去文件里拿token就可以了

24、自动化脚本是怎么管理的?

通过Git

25、http协议,报头字段的作用

因为http是无状态的连接,如果要保持连接状态就需要keep-alive保持连接,有时间限制,所以就通过cookie和session技术可以保持用户的一些状态

26、设计接口测试用例时,涉及电商系统,包括很多修改,如商品、商家、店铺等,针对这些数据的修改,会涉及到很多参数,如商品的名称、尺寸、颜色等,那么涉及实现修改接口时,如何确定要传什么参数?是只需要传我要修改的参数还是全部都要传?

根据接口文档看哪些参数是必传的,比如测试修改商品查看涉及的必传参数有哪几个,业务场景中如果需要全部传的话必须全部传,不需要的话只传必输参数就可以,如果必输参数太多上百那种使用python+requests循环遍历参数输出哪些参数,参数不多可以通过一个个必输参数不输测试参数是否符合需求

27、上传文件设计测试用例

首先是选择本地文件,根据需求看所要上传的文件有没有类型限制比如,exe,excel,word,jpg等等,然后是大小有没有限制,还有旋转未上传的时候本地删除是否还能上传成功。

28、一个订单的几种状态如何全部测到,如?未处理、处理中、处理失败、处理成功

通过修改数据库数据的状态

29、接口压测你是怎么做的

使用jmeter,首先确保接口请求没有问题,

根据压测需求确定并发数和时间段,

然后设置线程数,在线程组中设置并发数,设置时间

检测压测瓶颈,并发数达到某个点以后,吞吐量开始下降就不用再加并发数了

检测平均相应时间,最大响应时间,检测cpu,内存使用情

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菜鸟学识

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值