软件测试_面试题
持续更新…
[软件测试工程师经典面试题](https://blog.csdn.net/qq_41625341/article/details/82941787)
文章目录
-
- 软件测试_面试题
-
- 1. 软件测试都要测试什么?
- 2. 软件缺陷的定义?
- 3. 软件测试的定义?
- 4. 解释一下确认和验证?
- 5. 软件测试的目的是什么?
- 6. 软件测试和软件调试区别?
- 7. 软件测试的对象是谁?(跟1.问题类似)
- 8. 描述一下软件的生命周期及其产出物?
- 9. 你认为软件研发人员在软件生命周期中什么阶段就应该介入呢?
- 10. 瀑布模型有什么优缺点呢?重点说说缺点。
- 11.简单说一下螺旋模型,并说说螺旋模型的特征 。
- 12. 说说迭代模型和它的优点?
- 13. 解释一下增量模型,并说说它的缺点是什么?
- 14. 解释一下快速原型模型流程。
- 15. 总结一下软件开发模型有哪些?
- 16. 说说软件测试的流程,并说说软件开发和软件测试流程在哪里是交集?
- 17. 说说V模型,并谈谈它的缺点。
- 18. 谈谈W模型,并解释一下它与V模型不同之处,最后说说W模型的优缺点。
- 19. 简单的说说H模型和X模型。
- 20. 简单的说说软件测试工作岗位的独立性。
- 21. 简单的说说软件测试过程理念
- 22.解释一下单元测试和集成测试
- 23.简单的说说验收测试的α,β,γ测试。
- 24.简单说说静态测试和动态测试。
- 25.简单的说说回归测试,冒烟测试,随机测试,猴子测试。
- 26.简单说说手工测试和自动化测试。
- 27.简单说说黑盒测试,白盒测试,灰盒测试。
- 28.说说软件测试原则?
- 29.什么是测试用例?如果软件按照测试用例运行达不到预期的结果怎么办?如果开发人员说缺陷修复了,你接下来要怎么做?
- 30.如果让你设计一个测试用例,那么你觉得这个测试用例应该包含哪些东西?
- 31.设置测试用例有用吗,有必要耗时间编写吗?(设置测试用例的作用)
- 32.在时间不够用的情况下,还要进行详细的测试用例设计吗?测试用例需要经常更新吗?
- 33.测试数据的选取可以用哪些方法?
- 34.简单说说等价类的划分步骤,并分析如果让你来划分等价类,比如用户名的规则是:设置后不可更改,中英文均可,最长14个英文或7个汉字,这样的案例你要怎么划分?
- 35.简单说说测试用例模板,并简单解释一下每一项的注意点。
- 36.在以下案例中,请使用边界值分析法,进行测试数据的取值。
- 37.多边形判断小程序(等价类和边界值综合)如何去设置测试用例?
- 38.测试用例设计方法你会怎么用?
- 39.说说因果图法和它的局限性
- 40.说说因果图中原因和结果之间的关系、约束条件(原因约束,结果约束)
- 41.饮料自动售货机案例(使用因果图法)
- 42.说说判定表法(判定表驱动法)
- 43.说说判定表的使用条件和应用场景
- 44.订购单检查案例(使用判定驱动法)
- 45.杂志的阅读指南判定表,对该判定进行优化
- 46.讲讲场景法,并说出场景法的基本原理和基本流、备选流
- 47.ATM机的取款流程案例(场景法)
- 48.说说正交实验法
- 49.工业生产案例(正交实验法)
- 50.说说功能图法(状态迁徙图),并说出功能图法的目标和使用场景
- 51.QQ登录界面案例(功能图法)
- 52.简单说说测试大纲法、探索测试法、猴子测试法(随意性测试)
- 53.猴子测试法的缺点
- 54.用例测试方法如何选择?
- 55.说说缺陷的属性
- 56.说说缺陷的类型
- 57.说说缺陷的严重程度
- 58.说说缺陷的修复等级
- 59.说说缺陷的状态
- 60.说说缺陷的起源
- 61.说说缺陷的来源
- 62.说说缺陷的根源
- 63.说说缺陷的起源、来源、根源的关注度
- 64.缺陷的严重程度和缺陷的优先级有什么关系?提交缺陷时能不能夸大或降低缺陷的严重程度或者优先级
- 65.讲讲缺陷的生命周期
- 66.针对你工作中的一个bug,说说这个bug的处理过程(缺陷的生命周期中,每一个环节由谁做什么)
- 67.说说缺陷识别的依据
- 68.说说缺陷报告的编写目的、编写准则和预期读者
- 69.说说缺陷报告模板中有哪些内容
- 70.<缺陷描述>的准则
- 71.说说测试需求、测试用例和缺陷报告的关系。
- 72.白盒测试中常见的覆盖。
- 73.如果给你一个水杯,你会怎么对它做测试?(经典)
- 74.简单的说说禅道使用的大致流程
- 75.什么是接口测试?接口测试的范围。
- 性能测试_面试题
1. 软件测试都要测试什么?
答:程序、数据、文档都要测试。
2. 软件缺陷的定义?
答:
笼统的回答:所有不满足需求或超出需求的都是缺陷,没有不存在缺陷的软件,只有迄今为止尚未发现的缺陷。
比较详细的回答:
1)软件未实现产品说明书要求的功能,未实现产品说明书虽未提及但应该实现的功能。
2)软件实现了产品说明书指明不应该出现的功能或产品说明书未提到的功能。
3)软件难以理解、不易使用、运行缓慢,最终用户体验不好。
3. 软件测试的定义?
答:
1.正向测试是确认产品能够正常工作,然后去评价一个程序或系统的特性或者能力,并确定它是否能够达到预期效果,软件测试就是以此为目的的任何行为。
2. 反向测试是为了发现错误而执行一个程序或系统的过程。
3. IEEE定义的软件测试:
在规定条件下运行系统或构件的过程:观察并记录结果,并对系统或构件的某些方面给出评价。
分析软件项目的过程:检测现有状况和所需状况之间的不同,并评估软件项目的特性。
4. 广义的软件测试:对软件形成过程中的所有工作产品(包括程序以及文档)进而不仅仅是对程序的运行进行测试。
4. 解释一下确认和验证?
答:
确认:通过检查和提供客观证据来证实特定目的的功能或者应用是否已经实现。
验证:通过检查和提供客观证据来证实指定的需求是否满足。
5. 软件测试的目的是什么?
答:
1.以最少的人力,物力和时间找出软件中潜在的各种错误和缺陷,保证各种错误和缺陷得以修复,避免软件发布后由于潜在的软件错误和缺陷造成的隐患所带来的商业风险。
2.同时利用测试过程中得到的测试数据和测试信息,作为后续项目开发和测试过程改进的重要输入,避免在将来的项目开发和测试中重复同样的错误。
3.采用更加高效的测试管理手段,提高软件测试的效率和软件产品的质量。
6. 软件测试和软件调试区别?
答:
1.在主体,目标,方法和思路上有所不同。
2.测试是从已知条件开始,使用预先定义的过程,并且有预知的结果;调试是从未知的条件开始,结束的过程可能不可预计。
3.测试可以计划,可以预先指定测试用例和过程,工作进度可以度量;描述调试的过程或持续时间比较困难。
4.测试的对象包括软件开发过程中的文档,数据以及代码;调试的对象一般来说只是代码。
测试 | 调试 | |
---|---|---|
主体 | 测试人员 | 开发人员 |
目标 | 找bug | 将错误修改正确 |
方法 | 等价类、边界值 | 程序和逻辑算法 |
思路 | 反向思维占据主流 | 正向思维占据主流 |
7. 软件测试的对象是谁?(跟1.问题类似)
答:测试的对象包括软件开发过程中的文档,数据以及代码。
8. 描述一下软件的生命周期及其产出物?
答:需求分析,产生需求规格说明书;概要设计,产生架构文档;详细设计,产生详细设计文档;编码,产生源代码;测试,产生测试文档;最后软件产品验收。
9. 你认为软件研发人员在软件生命周期中什么阶段就应该介入呢?
答:测试人员应该参与到整个软件的生命周期中,即从需求阶段就应该参与。
10. 瀑布模型有什么优缺点呢?重点说说缺点。
答:
缺点:
1.强调时间顺序的严格执行,前阶段不完成,后阶段也无法开始,即缺乏灵活性。
2.将测试放在了编码之后,没有体现测试贯穿软件生命周期的原则,即测试人员在需求的时候就要参与进去(避免需求的问题一直延续到代码完成才得以暴露)。
3.各个阶段的划分完全固定,阶段之间产生大量的文档,极大地增加了工作量。
4.线性开发,用户等到整个过程的末期才能见到开发成果,从而增加了开发风险。
5.瀑布模型不适应用户需求的变化。
优点:
1.为项目提供了按阶段划分的检查点。
2.当前一阶段完成后,只需要关注后续阶段。
11.简单说一下螺旋模型,并说说螺旋模型的特征 。
答:
螺旋模型是一种演化软件开发过程模型,它兼顾了快速原型的迭代的特征以及瀑布模型的系统化与严格监控。
特征:
1.引入了其他模型不具备的风险分析,使软件在无法排除重大风险时有机会停止,以减少损失。
2.螺旋模型更适合大型的昂贵的系统级的软件应用。
12. 说说迭代模型和它的优点?
答:
迭代包括产品发布(稳定、可执行的产品版本)的全部开发活动和要使用该发布必须的所有其他元素,强调开发的深入。在某种程度上,开发迭代是一次完整地经过所有工作流程的过程:需求分析,设计,实施和测试工作流程。
优点:
1.降低了在一个增量上的开支风险。
2.降低了产品无法按照既定进度进入市场的风险。
3.加快了整个开发工作的进度。
4.迭代过程这种模式使适应需求的变化会容易些。
13. 解释一下增量模型,并说说它的缺点是什么?
答:
把软件分割成若干独立的模块,分批次的完成和交付。
缺点:最明显的缺点就是如果打破原有的软件结构和框架,可能会带来一定的风险。
14. 解释一下快速原型模型流程。
答:产品经理制作完原型,给客户讲解、演示原型,客户觉得不行,产品经理改进原型,客户满意,原型交给开发人员依照原型开发产品。
15. 总结一下软件开发模型有哪些?
答:瀑布模型、螺旋模型、迭代模型、敏捷开发模型、增量模型、快速原型模型等。
16. 说说软件测试的流程,并说说软件开发和软件测试流程在哪里是交集?
答:
1.获取软件测试需求、编写软件测试计划、制定软件测试方案、开发与设计测试用例、执行测试、提交缺陷报告、测试分析与评审、提交测试总结、准备下一版本测试。
2.在软件测试流程中,执行测试这一项是交集。
17. 说说V模型,并谈谈它的缺点。
答:
V模型是一种软件测试的过程模型,它揭示了开发过程与测试过程中各阶段的对应关系;V模型的工作流程是线性的:用户需求、需求分析与系统、概要设计、详细设计、编码,单元测试对应详细设计、集成测试对应概要设计、系统测试对应需求分析与系统、验收测试对应用户需求。
缺点:
1.V模型仅仅把测试过程作为在需求分析、系统设计及编码之后的一个阶段,忽视了测试对需求分析、系统设计的验证;
2.需求分析的满足情况一直到后期的验收测试才被验证;
3.没有提现出“尽早地和不断地进行软件测试”的原则。
总结来说就是,V模型没有体现测试贯穿软件生命周期的原则,测试介入的时间太晚,它是在编码后才进行测试,这种模型是不科学的,它会导致很多问题在最后的测试环节才被发现。
18. 谈谈W模型,并解释一下它与V模型不同之处,最后说说W模型的优缺点。
答:
W模型由两个V字形模型组成,分别代表测试与开发过程,明确表示出了测试与开发的并行关系。
用户需求阶段对应验收测试设计
需求分析与系统设计阶段对应确认与系统测试设计
概要设计阶段对应集成测试设计
详细设计阶段对应单元测试设计
编码阶段对应单元测试
代码集成阶段对应集成测试
项目实施阶段对应确认测试与系统测试
项目交付阶段对应验收测试
优点:
1.测试活动与软件开发同步进行
2.测试的对象不仅仅是程序,还包括需求和设计
3.尽早发现软件缺陷可降低软件开发的成本
局限性:
在W模型中,需求,设计,编码等活动被视为串行的,这样就无法支持灵活的迭代。
19. 简单的说说H模型和X模型。
答:
H模型:
H模型将测试活动完全独立出来,形成了一个完全独立的流程,将测试准备活动和测试执行活动清晰地体现出来。它具有以下特点:H模型指出软件测试要尽早准备,尽早执行;只要某个测试达到了准备就绪点,测试执行活动就可以开展,并且不同的测试活动可以按照某个次序先后进行,也可以反复进行。
X模型:
X模型也是对V模型的改进,X模型提出针对单独的程序片段进行相互分离的编码和测试,此后通过频繁的交接,通过集成最终成为可执行的程序。X模型还定位了探索性测试,这是不进行事先计划的特殊类型的测试,这一方式往往能帮助有经验的测试人员在测试计划之外发现更多的软件错误。
H模型:
X模型:
20. 简单的说说软件测试工作岗位的独立性。
答:
可以这么说,工作岗位上的独立性:专门的测试外包公司岗位>企业内部独立于研发部门的测试>研发团队的测试岗位>开发人员自己测试
21. 简单的说说软件测试过程理念
答:
1.尽早测试
测试人员早期参与软件项目;尽早的开展测试执行工作。
2.全面测试
对软件的所有产品进行全面的测试;软件开发及测试人员(有时包括用户)全面的参与测试工作中。
3.全过程测试
测试人员要充分关注开发过程;测试人员要对测试的全过程进行全程的跟踪。
4.独立的、迭代的测试
测试活动是独立的;测试活动应该是循环往复、不断的进行。
22.解释一下单元测试和集成测试
答:
如果把软件测试按照开发阶段划分,可以划分为单元测试和集成测试;
1.单元测试
单元测试又称为模块测试,是针对软件设计的最小单元——程序模块进行正确性验证的测试工作。其目的在于检查每个程序单元能否正确实现详细设计说明中的模块功能、性能、接口和设计约束等要求,发现各模块内部可能存在的各种错误。单元测试需要从程序内部结构出发设计测试用例。多个模块可以平行地独立进行单元测试。
2.集成测试
集成测试又称组装测试,通常在单元测试的基础上,将所有的程序模块进行有序的、递增的测试。集成测试是检验程序单元或部件的接口关系,逐步集成为符合概要设计要求的程序部件或整个系统。
3.确认测试
确认测试也叫有效性测试,是在模拟的环境下,验证软件的所有功能和性能及其他特性是否与用户的预期要求一致。通过了确认测试之后的软件,才具备了进入系统测试阶段的资质。
4.系统测试
系统测试是在真实的系统运行的环境下,检查完整的程序系统是否和系统(包括硬件、外设、网络和系统软件、支持平台)正确配置、连接、并最终满足用户的所有需求。
5.验收测试
是软件产品检验的最后一个环节,按照项目任务书或合同、供需双方约定的验收依据文档进行的对整个系统的测试与评审,决定是否接收或拒收系统。
23.简单的说说验收测试的α,β,γ测试。
答:
验收测试一般由供求双方进行,有三种验收测试的主体。
1.α测试:软件的开发商自己进行的交付前的测试。
2.β测试:软件的需求方自己进行的测试。
3.γ测试:第三方的软件测试(需求方自己不测试,可能交给第三方的软件测试外包公司进行测试)。
24.简单说说静态测试和动态测试。
答:
如果把软件测试按照代码是否运行划分,可以分为静态测试和动态测试。
1.静态测试
指不实际运行被测试对象,而只是静态地检查程序代码,界面或文档中可能存在错误的过程;代码测试:主要测试代码是否符合相应的标准和规范;界面测试:主要测试软件的实际界面与需求中的说明是否相符文档测试:主要测试用户手册和需求说明是否真正符合用户的实际需求。
2.动态测试
指实际运行被测对象,输入相应的测试数据,检查实际输出结果和预期结果是否相符的过程,所以我们判断一个测试属于动态测试还是静态测试,唯一的标准就是看是否运行程序。
25.简单的说说回归测试,冒烟测试,随机测试,猴子测试。
答:
1.回归测试
是指对软件的新版本测试时,重复执行之前某一个重要版本的测试用例。目的:1.验证之前版本产生的所有缺陷是否被完全修复;2.确认修复这些缺陷没有引发新的缺陷。
2.冒烟测试(确认测试)
是指在对一个新版本进行系统大规模的测试之前,先验证一下软件的基本功能是否实现,是否具备可测性,也叫可测性测试。(是正向的测试)
3.随机测试(类似探索性测试)
是指测试人员基于经验和直觉的测试,发现一些边缘性的错误。
4.猴子测试
把自己当成不懂产品的笨蛋或小动物,随便乱点,没有任何的主观意识和想法参与进来,让一些意想不到的操作造成错误的结果。
26.简单说说手工测试和自动化测试。
答:
如果把软件测试按照测试主体来划分的话,可以分成手工测试和自动化测试。
1.手工测试
手动地测试功能。
2.自动化测试
利用工具软件,或者编写代码的方式,去测试被测的软件系统。
27.简单说说黑盒测试,白盒测试,灰盒测试。
答:
如果把软件测试按照测试技术来划分的话,可以分成黑盒测试,白盒测试和灰盒测试。
1.黑盒测试:
黑盒测试又称功能测试,是把测试对象看成一个黑盒子,通过软件的外部表现来发现其缺陷和错误,完全不考虑程序内部结构和处理过程。黑盒测试是在程序界面处进行测试,它只是检查程序是否按照需求规格说明书的规定正常实现。
2.白盒测试:
白盒测试又称结构测试,把程序看成装在一个透明的盒子里,通过对程序内部结构的分析、检测来寻找问题。白盒测试是检查是否所有的结构及路径都是正确的,检查软件内部动作是否按照设计说明的规定正常进行。
手动地测试功能。
3.灰盒测试:
介于白盒测试和黑盒测试之间。灰盒测试关注输出对于输入的正确性,同时也关注程序的内部表现,但这种关注不像白盒测试那样详细,完整,只是通过一些表征性的现象,时间,标志等来判断程序内部的运行状况。有些地方也把灰盒测试叫做接口测试。
28.说说软件测试原则?
答:
1.所有测试的标准都是建立在用户需求之上。
2.软件测试必须基于“质量第一”的想法去开展各项工作,当时间和质量冲突时,时间要服从质量。
3.事先定义好产品的质量标准,只有有了质量标准,才能根据测试的结果,对产品的质量进行分析和评估。
4.软件项目一启动,软件测试也就是开始,而不是等程序写完,才开始进行测试。
5.穷举测试是不可能的。
6.第三方进行测试会更客观,更有效。
7.软件测试计划是做好软件测试工作的前提。
8.测试用例是设计出来的,不是写出来的,所以要根据测试的目的,采用相应的方法去设计测试用例,从而提高测试的效率,更多地发现错误,提高程序的可靠性。
9.对发现错误较多的程序段,应进行更深入的测试,一般来说,一段程序中已经发现的错误越多,其中存在的错误概率也就越大。
10.重视文档,妥善保存一切测试过程(测试计划、测试用例、测试报告等)。
11.应该把“尽早和不断地测试”作为测试人员的座右铭。
12.回归测试的关联性一定要引起充分的注意,修改一个错误而引起更多错误出现的现象并不少见。
13.测试应从“小规模”开始,逐步转向“大规模”。
14.不可将测试用例置之度外,排除随意性。
15.必须彻底检查每一个测试结果。
16.一定要注意测试中的错误集中发生现象,这和程序员的编程水平和习惯有很大的关系。
17.对测试错误结果一定要有一个确认的过程。