这34道接口测试 & Jmeter面试题,你会吗?

Posted 美团程序员

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了这34道接口测试 & Jmeter面试题,你会吗?相关的知识,希望对你有一定的参考价值。

接口测试 & Jmeter面试题

一、接口测试

1、接口测试流程

1、首先是从开发那里拿到API接口文档,了解接口业务、包括接口地址、请求方式,入参、出参,token鉴权,返回格式等信息。

2、然后使用Postman或Jmeter工具执行接口测试,一般使用Jmeter的步骤是这样的:

a、首先新建一个线程组。

b、然后就是新建一个HTTP请求默认值。(输入接口服务器IP和端口)

c、再新建很多HTTP请求,一个请求一个用例。(输入接口路径,访问方式,参数等)

d、然后创建断言和查看结果树。

3、最后调试并执行用例,最后编写接口测试报告

4、其实我们做接口的时候也碰到了蛮多的问题,都是自己独立解决的,比如返回值乱码(修改jmeter的配置文件为UTF-8编码方式),比如需要登录后才能取得token鉴权码并且这个鉴权码在下面的请求中需要用到(使用正则表达式提取器提取token的值等。

2、请简述一下cookie、session以及token的区别:

(1)cookie数据存放在客户的浏览器上,session数据放在服务器上。而token是接口测试时的鉴权码,一般情况下登陆后才可以获取到token,然后在每次请求接口时需要带上token参数。

(2)cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗,考虑到安全应当使用session,session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,考虑到减轻服务器性能方面应当使用cookie

(3)可以将登陆信息等重要信息存放为session;其他信息需要保存,可以放在cookie

3、接口测试如何设计测试用例?

接口测试一般考虑入参形式的变化和接口的业务逻辑,一般设计接口测试用例采用等价类、边界值、场景法居多!

接口测试设计测试用例的思路如下:

1、接口业务逻辑测试?(正例)

接口逻辑测试是指根据业务逻辑、输入参数、输出值的描述,对正常输入情况下所得的输出值

是否正确的测试,也就是测试对外提供的接口服务是否正常工作。

2、模块接口测试?(反例)

模块接口测试是为了保证数据的安全及程序在异常情况下的逻辑的正确性而进行的测试。

模块接口测试的主要包括以下几个方面:?

1)鉴权码token异常(鉴权码为空<没有鉴权码>,错误的鉴权码,过期的鉴权码)。

2)其他参数异常:

a、必填项检查

b、参数的长度、类型、格式异常:

常规参数:(数字、字符串、日期)

参数长度:6-18位。或身份证、电话的长度。

参数类型:数字(精度),字母,中文,带空格的参数,特殊字符。

日期格式:日期:年月日,年月日时分秒,日期格式(包括/,-,:等)。

3)错误码异常覆盖。

4)接口测试其他的关注点

接口有翻页时,页码与页数的异常值测试

数据库的增删改查,比如一个post接口操作完成后,通过列表页接口看下新的数据是否和刚才的post一致

接口返回的图片地址能否打开,图片尺寸是否符合需求

当输出参数有联动性时,需要校验返回两参数的实际结果是否都符合需求。

所有列表页接口必须考虑排序值

所有功能都要考虑兼容旧版本

4、接口测试执行中比对数据库吗?

需要,因为接口返回值的数据来源于数据库,接口对数据的操作还要进行深层次的数据库检查!

5、为什么开展接口测试?

a、接口测试属于集成测试、测试介入越早、就越能在项目早期发现问题,其修复问题的成本越低

b、接口测试非常快速、UI自动化执行一个测试用例10S左右、接口测试用例执行的话,需要的时间是毫秒级的

7、之前用过抓包工具没有?如何使用的?

之前在项目中用过fiddler抓包工具进行HTTP协议请求的抓取

打开fiddler之后,默认浏览器配置了127.0.0.1 8888端口的代理,在fiddler设置好过滤策略后,打开需要进行抓包的网站进行操作,就可以进行抓包

8、json数据是什么,你平时如何解析json数据?

一种开发常用的数据报文格式,由键值对和数组两种格式构成。可以通过工具bejson网站等

9、postman参数化有哪几种方式?

内建变量、pre-scripts编写js脚本、批量运行时导入csv或json格式的文件

10、在接口测试中关联是什么含义?如何用postman设置关联?

关联就是把上一个接口返回值的部分截取出来,作为下一个接口的参数,能让接口串联运行

在postman中设置关联的步骤如下:

先通过正则表达式提取的方式或json取值的方式把下一个接口需要的信息从上一个接口截取出来

使用设置全局变量的代码把取出来的值保存到全局变量

在下一个接口中,使用全局变量代替要替换的静态值

二、Jmeter

1、解释什么是jmeter?

jmeter是一款java开源工具,用于性能负载测试。它旨在分析和衡量web应用程序和各种服务的性能和负载功能行为。

2.说明jmeter的工作原理?

jmeter就像一群将请求发送到目标服务器的用户一样。它收集来自目标服务器的响应以及其他统计数据,这些统计数据通过图形或表格显示应用程序或服务器的性能。

3.说明可以在哪里使用函数和变量?

变量和函数可以写入任何测试组件的任何字段。

4.提到jmeter中的正则表达式是什么?

根据模式(patterns),使用正则表达式搜索和操作文本。jmeter可用于解释在整个jmeter测试计划中使用的正则表达式或模式的形式。

5.解释什么是采样器(Samplers)和线程组(Thread group)?

线程组:对于任何测试计划,线程组元件都是JMeter的开始部分。这是JMeter的重要元件,你可以在其中设置多个用户和时间来加载线程组中给出的所有用户。

  采样器:采样器生成一个或多个采样结果;这些采样结果具有许多属性,例如经过时间、数据大小等。采样器允许JMeter通过采样器将特定类型的请求发送到服务器,线程组决定需要发出的请求类型。一些有用的采样器包括HTTP请求、FTP请求、JDBC请求等等。

6、使用JMeter构建的测试计划是否依赖于操作系统?

通常,测试计划以XML格式保存,因此与任何特定的操作系统都没有关系。它可以在JMeter可以运行的任何操作系统上运行。

7、提到JMeter中处理器的类型是什么?

JMeter中的处理器类型为:①预处理器;②后处理器。

8、解释什么是预置处理器元件?列出一些预处理器元件?

预置处理器是在采样器执行之前发生的事情。为了在执行采样请求之前对其进行配置,或者用于更新未从响应文本中提取的变量,需要使用预处理器元件。

  一些预处理器元件是:

- HTTP URL重写修饰符

- HTTP用户参数修饰符

- html链接解析器

- BeanShell PreProcessor

9、是否提到测试元件的执行顺序?

测试计划元件的执行顺序为:

  配置元件 -> 前置处理器 -> 计时器 -> 取样器 -> 后置处理器 -> 断言 -> 监听器

10、正则表达式中的“包含”和“匹配”表示什么?

在正则表达式中,contains表示正则表达式与目标的至少一部分匹配。匹配表示正则表达式匹配整个目标。如“alphabet”与“al.*t”匹配。

11、解释什么是配置元件?

配置元件与采样器并行工作。要设置默认值和变量以供采样器以后使用,可以使用配置元件。在合并范围的开始,将先处理这些元件,然后再处理同一合并范围中的任何采样器。

12、说明JMeter中的计时器是什么,计时器的类型是什么?

默认情况下,JMeter线程将连续发送请求而不会暂停。为了在请求之间暂停,使用了计时器。使用的一些计时器包括恒定计时器,高斯随机计时器,同步计时器,均匀随机计时器等。

13、解释什么是测试片段?

测试片段也是一种元件,例如“线程组”元件。唯一的区别是,除非模块控制器或包含控制器引用了测试片段,否则不会实现测试片段。

14、解释什么是JMeter中的断言?断言的类型有哪些?

断言有助于验证被测服务器是否返回了预期结果。

JMeter中一些常用的断言是:

- 响应断言

- 持续时间断言

- 大小断言(Size Assertion)

- XML断言

- HTML断言

15、说明如何减少JMeter中的资源需求?

①使用非GUI模式执行测试,如 jmeter –n –t test.jmx –l test.jtl

②在加载期间,测试不使用“查看结果树”或“查看表中的结果”监听器,仅在脚本编写阶段使用它们;

③不要使用功能模式;

④与其使用大量相似的采样器,不如在循环中使用相同的采样器,并使用变量来改变采样;

16、解释如何在JMeter中执行尖峰测试(Spike testing)?

通过同步,可以实现计时器JMeter尖峰测试。同步计时器将阻塞线程,直到阻塞了特定数量的线程,然后将它们全部释放,从而产生了巨大的瞬时负载。

  尖峰测试 也可以称为冲击测试,反复冲击服务器。指的是在某一瞬间或者多个频次下用户数和压力陡然增加的场景。

17、解释如何在JMeter中捕获身份验证窗口的脚本?

通常,可以通过录制来捕获脚本:

  首先,必须在Testplan(测试计划)中使用 Threadgroup,然后在 Workbench(工作台) 中使用HTTP代理服务器;

  之后,在“全局设置”框中设置端口号(如8911),然后在 IE高级选项>连接>局域网设置中 开启 代理设置,并将地址修改为localhost,端口改为8911。

然后,HTTP代理服务器中选择 目标控制器 Testplan>Threadgroup,然后启动HTTP代理服务器并运行应用进行登录。

18 列出几个JMeter监听器?

一些JMeter监听器是:集合报告、汇总报告、查看结果树、用表格查看结果、图形结果、BeanShell Listener、摘要报告等

19、什么是分布式负载测试?如何实现?

分布式负载测试是整个系统可以用来模拟大量用户负载的过程。通过使用主从配置,JMeter可以进行分布式负载测试。

20、在JMeter中是否有必要显式调用嵌入式资源?

你可以消除所有嵌入式资源的显式调用。请求底部有一个复选框,显示“检索嵌入式资源(retrieve embedded resources.)”。它会捕获所有CSS、JPG等。这是在Web应用中查找资源和断开链接的绝妙方法。

21、解释计时器(Timer)在JMeter中的作用是什么?

在计时器的帮助下,JMeter可以延迟线程发出的每个请求之间的时间。它可以解决服务器的过载问题。

22、解释什么是后置处理器?

要在发出请求后执行任何操作,则使用后处理器。例如,如果JMeter向Web服务器发送HTTP请求,并且如果你希望JMeter在Web服务器显示错误时停止发送请求,那么你将使用后处理器执行此操作。

23、JMeter为性能测试提供什么好处?

JMeter提供性能测试方面的优势,例如:

  用于测试静态资源和动态资源的性能;

  可用于测试网站最大并发用户数,从而分析定位网站瓶颈;

  提供了性能报告的图形化分析;

24、jmeter参数化的方式有哪几种可以实现?

配置元件—用户定义的变量元件可以设置全局变量

函数助手对话框中可以选择比如随机字符串、随机日期、随机数字作为参数化

可以使用csv文件作为参数化,通过配置元件中的csv data set config元件进行设置即可

宅家30天,吃透这份测试工程师面试700道题解析,成功定级阿里P7

宅家里一个月,“闭关修炼”的你是不是正在为金九银十跳槽季发愁呢?小编今天说的这富含的15个互联网大厂测试工程师核心面试700题解析整理!内容包括:

  • 软件测试基础210道面试题及答案解析
  • Linux54道面试题及答案解析
  • MySQL80道面试题及答案解析
  • web测试10道面试题及答案解析
  • 接口测试35道面试题及答案解析
  • APP测试12道面试题及答案解析
  • Python106道面试题及大难解析
  • selenium40道面试题及答案解析
  • 性能测试8道题面试题及答案解析
  • LordRunner80道面试题及答案解析
  • 计算机与网络26道面试题及答案解析
  • .....

好好吃透消化,让你面试跳槽不再心慌!

注意:有需要这份“面试跳槽宝典:互联网大厂初中测试工程师核心面试700题解析”的(以及更多学习资料),可以免费分享给大家一起学习,为了不影响大家观看,有需要的可以在文末看看获取方式!

软件测试基础210题

  1. 什么是软件测试?
  2. 软件测试的目的?
  3. 软件测试的目标
  4. 软件测试的原则
  5. 测试的工作流程
  6. 测试工程师的职责
  7. 软件都有多少种分类?
  8. 软件的分类
  9. 测试的主要方面
  10. 软件测试的对象
  11. 什么是“测试案例"?
  12. 怎么编写案例?
  13. 软件测试的两种方法
  14. 测试结束的标准是什么?
  15. 软件的生命周期
  16. 软件测试的步骤是什么?
  17. 如何录制测试脚本?
  18. 应该考虑进行如何测试的测试方法
  19. 怎样估计测试工作量?
  20. 测试设计的问题
  21. 当测试过程发生错误时,有哪几种解决办法?
  22. 测试执行的问题
  23. 测试评估的目标
  24. 如何提高测试?
  25. C/S模式的优点和缺点
  26. B/S模式的优点和缺点
  27. 测试结束的标准是什么?
  28. 怎么才能够全面的测试到每一个点?
  29. 开发与测试的关系
  30. 怎么和开发沟通
  31. 测试过程
  32. 测试出口准则
  33. 测试完成标准
  34. ......

Linux54道面试题

  1. 说出10个以上的Linux命令
  2. 在RedHat中,从root用户切到userl用户,一般用什么命令?
  3. Linux中,一般怎么隐藏文件?
  4. 在Linux系统中,一个文件的访问权限是755,其含义是什么?
  5. 如何查看CPU信息?
  6. 查看占用CPU使用率最高的进程?
  7. 如何查看一个文件的末尾 50行?
  8. 如何过滤文件内容中包含"ERROR"的行?
  9. 查看某端口号?
  10. 查看某进程号?
  11. grep和find的区别? grep 都有哪些用法?
  12. 查看IP地址?
  13. 创建和删除一个多级目录?
  14. 在当前用户家目录中查找haha.txt文件?
  15. 如何查询出tomcat的进程并杀掉这个进程,写出linux命令?
  16. 动态查看日志文件?
  17. 查看系統硬盘空间的命令?
  18. 查看当前机器listen 的所有端口?
  19. 把一个文件夹打包压缩成targz的命令,以及解压拆包.tr.gz的命令?
  20. Xshell工具如果想要实现从服务器上传或者下载文件的话,可以在服务器上安装什么包?
  21. 以/etc/passwd的前五行内容为例,提取用户名?
  22. 在linux 中find和grep的区别?
  23. linux查看文件用什么命令,查看进程用什么命令
  24. 查看日志常用什么命令,主要查看什么内容
  25. ......

MySQL80道面试题

  1. 什么是数据库?
  2. 什么是关系型数据库,主键,外键,索引分别是什么?
  3. 写出表的增删改查SQL语法
  4. SQL的表连接方式有哪些?
  5. 表的连接查询方式有哪些,有什么区别?
  6. 什么三范式?
  7. SQL的select语句完整的执行顺序?
  8. 说一下Mysql数据库存储的原理?
  9. 事务的特性?
  10. 简述什么是存储过程和触发器?
  11. 什么是数据库索引?
  12. 数据库怎么优化查询效率?
  13. 你用的Mysql是哪个引擎,各引擎之间有什么区别?
  14. 如何对查询命令进行优化?
  15. 数据库的优化?
  16. Sql注入是如何产“生的,如何防止?
  17. NoSQL和关系数据库的区别?
  18. MySQL与MongoDB本质之间最基本的差别是什么
  19. Mysql数据库中怎么实现分页?
  20. Mysql数据库的操作?
  21. 优化数据库?提高数据库的性能?
  22. 什么是数据的完整性?
  23. ......

web测试10道面试题

接口测试35道面试题

  1. 什么是接口
  2. 如果模块请求http改为了https,测试方案应该如何制定,修改?
  3. 常用HTTP 协议调试代理I具有什么?详细说明抓取HTTPS协议的设置过程?
  4. 描述TCP/IP协议的层次结构,以及每一-层中重要协议
  5. jmeter,一个接口的响应结果如下:
  6. 接口产生的垃圾数据如何清理
  7. 依赖第三方的接口如何处理
  8. 测试的数据你放在哪?
  9. 什么是数据驱动,如何参数化?
  10. 下个接口请求参数依赖上个接口的返回数据
  11. 依赖于登录的接口如何处理
  12. 接口测试的步骤有哪些?
  13. 接口测试中依赖登录状态的接口如何测试?
  14. 依赖于第三方数据的接口如何进行测试?
  15. 解释什么是SOAP?
  16. 解释什么是REST API?
  17. API测试发现的Bug类型是什么?
  18. 我们测试的接口属于哪一类?
  19. Cookie保存在哪里?
  20. HTTP有哪些请求方法?
  21. 接口自动化测试的流程?
  22. 接口测试用例的编写要点有哪些?
  23. 提到UI级别测试和API测试之间的关键区别?
  24. HTTPS的工作原理
  25. HTTPS有哪些优点?
  26. HTTPS的缺点
  27. HTTPS和HTTP的区别主要如下:
  28. POST和GET有什么区别?
  29. Session与Cookie有什么区别?
  30. TCP和UDP有什么区别
  31. 什么是TCP/IP?
  32. 在API测试中测试的常用协议是什么?
  33. cookie有什么作用?
  34. Cookie测试的测试点
  35. cookie与session的区别

APP测试12道面试题

Python106道面试题

  1. 斐波那契数列求N?
  2. 字符串反序输出?
  3. 判断回文?
  4. 统计python源代码文件中代码行数,去除注释,空行,进行输出?
  5. python调用cmd并返回结果?
  6. 冒泡排序
  7. 1,2,3,4 这4个数字,能组成多少个互不相同的且无重复的三位数,都是多少?
  8. 请用 python 打印出 10000 以内的对称数(对称数特点:数字左右对称,如:1,2,11,121,1221 等)
  9. 给定一个整数 N,和一个 0-9 的数 K,要求返回 0-N 中数字 K 出现的次数
  10. 判断 101-200 之间有多少个素数,并输出所有的素数
  11. 一个输入三角形的函数,输入后输出是否能组成三角形,三角形类型,请用等价类划分法设计测试用例
  12. 编写一个完整出程序,实现如下功能:从键盘输入数字 n,程序自动计算 n!,并输出。
  13. 如果现在有一台刚安装了WinXP 的计算机,请简单说明如何能够让以上程序得以运行。
  14. 写代码将如下数据从小到大排序,语言不限。(不可以直接使用 sort()等排序方法) 234,82,5,10,86,90
  15. 使用Python 发送一封邮件?
  16. Linux 下如何查看ip 地址,如何用Python 或 TCL 删除当前文件夹下所有文件以及目录?
  17. 给 x 变量赋值为 abccaefs,并统计 x 变量中单词出现的次数(java 或Python 任选一种语言编写)
  18. 代码中要修改不可变数据会出现什么问题? 抛出什么异常?
  19. 简述你对 input()函数的理解?
  20. python 两层列表怎么提取第二层的元素
  21. ......

selenium40道面试题

  1. 什么是Selenium?
  2. 什么是Selenium Webdriver
  3. S什么是elenium IDE?
  4. 常用自动化测试工具机器运行原理,写出一段元素查找的代码?
  5. 如何开展自动化测试框架的构建?
  6. 如何设计自动化测试用例:
  7. webdriver如何开启和退出一个浏览器?
  8. 什么是自动化测试框架?
  9. Selenium是什么,流行的版本有哪些?
  10. 你如何从命令行启动Selenium RC?
  11. 在我的机器端口4444不是免费的。我怎样才能使用另一个端口?
  12. 什么是Selenium Server,它与Selenium Hub有什么不同?
  13. 你如何从Selenium连接到数据库?
  14. 你如何验证多个页面上存在的一个对象?
  15. XPath中使用单斜杠和双斜杠有什么区别?
  16. 如何编写SeleniumIDE/ RC的用户扩展?
  17. 如何在页面加载成功后验证元素的存在?
  18. 你对Selenium Grid有什么了解?它提供了什么功能?
  19. 如何从你的Java Class启动Selenium服务器?
  20. Selenium中有哪些验证点?
  21. 什么是XPath?什么时候应该在Selenium中使用XPath?
  22. 什么是Selenium的CSS定位器策略?用例子来解释。
  23. 当有很多定位器时,如ID.名称XPath. CSS定位器,我应该使用哪一个?
  24. 在Selenium中处理多个弹出窗口的机制是什么?
  25. 你如何处理使用Selenium的Ajax控件?
  26. Selenium Webdriver优于Selenium RC的优点是什么?
  27. "GET*和"NAVIGATE"方法的主要区别是什么?
  28. 隐式等待与显式等待有什么不同?
  29. 你将如何处理Selenium WebDriver中的警报/弹出窗口?
  30. 如何解决IE中的SSL认证问题?
  31. Selenium WebDriver中的可用定位器是什么?
  32. 如何处理WebDriver中的AJAX控件?
  33. 大致分类和比较TDD/BDD和DDD框架?
  34. 什么是数据驱动框架?它与关键字驱动框架有什么不同?
  35. 解释使用TestNG而不是JUnit框架的好处?
  36. 与@Test注释相关的TestNG参数的目的是什么?
  37. .......

计算机与网络26道面试题

  1. 什么是局域网和厂域网
  2. DNS是什么,它是如何工作的?
  3. 描述TCP/IP协议的层次结构,以及每一-层中重 要协议。
  4. 请简述ip地址网关子网掩码的含义.
  5. 简述子网掩码的用途。
  6. 一台计算机的IP是192.168.10.71子网掩码255.255.255.64与192.168.10.201 ..
  7. 请简述DNS、活动目录、域的概念。
  8. 10M兆宽带是什么意思?理论下载速度是多少?
  9. 什么是IP地址?
  10. OSI七层网络模型的划分?
  11. TCP和UDP有什么不同?
  12. HTTP属于哪一层的协议?
  13. HTTP和HTTPS的区别?
  14. cookies和session的区别?
  15. HTTP的get请求和post请求的区别?
  16. HTTP1.0和HTTP1.1有什么区别
  17. TCP的连接建立过程,以及断开过程?
  18. 客户端使用DHCP获取IP的过程?
  19. 写出某个网段的网络地址和广播地址?
  20. 什么是VPN都有什么类型?
  21. B/S和C/S的区别
  22. TCP/UDP有哪些区别?
  23. ISO 模型? HUB、tch、 Router 是ISO的第几层设备?
  24. 线程和进程的区别
  25. 常用的响应码
  26. 手工修改Tomcat端口,在那个文件里?MySQL数据库高频20题解析

最后再强调一次,要想金三银四跳槽面试不心慌,那就在家好好“闭关修炼”,啃透这本《互联网大厂初中测试工程师核心面试700题解析》,有需要即可免费分享给你,需要的可以【点击这里,暗号CSDN】获取哈,

以上是关于这34道接口测试 & Jmeter面试题,你会吗?的主要内容,如果未能解决你的问题,请参考以下文章

宅家30天,吃透这份测试工程师面试700道题解析,成功定级阿里P7

100道接口测试面试题收好了!

软件测试面试题目—接口测试面试题,梦寐以求的答案来了

2023春招100道软件测试高频面试题

80道最新java基础部分面试题

两道面试题,带你解析Java类加载机制