首页 > 其他分享 >面试题整理

面试题整理

时间:2024-03-19 09:13:03浏览次数:21  
标签:__ 面试题 Redis 用例 MQ 测试 整理 执行

1、自我介绍

面试官好,我叫。我有5年多的软件测试经验。在工作中,熟练掌握了各种测试方法和工具,包括黑盒测试、白盒测试、自动化测试、性能测试、安全测试等。有一定的编程能力,能够根据需要编写测试用例和脚本。有良好的沟通能力和团队协作能力,能够与开发人员、产品经理等各部门人员有效合作。对软件测试工作很有热情,希望能够在未来的测试工作中继续学习和成长。

我在公司参主要负责交易商品和物流项目的测试工作。公司的产品主要是线上卖课程和直播电商业务。我的目标是确保该平台的功能完整性、性能稳定性和安全性。

在项目实施过程中,我负责以下工作:

设计和执行测试用例,覆盖了所有功能需求和性能需求。

技能落地: 开发测试平台接口自动化的搭建 工具的开发 ui自动化的搭建 业务测试: 云原生测试 应用的治理 云服务器管理

与开发人员合作,跟踪和解决缺陷。

 

linux常用命令,mysql复杂语句,python基础列表与元组的区别。

 

2、MQ/redis的测试

MQ 测试主要关注以下几个方面:

  • 功能测试:验证 MQ 的基本功能,例如消息发送、接收、队列管理等。
  • 性能测试:测试 MQ 的吞吐量、延迟、可靠性等性能指标。
  • 兼容性测试:测试 MQ 与不同应用、框架、操作系统等的兼容性。
  • 安全性测试:测试 MQ 的安全性,例如消息防篡改、防窃听等。

具体测试方法如下:

  • 功能测试:可以使用自动化测试工具来模拟消息发送、接收等操作,并验证结果是否符合预期。
  • 性能测试:可以使用压测工具来模拟大量消息的发送和接收,并测试 MQ 的性能指标。
  • 兼容性测试:可以使用不同的应用、框架、操作系统等来测试 MQ 的兼容性。
  • 安全性测试:可以使用安全测试工具来测试 MQ 的安全性。

Redis 测试

Redis 测试主要关注以下几个方面:

  • 功能测试:验证 Redis 的基本功能,例如数据存取、缓存、过期等。
  • 性能测试:测试 Redis 的吞吐量、延迟、可靠性等性能指标。
  • 兼容性测试:测试 Redis 与不同应用、框架、操作系统等的兼容性。
  • 安全性测试:测试 Redis 的安全性,例如数据防篡改、防窃听等。

具体测试方法如下:

  • 功能测试:可以使用自动化测试工具来模拟数据存取、缓存等操作,并验证结果是否符合预期。
  • 性能测试:可以使用压测工具来模拟大量数据的存取,并测试 Redis 的性能指标。
  • 兼容性测试:可以使用不同的应用、框架、操作系统等来测试 Redis 的兼容性。
  • 安全性测试:可以使用安全测试工具来测试 Redis 的安全性。

以下是一些常用的 MQ 和 Redis 测试工具:

  • MQ 测试工具: JMeter、Kafka Tool、RocketMQ Test Tool
  • Redis 测试工具: Redis-benchmark、Jedis、Lettuce

以下是一些具体的测试建议:

  • 在测试 MQ 时,可以关注以下几点:
    • 消息发送和接收是否成功
    • 消息是否按顺序发送和接收
    • 消息是否丢失或重复
    • 队列是否能正常管理
  • 在测试 Redis 时,可以关注以下几点:
    • 数据存取是否成功
    • 缓存是否有效
    • 数据是否过期
    • Redis 是否能正常运行

生成器,迭代器,装饰器。生成对象,迭代对象:

 它允许程序员扩展或修改函数、方法或类的行为,而不需要改变它们的实际代码。装饰器本质上是一个接受函数作为参数并返回一个新函数的函数。

常见用途

  1. 计时:测量函数执行的时间。
  2. 日志记录:在函数执行前后记录日志。
  3. 权限检查:在函数执行前检查用户权限。
  4. 缓存:缓存函数的执行结果。

 

迭代器是一个可以记住遍历的位置的对象。迭代器从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。

迭代器有两个基本的方法:__iter__() 和 __next__()

 

生成器是一种特殊的迭代器,它使用 yield语句来生产一系列的值,用于迭代。生成器在Python中非常流行,因为它们易于使用,并且可以创建高效的代码。

生成器函数被调用时,它返回一个生成器对象,但不会立即执行函数体内的代码。当生成器的 __next__() 方法被调用时,函数会执行,直到遇到 yield 语句,然后返回 yield 后面的值。每次调用 __next__()方法时,函数都会继续执行,直到再次遇到 yield 语句或函数结束。

 

3、接口自动化测试框架搭建

接口自动化的框架开发:

  • 用到的知识点:

    • pytest

    • allure

    • 参数化

    • Excel操作,不会,用xlrd

    • 日志操作,学过,不太会

    • 邮件,会

    • 文件操作,文件压缩, 没讲,但你要会的,zipfile

    • 执行终端命令,os.system, subprocess:cell, popen

      • 如何使用python查看当前目录下的所有文件或者目录?

  • 实现的个功能:

    • 将各个功能拆分为多个目录

    • 使用参数化读取Excel中的用例

      • 发请求

      • 获取请求结果

      • 校验/断言

    • 使用allure生成测试报告

    • 将allure测试报告所在的目录打包

    • 将打包的zip文件使用邮件发送到[email protected]

    • 在重点位置加日志

实现思路:

  1. 读取Excel,每一行数据都是一个用例,你在读出来之后,把这个一行用例封装成一个对象,字典,列表。

  2. 使用参数化每次讲一个用例对象传进去。

  3. 使用requests获取用例对象中的相关参数发请求。

  4. 然后将请求结果与预期值(用例对象)做断言

  5. 此时,allure所需的json数据已经有了。

  6. 使用allure命名读取josn数据生成测试报告

  7. 将报告压缩

  8. 使用发邮件功能将压缩文件发送

  9. 在重点位置,添加日志功能

4、自动化平台的搭建

管理所有的接口:

  • 接口的增删改查

  • 一键执行接口,并生成测试报告

    • 批量执行

    • 下载报告

  • 批量导入

    • 从Excel表格中

  • 定时任务

    • 每天定时(凌晨1点)检查是否有今天要结束的测试活动,如果有,就自动的执行一遍。

  • 可视化

    • echarts

实现:

  • django + pytest

参考项目列表图,完成:

  • 新建项目

  • 编辑项目

  • 删除项目

  • 为项目添加用例

数据库设计:

  • 项目表的字段:

    • 项目名称

    • 项目描述

    • 用例数据量,该字段是统计出来的

    • 覆盖率字段,计算出来的(通过的用例数量除以项目总的用例数量)

    • 开始时间

    • 结束时间

  • 用例表

    • 用例名称

    • 用例描述

    • 所属项目

    • 请求的url

    • 请求的类型

    • 请求的参数

    • 期望值

    • 执行状态

      • 已执行

      • 未执行

    • 通过状态,用例执行后,修改此状态

      • 执行成功,已通过

      • 执行失败,未通过

    • 用例报告

  • 日志表:

    • 所属项目

    • 执行时间

    • 执行的报告

作业完成顺序:项目表的增删改查 ---> 用例表的增删改查 -----> 用例执行------> 批量执行的用例日志 ---> 数据可视化

用例执行过程分析

  1. 页面中,勾选了一个或者多个用例,CheckBox(复选框)

  2. 点击执行按钮后,后端接收一个或者多个CheckBox的值(用例id):

    1. 前端如何往后端发送?

      1. ajax发送,循环CheckBox的外部盒子,获取每一个CheckBox状态为选中的input框,获取input的value值(用例id),然后push到数组中,再将该数组发送到后端。

      2. form表单提交

    2. 后端如何接收form表单提交的值

      1. request.POST.get_list

def index(request):
    if request.method == "POST":
        request.POST.get("username")  # username对应的是单个值
        request.POST.get_list('checkbox_list')  # 以列表的形式接收多个值
  1. 后端接收到了前端传过来的值:[1, 2, 3, 4]

    1. 根据获取到的用例id列表,去数据库中提取出对应记录(用例对象)

    2. 如果是多个用例对象,循环使用requests提取用例对象中的字段发请求。

    3. 结果断言

    4. 生成测试报告

    5. 将测试报告保存到用例的相应字段中

    6. 修改用例的执行状态和通过状态

    7. 考虑如何获取批量执行的测试结果报告

  2. 用例批量执行完毕,将批量执行结果保存到log表中

    1. 用例执行的时间

    2. 用例报告

  3. 将执行结果给前端返回。

5、性能测试

设计:

在设计评审之后,开发在不知道服务性能瓶颈,需要测试协助定位服务的性能瓶颈,需要测试模拟一定时间之内设计并发用户同时向系统发出请求,检测出系统的响应能力,包括响应时间以及CPU/内存等的使用情况,以验证系统对并发请求时的支持能力,并获取该系统的最大并发请求数量。

目的:

1)清楚服务的性能瓶颈,为设置接口的限流提供参考依据
2)判断资源是否溢出,可节省机器成本
3)检测系统可能存在的问题(代码、db、cache、系统配置、容量)

报告:

(1)cup使用率:26.3%<80% 暂未发现明显性能瓶颈问题
(2)内存使用率:69.1%,暂未发现明显性能瓶颈问题
(3)平均响应时间为0.599s<1S,暂未发现明显性能问题
(4)事务失败率为0.01%,数据库请求数据为46869,请求失败数为6;日志记录如下,error_log中记录为空,服务端暂未发现明显报错,但是在高并发时存在客户端请求连接失败的情况

 

标签:__,面试题,Redis,用例,MQ,测试,整理,执行
From: https://www.cnblogs.com/erhuoyuan/p/18032205

相关文章

  • vue面试题(vue2响应式源码剖析)
    一、前言这篇文章结合Vue2.7.16的源码和一个Vue2的项目,来详细讲解Vue2实现响应式数据的核心代码1.1准备安装@vue/clinpminstall-g@vue/cli创建vue项目vuecreatevue2-test修改Vue实例的配置对象二、响应式处理的入口通过newVue()调用Vue构造函数,......
  • vue面试题(前置知识)
    一、渐进式框架Vue是一个框架,也是一个生态,其功能覆盖了大部分前端开发常见的需求。包含了声明式渲染、组件化系统、客户端路由、大规模状态管理、构建工具等,但vue的核心库只关注视图层。在实际开发中,可以根据业务需求的变化,来不断增加这些功能,实现vue的渐进式增强。二、声明式框......
  • vue面试题(vue2响应式数据基础)
    一、什么是响应式数据响应式数据是指当数据发生变化时,相关的视图或组件会自动更新,保持与数据的同步。这样的设计使得开发者能够更方便地管理和更新数据,无需手动操作DOM或显式地更新视图。当数据发生变化时,所有使用该数据的地方都会自动更新。二、观察者模式观察者模式定义对......
  • 前端面试题-vue2和vue3的区别
    监测机制的改变vue2对数据监测使用的是Object.definePropert()对数据进行劫持,结合发布订阅者模式来实现vue3通过使用proxyAPI对数据直接进行代理。vue3优于vue3的的地方就是:vue3的proxyAPI监测的是整个对象,而不再是某个属性消除了Vue2当中基于Object.defineProperty......
  • 史上最全Java核心面试题(带全部答案)2024年最新版
    今天要谈的主题是关于求职,求职是在每个技术人员的生涯中都要经历多次。对于我们大部分人而言,在进入自己心仪的公司之前少不了准备工作,有一份全面细致面试题将帮助我们减少许多麻烦。在跳槽季来临之前,特地做这个系列的文章,一方面帮助自己巩固下基础,另一方面也希望帮助想要换工......
  • 整理记录list(未完成)
    1.seurat4环境的安装代码2.conda安装知识的总结()https://www.jianshu.com/p/4c7b9127cf83conda常见报错conda-channel问题http://mp.weixin.qq.com/s?__biz=Mzg5MjY1MTU4Ng==&mid=2247484430&idx=1&sn=7df7c1d546ff5fce3e5d6e73f7569c2c&chksm=c03b9523f74c1c35e96bf287e959......
  • 前端面试题合集附答案(问题来源BOOS直聘)
    1,vue的双向绑定原理是什么?里面的关键点在哪里?    1,数据劫持    vue通过Object.defineProperty()方法劫持数据对象属性上的getter和setter,从而实现数据的监听和更新    2,观察者模式    vue采用观察者模式实现对数据的监听和更新,当数据发生变......
  • CSPJ知识点整理
    指针:https://blog.csdn.net/qq_35429198/article/details/109331937排序:https://www.cnblogs.com/myeln/articles/17576193.html递归作业:https://www.luogu.com.cn/training/370327#problems哈夫曼编码:https://zhuanlan.zhihu.com/p/415467000图:https://www.luogu.com.cn/trai......
  • 2024年深度之眼--科研助理面试题
    深度之眼--科研助理面试题请将答案写在每道题的后面,Word文档命名为自己的名字,通过邮件/微信回复提交。一、选择题1.如何安装pytorch?(A)A使用pipB使用apt-getC下载源代码变异D无法安装2.pytorch中张量的阶数表示什么?(C)A张量的大小B张量的形状C张量的维度D......
  • Java面试问题集合,Java面试题合集
    前言:说到算法,相信每一个程序员和接触过程序员的朋友都不会陌生,直到现在算法一直占着面试必问的地位,而算法面试也仍是当前最适合公司筛选程序员的方法之一,在阿里,字节跳动、华为等公司带动下,无论是求职者还是面试官,都逐渐认识到算法面试其实是相对高效、准确且公平的筛选机制......