接口测试Ⅵ——总结与例题

总目录

测试开发系列(功能+接口+性能+自动化)

问题

1、请结合你最熟悉的项目,介绍一下你是怎么做测试的?

  • 首先要自己熟悉一个项目?
  • 功能+接口+自动化+性能是怎么处理?
    • 第1步:需求分析,需求评审
    • 第2步:架构师会输出接口规范;
      前后端开发人员根据接口规范编码;
      功能测试人员,开始靠想象根据需求设计测试用例;
      接口测试人员,根据接口规范设计接口测试用例
    • 第3步:后端开发人员,先提测接口
    • 第4步:接口测试人员,对接口进行测试
    • 第5步:接口测试通过之后,输出接口的测试报告
    • 第6步:功能测试人员,根据接口的测试报告和前端开发的提测,来开始进入功能测试
      接口测试人员,整理接口自动化脚本,并且开始在验收环境进行接口的验收测试。
    • 第7步:功能测试人员测试环境测试通过后,进入验收环境进行功能的验收测试
      UI自动化小组成员,开始编写回归测试的自动化UI测试的代码(web自动化和app自动
      化)
    • 第8步:发布到线上环境,进行最后一轮的功能回归测试。
    • 第9步:跟踪生产BUG

2、你们公司是如何做接口测试的?

  • 分析:一般回答这类问题,最好是结合项目回答,并且要回答出使用工具、技术、涉及的人力的安排、
    工作的成果。

  • 答:我在上一家公司里面,对IHRM人力资源管理系统进行过接口测试。负责的是登陆、员工的增删改查、部门的增删改查、用户资源查询接口测试,一共12个接口。
    在公司里面,我开展接口测试时,先要进行需求分析 ,然后在开发开发代码时,熟悉项目需求。等待开发提测接口之后,拿到接口文档,然后根据接口文档来设计接口测试用例,使用Postman工具进行接口测试工作,经过3天的测试,一般能够完成一轮的接口测试。测试完成之后,如果所有用例都执行完毕,并且所有BUG都回归通过,没有严重等级BUG之后,就可以移交功能测试

    在功能测试人员进行功能测试时,我们可以编写自动化接口测试代码,然后进行接口层回归测试。

    同时,我们接口测试人员会提前在UAT验收环境对环境进行部署和回归测试。等UAT回归通过之后,前端测试就可以介入UAT测试。 (测试环境测试、UAT环境一轮、生产验证一轮,一般生产环境使用的协议是HTTPS协议,测试环境使用的是http协议)

    等前端测试通过并且发布上线之后,我们可以在UAT环境使用持续集成 技术,持续地监控已发布版本地版本质量,达到保证项目质量地目的。

    最后,我们使用接口测试技术,对人力资源管理系统进行了系统接口层测试,测试效率比功能测试回归的效率高了16倍,功能测试需要花费1天时间才能执行完的回归测试工作,我们接口测试人员利用自动化接口测试技术,只用花半个小时。而且,还能持续地监控旧版本的代码质量,提高我们的测试效率。

    (如果面试官不打断)
    在这里面,我使用Postman的断言、关联、引入外部数据文件,对接口进行测试。并且利用newman工具,来生成HTML测试报告,利用XMYSQL来连接数据库,校验数据库的数据。

    其中,有一些大数据的测试场景,我使用的csv文件来完成测试。

    (让人印象深刻的BUG)在工作当中,我遇到一些让我印象深刻的BUG,其中我在测试登陆接口时,偶然发现,我不输入用户名和输入一个特定的密码结果登陆成功了。然后让我意识到这是一个后门,然后提单了,并且询问开发为什么会有这种问题,最后开发说,这是因为数据库中插入了一条脏数据 ,这个数据没有用户名,然后有密码导致,他们说他们会修复。

面试的建议

  1. 最好是能够主导面试的氛围,控制面试官问的问题。(如果他有准备往往很难控制)

  2. 面试必然会问3类:你简历中写的技术;公司中使用的技术;扩展知识(超出面试者个人的知识,都是我们面试时不知道的内容)

  3. 面试时的问题,本质上就是在了解“我们是怎么做的”。

    例如:你知道HTTP协议吗?

    这个问题不是在问题你知不知道HTTP协议,而是再问HTTP协议是什么,有什么特点,由哪些部分组
    成。

    你写过测试用例吗?

    我曾经对登陆接口设计过接口测试用例,按照测试方法论等价类、边界值等方法设计了登陆的测试用
    例,一共设计了46个。主要的关键元素是用例的测试名称,操作步骤,严重等级,预期结果这些部分。

3、什么时候开展接口测试?

  • 在我们公司中,一般是在前后端开发联调后进行接口测试
  • 但是,我可以提前介入,例如在后端开发输出接口文档之后就开始进行模拟的接口测试,编写接口测试脚本
  • 我们可以在UAT阶段进行接口的回归测试
  • 持续集成时,使用自动化接口自动地持续监控版本质量

4、接口测试和UI测试的工作是否重复?

  • 答:您好,请问您问的接口测试和功能测试是否重复吗?

    如果是,那么他们是有重复场景的。 如果不是,那么接口和UI测试是完全分离,没有重复。

    接口测试和功能测试在业务逻辑上是重复的。但是接口测试更注重后端的交互,而功能测试可以注重前端UI的交互。这样的话各有侧重点,能更好的管理测试。

    但是,在当前的行业当中,很多公司基本上都是通过功能测试来进行接口测试,有的时候会省略接口测试,但是这种测试风险比较高,功能测试无法覆盖后端接口测试中性能和安全等测试点,导致测试不充分,有很高的上线风险。

5、接口测试框架怎么搭建的?

  • 答:在公司里面,我们对我们的人力资源管理项目进行了测试,使用的是python +unittest+request+parameterized+HTMLTestRunner_PY3+pymysql来进行接口测试。

  • unittest主要用于管理接口测试用例

  • requests模块用于发送接口请求和封装接口

  • parameterized用于参数化

  • HTMLTestRunner_PY3用于生成美观的测试报告

  • PYmysql操作数据库

    在我们的接口框架中,我们首先是新建一个项目,然后再把项目所需要的目录结构搭建好,接着安装框架需要使用的requests,parameterized,htmltestrunner,pymsyql这些工具包。

    然后先封装人力资源管理系统的登陆、员工模块、部门模块的接口,然后再编写接口测试。

    编写脚本会调用封装的接口,来进行接口测试。最后再run_suite.py中生成测试报告。report目录用来存放测试报告,utils存放自定义工具。(这个过程可以用笔的形式把他们画出来,然后写出调用关系)

    表达 :逻辑要清晰。

6、接口之间有依赖时怎么处理?

  • 答:(也要结合实际的项目回答)可以用关联,我之前在公司中对人力资源管理系统进行接口测试时,其中登陆、员工管理模块都有接口依赖关系,我遇到后,使用Postman工具,先获取上一个接口的返回数据,然后保存到全局变量,接着在下一个接口中调用保存的变量,从而实现关联来解决接口之间的依赖关系。其中,对员工的增删改查时,先获取登陆接口中的令牌,然后在添加员工时,把令牌传入到请求头的Authroization当中,从而实现添加员工接口,实现接口依赖关系。

  • Request也可以请求之后解析保存response

7、如何判断接口测试的结果(成功或失败)?

  • 答:这个问题,要结合实例的案例来进行说明,我举个例子,对注册接口进行测试时,要从3个方面要校验注册的结果。
  • 1,注册成功后,断言注册接口的返回数据是否与预期一致
  • 2,注册成功后,还要对比入库的数据,与预期是否一致,如果涉及多个表的操作,操作也要符合预期。
  • 3,注册成功后,还需要进行业务逻辑校验,如进行登陆操作,判断是否能够使用注册账号登陆成功,(前提条件登陆是正常的)

8、你常用的接口请求方式和区别?

  • 答:常见的接口请求方式有:Get、Post、Put、Delete这四个。
    Get:用于查询
    Post:用于新增
    Put:用于修改
    Delete:用于删除

  • 但是,其中Get和Post有显著的区别。

    • 1,Get请求没有请求体,而Post请求一般都有请求体
    • 2,Get请求没有Post请求安全,因为Get请求的数据是放在URL中显示的,可以直接看到数据。而Post请求是放在请求体,需要抓包才能看到数据。但是他们两个都不是特别安全。真正安全的办法,是对敏感数据进行加密。
    • 3,Get请求的数据包大小没有Post请求那么大
    • 4,Get请求能支持的编码格式没有Post请求多,例如:Get请求一般不用来传递图片,Post请求可以用来处理图片。GET请求只能传递ASCII数据,例如中文不是属于ASCII,所有GET请求中需要传递中文时,需要encode编码数据,把它转换成ASCII码能够支持的数据

9、发送HTTP请求时,传递参数的途径有哪些?

  • 答:URL中的查询参数和URL的资源路径请求体,请求头,Cookie

10、持续集成如何做的?自动化测试多久构建一次?

  • 答:在我们公司的当中,我们会对IHRM系统进行了持续集成接口测试,用来验证旧版本的质量,同时还能监控环境的稳定性。

    在我们公司里面,使用了jenkins + git + 接口测试代码 + email + publish html report来做持续集成,使用了到了定时构建、轮巡构建等构建。用来持续地运行和监控版本质量。

    一般在我们公司当中,一天构建2次,主要是开发会在上午和下午下班前分别提交一次代码,所以构建2次。

    但是呢,有时候如果要监控环境地稳定性,那么是1小时执行1次。一天24次。

11、使用工具和代码实现接口测试的区别?

  • 工具:使用简单,但是不灵活。可以应用一些非定制化需求测试。
  • 代码:非常灵活,但是学习成本高。可以应用一些定制化测试。
  • 定制化:主要是指,针对一些功能定制化的开发。例如:某个项目有一个标准版本的代码,这个代码提供了登陆、个人用户信息管理、商品列表、购物车、支付、验证码、商超、金币商城等标准功能模块的产品。如果这个时候有一个客户提出需要增加别的功能,例如秒杀功能,那么这种他们提出的功能,就是定制化的功能。

12、项目上测试了多少接口?

接口数量的参考

  • 组织架构
    • 添加
    • 修改
    • 查询(查询1个,查询多条,条件查询)
    • 删除(删除1个,删除多个)
  • 员工管理添加
    • 修改
    • 查询(查询1个,查询多条,条件查询)
    • 删除(删除1个,删除多个)
  • 劳动合同
    • 添加
    • 修改
    • 查询(查询1个,查询多条,条件查询)
    • 删除(删除1个,删除多个)
  • 权限管理
    • 添加
    • 修改
    • 查询(查询1个,查询多条,条件查询)
    • 删除(删除1个,删除多个)
  • 福利管理
    • 添加
    • 修改
    • 查询(查询1个,查询多条,条件查询)
    • 删除(删除1个,删除多个)
  • 工资管理
    • 添加
    • 修改
    • 查询(查询1个,查询多条,条件查询)
    • 删除(删除1个,删除多个)
  • 考勤管理
    • 添加
    • 修改
    • 查询(查询1个,查询多条,条件查询)
    • 删除(删除1个,删除多个)
  • 等模块

13、HTTP和HTTPS的区别

在这里插入图片描述

14、GET和POST的区别

在这里插入图片描述

15、Cookie和Session的区别

在这里插入图片描述

16、定位前后端bug

在这里插入图片描述

  • 要分析这个问题,我们使用抓包工具fiddler来分析(浏览器的F12),来通过fiddler判断点击发表按钮,有没有触发接口请求。
  • 如果没有触发接口请求,那么可能是前端问题。如果触发了接口请求,但是服务器没有响应数据,那么是服务器问题
  • 如果触发了接口请求,服务器响应数据不正确,那么也是服务器问题
  • 如果触发了接口请求,服务器响应数据正确,那么又没有反应说明是前端问题
  • 还有一些特殊的场景,例如令牌失效,这个停留时间超过了令牌有效期,导致会话失效,从而能够导致点击发表按钮没有返回。
  • 鼠标失灵
  • 电脑死机
  • 页面卡死
  • 没有网络等场景,都会导致点击发表没有任何反应
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

zkFun

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

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

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

打赏作者

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

抵扣说明:

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

余额充值