40个软件测试面试题,找工作看过来
初级难度
如果你在这个领域没有太多经验,并且刚刚开始入行,这几个问题对于刚起步的测试人员来说,在面试时经常常会问到。
1. 你对软件测试的理解是什么?
软件测试是用来判断软件程序的有效性、准确性和可用性的程序。因此,软件测试包括运行一个系统或程序来寻找错误,错误或其他缺陷。其目的是验证代码是否满足客户的独特需求、期望和要求。
2. 解释软件测试的不同类型。
i.?单元测试
单元测试集中在软件设计的最基本构件上。程序员将经常使用样本输入执行这项任务,并观察适当的输出。我们测试单一单元或相关元素的集合。
ii. 集成测试
集成测试是用来验证一组合并在一起的元素。它验证了系统是否符合预定的功能要求。集成测试有四种类型:自上而下,自下而上,三明治,大爆炸,和i-spy只是几个例子。
iii. 回归测试
每次添加新的模块时都会对程序进行修改。回归测试确保每个元素在每次更新后都能有效运作。
iv.?性能测试
性能测试检查软件在综合系统中使用时的性能如何。它被用来评估程序的效率和速度。它也被称为负载测试,因为它检查系统在指定负载下的性能。
v. 验收测试
验收测试确保产品符合其目标,并将帮助最终用户实现预期的结果。
3. 说明软件测试的关键挑战。
软件测试中的几个重大困难列举如下:
·由于缺乏标准文件而无法理解应用程序
·?测试人才短缺
·?与客户沟通应用需求,需要测试人员有良好的倾听和理解能力
·?决定何时停止测试,并对其做出明智的决定
·?对时间敏感的任务的能力可能不容易被灌输
·?确定哪些测试要先运行的优先次序的能力需要专业知识
·?使用最佳数量的测试案例来测试完整的应用程序
4. 解释黑盒、白盒和灰盒测试技术。
i.?黑盒测试
黑盒测试验证了软件的功能,而没有检查支持其工作的后端机制。它几乎在软件测试技术的所有层面都有广泛的应用。
ii.?白盒测试
白盒测试在评估一个程序的功能时考虑其内部操作。单元测试和集成测试都利用了它。
iii. 灰盒测试
当黑盒和白盒测试技术相结合时,就产生了灰盒测试过程。它在软件测试过程中被应用。通过采用这种策略,你可以评估一个软件程序或应用程序,而只知道其基本工作原理的一部分。
5. 什么是测试计划,它包括什么?
一个写得很好的测试计划文件,详细说明了软件测试的范围和活动,对项目的成功是必要的。从本质上讲,测试计划是一个持续的文件,由测试经理监控和控制。它本质上是一个蓝图,概述了谁、什么、何时、如何以及其他完整测试程序的细节。
以下信息必须包括在测试计划中:
·?试的原因
·?测试策略
·?测试目标
·?资源规划
·?测试范围
·?测试交付物
·?退出/暂停标准
6. 阐明软件测试中的测试脚本、测试场景和测试案例。
i. 测试方案
一个测试方案通常由几个案例组成,涵盖了一个软件应用的功能。它给出了必要的测试的概述。
ii.?测试用例
作为软件开发过程的一部分,一组被称为测试案例的程序被执行,以验证一个特定的特征或功能。一个测试用例包括测试步骤、数据、先决条件和后决条件,以验证一个特定的要求。
iii. 测试脚本
它是一组将被遵循的指令,以确认被测试系统的功能符合预期。该文件概述了每个动作和预期结果。
7. 测试覆盖率是什么意思?
衡量所做测试量的质量指标被称为测试覆盖率(百分比)。此外,它还被用来增加任何缺失的测试案例。非功能测试和功能测试操作都应该考虑测试覆盖率。
8. 解释一下软件测试中的验证和确认。
验证是软件测试中使用的一种方法,以确保产品是按照要求和使用公认的开发实践开发的。在这个过程中包括以下行动:
·?检查
·?审查
·?演练
·?演示
验证是一种技术,用于确保所开发的产品没有错误,并能按预期运行。以下活动构成了它:
·?功能测试
·?非功能测试
9. 什么是静态测试?它什么时候开始,包括什么?
静态测试是一种白盒方法,指导开发人员对照检查表检查他们的代码,以确定问题。在没有完成应用程序或程序的情况下,开发人员可能开始静态测试。因为静态测试比动态测试在更短的时间内覆盖更多的内容,所以它的成本效益更高。
10. 我们可以在任何阶段进行系统测试吗?
不可以。系统测试只有在所有模块都已安装并正常运行后才开始。然而,它必须在UAT(用户验收测试)之前进行。
中级难度
11. 优先级和严重性之间的联系是什么?
严重性表示一个错误的重量和深度。它描述了应用程序的观点。
优先级告诉人们哪个错误必须首先被修复,它概述了用户的观点。
12. 端到端测试的目的是什么?
端到端测试是一种方法,用于覆盖从开始到结束的每一个潜在的应用流程。这个过程确定了软件的依赖性,并确认正确的输入在不同的软件模块和子系统中被传输。
13. 定义API。
应用编程接口或API允许用户通过抽象内部工作和复杂性,集中精力于操作软件程序所需的输入和输出。它作为两个软件组件的通信渠道。
开发人员在创建新软件时,除了从头开始编写新代码外,还经常使用其他第三方库。通过提供一个直接的接口,API可以使两个软件组件之间进行通信。
提供应用程序所需的数据是API的另一种用途。例如,考虑一个显示温度的天气应用程序。你可以使用气象局提供的API,而不是开发测量温度的技术。
14. 你能描述一下不同类型的测试覆盖技术吗?
测试覆盖过程是用来评估你是否在测试所有需要测试的东西。测试覆盖为尚未覆盖的领域制造困难,提高测试套件的整体质量。我们可以利用这些方法来加强或最大化测试覆盖率。
15. 什么是数据流测试?
数据流测试强调建立测试用例,涵盖围绕变量定义的控制流途径及其在模块中的使用。在测试用例中预计会出现以下品质:
·?模块的输入数据
·?与测试有关的控制流
·?如何利用和定义相关变量的例子
·?测试用例应该产生什么结果
16. 定义敏捷测试,并说明其重要性。
被称为 "敏捷测试 "的软件测试方法是从客户的角度来评估软件。开发团队不需要在开始QA之前完成编码,这是一个好处。相反的,测试和编码是相互排斥的。但它可能需要与客户不断互动。
17. 说明测试驱动和测试存根之间的区别。
一段被称为测试驱动程序的代码被用来调用一个正在被验证的软件组件。它有助于使用自下而上的方法来测试应用程序。
一个被称为测试存根的假程序被集成到一个应用程序中以实现其功能。它适用于遵循自上而下方法的测试。
举个例子:
考虑一种情况,我们需要评估模块A和B之间的接口,到目前为止只有模块A被创建。我们可以使用实际的或假的模块B来测试模块A。模块B在这种情况下是测试存根。
现在,模块A的数据不能直接发送到或接收到模块B。在这种情况下,需要测试驱动,也就是外部功能,将数据从一个模块传输到另一个模块。
18. 如果没有定义需求,你将如何测试一个产品?
如果没有现成的必要规格,有可能根据产品的假设制定测试计划。然而,在测试计划中,你必须彻底记录所有的信念。
19. 为什么不可能彻底测试一个程序?
下面列出了阻碍软件彻底测试的两个主要障碍:
·?对软件要求有许多可能的解释,因为它们是主观的
·?一个软件程序需要的输入、输出和路径组合的数量可能过多
20. 如果在测试过程中出现了错误,你会怎么做?
如果出现bug,可以采取以下步骤:
·?我们可以做额外的测试,以确认问题得到充分的描述
·?为了确保这个问题不会在其他输入下持续存在,我们可以再进行一些测试
·?如果我们对bug的完整范围有信心,我们可以添加信息并提交该bug
21. BUG、缺陷和错误之间的区别。
术语 "错误 "指的是一个编码错误。一个构建的代码如果不符合要求,在功能上就会失败。开发团队承认的缺陷被称为错误。手动测试员发现的错误会变成一个缺陷。
22. 故障是什么意思?
术语 "故障 "是指阻止软件执行预期功能的情况。
23. 你对STLC的理解是什么?
软件测试生命周期(STLC)建议规划和组织如何进行测试。为了提高产品的质量,STLC模型包括几个操作。
STLC模型概述了以下步骤:
·?需求分析
·?测试计划
·?设置测试用例开发
·?环境设置
·?测试执行
·?测试周期结束
24. 什么是功能和非功能测试案例?
i. 功能测试
它检查被测试软件的行为方式。应用测试是由一个被称为软件规范的文件来指导的,它是基于客户的要求。
ii. 非功能测试
当一个软件应用程序在任何情况下都能像用户预期的那样有效地执行,就可以说它是可靠的。测试这些因素以确定质量是至关重要的。像这样的测试被称为非功能测试。
25. 说明不同类型的功能测试方法。
功能测试所涵盖的验证方法包括:
·?单元测试
·?烟雾测试
·?SAT
·?完善性测试
·?接口测试
·?集成测试
·?系统测试
·?回归测试
26. 区分重测和回归测试。
回归测试和重新测试可以有以下不同:
·?为了确保缺陷不再存在,我们重新测试。然而,回归测试确保缺陷补丁不影响其他应用组件。
·?回归测试案例验证了一个或多个模块的功能。
·?回归测试确保成功的测试案例被重新运行。相反,重新测试需要运行失败的测试案例。
·?回归比重测不那么关键。然而,偶尔这两个过程也会同时进行。
高级难度
27. 什么是探索性测试?
探索性测试包括同时学习测试设计和执行。换句话说,这是一种实践方法,测试人员更多地参与到测试的执行中,而不是计划中。
28. 区分错误泄漏和错误发布。
i. 错误泄漏。错误泄漏是指测试团队在软件测试过程中未能发现错误,而最终用户或客户发现了这个错误。
ii.?漏洞发布。当一个特定的软件版本发布时,有几个已知的bug,这就是bug发布。这些bug的严重性/优先级通常较低。当软件公司可以接受已发布产品中的问题,但不愿意花时间或费用在该特定版本中解决这些问题时,就会进行发布。
29. 说明性能测试和Monkey Testing之间的区别。
性能测试评估一个系统的响应性、可扩展性和稳定性。它被定义为通过达到反应时间、吞吐量和资源利用水平来满足一个项目或产品的性能目标。
Monkey Testing包括让用户通过给它随机输入并观察应用程序的反应来测试一个应用程序。
30. 撰写错误报告时要考虑什么?
在一份完美的错误报告中应包括以下基本内容:
·?一个特殊的ID
·?应提供故障的简要说明
·?如何进行复制,包含完整的测试程序,以重现该问题。此外,他们提供测试结果和问题发生的时间。
·?任何可能有助于重现该问题的系统设置环境
·?应用程序的模块或发生错误的区域
·?严重程度
·?截图
31. 基于哪些因素,你会考虑选择自动化测试而不是人工测试?
根据以下标准,自动化测试应该优先于手工测试:
·?定期执行测试是必要的
·?重复的步骤是测试的一部分
·?测试在一个典型的运行环境中运行
·?自动化应该是为了加快进程
·?由于自动化,可重用性正在上升
·?对于每一次执行,都有自动化报告可用
一个微小的错误修复包含在更小的版本中,如服务包,在这些情况下执行回归测试就足以进行验证了。
32. 什么是Silk Test?为什么要使用它?
一个专业的工具是为测试一个应用程序的功能和回归而创建的。它测试基于Windows、Java、Web和经典的客户/服务器应用程序。为了提供对数据库的直接访问和字段验证,Silk Test协助创建和管理测试计划。
33. 区分质量保障、质量控制和软件测试。
术语 “质量保障”(QA)是指一种有计划、有组织的方法,评估为创造高质量产品所采取的步骤的有效性,测试分析监控测试报告并调整程序以符合预期。
质量控制(QC)对产品的质量至关重要。除了识别缺陷外,QC还提出了改进措施。所以,QC将QA建立的程序付诸实践。测试团队要对质量控制负责。
软件测试是确保由开发人员生成的产品满足用户需求的实践,找到错误并确保它们被修复是测试的目标。
34. 如何在你的环境中进行自动化测试?
自动化测试是在没有人工干预的情况下运行测试的过程。它通过工具大大减少了人工的干预,加快了测试程序。我们采用各种测试自动化工具,包括WinRunner、Selenium和QTP。这些工具可以产生测试报告和脚本,用于自动化应用验证。
35. 什么是缺陷年龄?
缺陷年龄衡量开发人员在测试人员发现缺陷后花了多长时间来补救。
在计算一个缺陷的年龄时要考虑以下因素:
·?一个缺陷的出生日期是指它被分配给开发团队并被批准的日子
·?被遗漏的问题不在权限范围内
·?可以用小时或天来衡量年龄
·?该缺陷在结束日期被验证并关闭,而不仅仅是开发团队纠正它的那一天
36. 什么是软件测试中的缺陷清除效率?
测试措施之一是缺陷清除效率(DRE),它是用来衡量发现的问题和解决的缺陷数量之间的比率,这表明了开发团队在发布前解决问题的意义。
举例来说,假设开发团队在测试周期中发现的75个问题中,有62个在测量时已经得到解决。DRE将是:62/75 或 82.6%。
37. 什么是软件测试中的缺陷检测百分比?
测试指标包括缺陷检测百分比(DDP)。一个测试程序的功效可以通过计算发布前发现的缺陷和客户使用软件后注意到的错误数量的比率来确定。
例如,假设QA在整个测试周期中发现了70个缺陷,而客户在发布后又报告了20个缺陷。因此,DDP将是:70/(70 + 20) = 72.1%
38. 潜在缺陷是什么意思?
潜伏的缺陷无法被用户发现,它是软件或应用程序中隐藏的缺陷。由于需求永远不会被完成,所以应用程序不会失败。
39. 测试报告的好处是什么?
测试结果可以确定一个项目的质量和当前状态。利益相关者和客户就可以采取适当的措施。有了彻底的测试报告文件,分析各个项目阶段会更容易。
40. 系统测试是什么意思?
使用黑盒技术测试的整个集成系统被称为系统测试,它确保计划符合要求。
感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:
?
?
这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取?
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!