四月软件测试面经合集(持续更新)

四月软件测试面经合集

  • polelink面试(一面过)
    • 01 对于JMeter接口测试,如何做接口关联?
      • 接口关联的定义
      • JMeter关联方法
      • 正则表达式介绍
      • 贪婪匹配和非贪婪匹配
      • 案例分析
      • 正则表达式提取器步骤
    • 02 是否会写shell脚本,能对shell进行编程?
      • shell的定义
      • 写一个shell
      • shell脚本使用场景
        • 服务器指标监控(cpu和内存)
        • 测试环境部署
        • 查看远程连接数
    • 03 介绍一下你在测试流程各个环节的工作内容和细节?
      • 测试流程
        • ==需求产生阶段==
        • ==需求开发阶段==
        • ==需求测试阶段==
        • ==需求上线发布阶段==
        • 总结

polelink面试(一面过)

01 对于JMeter接口测试,如何做接口关联?

接口关联的定义

关联的概念: 请求之间有依赖关系,一个请求响应数据作为另一个的请求参数来传递。
示例: 登录接口-下单接口
首先,登录接口返回包含用户身份认证信息的token,后续的接口需要附带上这个token才能被服务器识别身份。

JMeter关联方法

  • 正则表达式提取器:提取任意格式的响应数据
  • Xpath提取器:提取HTML格式的响应数据
  • JSON提取器: 提取JSON格式的响应数据

正则表达式介绍

正则表达式:就是一个公式,或者说一套规则,使用这套规则可以从任意字符串中提取出想要的数据内容

公式格式:左边界(匹配符号)右边界:可以提取出想要获取的数据内
.:是通配符,可以代表任意字符(除换行回车)
.:是通配符,可以代表任意字符(除换行回车)
*: 代表前面的字符出现0次或者多次
.*匹配规则:找到左边界值后,往右查找有边界,找到最后面的右边界,中间的所有数据都被记录下来
?: 代表非贪婪匹配,找到左边界后,往右查找匹配右边界,只要有匹配的右边界就停止继续查找;再次查找
左边界和右边界

贪婪匹配和非贪婪匹配

假设我们有一个字符串 “abcde”,并且我们要使用正则表达式 a.e 进行匹配,首先是贪婪匹配,然后是非贪婪匹配。
1.贪婪匹配 (a.e):
在贪婪匹配中,.
将尽可能多地匹配字符,直到最后一个 ‘e’。
2.非贪婪匹配 (a.
?e)
在非贪婪匹配中,.*? 将尽可能少地匹配字符,直到第一个 ‘e’。

在这个例子中,无论是贪婪匹配还是非贪婪匹配,最终结果都是相同的,因为字符串中只有一个 ‘e’。但在包含多个 ‘e’ 的字符串中,贪婪匹配和非贪婪匹配的结果可能会不同。

案例分析

原始文本:
021-1234-1234
022-1234-1235
023-1234-1236
024-1234-1237
025-1234-1238
026-1234-1239
027-1234-1230
要求:匹配出 城市号、地区号、个人号码三组

正则表达式匹配:

(.*?)-(.*?)-(.*?)\n

通过一个正则表达式可以提取出多组数据,每组数据设置对应的左边界和右边界即可
每一组数据都可以有一个或者多个值

正则表达式提取器步骤

在这里插入图片描述
操作步骤:

1.添加线程组
2.添加http请求-传智播客
3.添加正则表达式提取器

  • 引用名称:存在提取之的参数名称,比如title
  • 正则表达式:左边界(.*?)右边界
  • 模板:用$$引用起来,表示解析出第几个值
  • 匹配数组:0表示随机取值,-1表示全部取值,1代表取第一个值

4.添加http请求-百度

  • 引用正则表达式中的引用的名称。
  • 线程组下添加http请求

  • http请求下添加正则表达式提取器

在这里插入图片描述

  • 配置http请求(传智)
    在这里插入图片描述

  • 配置正则表达式提取器(传智)

  • 配置http请求(百度)
    在这里插入图片描述

02 是否会写shell脚本,能对shell进行编程?

shell的定义

  • shell

shell是一种编程语言,只是比较古老
liunx底层支持shell语言
在这里插入图片描述

  • 脚本

本质就是一个文本文件,除了读写外,还可以执行
shell脚本就是shell语言编写的脚本,格式是.sh

  • shell脚本的编辑和运行环境
    • 编辑:vim xx.sh
    • 脚本解释:高级语言需要被解释为二进制才能运行
# 如何指定shell脚本的解释器
#!/bin/bash 开头 表示使用Bash shell解释器##!/usr/bin/python3 表示使用python3解释器

写一个shell

在这里插入图片描述

shell脚本使用场景

开发小工具(重复性高)

服务器指标监控(cpu和内存)
#!/bin/bash# 获取当前时间
current_time=$(date "+%Y-%m-%d %H:%M:%S")# 监控 CPU 使用情况
cpu_info=$(top -bn1 | grep "Cpu(s)" | sed "s/.*, *\([0-9.]*\)%* id.*/\1/" | awk '{print 100 - $1}')
echo "[$current_time] CPU Usage: $cpu_info%"# 监控内存使用情况
mem_info=$(free | grep Mem | awk '{print $3/$2 * 100}')
echo "[$current_time] Memory Usage: $mem_info%"

1.获取当前时间:使用 date 命令获取当前的日期和时间。
2.监控 CPU 使用情况:使用 top 命令获取 CPU 使用情况,并通过 grep、sed 和 awk 进行处理,最终输出 CPU 使用百分比。
3.监控内存使用情况:使用 free 命令获取系统内存信息,并计算内存使用百分比。

将以上代码保存为一个脚本文件(比如 monitor.sh),然后给予执行权限:

chmod +x monitor.sh

然后您可以运行这个脚本来监控服务器的 CPU 和内存使用情况:

./monitor.sh
测试环境部署

在这里插入图片描述

#!/bin/bash# 检查依赖
echo "Checking dependencies..."
# 可以添加检查逻辑,如检查特定命令是否存在、检查文件是否存在等# 下载和安装软件
echo "Downloading and installing required packages..."
# 可以添加下载和安装软件的逻辑,如使用 apt-get、yum 等包管理工具# 配置环境
echo "Configuring environment..."
# 可以添加配置环境的逻辑,如设置环境变量、修改配置文件等# 部署应用程序
echo "Deploying application..."
# 可以添加部署应用程序的逻辑,如复制文件、解压缩文件等# 启动服务
echo "Starting services..."
# 可以添加启动服务的逻辑,如启动数据库服务、Web 服务器等# 运行测试
echo "Running tests..."
# 可以添加运行测试的逻辑,如执行测试脚本、运行测试用例等# 清理
echo "Cleaning up..."
# 可以添加清理逻辑,如删除临时文件、停止服务等echo "Deployment completed."

echo 是一个用于显示文本或变量内容的命令。它将文本或变量的内容输出到标准输出(通常是终端)。
该 Shell 脚本用于测试环境部署,包括检查依赖、下载安装软件、配置环境、部署应用程序、启动服务、运行测试以及清理工作等步骤。每个步骤都有相应的输出信息,可以根据需要添加逻辑和命令,以确保测试环境的正常部署和清理,最终输出部署完成的信息。

查看远程连接数

编写一个 Shell 脚本来查看远程连接数可以使用 netstat 命令结合一些过滤器和计数器来实现

#!/bin/bash# 使用 netstat 命令获取当前连接,并使用 grep 过滤出 ESTABLISHED 状态的连接
# 使用 wc 统计连接数,并输出结果
echo "Current number of established connections:"
netstat -an | grep -c ESTABLISHED

-a:显示所有的连接和监听端口,而不仅仅是那些处于活动状态的连接
-n:显示数字形式的 IP 地址和端口号,而不是将它们解析为主机名和服务名。
-c:用于计算匹配到的行数,并将结果输出为数字
ESTABLISHED:是要搜索的模式,这里表示搜索包含 “ESTABLISHED” 字符串的行。

将以上代码保存到一个名为 check_connections.sh 的文件中,并赋予执行权限:

chmod +x check_connections.sh

chmod: 是 Linux/Unix 中用于修改文件权限的命令。
+x: 表示为文件添加可执行权限。这使得文件可以被当作程序来执行。

然后您可以通过运行这个脚本来查看当前的远程连接数

./check_connections.sh

03 介绍一下你在测试流程各个环节的工作内容和细节?

测试流程

需求产生阶段
  • 产品经理编写需求稿

会借鉴竞品是否有这样的功能,最后统计出最优设计方案。并在jira上提一个需求调研的产品任务(主任务)

  • 产品经理召开产品需求评审会议

各个人员会议上要做点啥:
1、专业其他产品经理会提出哪些需求设计会更有吸引力,能让需求更好。
2、测试会提出哪些需求设计不合理,不美观等
3、开发会提出哪些需求设计是开发无法实现的技术难点,或者实现起来效果不好,或者哪些需求模棱两可,这些问题都需要产品经理重新设计。

  • 需求稿交付给UI设计师和交互设计师完成设计

产品经理会画出原型图和交互稿
UI设计师和交互设计师建立自己的子任务进行设计

需求开发阶段
  • 测试着手测试用例框架编写,开发召开开发方案评审会议

测试者会根据需求文档,原型图、交互稿等文档编写测试用例xmind框架,尽可能完善测试点。

  • 开发着手写代码,测试着手完善测试用例并标记冒烟用例

开发评审会议结束之后,需要修改开发文档,测试则根据开发文档进一步完善测试点细节,然后在石墨上对照着xmind测试点完善测试用例,并从中间标记优先级为a的用例作为冒烟用例提供给开发提测前自测。

  • 测试召开测试用例评审会议

测试召集负责本需求的开发,测试同事和负责该需求的开发要来一起在会议室评审石墨上的测试用例是否写全面,影响面是否评估全面等。

需求测试阶段
  • 开发跑完冒烟用例,并提测,测试开始正式测试

开发代码已经完成,功能已经实现,在提测前需要进行冒烟用例执行,当作是自测,如果冒烟用例全部通过才能提测,提测时会在jira任务下备注已通过冒烟用例测试点,作为后续追责依据。

  • 测试中可以验收bug,和继续后续其他需求的测试

验收bug,和对其他需求做测试

  • 测试完后有的需求会写备份文档,有的需求会进行交叉测试,也有的需求不写备份文档和不做交叉测试

测试结束后,如果这个需求的坑比较多,或者测试数据比较多就开始写需求备份文档,记录这次需求注意点在哪里,记录核心要点和心得,记录测试数据等,一般大需求才会偶尔写写备份文档,作为后续新人的查阅资料。

  • 测试通过后,自动化测试负责人执行CI进行回归测试

一些不能自动化的回归用例就需要轮流交给一两个测试来执行,最后执行通过后,有bug,就让开发修改后继续测试,没有bug就等晚上上线。

需求上线发布阶段
  • 某个负责上线发布的测试,一键让测试环境的代码上线到正式环境中

由于之前开发和运维一起已经搭建好了一整套CD的系统,我们这边只需要一键部署上线即可,负责上线发布的测试一般是有着一定的CICD能力的人来负责上线发布的任务。

  • 项目上线后测试依旧需要关注自己负责的模块功能

晚上九点上线后,大概十点左右,要看看自己模块的需求是否功能正常,处于对项目负责任的态度,实际上工作中很少这样去看,基本上不会出现差错,就算出现问题,也不能挽回了,就会给你头上记录一个线上bug。

总结

首先产品经理会完成需求文档,再召开需求评审会议,然后UI设计师和交互设计师会完成原型图和交互稿,后面召开迭代会议分配任务,然后开发写开发方案并评审,我去写测试计划,写测试用例再评审,开发执行通过冒烟用例就可以提测了,之后就是常规测试,发现 bug,提交 bug,开发改完 bug 后再验收bug,如果需求是大需求会进行交叉测试,当所有需求都测试通过后,会进行回归测试,最后是通过Jenkins,docker,k8s持续部署上线发布项目,上线完成后,我会再看看自己负责的需求是否有线上 bug,一切功能正常才算结束。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/797466.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JVM—类加载子系统

JVM—类加载子系统 JVM的类加载是通过ClassLoader及其子类来完成的。 有哪些类加载器 类加载器如下: 启动类加载器(BootStrap ClassLoader):负责加载JAVA_HOME\lib目录或通过-Xbootclasspath参数指定路径中的且被虚拟机认可&am…

【leetcode面试经典150题】2.移除元素(C++)

【leetcode面试经典150题】专栏系列将为准备暑期实习生以及秋招的同学们提高在面试时的经典面试算法题的思路和想法。本专栏将以一题多解和精简算法思路为主,题解使用C语言。(若有使用其他语言的同学也可了解题解思路,本质上语法内容一致&…

FaaF:利用事实作为评估RAG的函数方法

原文地址:faaf-facts-as-a-function-for-evaluating-rag 2024 年 4 月 5 日 在某些情况下,我们使用其他语言模型来验证RAG的输出结果,但这种方法并未能有效识别出数据生成过程中的错误和缺失。 论文解析 挑战 评估的可靠性和效率&#xff…

4月底,这门HCIA认证即将发布!

非常荣幸地通知您,华为认证HCIA-AI Solution V1.0(中文版)预计将于2024年4月30日正式对外发布。 为了帮助您做好学习、培训和考试计划,现进行预发布通知,请您关注。 01 发布概述 基于“平台生态”战略,围绕…

练习题(2024/4/6)

1最接近的三数之和 给你一个长度为 n 的整数数组 nums 和 一个目标值 target。请你从 nums 中选出三个整数,使它们的和与 target 最接近。 返回这三个数的和。 假定每组输入只存在恰好一个解。 示例 1: 输入:nums [-1,2,1,-4], target …

并查集python实现及题目练习

文章目录 1. 并查集概念1.1 理解并查集:简介与应用场景1.2 Python 实现并查集及优化策略1.3 扁平化栈实现1.4 分析并查集的时间复杂度 2. 情侣牵手3. 相似字符串4. 岛屿数量 如果想了解并查集基础推荐去看左程云大神的算法讲解,非常不错,b站和…

python 02字符串

字符串可能是用到最多的数据类型了,所有标准序列操作(索引、切片、乘法、成员资格检查、长度、最小值和最大值)都适用于字符串 但别忘了字符串是不可变的,因此所有的元素赋值和切片赋值都是非法的。 1.居中效果 默认为空格 可…

在不同操作系统中搭建Python编程环境

1 在不同操作系统中搭建Python编程环境 1.1 在Linux系统中搭建Python编程环境 1. 检查Python版本 在你的系统中运行应用程序Terminal(如果你使用的是Ubuntu,可按Ctrl Alt T),打开一个终端窗口。为确定是否安装了Python&…

能源党建后台项目总结

1.引入 本次框架是Ruoyi-plusvue2element组合。 2.样式 由于是后台项目,样式要求统一,不可以有的输入框长有的短。着重几点: 1.关于form表单应该如何水平布局 在element中,form有个属性叫::inline"true"…

C++ Algorithm 常用算法

C <algorithm> 头文件是标准库中提供的一系列算法&#xff0c;用于操作范围&#xff08;range&#xff09;内的元素。这些算法可以用于数组、容器如vector和list&#xff0c;以及其他满足相应迭代器要求的数据结构。以下是一些常用的C <algorithm> 中的算法及其使用…

为何网易游戏会选择引入OceanBase数据库

本文作者&#xff1a;田维繁&#xff0c;网易游戏关系型数据库小组负责人 作为中国游戏开发领域的佼佼者&#xff0c;网易游戏始终站在网络游戏自主研发的前沿。其产品及周边产品线丰富多样&#xff0c;因此&#xff0c;为满足各种业务场景的需求&#xff0c;需要多种不同的数据…

算法| ss 双指针

11.盛水最多的容器15.三数之和26.删除有序数组中的重复项27.移除元素75.颜色分类88.合并两个有序数组167.两数之和2-输入有序数组581.最短无序连续子数组2486.追加字符以获得子序列 11.盛水最多的容器 /*** param {number[]} height* return {number}*/ // 思路 // 左0 右 n-…

【环境变量】常见的环境变量 | 相关指令 | 环境变量系统程序的结合理解

目录 常见的环境变量 HOME PWD SHELL HISTSIZE 环境变量相关的指令 echo&env export unset 本地变量 环境变量整体理解 程序现象_代码查看环境变量 整体理解 环境变量表 环境变量表的传递 环境变量表的查看 测试验证 少说废话&#x1f197; 每个用户…

48V转15V,48V转12V,48V转24V高效率降压恒压芯片SL3041电路简单

在现代电子设备中&#xff0c;电源转换是一个关键且常见的技术。特别是对于那些需要将48V电压转换为更低电压&#xff08;如15V、12V或24V&#xff09;的设备&#xff0c;一个高效、可靠的降压恒压芯片至关重要。本文将详细介绍一款名为SL3041的高效率降压恒压芯片&#xff0c;…

C++ P1152 欢乐的跳

文章目录 一、题目描述欢乐的跳题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 样例 #2样例输入 #2样例输出 #2 提示 二、参考代码 一、题目描述 欢乐的跳 题目描述 一个 n n n 个元素的整数数组&#xff0c;如果数组两个连续元素之间差的绝对值包括了 [ 1 , n −…

#{} 和 ${}区别

1、参数是Integer类型时候没区别&#xff08;#是预编译SQL&#xff0c;$是即时SQL&#xff09; 2、当参数是String类型时&#xff0c;就会出错了 &#xff08;1&#xff09;这是$的报错信息&#xff0c;因为我们的参数admin并没有加引号所以不满足字符串条件 (2)正确的SQL &am…

蓝牙学习十(扫描)

一、简介 从之前的文章中我们知道&#xff0c;蓝牙GAP层定义了四种角色&#xff0c;广播者&#xff08;Broadcaster&#xff09;、观察者&#xff08;Observer&#xff09;、外围设备&#xff08;Peripheral&#xff09;、中央设备&#xff08;Central&#xff09;。 之前的学习…

基础总结篇:Activity生命周期

private int param 1; //Activity创建时被调用 Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Log.i(TAG, “onCreate called.”); setContentView(R.layout.lifecycle); Button btn (Button) findViewById(R.id.…

在JS中通过样式构建三角形的方法

第一种方法&#xff1a; .triangle {width: 0;height: 0;border-left: 50px solid transparent;border-right: 50px solid transparent;border-bottom: 100px solid blue; /* 三角形的颜色 */ }.triangle 类定义了一个零宽高的块级元素&#xff0c;并通过设置边框的样式来创建…

Python实现 AI 绘图(非常详细)零基础入门到精通,收藏这一篇就够了

今天给大家带来了 Python 对接阿里大模型&#xff0c;通过 AI 实现文本生成图片。 相关资料 这个功能使用的主要 API 是阿里的大模型服务。 开通服务 阿里文档 https://help.aliyun.com/zh/dashscope/developer-reference/quick-start-1?disableWebsiteRedirecttrue 获取 a…