超过1.5万字的关于接口测试 | JMeter 接口测试面试题 | Postman接口测试(50 题),不能再详细了

接口测试 - 高频面试题

全文超过 2 万字,50 道经典接口测试面试题(接口专项面试宝典.Pdf,可以找大师兄拿)

文章目录

1、什么是接口测试?
  1. 接口测试是测试系统组件间接口的一种方法,主要关注外部系统与系统之间以及内部各个子系统之间的交互点,确保系统的稳定性和可靠性,提高系统的质量;
  2. 接口测试可以在开发期进行并行测试,减少页面层测试的深度,缩短整个项目的测试周期,对于保证项目按时交付和质量非常重要;
  3. 通过接口测试,可以快速定位问题所在,提高测试效率,同时需要确保测试用例的覆盖范围广泛,能够涵盖各种可能的情况,以确保测试的全面性和准确性。
2、我们测试的接口属于哪一类?
  1. 大多数的接口指的是HTTP接口,这种接口通常用在B/S架构中。这意味着客户端(也就是浏览器)会调用这个接口,或者模拟客户端(浏览器)调用服务器提供的 API 接口。一旦接口接收到请求,它会处理请求并返回一个应答;
  2. 常见接口类型还有:HTTP 接口、WebService 接口、REST 接口、SOAP 接口测试。
3、为什么要做接口测试?
  1. **前后端分离:**在现在的软件开发中,前后端通常是分开的。前端主要负责展示页面给用户看结果或输入,而后端则是处理具体的业务逻辑。因此,我们需要通过接口测试来验证后端的功能是否正常,特别是在调用其他公司的接口时,更需要从接口层面进行验证;
  2. 测试及早介入: 在软件开发中,越早发现缺陷,修复的成本就越低。接口测试可以及早介入,发现底层的问题,从而降低修复成本;
  3. 安全性考虑: 前端页面容易被工具绕过登录等限制,所以后端需要做一些限制来保证安全性。接口测试可以帮助我们验证这些限制是否有效;
  4. 自动化测试: 相对于界面功能测试,接口测试更容易实现自动化测试。如果项目需要频繁的提测或上线,开展接口自动化测试可以提高整个团队的效率。
4、你们公司是如何做接口测试的?
  1. 获取接口规范: 从开发人员或需求人员那里获取接口规范,了解接口的参数、返回值、调用方式等;
  2. 设计接口测试功能用例: 根据接口规范,设计并编写接口测试用例,覆盖尽可能多的功能场景;
  3. 选择接口测试工具: 我们使用 JMeter 和 Postman 作为接口测试工具。Jmeter 用于做压力测试和性能测试,Postman 则用于调试和编写测试用例;
  4. 各种入参、接口返回值验证: 在测试过程中,我们会验证接口的输入参数和返回值是否符合预期结果。例如,检查返回值的数据类型、长度、格式等是否正确;
  5. 清楚接口实现逻辑,实现逻辑覆盖: 我们会深入了解接口的实现逻辑,并对其进行全面测试。这包括正常情况下的测试和异常情况下的测试,以确保接口在各种情况下都能正常工作;
  6. 考虑接口的安全、性能,如果有需要就会做接口安全和接口性能测试: 我们会关注接口的安全性和性能,例如通过压力测试来检查接口的响应时间和稳定性;
  7. 发现问题后提交BUG,跟踪BUG和编写报告: 如果发现接口存在问题,我们会及时提交给开发人员,并跟踪问题的解决情况。同时,我们会编写测试报告,总结测试结果和经验教训。
5、Get和Post区别是什么?
  1. 数据传递方式: GET 是从服务器上获取数据,就像你去商店买东西,你可以直接拿走商品;而 POST 是向服务器传递数据,就像你把钱放到收银台,商家会收到你的付款。
  2. 数据传递量: GET 请求的参数有限,就像你只能在购物车里放一定数量的商品,因为空间有限;而 POST 请求可以通过请求体传递大量数据,就像你可以把整个超市的商品都放到购物车里,只要你的钱包够鼓。
  3. 数据安全性: GET 请求的参数暴露在 URL 中,就像你走在路上,别人能看到你买的东西;而 POST 请求将参数放在请求体中,就像你把钱塞在口袋里,别人不知道你带了多少钱,相对更安全。
  4. 缓存性: GET 请求可以被浏览器缓存,就像你可以把购物车放在商店门口,下次来可以直接拿;而 POST 请求不可以,就像你每次付款都只能把商品放到收银台。
6、常见的POST提交数据方式
  1. 通过表单提交数据,这是最常见的 POST 提交数据方式之一。在表单中填写数据,然后点击提交按钮,表单会通过 POST 方法将数据提交到服务器;
  2. 通过URL参数提交数据,这种方式的 POST 请求通常用于向服务器发送少量数据,如用户登录验证等;
  3. 通过文件上传提交数据,这种 POST 提交数据方式常用于上传文件到服务器,如上传图片、视频等;
  4. 通过 JSON 格式提交数据,这种 POST 提交数据方式通常用于向服务器发送大量数据,如发送多个表单数据等。JSON 是一种轻量级的数据交换格式,可以将数据转换为 JSON 字符串,然后通过 POST 方法发送到服务器。
7、如何分析一个bug是前端还是后端的?
  1. 后端服务:
    • 后端服务主要是处理数据和逻辑,确保数据的正确性和完整性。
    • 当接收到前端页面的请求时,后端服务会根据请求中的数据进行业务处理,例如验证用户身份、处理业务逻辑等。
    • 在处理完请求后,后端服务会将数据组装并返回给前端页面,让页面进行渲染和展示。
  2. 前端页面:
    • 前端页面主要负责展示数据和与用户交互。
    • 当用户在前端页面输入信息或点击按钮时,页面会将这些数据和请求发送给后端服务。
    • 前端页面会根据后端返回的数据进行渲染,展示相应的页面和数据。
  3. 前后端bug的区分:
    • 前端 Bug:
      • 界面问题:例如界面布局、UI 设计元素不符合要求,或者出现卡顿、闪退等问题。
      • 兼容性:不同设备和浏览器之间的兼容性问题,例如在某些浏览器或设备上出现显示异常或交互问题。
    • 后端 bug:
      • 业务逻辑:例如数据处理、验证等逻辑上的问题。
      • 性能问题:例如响应慢、服务器崩溃等性能问题。
      • 安全性问题:例如 SQL 注入、数据泄露等安全性问题。
  4. 接口层面区分前后端 Bug:
    • 接口返回正确但页面显示不正确,说明前端存在问题;
    • 接口返回错误但前端请求数据正确,说明后端存在问题;
    • 可以使用抓包工具查看请求和响应报文来进一步分析和排查问题。
8、请详细阐述接口测试和UI测试在测试活动中是如何协同测试的?

img

有些项目在开发过程中,会选择不先测试接口,而直接进行系统测试。这意味着界面已经制作完成,需要同时进行 UI 和接口测试:

  1. 做UI界面测试时,虽然是在界面上点点点,但提交、获取数据时,实际上也是在调用接口。因此,需要构造多种操作来覆盖接口的所有参数组合;
  2. 做UI界面测试时,有时做大量的数据展示等测试时,如果在界面上一个个操作,会很麻烦。因此,可以借助接口来生成数据,从而简化测试过程;
  3. 接口测试可以保证数据和逻辑的准确性,而 UI 测试则需要考虑交互和界面展示的逻辑正确性。因此,两者都是非常重要的测试手段;
  4. 在UI界面测试中,需要重视接口调用不成功或接口异常情况下的 UI 呈现方式和用户体验。例如,如果接口调用失败,界面应该如何提示用户?
  5. 在UI界面中,可能会有一些状态的缓存信息,例如鉴权信息等。这些缓存信息需要重点关注更新策略,以确保界面展示的数据是准确的。
9、接口测试中上下游接口有数据依赖如何处理?

当我遇到了上下游接口之间的数据依赖问题时,比如我有两个接口:

  1. 登录接口:用户通过输入用户名和密码进行登录,登录成功后返回一个授权 Token 。这个 Token 需要传递给用户信息接口进行用户信息的获取;
  2. 用户信息接口:通过传递授权 Token 来获取用户的个人信息。

针对这两个接口的数据依赖,我会采取了以下措施:

  1. 首先,我先测试登录接口,确保用户能够成功登录并获取到授权 Token;
  2. 然后,我测试用户信息接口,将登录接口返回的授权 Token 作为参数传递给用户信息接口,并获取用户的个人信息;
  3. 在测试过程中,登录接口和用户信息接口之间存在一定的数据依赖。具体来说,登录接口需要从用户信息接口获取用户信息,并将授权 Token 传递给用户信息接口进行验证和处理。
  4. 为了处理这种情况,需要使用授权 Token 值来连接这两个接口的关联,具体操作:使用 JSON 提取器提取登录接口的 Token,然后在用户信息接口中引用这个 Token值。
10、依赖于第三方数据的接口如何进测试?
  1. 首先呢,要想测试这接口啊,得确定这接口所依赖的数据都是从哪儿弄来的对吧。比如说这数据是从第三方平台获取的,那咱们就去了解这个平台的数据 API接口,然后使用模拟数据进行测试。如果这数据是咱们自己的数据库里来的,那咱们就在测试环境中建立相应的数据来进行测试,就像在真实环境中那样。
  2. 然后,使用模拟数据是最常用的方法,因为这可以避免对第三方平台造成实际影响,而且可以模拟各种情况下的数据响应。咱们可以使用模拟数据生成工具来生成符合实际数据特征的模拟数据,将其传递给接口进行测试。
  3. 还有呢,就是联合测试。联合测试就是和第三方平台一起进行测试。通过和第三方平台协商,在测试环境中使用他们的实际数据进行测试。这样能确保这接口跟第三方平台的实际数据交互是正常的。
11、接口测试中依赖登录状态的接口如何测试?
  1. 要测试依赖登录状态的接口,你可以在每次发送请求时带上 Session 或 Cookie,这样就能成功发送请求啦。在构建 POST 请求时,记得添加必要的 Session 或 Cookie 哦;
  2. 如果使用 Python 和 Requests 库来实现接口测试,可以使用 Session 对象来发送请求。这样做可以方便地管理 Session 和 Cookie,确保接口请求能够成功。
12、HTTP接口传递数据最常用的方式?
  1. Get 方式就是从服务器上获取数据。如果你要做数据查询,建议用 Get 方式。比如商品信息接口、搜索接口、博客访客接口等,这些只需要获取数据,用Get方式比较合适;
  2. Post 方式呢,就是向服务器传送数据。如果你要做数据的添加、修改或删除,建议用 Post 方式。比如说微博图片上传图片接口、登录注册接口等,这些需要向服务器发送数据,用 Post 方式更合适。
13、常见的HTTP状态码
  1. 1xx:信息提示,表示临时的响应。客户端在收到常规响应之前,准备接收一个或多个1xx响应。
  2. 2xx:成功,表明服务器成功地接受了客户端请求。
  3. 3xx:重定向,客户端浏览器必须采取更多操作来实现请求。比如浏览器可能需要请求服务器上的不同页面,或通过代理服务器重复该请求。
  4. 4xx:客户端错误,发送错误,客户端有问题。比如客户端请求不存在的页面,客户端未提供有效的身份证验证信息。
  5. 5xx:服务器错误,服务器由于遇到错误而不能完成该请求。
  6. 常见的返回码有:
  • 200:服务器成功返回用户请求的数据。
  • 400:用户发出的请求有错误。
  • 403:访问被禁止。
  • 404:用户访问的页面不存在。
  • 500:服务器发生错误。
14、接口测试用例编写的要点都包含哪些?
  1. 首先,我们要保证接口的功能能够正常工作,也就是说,输入正确的参数能够得到正确的输出参数。这很重要,因为如果这个基本的功都不能正常工作,那其他的功能也就无法保证了;
  2. 其次,我们需要考虑输入参数的异常情况。比如说,我们得看看必填项是否都填写了,输入的长度是否在合理的范围内,类型是否正确,是否传了空值,以及参数个数的增减是否会影响接口的正常处理。这些异常情况很可能会让接口崩溃或者产生错误的结果,所以需要特别注意;
  3. 然后,我们还要考虑接口之间的调用链路是否正确。也就是说,我们要看看上一个接口的输出是否正确地作为下一个接口的输入参数。如果这个链路不正确,那么整个系统的功能就可能出现问题;
  4. 最后,我们还要考虑接口的安全性。有些接口是设计来保证系统安全的,比如进行验签加密的接口。我们就需要构造一些数据来测试这些接口是否能够正常处理,以防止存在漏洞或者被恶意攻击。
15、接口测试的基本步骤?
  1. 首先,我们要确定待测接口的范围。这个范围可以是整个系统中的所有接口,也可以是根据某些特定条件筛选出来的部分接口;
  2. 接下来,我们需要对接口文档进行分析。这些接口文档可以是自己写的,也可以是从其他渠道获取的。通过对接口文档的分析,我们可以了解到每个接口的请求方式、URL地址、请求的参数以及响应的结果等信息;
  3. 然后,我们需要设计接口用例。在设计接口用例时,我们需要考虑到各种情况,包括正常情况、异常情况、边界情况等。同时,我们还需要根据接口的具体特点来设计有针对性的测试用例;
  4. 在执行接口测试时,我们需要按照以下步骤进行:
  • 首先,我们需要获取请求报文数据。这个过程可以通过使用 Fiddler 工具或者 API 接口文档来获取请求报文参数,包括请求方式、URL地址、请求的参数以及请求的 Body 数据等。
  • 接着,我们需要借助工具模拟请求报文并发送。这里常用的工具包括JMeter、Postman等接口测试工具。我们可以将这些工具中的参数设置为上一步获取的参数,然后模拟发送接口请求。
  • 最后,我们需要获得响应结果,并分析响应报文中的数据是否跟测试用例的预期结果一致。
  1. 接口测试结果校验:为了判断实际结果是否与预期相同,我们可以使用接口测试工具设置断言。这个断言可以根据响应报文的响应状态码来进行判断;

  2. 缺陷管理。在测试过程中,如果发现缺陷,需要及时进行缺陷管理,包括记录缺陷、追踪缺陷、修复缺陷等。这样可以确保测试的质量和效率;

  3. 测试报告。最后,我们需要生成一份测试报告,将测试的结果和结论以报告的形式呈现出来。这个报告可以包含测试的覆盖率、缺陷数量、缺陷类型、测试用例执行情况等信息。通过这份报告,我们可以更好地了解测试的效果和质量,同时也可以为后续的优化和改进提供参考;

16、HTTP协议的特点是什么?
  1. 它支持客户端/服务器模式,让你可以轻松地建立客户端和服务器之间的连接;
  2. 它又简单又快速。当客户端向服务器请求服务时,只需要传送请求方法和路径,因为HTTP协议非常简单,所以通信速度非常快;
  3. 它还非常灵活。HTTP允许传输任意类型的数据对象,而正在传输的类型则由Content-Type标记;
  4. 它采用无连接的方式处理请求。这意味着每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,就会断开连接。这样可以节省传输时间;
  5. 它是无状态的协议。这意味着HTTP对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,那么就必须重传,这可能会导致每次连接传送的数据量增大;
  6. 在连接时,它会进行三次握手;在断开连接时,它会进行四次握手。这样可以确保连接的稳定性和安全性。
17、HTTP 和 HTTPS 的区别?
  1. HTTP 在网络传输过程中是明文传输,而 HTTPS 则是通过 SSL+HTTP 协议构建的可进行加密传输、身份认证的网络协议。这意味着 HTTPS 可以保护数据的机密性和完整性,而 HTTP 则无法提供这种保护;
  2. HTTP是超文本传输协议,它的信息是明文传输的,而HTTPS协议则采用了加密传输和身份认证技术,因此比HTTP协议更加安全。使用HTTPS可以防止中间人攻击,保护用户的数据安全。
  3. HTTP和HTTPS协议的默认端口也不一样。HTTP的默认端口是80,而HTTPS的默认端口是443。这个区别可以在网络请求中进行识别和区分。
  4. 使用HTTPS传输一般需要申请证书,这可能需要一定的费用。而使用HTTP则不需要支付证书费用,因此相对来说更便宜一些。
18、你知道一次HTTP请求和响应里面都发生了什么事情吗?
  1. 当普通用户在浏览器中输入一个网址并按下回车键后,屏幕上出现了他们想要的内容。作为接口测试人员,我们需要了解这个过程中发生的每一个细节;
  2. 首先,用户在浏览器端输入网站的URL地址。接着,浏览器会查找是否有缓存,如果有,则直接使用缓存的数据,避免了向服务器发送请求的过程;
  3. 如果没有缓存,浏览器需要通过 DNS 获取 URL 对应的 IP 地址。建立 TCP 链接是在浏览器向Web服务器发送请求之前必须完成的一步。在建立 TCP 链接之后,浏览器将向Web服务器发送请求头信息,其中包括请求的方式、请求的数据类型、请求的内容长度等信息;
  4. Web服务器在收到请求头信息后,会进行应答。它会发送一些响应头消息,包括响应的状态码、响应头信息、响应的数据长度等信息。然后,Web 服务器会发送数据,这些数据可能是网页的 HTML 代码、图片、视频、CSS 样式表等。最后,当Web服务器完成数据发送后,它会关闭链接;
  5. 作为接口测试人员,我们需要对每一个步骤进行测试和验证,确保这些步骤的正确性和可靠性。我们需要考虑各种可能的情况和异常情况,例如网络中断、超时、数据丢失等。只有通过全面的测试和验证,才能确保网站的高可用性和稳定性。
19、Cookies机制和session机制的区别?
  1. Cookies 和 Sessions 都是用来在客户端和服务器之间传递数据的方式,但是它们的数据存储位置和特点有所不同。
  2. Cookies 数据是保存在客户端的,而 Sessions 数据是保存在服务器端的。Cookies 通过在客户端保存数据来减轻服务器的压力,因为客户端可以缓存一些不需要每次都从服务器获取的数据。但是,Cookies不 太安全,因为攻击者可以通过欺骗 Cookies 来获取一些敏感信息。
  3. 相比之下,Sessions 较安全,因为它们的数据存储在服务器端,攻击者很难通过欺骗来获取敏感信息。但是,Sessions 会占用服务器的资源,因为服务器需要为每个Session 存储和管理数据。
  4. 在实现上,Cookies 通常会在登录成功后由服务器返回一个 Set-Cookie 的响应头部,其中包含了需要的 Cookie 信息。下次请求时,客户端会在请求头部中通过 Cookie 字段带上需要的 Cookie。而 Sessions 可以通过 Cookie 或 URL 回写来实现。在登录成功后,服务器会创建一个 Session 并返回一个 Session ID。下次请求时,客户端会在请求报文中带上这个 Session ID,服务器可以通过这个ID来识别客户端的 Session 并进行相应的处理。
  5. 总的来说,Cookies 和 Sessions 都有自己的优缺点,在使用时需要根据具体情况进行选择。如果需要减轻服务器的压力并且对安全性要求不高,可以选择使用 Cookies。如果对安全性要求较高或者需要占用服务器资源,可以选择使用 Sessions。
20、如果没有接口文档怎么做接口测试?

当需要进行接口测试时,可以使用一些工具来帮助我们抓取接口数据并整理成接口文档,然后再进行测试。以下是两种常用的方法:

  1. 使用 Fiddler 抓包工具

Fiddler 是一款常用的抓包工具,可以用来抓取 HTTP 和 HTTPS 请求,并提供了强大的过滤和统计分析功能。使用 Fiddler 抓取接口请求的步骤如下:

  • 打开 Fiddler,并确保能够监听到本地的 HTTP 和 HTTPS 请求;
  • 在项目组中获取接口数据,并将其整理成接口文档;
  • 根据接口文档,在 Fiddler 中逐一查找对应的请求和响应数据;
  • 将查找到的请求和响应数据保存下来,并逐一进行接口测试。
  1. 使用 JMeter 的代理录制功能

JMeter 是一款常用的性能测试工具,可以用来模拟并发请求和压力测试。使用 JMeter 的代理录制功能进行接口测试的步骤如下:

  • 在 Jmeter 中配置代理服务器,并将其与本地的 HTTP 或 HTTPS 代理进行绑定;
  • 在浏览器中打开需要测试的网页或接口,并使用 JMeter 的代理录制功能将其记录下来;
  • 将录制下来的请求和响应数据整理成接口文档;
  • 根据接口文档,在 JMeter 中逐一添加对应的请求和响应数据,并逐一进行接口测试。

无论使用哪种方法进行接口测试,我们都需要遵循以下步骤:

  1. 确认接口文档中的请求和响应数据是否正确;
  2. 根据接口文档编写测试用例,并逐一进行测试;
  3. 对测试结果进行分析和记录,并将测试报告提交给项目组。

在进行接口测试时,我们还需要注意以下几点:

  1. 确保接口文档的准确性和完整性;
  2. 对每个接口都要进行单独的测试,并确保其功能正常;
  3. 对接口之间的交互要进行关联测试,确保它们之间的通信正常;
  4. 对异常情况和边界情况进行测试,确保接口具有健壮性和可靠性;
  5. 及时提交测试报告,并与项目组进行沟通和反馈。
21、你平常做接口测试的过程中发现过哪些bug?
  1. 接口测试 Bug:接口没有按照需求完成功能,结果跟接口文档不一致或者接口文档本身有问题。比如购买商品接口的价格,输入负数也能成功购买,或者接口报错没有给出明确的提示原因等。
  2. 界面操作 Bug:有些 Bug 可能无法通过界面操作发现,比如订单提交时,使用工具修改价格也能提交等。
  3. 权限类 Bug:有些接口需要判断权限,比如商家修改商品的功能,普通用户登录也能修改。
22、你在接口测试中是怎么校验结果是否正确?
  1. 首先,要检查接口响应的状态码,看看是不是200。200意味着接口可以正常接收请求并返回响应。
  2. 接着,如果接口的响应内容比较短且固定,那我们可以直接验证响应内容是否完全符合预期。
  3. 如果响应内容比较长,我们可以判断其中是否包含了一些关键信息,作为验证接口功能的一个参考点。
  4. 对于 XML 或 JSON 格式的响应正文,我们可以通过 XPATH 或 JSONPATH 表达式,选取其中的某个节点来判断它是否存在。
  5. 不仅是字段的存在性,如果某个字段的值是有固定规则的,我们还可以验证这个值是否正确。如果值是固定的,我们可以验证它是否等于预期值;如果值不固定,我们可以用正则表达式来匹配。
  6. 如果要验证的信息在当前的响应内容中找不到,我们可以调用其他的接口来进行验证。比如,我们调一个增加用户信息的接口,要确认信息确实增加成功了,我们可以再调用查询用户信息的接口来确认用户信息是否已经添加成功。当然,如果权限允许的话,我们也可以直接查询数据库来验证。
  7. 除了功能方面的验证,我们还可以从性能的角度来验证接口的响应时间是否在一个合理的范围内。
23、对于加密接口,签名接口如何进行测试?

在进行接口测试时,由于不同公司的加密方式可能不同,我们需要与开发人员沟通清楚,了解他们使用的加密方式。以下是一些常见的加密方式:

  1. 对称式的加密方式(私钥加密):不常用的有 DES、AES,常用的是 Base64 加密方式
  2. 非对称式的加密方式(双钥加密):常用的是 RSA 加密方式
  3. 只加密不解密:例如 MD5 加密
  4. 自定义加密规则
  5. 混合加密方式

在请求接口之前,我们需要对参数进行对应的加密处理,然后再发送请求。在实现方面,可以使用JavaScript脚本在Postman中实现加密,也可以在Beanshell中编写Java代码实现加密处理。

需要注意的是,不同的加密算法具有不同的安全性、效率和性能特点,因此在选择加密算法时需要综合考虑实际情况和需求。同时,为了保证数据的安全性,加密处理应该是必要且合适的,不要过度依赖加密方式来保护数据安全。

24、当一个接口出现异常时候,你是如何分析异常的?

当需要进行接口测试时,我一般使用3种方式进行分析和测试:

  1. 抓包分析:使用fiddler或F12等抓包工具,对请求和响应数据进行抓取和分析。通过查看请求和响应报文中的参数和数据,可以了解接口的调用方式和返回结果,同时也可以检查数据传输的完整性和正确性。
  2. 设置代理:如果是在APP上进行测试,可以使用fiddler等代理工具,将请求通过代理服务器进行中转,从而可以查看请求报文和返回报文。通过代理服务器可以方便地分析请求和响应数据,同时也可以对数据进行篡改或调试。
  3. 查看后端日志:通过使用tail -f命令或直接连接服务器打开错误日志,可以查看接口的调用情况和错误信息。通过分析后端日志可以找到接口的问题和瓶颈,并进行相应的优化和修复。

在进行接口测试时,这些方法可以帮助我们全面了解接口的运行情况和问题,从而进行准确的测试和调试。需要注意的是,在进行测试时需要遵循安全规范和测试流程,避免对系统造成不必要的影响和损失。

25、你在实施接口自动化测试的过程中,如果某些接口第一次调用长时间没有返回,如何保证流程顺利进行又可以记录错误信息?

在接口测试过程中,如果一个接口长时间没有返回,它可能会对整体测试的执行时间和执行结果产生负面影响。

为了解决这个问题,我们可以为每个接口设置一个超时时间,例如3秒。如果一个接口在3秒内没有返回,就可以将其定位为异常。

此外,为了更加谨慎,我们可以设置失败重试机制,对接口进行3次重试。如果3次重试都超过了超时时间,就可以将其视为异常,并将错误信息记录到系统日志中。在测试报告中,我们可以将所有异常接口的信息进行详细记录,以便后续分析和处理。

在执行测试任务时,我们还需要使用捕捉异常的方式,当遇到异常接口时,记录错误信息并继续执行后面的接口,以确保测试任务的中断最小化。

综上所述,为了解决接口长时间没有返回导致的问题,我们可以采取以下措施:

  1. 设置超时时间:为每个接口设定一个合理的超时时间,确保异常接口不会对测试执行时间造成过多影响。
  2. 添加失败重跑机制:通过重试机制,提高测试的稳定性和可靠性,减少因接口异常导致的测试失败。
  3. 分析错误日志:将所有异常接口的信息进行详细记录,方便后续分析和处理。
  4. 捕获异常对象:在测试代码中使用异常处理机制,避免程序中断或崩溃,确保测试任务能够继续执行。

通过以上方法,我们可以有效地处理接口长时间没有返回导致的问题,确保测试的顺利进行,并为后续分析和优化提供有力支持。

26、说一说JMeter的工作原理?
  1. JMeter就像一大群模拟用户,能够把请求砸向目标服务器;
  2. 它有几个主要的功能,首先就是创建测试计划,我们可以通过添加线程组HTTP请求,断言和逻辑控制器等元素来创建测试计划,这样方便我们进行测试用例的设计和执行;
  3. 线程组就是用来管理测试线程的,可以设置线程数,循环次数,持续时间等参数,这样就可以模拟实际用户的并发访问了;
  4. HTTP请求是用来模拟用户对应用程序的访问的,我们可以添加请求的URL、请求类型、请求参数和请求头等信息;
  5. 断言是用来验证测试响应的,我们可以设置期望的结果、响应时间等,看看应用程序是否正常工作;
  6. 逻辑控制器是用来控制测试用例执行顺序的,我们可以用它来管理HTTP请求和断言的执行顺序,更好地模拟实际用户的操作;
  7. 最后,我们运行测试计划,JMeter就会根据我们的配置生成测试报告,并在测试过程中收集各种度量数据;
  8. 总的来说,JMeter的工作原理就是通过GUI界面来创建和配置测试计划,包括线程组、HTTP请求、断言和逻辑控制器等元素。在运行测试计划时,JMeter会根据我们的配置生成测试报告,并在测试过程中收集各种度量数据。通过这些步骤,我们就可以有效地进行功能测试执行和测试报告的创建,以及缺陷跟踪等等一系列操作,帮助团队改进产品质量。
28、JMeter有几种参数化的方式?
  1. JMeter有四种参数化方式,这样可以让测试更加灵活方便;
  2. 首先,用户参数可以用来设置简单的参数,比如用户名、密码等;
  3. 然后,函数助手可以帮忙生成随机数,或者用函数来生成更复杂的参数;
  4. 如果需要设置的参数很多,可以用CSV Data Set Config这种方式,可以让你更轻松地管理大量的测试数据;
  5. 当然,还可以使用用户自定义变量来定义额外的变量,让测试更灵活;
  6. 这些功能都能够帮助我们更好地模拟实际用户的操作,让测试更加全面、灵活和有效。
29、结合项目实际来说说,JMeter如何进行参数化?
  1. 首先,我们需要确定需要参数化的测试用例,以及需要参数化的变量。
  2. 然后,根据参数化需求选择适合的参数化方式。
  3. 对于接口测试,我们选择使用用户参数或CSV Data Set Config来进行参数化。
  4. 接下来,我们设置参数化。
  5. 如果需要设置简单的参数,如用户名和密码,可以使用用户参数。我们添加用户参数,并设置用户名和密码的取值范围。
  6. 例如,用户名可以设置为"user1"、“user2”、“user3"等,密码可以设置为"password1”、“password2”、"password3"等。
  7. 如果需要管理大量的测试数据,可以使用CSV Data Set Config来设置更复杂的参数。
  8. 接着,我们运行测试计划,JMeter将根据配置的参数化生成相应的测试用例,并在测试过程中收集度量数据。
  9. 最后,我们根据收集的度量数据进行分析和总结,评估应用程序的性能和稳定性,并根据结果进行相应的优化和改进。
  10. 通过这些步骤,我们可以模拟实际用户的各种情况和场景,提高测试的全面性、灵活性和有效性,从而确保应用程序的质量和稳定性。
30、Jmeter常用断言方法有哪些?
  1. **响应断言:**用来对测试响应进行断言,验证响应是否符合预期结果;
  2. **JSON断言:**用来对JSON格式的响应进行断言,验证JSON数据是否符合预期;
  3. **正则表达式断言:**使用正则表达式对响应进行断言,可以根据自定义的模式进行验证。
31、具体说一说JMeter如何进行断言?
  1. 选择要验证的接口请求,并选择响应体部分;
  2. 添加JSON断言,在断言的配置中,设置以下选项:
    a. 选择一个合适的JSON Path,以指定要验证的JSON字段路径。
    c. 设置期望的结果值,例如数值、字符串等。
32、Jmeter 常用元件有哪些?
  1. 取样器: 可以模拟用户发送请求,比如发HTTP请求或其他类型的请求,像FTP请求等。
  2. 逻辑控制器: 可以控制测试流程,比如要做循环或者判断等逻辑操作。
  3. 配置元件: 可以配置全局变量,还有CSV数据文件和数据库配置等。
  4. 断言: 可以对测试响应进行断言,就是验证响应是否符合预期结果。
  5. 定时器: 可以控制请求之间的时间间隔,就是保证请求的并发度或定时发送请求。
  6. 前置处理器: 可以在请求之前进行一些处理操作,比如添加请求头信息、设置环境变量等。
  7. 后置处理器: 可以在请求之后进行一些处理操作,比如解析响应结果、提取有用的信息等。
  8. 监听器: 可以收集和显示测试结果,比如将测试结果输出到文件或记录到数据库中。
  9. 并发控制器: 可以控制并发用户数量,就是设置同时。
33、详细解释一下JMeter线程组的作用?
  1. 模拟并发用户: 通过设置线程组的数量,可以模拟一定数量的并发用户,从而评估应用程序在高并发情况下的性能表现。
  2. 控制测试流量: 线程组可以控制测试的流量,通过设置ramp-up period(ramp-up时间),可以逐步增加并发用户数量,以模拟实际用户的逐步增加的情况。
  3. 模拟用户行为: 线程组可以模拟不同用户的行为模式,例如设置请求之间的时间间隔、循环次数等,以模拟实际用户的操作行为。
34、JMeter中的正则表达式是什么?

在JMeter中,正则表达式可以用于许多方面,例如:

  1. 用于匹配请求的URL: 可以使用正则表达式来定义一个或多个URL模式,以便选择需要测试的请求。
  2. 用于匹配响应: 可以使用正则表达式来解析响应中的特定文本或标记,以检查请求是否成功或测试响应是否符合预期。
  3. 用于提取变量: 可以使用正则表达式从请求或响应中提取特定的变量,并将其用于后续的测试或验证中。
  4. 用于过滤结果: 可以使用正则表达式来过滤测试结果,以便只关注特定的测试结果或异常情况。
35、你都用过哪些JMeter的函数?
  1. _Random 函数:该函数用于生成随机数。可以使用它来生成各种类型的随机数,例如整数、浮点数、字符串等等。该函数可以用于测试计划中的参数化,以便在每次测试时生成不同的随机数。
  2. _digest 函数:该函数用于进行加密操作。它可以对字符串进行哈希运算或其他加密算法,生成唯一的摘要值。可以使用它来验证数据的完整性和安全性。
  3. _time 函数:该函数用于获取当前时间戳。它可以用于测试计划中的时间相关操作,例如记录测试开始和结束时间、计算测试时长等等。
36、解释什么是JMeter配置元件?

以下是六个JMeter配置元件的说明:

  1. 参数化配置: 使用JMeter的参数化功能,可以将变量定义为参数,并在测试计划中重复使用这些参数。例如,可以使用参数化配置来定义用户名和密码,以便在多个请求中使用相同的用户名和密码。
  2. HTTP请求默认值: 通过设置HTTP请求默认值,可以在测试计划中设置HTTP请求的默认配置,例如默认的请求URL、请求头、请求体等等。
  3. HTTP信息头管理器: HTTP信息头管理器可以帮助测试人员更轻松地管理和配置HTTP请求和响应的信息头,例如请求和响应的头部信息、身份验证等等。
  4. 计数器: 计数器可以帮助测试人员记录测试计划中的请求和响应的数量。例如,可以使用计数器来计算请求的总数或响应的个数。
  5. 断言: 断言可以帮助测试人员验证响应是否符合预期结果。例如,可以使用断言来检查响应状态码是否为200,或者响应体中是否包含特定的文本。
  6. 配置元件的引用: 通过使用引用配置元件,可以在测试计划中重复使用相同的配置,例如使用相同的请求头、信息头、参数化变量等等。这样可以更轻松地管理和配置测试计划中的多个请求和响应。
37、JMeter 的测试配置元件的执行顺序?

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

38、说明一下,什么是JMeter的计数器?

计数器(counter):允许用户创建一个在线程组之内都可以被引用的计数器。
如果需要引用的数据量较大,且要求不能重复或者需要自增,那么可以使用计数器来实现。

39、解释一下,什么是JMeter后置处理器?

后置处理器可以在测试结束后对测试结果进行处理、分析、筛选和整理。它可以对测试结果进行以下操作:

  1. 数据提取: 后置处理器可以从测试结果中提取特定的数据,例如响应时间、响应结果、请求的参数等等。这些数据可以被用于后续的分析和计算。
  2. 数据汇总和分析: 后置处理器可以统计和分析测试结果中的数据,例如计算平均响应时间、响应成功率和错误率等等。这些数据可以帮助测试人员更好地了解系统的性能和瓶颈。
  3. 数据过滤: 后置处理器可以根据指定的条件过滤测试结果,例如只显示响应时间超过某个阈值的请求或响应,或者只显示出现错误的请求和响应。
  4. 数据输出: 后置处理器可以将处理后的测试结果输出到文件、数据库或其他媒介中,以便后续的分析和报告生成。
  5. 变量替换: 后置处理器可以替换测试结果中的变量,例如将响应结果中的特定字符串替换为其他字符串,或者将请求参数中的变量替换为其他值。

后置处理器可以帮助测试人员更好地理解和分析测试结果,从而识别性能瓶颈、优化测试计划和发现潜在的问题。

40、详细说一说至少3个JMeter 监听器
  1. 察看结果树
  2. 汇总报告
  3. 图形结果
41、具体说一说JMeter如何实现文件上传操作?
  1. 配置测试计划: 在JMeter中创建一个测试计划,并添加需要上传文件的HTTP请求。可以使用JMeter提供的HTTP请求元件或其他自定义的请求元件来模拟文件上传操作。
  2. 配置请求头部信息: 在HTTP请求头部信息中,添加文件上传所需的字段和值。这些字段和值通常包括:
    • Content-Type:指定请求的媒体类型为"multipart/form-data"。
    • Content-Length:指定请求的长度,即文件加上其他表单字段数据的总长度。
  3. 配置请求体: 在HTTP请求体中,添加文件上传的数据。可以使用JMeter提供的文件上传器(File Upload)来实现这一步骤。
    • 创建文件上传器:在HTTP请求体中添加一个文件上传器,并设置其参数。
    • 设置文件路径:指定要上传的文件的路径,可以是相对路径或绝对路径。
    • 设置文件名:指定上传后文件的名称,如果不需要修改,可以使用原始文件名。
  4. 配置断言: 为了验证文件上传操作是否成功,可以使用JMeter提供的断言功能来验证响应结果。例如,可以检查响应状态码是否为200,或者检查响应体中是否包含特定的上传成功提示信息。
  5. 运行测试计划: 完成以上配置后,保存测试计划并运行。JMeter将模拟文件上传操作,并记录测试结果和统计数据。
42、JMeter 如何做接口关联测试?

接口的响应结果通常为 HTML 和 JSON 格式的数据,主要会用到正则提取器、JSON 提取器、XPath 器以及边界值提取器,还有 BeanShell 来进行数据的提取。
对于 HTML 这种响应结果我们通常会用正则或者是 XPath 来进行数据的提取;对于 JSON 格式的数据通常会用 JSON 提取器。

43、如何使用JMeter做接口持续集成?

JMeter+ANT+Jenkins可以帮助您实现接口的持续集成。您可以使用JMeter进行测试计划的执行和响应结果的处理,使用ANT编写自动化构建的任务,以及使用Jenkins实现定时执行和结果通知。通过这种组合,您可以实现接口的自动化测试和集成,并及时获取测试结果和问题反馈

44、说一说 Jenkins+JMeter+Ant 持续集成的原理?

以下是JMeter+ANT+Jenkins的接口持续集成原理:

  1. JMeter负责执行测试计划中的接口调用和响应结果的处理*

JMeter是一个功能强大的负载测试工具,它可以通过模拟多个用户并发访问接口来测试系统的性能。在JMeter中,您可以创建测试计划,其中包含每个要测试的接口请求,以及与之相关的请求头、请求体和响应体等信息。

  1. ANT负责编写自动化构建的任务:

ANT是一种基于Java的构建工具,可以用于自动化构建和部署。在接口持续集成中,ANT可以用于编写脚本来自动化执行测试计划,并将测试结果与测试计划中的请求和响应关联起来。通过ANT的脚本编写,您可以实现测试计划的自动化执行和结果处理。

  1. Jenkins负责配置构建任务和定时执行:

Jenkins是一个流行的自动化构建工具,可以用于定期执行ANT脚本或其他构建任务。在Jenkins中,您可以配置构建任务,包括执行ANT脚本、启动JMeter、执行测试计划、收集测试结果等操作。通过Jenkins的定时任务或触发器,您可以指定何时执行测试计划,并将测试结果通知到指定的位置。

45、说一说Postman是如何做接口测试的吗?

Postman是一个流行的接口测试工具,可以用于验证接口的正确性和稳定性。以下是Postman进行接口测试的基本步骤:

  1. 导入接口测试用例:在Postman中,您可以创建测试用例,并定义每个测试用例的请求和期望结果。这些测试用例可以覆盖各种接口场景,包括正常情况、异常情况、错误情况等。
  2. 运行测试用例:在Postman中,您可以运行测试用例并查看每个测试用例的执行结果。Postman可以自动执行测试用例,并将每个请求的响应结果与期望结果进行比较。
  3. 分析测试结果:Postman可以生成详细的测试报告,包括每个测试用例的执行结果、响应时间、吞吐量等信息。您可以根据测试结果来分析接口的性能和正确性,并找出可能存在的问题。
  4. 调试和修复问题:如果测试用例中发现了问题,您可以利用Postman提供的调试工具来定位问题并修复它们。Postman可以提供详细的调试信息,包括请求和响应的详细信息、错误日志等。
  5. 定期运行测试用例:为了确保接口的稳定性和可靠性,您可以定期运行测试用例,并将测试结果通知到指定的位置。通过定期运行测试用例,您可以及时发现并解决潜在的问题。

总之,Postman是一种强大的接口测试工具,可以帮助您验证接口的正确性和性能。通过创建测试用例并运行它们,您可以获取详细的测试报告,并根据报告中的结果来调试和修复可能存在的问题。

46、具体说一说 Postman 的全局变量与环境变量?

Postman中的全局变量和环境变量都是用来存储测试数据和参数的,但它们的适用场景和作用略有不同。

全局变量是一种通用的变量,可以在测试中的任何位置使用。它们通常用于存储在多个测试用例中都会用到的数据,例如API的基底URL、API的认证信息等。使用全局变量可以避免在多个测试用例之间重复输入这些数据,从而更方便地管理测试用例。

环境变量则是在特定环境下使用的变量。它们通常用于存储与特定环境相关的数据,例如环境中的API密钥、环境中的特定配置信息等。在一个测试环境中,可以使用相同的环境变量,但在不同的测试环境中可能会有不同的值。

在Postman中,您可以创建全局变量和环境变量,并将它们应用于测试用例中。通过使用这些变量,您可以更灵活地管理测试数据,避免重复输入,并且能够在不同的测试环境中轻松切换。

需要注意的是,全局变量和环境变量的使用是在测试用例的具体步骤中完成的。在Postman中,您可以为每个具体步骤设置相应的变量值,并在需要的地方引用这些变量值。这样,您可以动态地管理测试数据,并且能够在不同的测试场景下灵活地切换和复用数据。

47、具体说一说 Postman 如何做断言测试?

在Postman中,断言测试可以通过多种方式实现:

  • 响应状态码:您可以检查响应是否返回特定的HTTP状态码,如200表示成功。
  • 响应体内容:您可以检查响应体的特定字段或值是否与预期相符。
  • 正则表达式:您可以使用正则表达式来匹配响应体中的特定文本模式。
  • JSON模式匹配:您可以根据JSON格式的预期结果来检查响应是否符合预期的结构和值。

通过使用这些断言测试方法,您可以对接口的响应进行详细的验证,以确保其正常工作并返回预期的结果。

48、JMeter与Postman的优缺点,你如何选择?

JMeter的优点包括:

  • 适合进行数据和操作分离的测试,可以更方便地管理大量的测试数据。
  • 提供了丰富的断言组件,可以帮助您更方便地进行断言测试。
  • 提供了强大的正则表达式支持,可以帮助您更灵活地处理响应结果。
  • 具有良好的扩展性,可以通过插件等方式扩展功能。

JMeter的缺点包括:

  • 操作相对较为复杂,需要一定的学习成本。
  • 对于一些特定类型的接口测试,可能需要编写一些自定义的元件或脚本。

Postman的优点包括:

  • 操作相对简单直观,易于上手。
  • 提供了丰富的自带的断言函数,可以帮助您更方便地进行断言测试。
  • 支持使用环境变量和全局变量,可以帮助您更灵活地管理测试数据和参数。
  • 具有图形化界面,可以帮助您更直观地进行测试管理和调试。

Postman的缺点包括:

  • 对于一些特定类型的接口测试,可能需要编写一些自定义的脚本或程序。
  • 在处理大量数据或复杂测试场景时,可能会显得不太高效。
49、如何用Jmeter录制脚本
  1. 在测试计划里添加线程组
  2. 在测试计划里添加非测试元件的 HTTP 代理服务器
  3. 配置代理服务器,端口可以设置成8888,把目标控制器选成测试计划>线程组,这样做的目的是录制的脚本直接生成在线程组下面,然后设置
  4. Requests Filtering(请求过滤器),若想排除一些我们不需要的东西,则可以点击添加建议排除,但这个也只能排除大部分的,小部分的还是排除不了
  5. 启动代理服务器
  6. 打开浏览器,对浏览器进行设置,设置对应的代理信息,地址:127.0.0.1,端口:8888,保存
  7. 访问网站,如 https://www.baidu.com/
  8. 查看线程组,可看到下面录制的脚本在增加
  9. 添加监听器,察看结果树
  10. 运行,看录制的脚本能否运行成功
  11. 把不是网站的脚本禁用,看运行是否还能成功
  12. 运行成功之后删除禁用的那些脚本
50、用户定义的变量和用户参数的区别

用户定义的变量在启动运行时获取一次值,在运行过程中不再动态获取值,不管设置多少个线程数或者循环多少次,都只获取一次值不会变。而用户参数在启动时获取一次值,在运行过程中每次使用该参数都会动态获取一次值。

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值