目录
十、在初始阶段可以被去除的缺陷,在后期阶段被去除。这对成本有什么影响?
十一、变更相关测试是什么,我们为什么要用?或者说确认测试和回归测试之间的区别是什么?
前言
本文为整理记录学习《软件测试训练营》- 软件测试员面试问题的笔记,如果发现任何错误,请随时指正
同时,我也准备了一份本文面试题的文档,需要的可见文章顶部附带资源,还可直接通过下方链接进行获取,或者扫描二维码
网盘链接:https://pan.baidu.com/s/1NvhebeCYyQFdyuJ6-zOchQ?pwd=tofv
提取码:tofv
二维码:
一、SDLC和STLC的区别
软件开发生命周期(SDLC)是软件行业用来设计、开发和测试高质量软件的过程。SDLC的目标是生产一个高质量的软件,满足或超过客户的期望,在时间和成本估计内完成
软件测试生命周期(STLC)是测试团队为确保软件或产品的质量而执行的一系列不同的活动。STLC是软件开发生命周期(SDLC)的一个组成部分。但是,STLC只处理测试阶段
二、软件测试有哪些不同的层次?
①单元测试:旨在通过隔离软件的每个部分来验证它然后执行测试,以证明每个单独的组件在满足需求和预期功能方面是正确的【由开发人员完成】
②集成测试:旨在组合测试系统的不同部分,以评估它们是否能够正确地一起工作。通过分组测试单元,可以识别它们交互方式中的任何错误【由开发人员完成】
③系统测试:软件的所有组件作为一个整体进行测试,以确保整个产品满足指定的要求【由测试人员完成】
④验收测试:是软件测试过程中一个产品是否被开绿灯的级别。这类测试的目的是评估系统是否符合最终用户的要求,以及是否已准备好部署【由用户完成】
三、解释缺陷从发现到解决的步骤
①发现缺陷
②开发经理,团队领导或技术负责人分析缺陷
四、测试用例和测试场景的区别
①测试场景定义为可以测试的任何功能。它也被称为测试条件或测试可能性(示例:测试登录功能)
②测试用例是为验证软件应用程序的特定特性或功能而执行的一组操作。一个测试用例包含测试步骤,测试数据,前置条件,后置条件,为特定的测试场景开发,以验证任何需求(示例:使用有效的用户名和有效的密码测试登录)
③测试场景可以使用多个测试用例进行测试
五、功能性测试与非功能性测试的区别
①功能性测试是一种验证软件应用程序的每个功能是否按照需求规格说明书运行的测试。它测试功能测试是系统的功能
②非功能性测试是一种用来检查软件应用程序的非功能性方面(性能、可用性、可靠性等)的测试。它测试系统的性能
③举例说明:
在功能测试中,我们测试登录功能,它是否像预期的那样工作
在非功能测试中,我们可以测试100个用户同时登录时系统的性能
六、验证和确认的区别
①验证
- 我们做的产品正确吗?是否以正确的方式在做?
- 验证中间产品,如需求文档,设计文档,ER图,测试计划和可追溯性矩阵
- 开发人员立场
- 在不执行软件代码的情况下验证
- 使用的技术:非正式审查、检查、演练技术和同行审查
②确认:
- 我们做的产品是否符合客户要求?
- 验证最终产品,如开发的软件、服务或系统
- 客户立场
- 通过执行软件代码验证
- 使用的技术:功能测试、系统测试、烟雾测试、回归测试等等
七、我们应该什么时候开始在我们的项目中进行测试?
①软件测试应该在软件开发生命周期的早期就开始。这有助于在SDLC的早期阶段(即需求收集和设计阶段)捕获和消除缺陷。尽早开始测试有助于减少缺陷的数量,并最终降低返工成本
②软件测试的七个原则之一是“早期测试可以节省时间和金钱
八、如果我们没有明确的书面用户需求,我们如何测试软件?
①用你能拿到的任何一点文档工作
②使用应用程序的旧版本/当前版本作为参考,以测试软件产品的未来版本。
③与项目团队成员交谈
④当应用程序准备就绪时,使用探索性测试对其进行测试
九、什么是探索性测试,我们为什么要使用它?
①探索性测试是软件测试的一种方法,它被简单地描述为同时学习、测试设计和测试执行
②在探索性测试中,测试用例不是预先创建的,而是测试人员在运行中对系统进行检查
使用探索性测试有两个原因:
①当我们没有时间去设计测试用例的时候
②当没有办法或没有要求的时候
十、在初始阶段可以被去除的缺陷,在后期阶段被去除。这对成本有什么影响?
①在软件测试过程中发现的缺陷的成本,完全取决于发现的缺陷的影响。发现缺陷越早,就越容易,成本也越低的修复这些缺陷。例如如果在项目需求规格说明和分析中发现了一个缺陷,那么修复它的成本相对较低
②同样,如果在软件的设计中发现了缺陷或故障,则对产品设计进行修正,然后重新发布。然而,如果这些缺陷在某种程度上被测试人员忽略了,如果它们在用户接受阶段被识别出来,那么修复这种类型的错误就太昂贵了
十一、变更相关测试是什么,我们为什么要用?或者说确认测试和回归测试之间的区别是什么?
①确认测试或重新测试当一个测试因为缺陷而失败时,那么这个缺陷就会被报告并且期望软件的新版本已经修复了这个缺陷。在这种情况下,我们需要再次执行测试,以确认缺陷是否得到了实际修复
②回归测试被定义为软件测试的一种类型,以确认最近的程序或代码更改没有对现有功能产生不利影响
③使用影响分析用于了解需要进行多少回归测试
十二、黑盒测试、白盒测试和灰盒测试有什么区别?
①黑盒测试是一种软件测试方法,其中测试人员不知道被测试项目的内部结构/设计/实现
②白盒测试是一种软件测试方法,测试人员知道被测试项目的内部结构/设计/实现
③灰盒测试是一种利用应用程序内部结构的部分知识来测试软件产品或应用程序的软件测试技术。灰盒测试的目的是搜索和识别由于不正确的代码结构或不正确的应用程序使用而导致的缺陷
十三、哪些测试用例是先写的,黑盒还是白盒?
黑盒测试用例首先编写,因为它们的测试基础是用户需求和SRS,而白盒测试用例的测试基础是详细设计和组件规范
十四、什么是用例测试?
①用例是参与者(系统的用户)对系统的特定使用的描述
②每个用例都描述了参与者与系统的交互,以实现特定的任务(或至少产生对用户有价值的东西)
③参与者通常是人,但他们也可能是其他系统
④用例测试是一种帮助我们识别测试用例的技术,这些测试用例在一个事务一个事务的基础上,从开始到结束地测试整个系统
十五、等价划分和边界值分析的区别是什么?
①等价划分将数据划分为若干个划分(也称为等价类),其方式是期望给定划分中的所有成员都以相同的方式处理
②边界值分析(BVA)是等价划分的扩展,但只能在划分是有序的,由数值或序列数据组成的情况下使用。分区的最小值和最大值(或第一个和最后一个值)就是它的边界值
③等价划分边界上的行为比划分内的行为更有可能是不正确的。
十六、什么是需求追溯矩阵?
①需求的可追溯性:是将需求与其他工件连接起来的能力--比如不同类型的软件测试或bug。它被用来跟踪需求,并证明需求已经被满足
②双向跟踪是向前(例如,从需求到测试用例)和向后(例如,从测试用例到需求)跟踪的能力
③需求跟踪矩阵(RTM)是一个用测试用例映射和跟踪用户需求的文档。它将客户提出的所有需求和需求可追溯性捕获到一个文档中需求跟踪矩阵的主要目的是验证所有的需求都通过测试用例进行了检查,使得在软件测试过程中没有一个功能是不被检查的
十七、静态和动态测试的区别是什么?
①动态测试包括被测试的组件或系统的执行
②静态测试不涉及被测试的组件或系统的执行。它依赖于工作产品的手工检查(即评审)或代码或其他工作产品的工具驱动评估(即静态分析)
十八、测试计划是什么?其中应该包含哪些信息?
①测试计划:描述预期测试活动的范围、方法、资源和时间表的文件。它确定了其他测试项目,要测试的功能,测试任务,谁来做每个任务,测试人员的独立程度,测试环境,测试设计技术和使用的进入和退出标准,他们的选择的理由,以及任何需要应急计划的风险。它是测试计划过程的记录
②随着项目和测试计划的进展,更多的信息变得可用,测试计划中可以包含更多的细节。测试计划是一项持续的活动,在产品的整个生命周期中执行
③主测试计划:通常针对多个测试级别的测试计划
④阶段测试计划:通常针对一个测试阶段的测试计划
十九、测试进度报告和测试总结报告有什么区别?
①测试报告的目的是总结和交流测试活动信息,包括在测试活动期间和结束时(例如,一个测试级别)。测试活动过程中准备的测试报告可以称为测试进度报告,而在测试活动结束时准备的测试报告可以称为测试总结报告
②测试报告的内容会根据项目的背景和报告的受众而变化
二十、测试人员容易犯哪些错误?
①未能沟通
②害怕问问题
③在了解范围和要求之前开始测试
④编写不良缺陷报告
⑤在编写测试用例时缺少一些需求
⑥没有任何类型的规划
⑦假阳性&假阴性
二十一、如果你向开发商报告了缺陷,而他拒绝了,你该怎么办?
①与他交流
②返回到工作产品(SRS-Product Backlog)
③询问产品负责人
④检查测试环境【在不同的环境中重复这些步骤)
⑤将问题升级
⑥接受它不是缺陷
二十二、错误、缺陷和失败的区别是什么?
①一个人可能会犯错误,这可能会导致在软件代码或其他一些相关的工作产品中引入缺陷(故障或bug)
②导致在一个工作产品中引入缺陷的错误可以触发一个导致在相关的工作产品中引入缺陷的错误。例如,一个需求捕获错误可能导致一个需求缺陷,然后导致一个编程错误,而编程错误又会导致代码中的缺陷
③代码中的缺陷被执行,这可能会导致失败,但不一定在所有情况下。例如,一些缺陷需要非常具体的输入或先决条件来触发故障,而故障可能很少发生或永远不会发生
二十三、缺陷报告最重要的组成部分是什么?
①标题
②重现的步骤
③预期结果
④实际结果
⑤优先
⑥截图或视频
二十四、什么是基于风险的测试?
①基于风险的测试(RBT)是一种基于风险概率的软件测试类型。它包括基于软件复杂性、业务关键性、使用频率、可能存在缺陷的区域等来评估风险
②基于风险的测试优先测试软件应用程序的特性和功能,这是更有影响力的,有可能有缺陷
基于风险的测试步骤:
①识别产品中的风险
②分析这些风险
③确定风险的优先级
④创建测试用例或测试计划减轻风险
二十五、Alpha测试和Beta测试有什么区别?
①Alpha和Beta测试通常由商业现货(COTS)软件的开发人员使用,他们希望在软件产品投放市场之前获得潜在或现有用户客户和/或运营商的反馈
②Alpha测试是在开发组织的现场执行的,不是由开发团队执行,而是由潜在的或现有的客户和/或运营商或独立的测试团队执行
③Beta测试由潜在或现有客户和/或运营商在其自己的位置进行。β测试可以发生在α测试之后,或者可以在没有发生任何先前的α测试的情况下发生
二十六、独立性测试有什么好处?
①与开发人员相比,独立测试人员可能会认识到不同类型的失败,因为他们有不同的背景、技术观点和偏见
②一个独立的测试人员可以验证,质疑,或反驳由利益相关者在系统规范和实施过程中做出的假设
③供应商的独立测试人员可以在没有雇佣他们的公司的(政治)压力下,以一种正直和客观的方式报告被测试的系统
二十七、独立性测试的潜在缺点是什么?
①与开发团队隔离,可能会导致缺乏协作,延迟向开发团队提供反馈,或者与开发团队形成敌对关系
②开发商可能会失去对质量的责任感
③独立的测试人员可能会被视为一个瓶颈
④独立测试人员可能缺乏一些重要的信息(例如,关于测试对象的信息
二十八、测试技术和测试工具有什么区别?
①测试技术的目的是帮助识别测试条件、测试用例和测试数据。
举例说明:
·黑盒技术(等价划分)
·白盒技术(语句覆盖率)
·基于经验的技术(错误猜测)
②软件测试环境中的工具可以被定义为支持一个或多个测试活动的产品,包括计划、需求、创建构建、测试执行、缺陷记录和测试分析。
举例说明:
·测试管理工具(Trello,Jira)
·测试自动化工具(Selenium,Web驱动程序)
·性能测试工具(Jmeter,HP Loadrunner)
·API测试工具(Postman-Soap UL)
二十九、什么是随机/猴子测试?什么时候使用?
随机测试通常被称为猴子测试。在这种类型的测试中,通常使用工具或自动化机制随机生成数据。利用这个随机生成的输入,对系统进行测试,并对结果进行相应的分析。这些测试是不太可靠的,因此,它通常是由初学者使用看看是否系统将举行下的不利影响
三十、阴性和阳性测试有什么区别?
否定测试是当您输入一个无效的输入并接收到错误。当你输入了一个有效的输入,并期望一些动作按照规范完成时,则是阳性测试
三十一、什么是决策表测试?什么时候使用?
决策表测试是用来测试系统的规格采取的规则或因果组合的形式。在决策表中,输入列在一列中,输出列在同一列中,但在输入之下。表的其余部分探讨输入的组合,以确定所产生的产出
三十二、什么是瀑布模型测试?是如何进行的?
①瀑布模型是最早用于软件开发的SDLC方法
②瀑布模型说明了软件开发过程中的一个线性顺序流。这意味着开发过程中的任何一个阶段只有在前一个阶段完成时才开始。在这个瀑布模型中,阶段不重叠
三十三、什么是V模型测试?是如何进行的?
①V模型是一个SDLC模型,其中流程的执行以v-形状的顺序方式进行。它也被称为验证和验证模型
②V模型是瀑布模型的扩展,它基于每个相应开发阶段的测试阶段的关联。这意味着对于开发周期中的每一个阶段,都有一个直接关联的测试阶段。这是一个高度自律的模型,只有在前一个阶段完成后,下一个阶段才开始
三十四、编写测试用例的最佳实践是什么?
①从最终用户的角度编写测试用例
②以一种简单的方式编写测试步骤,任何人都可以轻松地遵循使测试用例可重用
③设置优先级
④提供测试用例描述、测试数据、预期结果前提条件、后置条件
⑤编写无效的测试用例和有效的测试用例
⑥遵循正确的命名约定
⑦定期检查测试用例,必要时进行更新
三十五、测试套件是什么?
①测试套件是一个容器,它有一组测试,帮助测试人员执行和报告测试执行状态
②一个测试用例可以添加到多个测试套件中
③在一些工具“如testlink”中,测试套件是在创建测试用例之前创建的
三十六、测试环境是怎样的?
①测试环境是为测试团队执行测试用例而设置的软件和硬件。换句话说,它支持硬件、软件和网络配置的测试执行
举例说明:
基于Web的应用程序的典型环境配置如下所示:
①Web服务器-ITS/Apache
②数据库-Mysql
③操作系统-Windows/Linux
④浏览器-IE/Firefox
⑤Java版本-6.x.x
三十七、构建和发布有什么区别?
①构建是开发人员提供给测试团队用于测试应用程序的可执行文件。它经历了各种修复和测试的迭代,直到应用程序按预期工作。一旦应用程序变得稳定并为最终用户做好了准备,它就会在市场上发布
②发布是在测试团队认证后提供给最终用户的可安装软件。在向客户端发布任何软件的过程中,发布说明会被附加到它上面,其中包括一些仍然开放的缺陷、覆盖的用户故事、变更需求和发布的版本
三十八、测试数据是什么?
①测试数据是测试人员用来运行测试用例的数据。在运行测试用例时,测试人员需要输入一些输入数据。为此,测试人员准备测试数据。它可以手动或使用工具来制备
②例如,要测试具有用户id的基本登录功能,password字段。我们需要在用户id和密码字段中输入一些数据。所以我们需要收集一些测试数据
三十九、质量控制和质量保证有什么区别?
①质量保证通常侧重于遵守适当的过程,以提供达到适当质量水平的信心
②当过程被正确执行时,由这些过程创建的工作产品通常具有更高的质量,这有助于预防缺陷
③此外,使用根本原因分析来检测和消除缺陷的原因,以及适当地应用回顾会议的结果来改进过程,对于有效的质量保证是很重要的
④质量控制涉及各种活动,包括测试活动,以支持适当的质量水平的实现
一些建议
在准备软件测试员的面试时,除以上理论知识外,还需要注意以下几个方面。熟悉常用的测试技术,如等价类划分、边界值分析、因果图法等。准备描述过去参与过的软件测试项目,包括项目的规模、测试的范围、使用的测试方法和技术,以及取得的成果。了解软件开发的基本流程,如需求分析、设计、编码、测试、部署等,并理解测试在其中的位置和作用。展现沟通和协作能力及对新技术保持敏感等。
结语
若您在阅读本文后,觉得内容对您有所帮助,请您不吝赐赞,以资鼓励!