很全的软件测试面试题整理
第一部分 专业技术
1、在Windows中,为结束死循环的出现,应首先按的键是(C)
A、 alt + del B、 Del C、ctrl + alt + del D、ctrl + del
2、设定打印纸张大小时,应当使用的命令是(C)
A、文件菜单中的打印预览
B、视图菜单中的“页面”命令
C、文件菜单中的 页面设置命令
D、视图菜单中的工具栏命令
B d
二、简答题
1、软件测试的概念?目的?原则?
概念:软件测试是指在现有软件(程序和文档)中寻找缺陷的过程。
目的:检验软件是否满足规定的需求或弄清预期结果与实际结果之间的差别。
原则:(1)尽早测试、不断测试
(2)程序员避免检查自己的程序
(3)测试用例应该包含合理的和不合理的输入条件
(4)严格执行测试计划,排除测试的随意性
2、什么是冒烟测试?
使用较少的人但经验较丰富,在较短的时间内测试整个系统的主要功能、主要业务流程是否实现,是否稳定。
3、软件测试的缺陷等级如何划分?
Urgent 致命的 立即修复
Very high 非常严重的 本版本修复
High 严重的 下个版本修复
Medium 中等程度 发布前修复
Low 低级别 允许发布中存在
4、测试结束的标准?
(1)模块测试用例执行完毕,覆盖了全部软件需求
(2)缺陷收敛趋势符合质量要求
(3)缺陷修复率达到产品设计人员的需求
(4)达到预先的缺陷度量原则
5、您所熟悉的软件测试类型有哪些?试着比较这些不同测试类型?
(1)按测试技术分类:黑盒 白盒 灰盒
(2)按是否需要运行程序: 静态测试 动态测试
(3)按软件特性:功能测试、性能测试、界面测试
区别:
功能测试:不考虑你软件内部结构,只考虑软件外在功能表现,可以使用手工测试,也可以使用自动化工具测试。
性能测试:主要关注于产品整体的多用户并发下的稳定性和健壮性,只能使用自动化工具测试。
界面测试:更关注于用户体验,用户使用该产品的时候是否易用,是否易懂,是否规范(快捷键之类的),是否美观(能否吸引用户的注意力),是否安全(尽量在前台避免用户无意输入无效的数据。
6、比较黑盒测试白盒测试的区别和联系?
区别:
黑盒测试----把测试对象看成一个黑盒子,不考虑程序内部结构和处理过程,只通过外部表现来发现其 bug。
白盒测试----把测试对象看成装在透明的白盒子,清楚知道其内部结构和处理过程,检查软件内部动作是否按照设计说明设计说明的规定正常进行。
联系:在集成测试阶段次用黑盒和白盒相结合的方法,两种测试方法形成互补,测试的覆盖面更大。
7、如果一个bug只出现一次,该怎么处理?
(1)bug出现的同时立即截图留下异常的画面
(2)使用相同的测试步骤和方法,使用相同的输入数据,看能否重
现bug
(3)不能重现,则告诉项目经理发现bug的过程,分析优先级,讨论解决方案
8、windows用户通过什么命令查看本机IP?如何释放IP?如何重新申请IP?
Ipconfig ipconfig /release ipconfig/renew
9、软件测试活动的生命周期是什么?请画出软件测试活动的流程图?/ 描述软件测试的过程,其中有哪些工作要做?
答:制定测试计划→测试计划评审→测试用例设计、测试脚本开发、测试数据准备→测试用例评审、自动化脚本评审→实施测试并提交缺陷→提交测试总结报告
10、测试用例通常包括那些内容?目前的主要设计测试用例的方法是什么?
测试模块、用例编号、测试目的、预置条件、测试步骤、预期结果、实际结果
等价类划分、边界值、判定表、正交排列法、场景法、测试大纲法
11、简述一下缺陷的生命周期?
未通过
12、测试计划的目的是什么?测试计划的内容都包括什么?其中那些是最重要的? /测试计划主要编写哪些内容
目的:指导测试过程的纲领性文件。
内容:简介(项目简介、测试目的、测试范围-模块层次、测试阶段)、参考文档、进度安排、测试资源、严重程度和优先级、 风险分析、测试策略
其中测试策略、风险分析、进度安排比较重要
13、项目的测试策略都有哪些
功能、安装、界面、易用性、文档
14、你们的项目是否写测试计划,谁去写
测试组长、经理,其他人参与评审
15、用户对软件系统的第一次认识来自于安装,因此易用性的一个重要体现就是安装的易用性。请简述安装测试应当从哪几个方面来考虑? 安装的自动化测试
安装选项和设置的测试
安装过程的中断测试
安装顺序测试
多环境安装测试
安装正确性测试
修复安装与卸载测试
16、完整项目中有哪些测试输出件?
测试用例、测试需求、测试计划、阶段性测试报告、测试总结报告Bug总结报告
17、版本测试需要遵循哪些准则?
18、怎么保证测试的覆盖率? (1)读懂并理解测试所参考的一些文档,如需求说明、产品规格说明书,罗列出需求的测试点,以及隐性的需求
(2)项目中的需求是变化的,要做好需求管理,根据变化完善测试用例,准备测试数据
19、自动化测试用例的维护?
对所有编写完成的用例脚本进行集中执行,保证测试的完整性和持续有效性。
18、什么是回归测试?如何处理回归测试不通过的问题?
回归测试是指测试人员在代码有改动的情况下,将之前版本上所有功能点的用例在新版本上再执行一遍。 不通过打回开发组
19、测试评估活动包括哪些?
测试工作总结、缺陷数据分析、测试过程评估
20、简述工作中的测试流程?
(1)需求分析讨论
(2)编写测试计划
(3)维护并执行测试用例
(4)编写测试总结报告
21、敏捷开发模式下的测试流程和CMMI开发下的流程测试的区别是什么?
应该说这两种开发管理的主导思想时存在冲突的,CMMI强调固化过程,让程序员遵循过程做事情,敏捷开发主张必须充分发挥开发人员的创造性和能力,不要约束他们的想法和能力,表面看来似乎是针锋相对。但是在其管理的核心实质都是明确了一种如何通过项目团队的协调统一,加强团队的开发能力,通过高标准的质量管理来制造出高质量,符合客户需要的软件项目产品的目的,所以两者之间就存在一种相互借鉴,互相融合和促进的可能。
22、怎样设计测试方案?
(1)明确测试策略
(2)测试用例规划
(3)测试环境规划
(4)自动化测试框架的设计
(5)测试工具的设计和选择
23、测试策略和测试方案的区别是什么?
测试策略描述测试工程的总体方法和目标,是组织管理层面的文件。 测试方案是技术层面的文件,测试方案在测试计划的指导下进行,测试计划提出“做什么”,测试方案明确“怎么做”。
24、软件测试需求分析方法的分析过程是怎样的?
25、你认为做好测试工作的关键是什么?
(1)明确测试的目标,增强测试计划的实用性
编写软件测试计划得重要目的就是使测试过程能够发现更多的软件缺陷,因此软件测试计划的价值取决于它对帮助管理测试项目,
并
且找出软件潜在的缺陷。因此,软件测试计划中的测试范围必须高度覆盖功能需求,测试方法必须切实可行,测试工具并且具有较高的实用性,便于使用,生成的测试结果直观、准确
(2)坚持“5W”规则,明确内容与过程
“5W”规则指的是“What(做什么)”、“Why(为什么做)”、“When(何时做)”、“Where(在哪里)”、“How(如何做)”。利用“5W”规则创建软件测试计划,可以帮助测试团队理解测试的目的(Why),明确测试的范围和内容(What),确定测试的开始和结束日期(When),指出测试的方法和工具(How),给出测试文档和软件的存放位置(Where)。
(3)编写周密的测试计划并严格按照其执行测试用例
应把详细的测试技术指标包含到独立创建的测试详细规格文档,把用于指导测试小组执行测试过程的测试用例放到独立创建的测试用例文档或测试用例管理数据库中。测试计划和测试详细规格、测试用例之间是战略和战术的关系,测试计划主要从宏观上规划测试活动的范围、方法和资源配置,而测试详细规格、测试用例是完成测试任务的具体战术。
(4)采用评审和更新机制,保证测试计划满足实际需求
测试计划写作完成后,如果没有经过评审,直接发送给测试团队,测试计划内容的可能不准确或遗漏测试内容,或者软件需求变更引起测试范围的增减,而测试计划的内容没有及时更新,误导测试执行人员。
26、总结一下从哪些方面进行测试用例设计?
黑盒测试设计用例:用户需求规格说明书,详细设计说明书、用户手册等。
白盒测试设计用例:详细设计说明书及代码结构
27、测试过程中是如何保证测试设计质量的? (1)项目成员明确需求,制定合理的测试计划
(2)测试用例要经过严格的审核,评审之后少做变更
(3)严格按照测试计划执行用例
(4)迭代测试
28、软件测试通过的标准是什么样的?
缺陷密度值达到客户的要求
29、列出软件测试的五大过程模块?
30、软件质量的三个层次分别代表什么需求?
业务需求、用户需求和功能需求
31、如何理解压力、负载、性能测试? 性能测试,表示在一个给定的基准下,能执行的最好情况。例如,在没有负重的情况下,你跑100米需要花多少时间(这边,没有负重是基准)?
负载测试,也是性能测试,但是他是在不同的负载下的。对于刚才那个例子,如果扩展为:在50公斤、100公斤……等情况下,你跑100米需要花多少时间?
强度测试,是在强度情况下的性能测试。对于刚才那个例子,如果改为:在一阵强风的情况下,你在负重或没有负重的情况下,跑100米需要花多少时间?
性能测试是动力,负载测试载重,压力测试强度 压力测试stresstest是在一定的负荷条件下,长时间连续运行系统给系统性能造成的影响。
负载测试Loadtest:在一定的工作负荷下,给系统造成的负荷及系统响应的时间。
压力测试主要是为了发现在一(任意)定条件下软件系统的性能的变化情况,通过改变应用程序的输入以对应用程序施加越来越大的负载(并发,循环操作,多用户)并测量在这些不同的输入时性能的
改变,也就是通常说的概念:压力测试考察当前软硬件环境下系统所能承受的最大负荷并帮助找出系统瓶颈所在。其实这种测试也可以称为负载测试,但是负载测试通常描述一种特定类型的压力测试——增加用户数量以对应用程序进行压力测试。比如实际中我们说从比较小的负载开始,逐渐增加模拟用户的数量, 直到应用程序响应时间超时,就是说的负载测试。
压力测试的目标是测试在一定的负载下系统长时间运行的稳定性,尤其关注大业务量情况下长时间运行系统性能的变化(例如是否反应变慢、是否会内存泄漏导致系统逐渐崩溃、是否能恢复);压力测试是测试系统的限制和故障恢复能力,它包括两种情况:
稳定性压力测试:在选定的压力值下,长时间持续运行。通过这类压力测试,可以考察各项性能指标是否在指定范围内,有无内存泄漏、有无功能性故障等;
破坏性压力测试:在稳定性压力测试中可能会出现一些问题,如系统性能明显降低,但很难暴露出其真实的原因。通过破坏性不断加压的手段,往往能快速造成系统的崩溃或让问题明显的暴露出来;
负载测试的目标是测试在一定负载情况下系统性能(不关注稳定性,也就是说不关注长时间运行,只是得到不同负载下相关性能指标即可);实际中我们常从比较小的负载开始,逐渐增加模拟用户的数量(增加负载), 观察不同负载下应用程序响应时间、所耗资源,直
到超时或关键资源耗尽,这就是所说的负载测试,它是测试系统的不同负载情况下的性能指标。
最简单来说:
负载测试是测试软件本身最大所能承受的性能测试;
压力测试就是一种破坏性的性能测试;
只要理解这两点区别,就非常好理解性能测试了
负载测试和压力测试的区别:
(1)共同点:都是在测试过程中逐步加压
(2)负载测试 Load Testing
是正常范围内的测试,满足性能需求、正常运行 -- 见好就收
(3)压力测试 Stress Testing
可以在极端范围内测试,测试系统的性能极致 -- 使劲折腾
(4)举例:性能指标要求系统支持100用户并发
负载测试:20 40 60 80 100
压力测试:50 100 200 300 500
32、请列出你使用过的操作系统?特点
Windows:操作简单、应用广泛、兼容性好
Linux :开源免费、安全性强、技术成熟、开发功能强大、强大的数据库支持能力、操作界面切换(视图界面和文本界面)、目录树
管理结构
Mac OS X:强大的图形处理能力、兼容性稍差
Dos:硬件要求低、古老、字符界面、稳定性高
1. 为什么要做黑盒测试?
答: 1.验证软件产品是否符合需求文档设计;
2.证实软件产品符合终端用户的需求。
2. 什么是白盒测试?
答:白盒测试也称结构测试或逻辑驱动测试,是通过分析被测软件内部工作原理,通过测试来检测被测软件内部的运行是否符合产品规格说明书规定。(通常用于单元测试阶段)
3. 白盒测试的方法?
答:逻辑覆盖、循环覆盖、基本路径测试、静态数据流分析。
4. 为什么要对程序进行单元测试?
答:1.保证被测代码有正确的行为,验证代码是否与详细设计一致;
2.窥探软件内部的实现机制,发现其他测试阶段难以发现的软件
缺陷。
3.充分的单元测试可以极大地降低软件的开发成本。、
5. 什么时候开始做单元测试?
答:在软件的编码阶段进行。
6. 为什么要对程序进行集成测试?
答:1.可以发现在单元测试阶段难以发现的缺陷;
2.结合白盒测试与黑盒测试的特点对被测组件进行测试;
3.逐步地对软件进行集成测试可以有效地定位软件因集成新的组件所引入的缺陷;
4.逐步地对软件进行集成测试可以有效地评估被集成的新模块对原系统的影响;
5.充分的集成测试可以降低软件的开发成本。
7. 集成测试是为了验证哪个文档?
答:软件的概要设计文档。
8. 什么时候开始集成测试?
答:被测组件的编码完成之后。
9. 集成测试的方法?
答:1.自顶向下集成法;2.自底向上集成法;3.三明治集成法(从两端向中间集成);4.大爆炸式集成法。
10. 什么是系统测试?
答:系统测试就是在所有模块或子系统都完成了集成测试之后,测试人员对整个软件系统按照产品需求说明书进行的功能验证测试。
11. 验收与确认测试的区别?
答:验收是软件交给用户前的最后一个工序。
确认测试是有效性和配置合理测试。它是集成测试和系统测试之间的过渡阶段。
12. 为什么对软件进行系统测试?
答:1.系统测试与此前测试阶段的测试目的不同;2.系统测试的范围更加广泛;
3.系统环境是在模拟真实环境下进行的;4.某些特殊的常量数据
只能在系统测试阶段来验证。
13.
14.
15. 系统测试包括哪些测试?
答:功能测试、性能测试、压力测试、健壮性测试、兼容性测试、易用性测试哦、安装测试。
16. 什么是验收测试?
答:验收测试是交付给用户,让用户执行产品验收所进行的测试,是产品上市之前的最后一个正式的测试阶段。
17.
18. 什么是软件的基线版本?
答:基线版本是软件在开发过程中形成地一个稳定的版本,可以作为后续软件开发的依据。
19. 为什么要做回归测试? 验收测试验证的是哪个文档? 答:产品规格说明书。 系统测试为了验证哪一个文档? 什么时候开始做系统测试? 答:产品需求规格说明书。 答:产品的所有组成模块都集成了之后。
答:1.验证开发人员所承诺修复的软件缺陷是否已被正确修复;2.验证新的软件修复是否影响了原有的稳定模块的正确性和稳定性;3.验证新的软件修改是否引入了新的缺陷;4.验证新的软件版本是否稳定,从而成为新的基线版本,以备后续开发使用。
20. 什么时候开始做回归测试?
答:1.正在开发的软件产品必须形成了基线版本;2.必须要有对基线版本的修改。
21. 设计回归测试用例的策略?
答:1. 新修改的功能,这个显然是重点;2. 新修改的功能的关联功能,就是有耦合的部分,这个一般最好咨询一下开发人员;3. 程序最有卖点或者说亮点的部分,这个地方一旦有问题,会使程序质量大打折扣;4. 程序中最致命的部分,譬如说安全隐患,数据泄露,加密注册;5. 程序中比较脆弱的部分,这个要咨询开发人员,一般就是他们心中最没底的地方;6. 程序的主干功能;7. 已经关闭的严重bug,需要回归测试,看是否又open了;8、本次测试周期内发现BUG最多的模块,需要回归测试;9. 如果以上做完,还有时间的话,最好把用例中优先级比较高的再执行一遍。
22. 描述软件测试的过程,其中有哪些工作要做?(软件测试的生命周期)
答:制定测试计划→测试计划评审→测试用例设计、测试脚本开发、测试数据开发→测试用例评审、自动化脚本评审→实施测试并提交缺陷→提交测试总结报告
23. 瀑布模型和螺旋模型的主要区别是什么?
答:瀑布模型在项目早期要考虑清楚整个项目所需的所有信息和数据。在每个阶段工作明确、下一个阶段依赖上一个阶段,并且测试只是在某一个阶段。
螺旋模型是只考虑当前该阶段的重点工作,开发过程和测试过程并行工作。
24. 软件测试分为几个阶段?各阶段的测试策略和要求是什么? 答:单元、集成、系统、验收。
单元阶段主要以白盒为主,黑盒为辅;集成采取从上到下和从下
到上的方法;
系统和验收主要以黑盒为主,白盒为辅。
JAVA
1、单继承
1.1 java类是否支持多重继承?
1.2 java类是否可以同时实现多个接口?
1.3 一个借口是否可以集成其他接口?
1.4 一个借口是否可以同时继承多个接口?
1.5 为什么类智能单继承而接口可以多集成?
2、静态和成员
2.1 成员方法是否可以访问静态变量?
2.2 静态方法是否可以访问成员变量?
2.3 为什么静态方法不能访问成员变量?
3、内部类
3.1 内部类分为几种?
3.2 匿名内部类是否可以访问所在的方法参数,有什么要求?
3.3为什么匿名内部类智能访问常量参数?
4、StringBuffer和
StringBuilder
5、方法覆盖
5.1 什么是方法覆盖?
方法覆盖即方法的重写,指子类从父类ji
5.2 方法覆盖的语法要求是什么?
5.3 为什么访问控制符要越来越宽泛?异常类型要越来越具体?