1、为什么要做接口测试(必要性)
1.可以发现很多在页面上操作发现不了的bug
2.检查系统的异常处理能力
3.检查系统的安全性、稳定性
4.前端随便变,接口测好了,后端不用变
5.可以测试并发情况,一个账号,同时(大于2个请求)对最后一个商品下单,或不同账号,对最后一个商品下单
6.可以修改请求参数,突破前端页面输入限制(如金额)

2、当一个接口出现异常时候,你是如何分析异常的?
1.抓包,用fiddler工具抓包,或者浏览器上f12,app上的话,那就用fiddler设置代理,去看请求报文和返回报文了
2.查看后端日志,xhell连上服务器,查看日志

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

接口测试:是测试系统组件间接口的一种测试方法
接口测试的重点:是检查数据的交换,传递的正确性,以及接口间逻辑依赖关系。
接口测试的意义:实现开发期并行测试,减少页面层测试的深度,缩短整个项目的测试周期

基本的接口功能自动化测试流程为:需求分析-->用例设计-->脚本开发-->测试执行-->结果分析

查询字符串参数一般用于GET请求,会以url string的形式进行传递
请求体参数一般用于POST请求,可以使用Content-Type来指定不同参数类型

4.如何从上一个接口获取相关的响应数据传递到下一个接口?
先从上一个接口中的响应数据获取对应的返回值,然后使用正则表达式or使用JSON解析来提取需要获取的值,
然后存储在一个变量中,最后在下一个接口中直接引用该变量即可

5.接口测试用例的编写要点有哪些?
1必填字段:请求参数必填项、可选项
2合法性:输入输出合法、非法参数
3边界:请求参数边界值等
4容错能力:大容量数据、频繁请求、重复请求(如:订单)、异常网络等的处理
5响应数据校验:断言、数据提取传递到下一级接口...
6逻辑校验:如两个请求的接口有严格的先后顺序,需要测试调转顺序的情况
7性能:对接口模拟并发测试,逐步加压,分析瓶颈点
8安全性:构造恶意的字符请求,如:SQL注入、XSS、敏感信息、业务逻辑(如:跳过某些关键步骤;未经验证操纵敏感数据)

6.接口测试的步骤有哪些?
1发送接口请求
2测试接口获取返回值
3断言:判断实际结果是否符合预期

7.接口测试中依赖登录状态的接口如何测试?
依赖登路状态的接口,本质上是在每次发送请求时需要带上存储有账户有效信息的Session或Cookie才能发送成功,
在构建POST请求时添加必要的Session或Cookie

8.依赖于第三方数据的接口如何进行测试?
可以利用一些MOCK工具(如:JSON Server、Easy Mock)来模拟第三方的数据返回
可以使用接口工具直接调用第三方数据接口的webservice,通过返回值来查看第三方数据
的接口省份调用正常

9.接口的加密测试中对称加密与非对称加密有什么区别?
对称加密是最快速,最简单的一种加密方式,加密与解密用的是同样的密钥,这种
方法在密码雪种叫做对称加密算法。
对称加密的一大缺点是秘钥的管理与分配,如何把秘钥发送到需要解密你的消息的人
手里是一个问题,在发送秘钥的过程中,秘钥有很大的风险会被黑客拦截,现实中
通常的做法是将对称加密的秘钥进行非对称加密后,如何传送给需要的人。
非对称加密为数据的加密与解密提供非常安全防范,因为它使用了一对密钥,公钥和私钥
,私钥只能由一方安全保管,不能外泄,而公钥则可以发给任何请求它的人,非对称加密使用
这对秘钥中的一个进行加密,而解密则需要另一个密钥。

10.TCP,UDP的区别?
11.三次握手与四次挥手?
三次握手 请求连接 -> 服务端确认 -> 客户端确认
四次挥手 请求断开 -> 服务端同意 -> 服务端释放连接 -> 客户端确认

11.Cookie和Session的区别?
Cookie在客户端,可以被篡改
Session在服务端,不能被篡改

接口文档中一个接口包含的信息?
接口的请求方式
接口个URL地址
接口的功能描述
接口的请求参数
接口的响应参数

1、get请求参数全部放在URL中,post请求将所有参数放在body中;
2、Get请求URL长度受限制,post请求他的参数是放在body中长度可以无限放大。3、Get请求安全级别比post请求低;
4、GET在浏览器回退时是无害的,而POST会再次提交请求。
5、GET产生的URL地址可以被Bookmark,而POST不可以。
6、GET请求会被浏览器主动cache,而POST不会,除非手动设置。
7、GET请求只能进行url编码,而POST支持多种编码方式。
8、GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。
9、GET请求在URL中传送的参数是有长度限制的,而POST么有。
10、对参数的数据类型,GET只接受ASCII字符,而POST没有限制。
11、GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息。
12、GET参数通过URL传递,POST放在Request body中。
.
有做过接口测试吗?接口测试如何做的
1、 从开发那边获取对应的接口文档;确定接口请求类型,是get还是post;
2、根据接口文档阅读和分析,组件我们的接口:知道当前接口的基本信息如:url 、请求类型、参数、请求头等

3、 进行接口测试,根据接口文档设计测试用例,根据接口测试用例利用工具进行接口测试
4、结果分析
如果没有接口文档怎么进行处理
1、谁开发的接口就问对应的开发人员
2、抓包分析

怎么分析是前端还是后端问题?
找出接口文档,fiddler查看请求参数和响应结果。若是调用接口传参有误,导致问题,前端的锅。 若是传参正确,返回结果异常,后端的锅。
若是返回值异常值前端没做异常处理,前端同时也要背锅。
这些都可以通过fiddler打断点,修改请求参数、响应参数来测试验证本质是拆分每一步,查证每一步谁有问题,从源头找出问题

调用第三方接口时,你是怎么进行测试的?
在和第三方签署协议时,第三方会提供一份接口文档;根据接口文档开发编写一个类似第三方的接口,这个接口将各种表字段存放在本地(数据库),比如银行卡的余额信息表cus_balance_info;在表中模拟用户,在进行接口测试时调用这个模拟的第三方接口,输入银行卡信息,对用户的余额进行校验。

什么时候做接口测试?
在UI界面还没形成前,在没有接口文档通过fiddler抓包来测

注意点:
接口的互调,这个接口的response中有值,需要作为下一个接口的使用测试桩:本质就是处理请求的代码;
涉及第三方系统,上线前会有一次联调的机会,真实对接,相当于第三方临时表,模拟资金支付,这就是叫测试数据;

多测师讲解自动化测试 _接口面试题(001)_高级讲师肖sir的更多相关文章

  1. 多测师讲解jmeter _基本介绍_(001)高级讲师肖sir

    jmeter讲课课程 一.Jmeter简介 Jmeter是由Apache公司开发的一个纯Java的开源项目,即可以用于做接口测试也可以用于做性能测试. Jmeter具备高移植性,可以实现跨平台运行. ...

  2. 多测师讲解自动化selenium___定位元素002___高级讲师肖sir

    高级自动化测试python+selenium教程手册 --高级讲师肖sir(Harm) 第 2 章8种定位方法 总结: selenium 的 webdriver 提供了八种基本的元素定位方法,前面六种 ...

  3. 多测师讲解自动化测试 _RF封装_(三层模式)高级讲师肖sir

    rf自动化:分层作用: 1.项目----有重复的流程(借款-登录,出借-登录) 2.借款--登录(8个流程)机器人:案例层(用例)写在机器人中,1个机器人=1条用例 分三个层次: 1.案例层(存放用例 ...

  4. 多测师讲解自动化测试 _RF关键字001_(上)_高级讲师肖sir

    讲解案例1: Open Browser http://www.baidu.com gc #打开浏览器 Maximize Browser Window #窗口最大化 sleep 2 #线程等待2秒 In ...

  5. 多测师讲解自动化测试_rf节课内容_高级讲师肖sir

    *** Settings ***Library Selenium2LibraryLibrary OperatingSystem *** Variables ***${name} zhangsan@{l ...

  6. 多测师讲解第一个月 _综合面试题_高级讲师肖sir

    第一个月综合面试题 1.  冒烟测试是什么意思?  对主要的用例测试 2.你们公司的项目流程是什么? 3.你们公司的bug分几个级别?  4个 4.你对外键是怎么理解的? 你会使用外键吗?给一个表添加 ...

  7. 多测师讲解自动化--rf断言(下)--_高级讲师肖sir

    1.Page Should Contain 1.1存在页面上的内容 1.2 不存在页面上的内容, 运行抛异常 1.3 Page Should Not Contain 1.4 1.5 输入页面元素,判断 ...

  8. 多测师讲解自动化--rf关键字--断言(下)_高级讲师肖sir

    断言: 1.1Page Should Contain Maximize Browser Window sleep 2 Comment Page Should Contain hao123 #断言当前页 ...

  9. 多测师讲解python_模块(导入模块和内置模块)_高级讲师肖sir

    #自定义模块# from aaa import * #指定导入某个包中具体的类.函数.方法## A.fun1(2,2) #import +模块名 :# # import +模块名+.+.+# # 导入 ...

  10. 多测师讲解html _图片标签003_高级讲师肖sir

    <!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>段 ...

随机推荐

  1. 如何解决SpringBoot工程中的错误:java.sql.SQLNonTransientConnectionException: CLIENT_PLUGIN_AUTH is required

    出错原因:MySQL依赖及MySQL驱动包高于在使用的MySQL数据库版本. 比如,我本地数据库版本是:Server version: 5.2.3-falcon-alpha-community-nt ...

  2. 在MyBatis中采用模糊查询变量的引用标志应当是$而不是#

    具体如下例: @Select("select count(*) from hy_stock where name like '%${keyword}%' or code like '%${k ...

  3. python sha256 键值对参数格式接口测试

    # coding=utf-8 import requests import time import uuid import hashlib import hmac import random impo ...

  4. 浅谈Java 线程池原理及使用方式

    一.简介 什么是线程池? 池的概念大家也许都有所听闻,池就是相当于一个容器,里面有许许多多的东西你可以即拿即用.java中有线程池.连接池等等.线程池就是在系统启动或者实例化池时创建一些空闲的线程,等 ...

  5. nmap端口扫描工具下载和安装使用

    1.下载地址 https://nmap.org/download.html 2.下载之后进行安装 选择I Agree 后,建议全选,特别是zenmap,这个是图形化界面,不喜欢命令行格式的可以用zen ...

  6. centos7安装PHP7的redis扩展

    前言: 在本篇博客中,我将给大家介绍如何在Centos7上安装PHP-Redis扩展,关于如何在Centos上安装redis的,可以参考另外一篇博客:Centos7安装redis 想要在php中操作r ...

  7. vsCode 设置vue文件标签内的style智能提示

    VS Code 文件->首选项->设置 搜索:files.associations 点击在setting.json中编辑 最后一行添加配置: "files.association ...

  8. Jenkins+Git+Gitlab+Ansible实现持续集成自动化部署动态网站(7)

    项目前言 在上一篇博客<Jenkins+Git+Gitlab+Ansible实现持续化集成一键部署静态网站(一)–技术流ken>中已经详细讲解了如何使用这四个工具来持续集成自动化部署一个静 ...

  9. Java锁?分布式锁?乐观锁?行锁?

    转载自:公众号来源:码农翻身 作者:刘欣 Tomcat的锁 Tomcat是这个系统的核心组成部分, 每当有用户请求过来,Tomcat就会从线程池里找个线程来处理,有的执行登录,有的查看购物车,有的下订 ...

  10. Java源码赏析(四)Java常见注解

    元注解 @Target :标识注解的目标,默认为所有 ElementType.TYPE(用于类) ElementType.FIELD(用于域,包括enum) ElementType.METHOD(用于 ...