日常软件测试面试题(每天进步一点点系列)

Posted 程序员小濠

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了日常软件测试面试题(每天进步一点点系列)相关的知识,希望对你有一定的参考价值。

问题一:
你在测试中发现了一个bug,但是开发经理认为这不是一个bug,你应该怎样解决?
答案:
首先,将问题提交到缺陷管理库里面进行备案;
然后,要获取判断的依据和标准:
根据需求说明书、产品说明、设计文档等,确认实际结果是否与计划有不一致的地方,提供缺陷是否确认的直接依据;
如果没有文档依据,可以根据类似软件的一般特性来说明是否存在不一致的地方,来确认是否是缺陷; 根据用户的一般使用习惯,来确认是否是缺陷; 与设计人员、开发人员和客户代表等相关人员探讨,确认是否是缺陷;
合理的论述,向测试经理说明自己的判断的理由,注意客观、严谨,不参杂个人情绪。
等待测试经理做出最终决定,如果仍然存在争议,可以通过公司政策所提供的渠道,向上级反映,并由上级做出决定。
问题二:
软件生命周期及其模型是什么?
答案:
软件生命周期是指从形成开发软件概念起,所开发的软件使用以后,直到失去使用价值消亡为止的整个过程。一般来说,整个生存周期包括计划(定义)、开发、运行(维护)三个时期,每个时期又划分为若干个阶段。每个阶段有明确的任务。 
周期模型(典型的几种): 
瀑布模型 快速原型模型:快速原型模型允许在需求分析阶段对软件的需求进行初步而非完全的分析和定义,快速设计开发出软件系统的原型,该原型向用户展示待开发软件的全部或部分功能和性能;用户对该原型进行测试评定,给出具体改进意见以丰富细化软件需求;开发人员据此对软件进行修改完善,直至用户满意认可之后,进行软件的完整实现及测试、维护。 
迭代模型:迭代包括产生产品发布(稳定、可执行的产品版本)的全部开发活动和要使用该发布必需的所有其他外围元素。在某种程度上,开发迭代是一次 完整地经过所有工作流程的过程:需求分析、设计、实施和测试工作流程。实质上,它类似小型的瀑布式项目。RUP认为,所有的阶段都可以细分为迭代。每一次 的迭代都会产生一个可以发布的产品,这个产品是最终产品的一个子集。
生命周期阶段:  软件计划与可行性分析  需求分析  软件设计  编码  软件测试  运行与维护
问题三:
什么是软件测试?软件测试的目的与原则?
答案:
在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。 软件测试的目的:  测试是程序的执行过程,目的在于发现错误;  一个成功的测试用例在于发现至今未发现的错误;  一个成功的测试是发现了至今未发现的错误的测试;  确保产品完成了它所承诺或公布的功能,并且用户可以访问到的功能都有明确的书面说明;  确保产品满足性能和效率的要求;  确保产品是健壮的和适应用户环境的; 软件测试的原则:  测试用例中一个必须部分是对预期输出或结果进行定义;  程序员应避免测试自己编写的程序;  编写软件的组织不应当测试自己编写的软件;  应当彻底检查每个测试的执行结果;  测试用例的编写不仅应当根据有效和预料到的输入情况,而且也应当根据无效和未预料到的输入情况;  检查程序是否“未做其应该做的”仅是测试的一半,测试的另一半是检查程序是否“做了其不应该做的”;  应避免测试用例用后即弃,除非软件本身就是个一次性的软件;  计划测试工作时不应默许假定不会发现错误;  程序某部分存在更多错误的可能性,与该部分已经发现错误的数量成正比;  软件测试是一项极富创造性,极具智力的挑战性的工作;
问题四:
目前主要的测试用例设计方法是什么?
答案:
白盒测试:逻辑覆盖、循环覆盖、基本路径覆盖(逻辑覆盖包括语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖) 黑盒测试:边界值分析法、等价类划分、错误猜测法、因果图法、状态图法、测试大纲法、随机测试、场景法
问题五:
什么是测试用例 ,什么是测试脚本?两者的关系是什么?
答案:
为实施测试而向被测试系统提供的输入数据、操作或各种环境设置以及期望结果的一个特定的集合; 测试脚本是为了进行自动化测试而编写的脚本; 测试脚本的编写必须对应相应的测试用例。
问题六:
软件产品质量特性是什么?
答案:
功能性:适应性、准确性、互操作性、依从性、安全性。 可靠性:成熟性、容错性、易恢复性。 可使用性:易理解性、易学习性、易操作性。 效率:时间特性、资源特性。 可维护性:易分析性、易变更性、稳定性、易测试性。 可移植性:适应性、易安装性、遵循性、易替换性
问题七:
软件测试分为几个阶段 ,各阶段的测试策略和要求是什么?
答案:
和开发过程相对应,测试过程会依次经历单元测试、集成测试、系统测试、验收测试四个主要阶段: 单元测试:单元测试是针对软件设计的最小单位––程序模块甚至代码段进行正确性检验的测试工作,通常由开发人员进行。 集成测试:集成测试是将模块按照设计要求组装起来进行测试,主要目的是发现与接口有关的问题。由于在产品提交到测试部门前,产品开发小组都要进行联合调试,因此在大部分企业中集成测试是由开发人员来完成的。 系统测试:系统测试是在集成测试通过后进行的,目的是充分运行系统,验证各子系统是否都能正常工作并完成设计的要求。它主要由测试部门进行,是测试部门最大最重要的一个测试,对产品的质量有重大的影响。 验收测试:验收测试以需求阶段的《需求规格说明书》为验收标准,测试时要求模拟实际用户的运行环境。对于实际项目可以和客户共同进行,对于产品来说就是最后一次的系统测试。测试内容为对功能模块的全面测试,尤其要进行文档测试。 单元测试测试策略: 自顶向下的单元测试策略:比孤立单元测试的成本高很多,不是单元测试的一个好的选择。 自底向上的单元测试策略:比较合理的单元测试策略,但测试周期较长。 孤立单元测试策略:最好的单元测试策略。 集成测试的测试策略: 大爆炸集成:适应于一个维护型项目或被测试系统较小项目 自顶向下集成:适应于产品控制结构比较清晰和稳定;高层接口变化较小;底层接口未定义或经常可能被修改;产品控制组件具有较大的技术风险,需要尽早被验证;希望尽早能看到产品的系统功能行为。 自底向上集成:适应于底层接口比较稳定;高层接口变化比较频繁;底层组件较早被完成。 
基于进度的集成优点:具有较高的并行度;能够有效缩短项目的开发进度。 
缺点:桩和驱动工作量较大;有些接口测试不充分;有些测试重复和浪费。 
系统测试的测试策略: 数据和数据库完整性测试;功能测试;用户界面测试;性能评测;负载测试;强度测试;容量测试;安全性和访问控制测试;故障转移和恢复测试;配置测试;安装测试;加密测试;可用性测试;版本验证测试;文档测试
问题八:
您认为做好测试用例设计工作的关键是什么?
答案:
白盒测试用例设计的关键是以较少的用例覆盖尽可能多的内部程序逻辑结果; 黑盒法用例设计的关键同样也是以较少的用例覆盖模块输出和输入接口。不可能做到完全测试,以最少的用例在合理的时间内发现最多的问题;
问题九:
您认为做好测试计划工作的关键是什么?
答案:
1.明确测试的目标,增强测试计划的实用性 编写软件测试计划重要目的就是使测试过程能够发现更多的软件缺陷,因此软件测试计划的价值取决于它对帮助管理测试项目,并且找出软件潜在的缺陷。因此,软件测试计划中的测试范围必须高度覆盖功能需求,测试方法必须切实可行,测试工具并且具有较高的实用性,便于使用,生成的测试结果直观、准确 2.坚持“5W”规则,明确内容与过程 “5W”规则指的是“What(做什么)”、“Why(为什么做)”、“When(何时做)”、“Where(在哪里)”、“How(如何做)”。利用“5W”规则创建软件测试计划,可以帮助测试团队理解测试的目的(Why),明确测试的范围和内容(What),确定测试的开始和结束日期(When),指出测试的方法和工具(How),给出测试文档和软件的存放位置(Where)。 3.采用评审和更新机制,保证测试计划满足实际需求 测试计划写作完成后,如果没有经过评审,直接发送给测试团队,测试计划内容的可能不准确或遗漏测试内容,或者软件需求变更引起测试范围的增减,而测试计划的内容没有及时更新,误导测试执行人员。 4.分别创建测试计划与测试详细规格、测试用例 应把详细的测试技术指标包含到独立创建的测试详细规格文档,把用于指导测试小组执行测试过程的测试用例放到独立创建的测试用例文档或测试用例管理数据库中。测试计划和测试详细规格、测试用例之间是战略和战术的关系,测试计划主要从宏观上规划测试活动的范围、方法和资源配置,而测试详细规格、测试用例是完成测试任务的具体战术。
问题十:
您所熟悉的测试用例设计方法都有哪些?
答案:
1.等价类划分 
等价类是指某个输入域的子集合。在该子集合中,各个输入数据对于揭露程序中的错误都是等效的。并合理地假定:测试某等价类的代表值就等于对这一类其它值的测试。因此,可以把全部输入数据合理划分为若干等价类,在每一个等价类中取一个数据作为测试的输入条件,就可以用少量代表性的测试数据。取得较好的测试结果。等价类划分可有两种不同的情况:有效等价类和无效等价类。
2.边界值分析法 
边界值分析方法是对等价类划分方法的补充。测试工作经验告诉我,大量的错误是发生在输入或输出范围的边界上,而不是发生在输入输出范围的内部。因此针对各种边界情况设计测试用例,可以查出更多的错误。 
使用边界值法首先应确定边界情况。通常输入和输出等价类的边界,就是应着重测试的边界情况。应当选取正好等于,刚刚大于或刚刚小于边界的值作为测试数据,而不是选取等价类中的典型值或任意值作为测试数据。
3.比较法
不同的软件版本比较
4.错误推测法 基于经验和直觉推测程序中所有可能存在的各种错误, 从而有针对性的设计测试用例的方法。 
错误推测方法的基本思想: 列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据他们选择测试用例。例如, 在单元测试时曾列出的许多在模块中常见的错误。以前产品测试中曾经发现的错误等, 这些就是经验的总结。还有, 输入数据和输出数据为0的情况。输入表格为空格或输入表格只有一行。这些都是容易发生错误的情况。可选择这些情况下的例子作为测试用例。 
5.因果图方法 前面介绍的等价类划分方法和边界值分析方法,都是着重考虑输入条件,但未考虑输入条件之间的联系, 相互组合等。考虑输入条件之间的相互组合,可能会产生一些新的情况。但要检查输入条件的组合不是一件容易的事情, 即使把所有输入条件划分成等价类,他们之间的组合情况也相当多。因此必须考虑采用一种适合于描述对于多种条件的组合,相应产生多个动作的形式来考虑设计测试用例。这就需要利用因果图(逻辑模型)。因果图方法最终生成的就是判定表。它适合于检查程序输入条件的各种组合情况。

最后:【可能给予你帮助】然后下面分享一些我的自学资料,希望可以帮到大家。


这份资料整体是围绕着【软件测试】来进行整理的,主体内容包含:python自动化测试专属视频、Python自动化详细资料、全套面试题等知识内容。对于软件测试的的朋友来说应该是最全面和完整的备战仓库了,这个仓库也陪伴我走过了很多坎坷的路,希望也能帮助到你。加群:175317069,就可以直接获取了最后呢,群里有测试大牛分享经验。最后感谢相遇,感谢缘分,感谢支持,感谢选择,感谢信任。也感谢我父母的支持和开导,让我找到了满意的工作。也祝大家可以顺利找到心仪的工作,拿下高薪!

如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!
 

好文推荐:

6个月软件测试培训出来后的感悟--写给正在迷茫是否要转行或去学软件测试的学弟学妹们!

以上是关于日常软件测试面试题(每天进步一点点系列)的主要内容,如果未能解决你的问题,请参考以下文章

日常Java练习题(每天进步一点点方舟系列)

RabbitMQ超硬核面试题,直观明了 每天进步“亿”点点

日常Java练习题(每天进步一点点系列)

日常Java练习题(每天进步一点点系列)

日常Java练习题(每天进步一点点系列)

日常Java练习题(每天进步一点点系列)