面试题整理

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文件使用邮件发送到1206180814@qq.com

    • 在重点位置加日志

实现思路:

  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中记录为空,服务端暂未发现明显报错,但是在高并发时存在客户端请求连接失败的情况

 

posted @ 2024-03-19 08:56  贰号猿  阅读(22)  评论(0编辑  收藏  举报