8年软件测试经验的面试题分享(含答案+文档)

背景

8年左右的工作经验,期间从功能测试、一直做到测试经理管理岗位,所以面试题一方面会偏技术,另一方面会问一些测试管理相关的工作。

8年软件测试经验的面试题分享(含答案+文档)_第1张图片

同时,在这我也准备了一份软件测试视频教程(含接口、自动化、性能等),需要的可以直接在下方观看,或者直接关注VX公众号:互联网杂货铺,免费领取

软件测试视频教程观看处:

2023最新【软件测试面试300问】面试八股文教程,涵盖自动化测试/接口测试/性能测试/测试开发等内容

面试问题列表

python

  • 数据类型
  • 闭包
  • 深拷贝和浅拷贝
  • 值传递和引用传递区别
  • 怎么创建虚拟环境
  • 全局解释器锁,多线程
  • 进程、线程和协程区别
  • json怎么比对
  • 匿名函数

工具

jmeter 参数化

JMeter参数化是一种在性能测试过程中让参数值由固定状态变为动态变化的技术,每次访问的参数都是不一样的。这种技术的主要目的是提高测试效率和灵活性。

在JMeter中,实现参数化的方式主要有以下四种:

  1. CSV数据文件设置(CSV Data Set Config):这种方式是最常用的参数化方法。它通过读取CSV文件中的数据并生成变量,供JMeter脚本引用,从而实现参数化。这种方法取值范围大,灵活性强,特别适用于进行大量测试数据时的场景。
  2. 函数助手:函数助手可以帮助你快速生成各种不同类型的变量,如随机数、日期等。
  3. 用户参数:用户参数允许你从外部文件(如Excel文件)中读取数据作为参数值。这些参数只在当前线程组中有效。
  4. 用户自定义变量:用户自定义变量允许你手动添加或修改变量值。这些变量可以在测试计划中的任何地方使用,对所有的测试计划都会生效。

以上每种参数化方式都有其适用的场景,你可以根据实际需要进行选择和使用。

网络

  • cookie 和session区别,为什么要用cookie 和session
  • 为什么要用jwt
  • 浏览器同源策略
  • https和http区别
  • http无状态性了解吗?
  • tcp协议是否了解

操作系统

  • 怎么搭建环境,部署项目?
  • docker 相关
  • 注册中心是哪些?
  • 虚拟化技术之容器与 Docker 概述

mysql

  • InnoDB、MyISAM区别
  • 目前索引底层数据结构
  • 数据库sql 很慢怎么知道是因为没加索引?
  • 事务四大特性,原子性怎么理解?
  • 索引分类

项目

敏捷流程是什么样流程?

敏捷流程是一种迭代、增量式的软件开发方法,旨在通过灵活、协作和快速响应变化的方式,提高开发团队的效率和产品的质量。敏捷流程的步骤包括目标制定、目标拆解、产品规划、组织产品待办列表、需求梳理、迭代规划等。

发版频率

在敏捷开发中,发版频率是一个重要的考量因素。团队应该关注发布频率和交付速度,以保持与市场的快速响应。迭代节奏和发布频率是可以解耦的,这意味着迭代的节奏可以是固定的,比如每两周一次或一周一次,而发布的频率可以根据项目的需求和团队的能力进行调整。例如,有的企业或团队可能会在每个迭代结束时进行一次发布,也有可能在一个迭代中进行多次发布。

实际上,随着敏捷开发的推行和普及,版本上线的周期已经从以“月”甚至“年”为单位,变为以“周”为单位,甚至更短。例如,某些产品为了尽快地对市场做出反应,会选择每周发布一次Beta版本,而稳定版本则可能每月发布一次。

总的来说,发版频率的选择应当根据项目的具体需求、团队的能力和市场的情况来定。同时,团队也需要保证每次发布的质量,避免因为频繁发布而导致的软件质量问题。

需求测试不完怎么办

在敏捷开发中,需求测试不完是一个常见的问题。以下是一些应对措施:

  1. 优先级排序:将需求按照优先级进行排序,先测试高优先级的需求,确保最重要的功能能够正常运行。
  2. 迭代计划:在每个迭代开始前,团队应该制定一个迭代计划,明确本次迭代要完成的任务和目标。如果某些需求无法在当前迭代中完成测试,可以将其推迟到下一个迭代中。
  3. 自动化测试:尽可能地使用自动化测试工具来加速测试过程,减少手动测试的时间和成本。
  4. 持续集成:通过持续集成工具,将代码集成到主分支上,并自动运行测试用例。这样可以及时发现问题并解决它们,避免将问题带到下一轮迭代中。
  5. 用户反馈:及时收集用户的反馈和建议,了解他们最需要的功能和问题,并根据这些信息调整开发计划和测试计划。

开发的项目工具是什么?

diff脚本介绍下

测试数据怎么处理

在自动化测试中,测试数据的处理是至关重要的一环。首先,我们需要明确测试数据的准备和管理方式。推荐的做法是采用Test Data Builder模式,即隐藏测试数据准备的细节,仅在测试代码中对测试专有数据进行赋值。这样做不仅提升了测试代码的可读性,而且有效地降低了测试数据准备代码变更时的副作用。

其次,对于接口自动化测试,我们可以考虑使用数据处理配置文件与数据库交互进行数据替换。例如,我们可以采用yaml作为配置文件,将一些重要的配置数据,如数据库配置、host配置、相应权限的账号数据放到yaml文件中。

此外,我们还需要根据测试的类型和需求来准备相应的测试数据。例如,基础自动化测试需要准备现有数据和动态运行时产生的数据;性能测试的数据准备与自动化测试类似。

最后,我们需要认识到自动化测试的局限性,即不同的测试层次有不同的效率。因此,在项目中需要慎重考虑选择哪种类型的自动化测试,以及如何管理测试数据。同时,我们也需要注意自动化测试数据的管理方式是需要不断迭代和演进的。

自动开启业务账号工具介绍下

团队管理

遇到倒排现象怎么处理?

倒排现象是指测试用例执行结果与预期结果相反的情况。处理倒排现象的方法如下:

  1. 检查测试用例设计:首先需要检查测试用例的设计是否合理,是否存在漏洞或不严谨的地方。如果存在这些问题,需要对测试用例进行修改和完善。
  2. 检查数据输入:倒排现象可能是由于数据输入错误导致的。因此,需要仔细检查测试用例中的数据输入是否正确,包括数据类型、格式和范围等方面。
  3. 检查代码实现:如果测试用例设计和数据输入都没有问题,那么可能是代码实现存在问题导致的倒排现象。此时需要仔细检查代码实现,找出可能存在的错误并进行修复。
  4. 重新编写测试用例:如果以上方法都无法解决问题,那么可能需要重新编写测试用例,以确保测试用例能够覆盖到所有可能的情况,并能够正确地验证系统的功能和性能。

总之,处理倒排现象需要耐心和细心,需要全面地分析问题,找出根本原因,并采取相应的措施进行修复。

怎么给组员打绩效

给组员打绩效需要考虑以下几个方面:

  1. 目标设定:在开始工作之前,需要明确组员的工作目标和任务,并确保这些目标是具体、可衡量的。同时,还需要与组员进行沟通,确保他们理解目标并能够实现它们。
  2. 工作表现评估:在工作过程中,需要对组员的工作表现进行评估。这可以通过定期的进度会议、工作日志等方式来实现。评估时需要客观、公正地评价组员的工作质量和效率,并记录下来。
  3. 个人能力评估:除了工作表现外,还需要考虑组员的个人能力和潜力。这可以通过观察组员在工作中的表现、与其他团队成员的合作情况等方面来评估。
  4. 绩效评估标准:最后,需要制定一套绩效评估标准,以便对组员的工作进行全面、公正的评估。这个标准应该包括工作质量、工作效率、团队合作等方面的内容,并且应该是可衡量的。

基于以上几个方面,可以给组员打绩效。具体来说,可以根据组员的工作表现和个人能力来给出一个综合评分,然后将这个评分转化为相应的绩效等级。同时,还需要及时反馈评估结果,并与组员进行沟通,帮助他们了解自己的优势和不足之处,以便进一步提高自己的工作能力。

测试经理的职责和管理内容

测试经理的主要职责和管理内容如下:

  1. 建立并领导测试团队,使项目能够成功进行。这包括在每次发布或交付的背景下确定测试的范围,部署和管理测试资源。
  2. 在产品和测试团队中应用适当的测试度量和衡量标准,以便对测试过程和结果进行有效评估。
  3. 规划、部署和管理任何给定任务的测试工作,确保各项测试活动能够按照计划顺利进行。
  4. 全面负责公司项目和产品的测试工作,依据项目要求和相关规范执行各项测试任务。
  5. 负责测试团队或部门的日常考核和管理,包括评估团队成员的工作表现,提供必要的指导和支持。
  6. 带领测试人员配合支持其他团队完成项目,确保整个项目的顺利进行。
  7. 在测试组织内部制定和分配测试角色,根据每一次交付的版本/产物的内容制定测试范围。
  8. 除了具备技术知识(如功能、性能、自动化、移动等),测试经理还需要具备良好的管理能力,包括与各部门人员的沟通协调能力。
  9. 有时可能还要涉及组织博弈、了解客户需求与体验等方面的工作,以便更好地满足项目需求。

测试经理怎么帮助组员提升技术

测试经理可以通过以下方式帮助组员提升技术:

  1. 提供培训和学习机会:测试经理可以为组员提供培训和学习机会,例如组织内部或外部的培训课程、研讨会等。这些活动可以帮助组员了解最新的测试技术和工具,并提高他们的技能水平。
  2. 分配挑战性的任务:测试经理可以将一些具有挑战性的测试任务分配给组员,让他们在实践中学习和成长。这些任务可以涉及到新的测试方法、复杂的测试场景等,让组员有机会挑战自己,提高自己的技术水平。
  3. 提供反馈和指导:测试经理可以定期与组员进行一对一的沟通,提供针对性的反馈和指导。这可以帮助组员了解自己的优势和不足之处,并提供改进的建议和支持。
  4. 鼓励团队合作:测试经理可以鼓励团队成员之间的合作和知识共享。例如,可以组织团队内部的技术分享会,让成员们互相学习和交流经验。
  5. 建立良好的工作环境:测试经理可以营造一个积极、支持和鼓励创新的工作环境。这可以让组员感到舒适和自信,从而更愿意尝试新的方法和技术,提高自己的技术水平。

其他面试问题

json比对中,内层数据怎么匹配

在JSON比对中,内层数据的匹配可以通过递归实现。以下是一个Python示例:


```python

def match_json(json1, json2):

    if type(json1) != type(json2):

        return False

    if isinstance(json1, dict):

        if len(json1) != len(json2):

            return False

        for key in json1:

            if key not in json2:

                return False

            if not match_json(json1[key], json2[key]):

                return False

    elif isinstance(json1, list):

        if len(json1) != len(json2):

            return False

        for item1, item2 in zip(json1, json2):

            if not match_json(item1, item2):

                return False

    else:

        return json1 == json2



    return True

这个函数会递归地比较两个JSON对象的所有层级。如果它们在任何层级上不相等,函数将返回False。如果所有层级都相等,函数将返回True。

背低绩效,会走人吗?有赔偿吗?

大部分公司可以允许你多次背底绩效,超过次数,走人肯定会的,有没有赔偿那就不一定咯

培训机构的经历需要写在简历上吗?

别写!

组员比测试经理技术强,怎么处理?

如果组员比测试经理技术强,那么可以考虑以下几种处理方式:

  1. 让组员担任更高级别的职位,例如高级测试工程师或测试架构师等。这样可以更好地发挥他们的技术优势,同时也可以提高整个团队的技术水平。
  2. 在项目中,可以让组员负责更复杂的测试任务,例如性能测试、安全测试等。这样可以让组员有更多的机会展示自己的技术能力,并且可以提高整个团队的测试质量。
  3. 如果组员对测试管理感兴趣,可以让他们参加相关的培训和认证考试,例如ISTQB认证等。这样可以提高他们的管理能力,并且可以为将来担任测试经理做好准备。
  4. 如果组员不愿意担任测试经理或者没有兴趣学习管理知识,那么可以考虑将他们调整到其他职位上,例如开发工程师、产品经理等。这样可以更好地发挥他们的技术优势,并且可以提高整个团队的技术水平。

小团队怎么搭建质量保障体系

搭建质量保障体系需要从以下几个方面入手:

  1. 制定质量保障计划:明确质量目标、质量标准和测试策略,并确定测试资源和时间安排。
  2. 建立测试流程:根据项目特点和需求,建立完整的测试流程,包括需求分析、测试设计、测试执行、缺陷管理等环节。
  3. 建立测试团队:组建专业的测试团队,包括测试经理、测试工程师、自动化测试工程师等角色,确保团队成员具备必要的技能和知识。
  4. 采用合适的测试工具和技术:选择适合项目的测试工具和技术,如自动化测试工具、性能测试工具、安全测试工具等,提高测试效率和质量。
  5. 建立缺陷管理系统:建立完善的缺陷管理系统,对缺陷进行跟踪和管理,及时修复和验证缺陷。
  6. 加强沟通与协作:加强开发、测试、产品等部门之间的沟通与协作,确保各方面的需求得到充分理解和满足。
  7. 持续改进:定期评估和改进质量保障体系,不断优化测试流程和方法,提高产品质量和用户满意度。

那些角度开展推广测试平台

推广测试平台时,可以从以下几个角度进行:

  1. 识别发现组织团队中的问题:通过了解团队的痛点和需求,找出测试平台能够解决的问题,从而提升团队对测试平台的需求。
  2. 流程改进与工具/平台推广:当有了新的工作成果时,例如测试平台的改进或更新,需要将这些成果推广给公司内的各个研发团队。
  3. 梳理测试流程:优化并标准化测试流程,使得团队成员能够更好地理解和使用测试平台。
  4. 培训与教育:提供必要的培训和教育,帮助团队成员理解并掌握测试平台的使用方式和优点。
  5. 参与感与认同感:让团队成员有更强烈的参与感和认同感,例如成为体验官,解锁专属权益等。
  6. 持续改进与反馈:定期收集用户反馈,持续改进测试平台,使其更符合用户需求。

怎么减少线上bug

以下是减少线上bug的一些方法:

  1. 严格的代码审查:在代码提交到代码仓库之前,进行严格的代码审查,确保代码的质量和稳定性。
  2. 自动化测试:编写自动化测试用例,对代码进行全面的测试,包括单元测试、集成测试和端到端测试等。
  3. 持续集成和持续交付:使用持续集成和持续交付工具,将代码自动构建、部署和测试,确保每次发布都是可预期的。
  4. 监控和日志分析:建立完善的监控和日志分析系统,及时发现和解决线上问题。
  5. 引入性能测试:在开发过程中,进行性能测试,确保系统能够承受高负载的情况。
  6. 用户反馈和错误报告:及时收集用户反馈和错误报告,修复已知的问题,并改进产品。

线上验证的手段有哪些

线上验证的手段主要包括以下几种:

  1. 静态分析:这是一种不运行代码而进行代码分析的方法,可以用来发现代码中的潜在问题。
  2. 动态分析:这是一种在代码运行时进行测试的方法,可以用来检查代码的执行效果和性能。
  3. 黑盒测试:这种测试方法不考虑代码的内部结构和实现细节,只关注输入和输出的结果。
  4. 性能测试:通过模拟实际负载,检查系统在高负载情况下的表现。
  5. 接口测试:这是检查系统各部分之间的接口是否正确工作的一种方法。
  6. 回归测试:当软件发生修改之后,重新进行测试以确认修改的正确性,并验证以前发现和修复的问题是否在新版本上再次出现。
  7. 形式化证明、度量、追溯性和软件错误影响分析等其他验证活动也是常用的线上验证手段。

安全测试要掌握到什么程度

作为一个负责功能测试的工程师,对安全测试需要有一定的了解和掌握。首先,你需要理解安全测试的基本概念和流程,知道它在产品开发过程中的重要性。

然后,你需要了解不同类型的安全漏洞和攻击方式,这可以帮助你更好地设计功能测试用例,确保产品在功能实现的同时,也能保证基本的安全性。例如,XSS(跨站脚本攻击)是一种常见的Web攻击方式,你需要了解其基本原理和实施条件。

此外,尽管你可能不需要深入到像专业的安全测试人员那样进行复杂的渗透测试,但掌握一些基础的安全测试工具和方法仍然有助于你进行有效的安全测试。

最后,安全测试并不只是找出产品中存在的安全问题,更重要的是要能够从用户的角度出发,思考他们在使用产品过程中可能遇到的安全问题,并针对这些问题设计出相应的测试方案。这样不仅可以提高产品的安全性,同时也能提升用户的使用体验。

是否在增加一些服务器性能数据异常的分析

是的,增加一些服务器性能数据异常的分析可以帮助我们更好地了解服务器的运行状况和性能瓶颈。以下是一些常见的服务器性能数据异常分析方法:

  1. CPU使用率异常:如果CPU使用率持续高于正常水平,可能表示服务器正在执行大量的计算任务或者存在某些性能问题。可以通过查看进程列表和系统日志来确定导致高CPU使用率的原因。
  2. 内存使用率异常:如果内存使用率持续高于正常水平,可能表示服务器正在处理大量的数据或者存在内存泄漏的问题。可以通过监视内存使用情况和分析内存分配情况来确定导致高内存使用率的原因。
  3. 磁盘I/O异常:如果磁盘I/O操作频繁且持续时间较长,可能表示服务器正在执行大量的读写操作或者存在磁盘故障。可以通过监视磁盘I/O操作和分析磁盘访问模式来确定导致高磁盘I/O的原因。
  4. 网络带宽异常:如果网络带宽使用率持续高于正常水平,可能表示服务器正在处理大量的网络请求或者存在网络攻击。可以通过监视网络带宽使用情况和分析网络流量模式来确定导致高网络带宽使用率的原因。

通过对这些服务器性能数据异常的分析,我们可以及时发现并解决潜在的性能问题,提高服务器的稳定性和性能。

监控软件出现的异常性能数据,一般从那些方面去分析

在分析监控软件出现的异常性能数据时,主要需要从以下几个关键方面进行:

  1. 性能指标:这包括CPU使用率、内存使用率、磁盘I/O和网络带宽等。如果这些指标持续高于正常水平,可能意味着服务器正在处理大量的计算任务或存在某些性能问题。
  2. 日志信息:监控系统需要在日志信息维度进行监控,因为日志中通常包含丰富的故障信息,有助于我们定位问题。
  3. 应用程序的异常处理:例如未处理的异常、异常堆栈等。通过这些监控,开发人员可以更快地定位问题,并进行解决。
  4. 数据库性能监控:包括数据库的连接数、查询时间、缓存命中率等。数据库是许多应用程序的核心,因此对数据库性能的监控尤为重要。

以上这些分析可以帮助我们及时发现并解决潜在的性能问题,提高系统的稳定性和性能。

性能测试要不要掌握调优?

作为一个功能测试小伙伴,懂性能调优是加分项,不懂,也没关系,如果能通过一系列手段测试出来性能瓶颈在那也行

怎么监控线上脏数据的产生?

监控线上脏数据的产生需要多方面的策略来进行。首先,可以利用数据质量工具通过关联调度的方式及时感知源端数据的变更与ETL过程中产生的脏数据。当数据质量检查规则被触发时,例如对用户信息和网站访问记录的汇总产出,可以定位到具体的脏数据。

其次,对于已经暴露的脏数据,首要任务是对数据进行快速修复,让系统恢复正常运转。这可以根据业务需求,采用数据库脚本修复,或者在前端执行JS脚本来修复。某些情况下,为了防止脏数据的影响,模块可能需要对关键数据进行偏移处理。

此外,可以使用“数据合法性检验规则”来检测数据字段的实际内容,如果属性值不符合规则,则被视为“脏”数据。这时可以调用已定义的相关清洗方式,将其变为满足规则的数据,从而保证数据的合法性。

最后,系统级别的监控也是必要的,关注业务系统的环境及其资源的情况。包括硬件、基础架构、数据以及依赖方的运行状态。这样可以从整体上把握系统的运行状况,及时发现并处理可能出现的问题。

总结

PS:这里分享一套软件测试的自学教程合集。对于在测试行业发展的小伙伴们来说应该会很有帮助。除了基础入门的资源,博主也收集不少进阶自动化的资源,从理论到实战,知行合一才能真正的掌握。全套内容已经打包到网盘,内容总量接近500个G。如需要软件测试学习资料,关注公众号(互联网杂货铺),后台回复1,整理不易,给个关注点个赞吧,谢谢各位大佬!

这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。


你可能感兴趣的:(自动化测试,软件测试,职场和发展,测试工具,面试,python,单元测试)