测试工程师面试题之 - 高级测试工程师

1、为什么要在一个团队中开展软件测试工作?

  因为没有经过测试的软件很难在发布之前知道该软件的质量,就好比ISO质量认证一样,测试同样也需要质量的保证,这个时候就需要在团队中开展软件测试的工作。在测试的过程发现软件中存在的问题,及时让开发人员得知并修改问题,在即将发布时,从测试报告中得出软件的质量情况。

2、测试能给你带来什么样的快乐?

  测试可以给我带来很多快乐,如果测试出一个项目缺少东西,我会很高兴,因为我对自己的工作有了新的认识,也为公司做了效益;如果测试出一个项目没有问题,我也很高兴,因为同事们都在努力,大家都希望为公司做贡献,这就是一个很强大的团队,这是一件多么另人振奋的事情啊!

3、软件测试的目的?

  测试的目的是以最少人力、物力和时间找出软件中潜在各种错误和缺陷,通过修正种错误和缺陷提高软件质量,回避软件发布后由于潜在的软件缺陷和错误造成的隐患带来的商业风险。

4、Alpha测试与beta测试的区别

  Alpha测试 在系统开发接近完成时对应用系统的测试;测试后仍然会有少量的设计变更。这种测试一般由程序或测试员完成,不能由最终用户或其它人员完成。   Beta测试 当开发和测试根本完成时所做的测试,最终的错误和问题需要在最终发行前找到。这种测试一般由最终用户或其它人员完成,不能由程序员或测试员完成。

5、简述集成测试的过程

  1)构建的确认过程。   2) 补丁的确认过程。   3) Z34 。   4) 测试用例设计过程。   5) 测试代码编写过程。   6) Bug的报告过程。   7) 每周/每两周的构建过程。   8) 点对点的测试过程。   9) 组内培训过程。 集成测试过程:集成测试计划->集成测试设计->集成测试实现->集成测试执行。

6、质量的八大特性是什么?各种特性的定义?

  1)功能性:软件所实现的功能达到它的设计规范和满足用户需求的程度   2)性能:在规定条件下,实现软件功能所需的响应时间和计算机资源(CPU、内存、磁盘空间和数据吞吐量)的使用程度   3)可靠性:在满足一定条件的应用环境中,软件能够正常维持其工作的能力,在出现一些错误操作时,软件可以具有容错性,如果软件意外退出,重新启动后可以恢复最近的软件数据   4)安全性:为了防止意外或人为的破坏,软件应具备的自身保护能力   5)使用性:用户在理解、学习和操作软件的过程中的付出的努力的难易程度   6)维护性:软件在运行维护过程中,如果出现了运行故障或者扩展新功能和性能,软件系统是否具有可分析性和良好的扩展性,重新设计后的软件的稳定性和可测试性   7)移植性:软件从现有运行平台向另一个运行平台过度的适应程度和平台可替换性   8)重用性:整个软件或其中一部分能作为软件包而被再利用的程度

7、系统测试计划是否需要同行审批,为什么

  需要,系统测试计划属于项目阶段性关键文档,因此需要评审。

8、软件质量应该从哪些方面来评价?

  可靠性、安全性、性能、易用性、外观、稳定性

9、系统测试包含哪些方面?

  1.恢复测试、2.安全测试、3.强度测试、4.性能测试

10、区别阶段评审的与同行评审

  同行评审目的:发现小规模工作产品的错误,只要是找错误;   阶段评审目的:评审模块 阶段作品的正确性 可行性 及完整性   同行评审人数:3-7人 人员必须经过同行评审会议的培训,由SQA指导   阶段评审人数:5人左右 评审人必须是专家 具有系统评审资格   同行评审内容:内容小 一般文档 < 40页, 代码 < 500行   阶段评审内容: 内容多,主要看重点   同行评审时间:一小部分工作产品完成   阶段评审时间: 通常是设置在关键路径的时间点上!

11、测试结束的标准是什么?

  1.用例全部执行。2.覆盖率达到标准。3.缺陷率达到标准。4.其他指标达到质量标准

12、制定测试计划之前需要了解什么问题?

  1)软件测试计划的目的是什么?是否所有人都知道?他们同意这个测试计划过程吗?   2)测试的是什么产品?是新程序还是维护升级的?是独立程序还是由多个小程序组成的?   3)产品的质量目标是什么?产品的功能需求和性能指标必须得到所有人的一致认可。

13、请详述设计测试用例的方法? (只是列出一个测试用例思考的方向,具体设计靠经验)

  ①黑盒测试用例根据业务需求说明书来设计,分为:   等价划分法边界值分析法错误推测法因果图法逻辑覆盖法   ②白盒测试用例通过研究代码与程序结构可以分为以下两种方式:   静态测试:通过静态的检查程序代码、界面、文档中可能存在的错误的过程。   |-测试代码编写的规范性 |-测试界面 |-测试相关需求说明和用户手册是否符合实际要求   动态测试:通过路径和分支测试。测试用例主要根据以下六种覆盖测试方法设计   |-语句覆盖 |-判定覆盖 |-条件覆盖 |-判定/条件覆盖 |-组合覆盖 |-路径覆盖

14、比较负载测试,压力测试,容量测试和强度测试的区别

  负载测试:在一定的工作负荷下,系统的负荷及响应时间。通过逐步增加系统负载,最终确定在满足性能指标的情况下,系统能承受的最大负载量的测试。   强度测试:又称疲劳强度测试,在系统稳定运行的情况下能够支持的最大并发用户数,持续执行一段时间业务,通过综合分析,确定系统处理最大工作量强度性能的过程。一定负荷条件下,在较长时间跨度内的系统连续运行给系统性能所造成的影响。   容量测试:容量测试目的是通过测试预先分析出反映软件系统应用特征的某项指标的极限值(如最大并发用户数、数据库记录数等),系统在其极限值状态下没有出现任何软件故障或还能保持主要功能正常运行。容量测试还将确定测试对象在给定时间内能够持续处理的最大负载或工作量。容量测试的目的是使系统承受超额的数据容量来发现它是否能够正确处理。容量测试是面向数据的,并且目的是显示系统可以处理目标内确定的数据容量。   压力测试:通过逐步增加系统负载,最终确定在什么负载条件下系统性能将处于崩溃状态,以此获得系统能提供的最大服务级别的测试。

15、测试人员需要何时参加需求分析?

  如果条件允许,原则上来说是越早介入需求分析越好。因为测试人员对需求理解越深刻,对测试工作的开展越有利,可以尽早的确定测试思路,减少与开发人员的交互,减少对需求理解上的偏差。

16、软件的缺陷等级应如何划分?

  严重:1.由于程序所引起的死机,非法退出 2.死循环 3.数据库发生死锁 4.因错误操作导致的程序中断 5.功能错误 6.与数据库连接错误 7. 数据通讯错误。   较严重:1.程序错误 2.程序接口错误 3.数据库的表、业务规则、缺省值未加完整性等约束条件。   一般性:1.操作界面错误(包括数据窗口内列名定义、含义是否一致) 2.打印内容、格式错误 3.简单的输入限制未放在前台进行控制 4.删除操作未给出提示 5.数据库表中有过多的空字段。   建议:1.界面不规范 2.辅助说明描述不清楚 3.输入输出不规范 4.长操作未给用户提示 5.提示窗口文字未采用行业术语 6.可输入区域和只读区域没有明显的区分标志 。

17、你自认为测试的优势在哪里?

  优势在于我对测试坚定不移的信心和热情,虽然经验还不够,但测试需要的基本技能我有信心在工作中得以发挥。

18、你在测试中发现了一个bug,但是开发经理认为这不是一个bug,你应该怎样解决。

  1)如果不是错误则应该主动承认不是缺陷。   2)如果是需求不明确的则应和开发加强沟通补充需求。   3)如果和开发争论不休应该邀请上级判断。

19、您认为做好测试计划工作的关键是什么?

  1)明确测试的目标,增强测试计划的实用性   2)坚持“5W”规则,明确内容与过程   3)采用评审和更新机制,保证测试计划满足实际需求   4)分别创建测试计划与测试详细规格、测试用例

20、风险和问题

  ◆ 市场的压力   ◆ 测试时间不够   ◆ 测试资源的及时到位   ◆ 测试人员的技能需求   ◆ 开发进度的变化,需求的变更   ◆ 开发部门的版本控制   ◆ 短时间上线。这个是已经定好的,没有参考测试人员的意见。时间短往往不能得到充分的测试,测试策略必须根据可用的时间进行调整。尽快指出这样的问题非常重要,只有这样才能调整时间表,确定快速开发的风险并制定降低风险的策略。   ◆ 新的设计过程。引入新的设计过程会增加风险,新的设计过程包括新的工具和设计技术。如果采用新的技术,能否像我们预期的那样运转,都存在很大的风险   ◆ 复杂性。我们应该进行一些分析工作来确定哪个功能最复杂,哪个功能最容易出错,错误会对系统的哪些地方造成重大的影响。   ◆ 使用频率。软件最常用功能中隐藏的问题可能给用户造成严重的损失。   ◆ 不可测试的需求。不可测试的需求会对系统的成功造成巨大的威胁。如果测试组在需求阶段就验证了需求的可测试性,对需求进行了评审,那么此类问题会减少多。

21、软件都有多少种分类?

  固件、支持软件、系统软件、应用软件

22、你认为软件测试过程中较常见的困难是什么?如何有效克服这些困难? (根据自己实际测试中遇到的情况来写的)

  ①Bug的重现问题:有些Bug只是偶尔出现的,根本就不知道具体需要什么条件才能重现Bug.   解决方法:将不能重现的Bug,利用截图的方式记录下来。并说明一系列的操作步骤   ②Bug的更新:旧的Bug修改好之后,很多时候会引发更多Bug的出现。   解决方法:对更新的功能模块重点的测试之后,再重新测试和更新的功能密切的模块,会不会产生新的Bug.   ③与开发人员的沟通和对业务流程理解的分歧,经常缺少需求文档   解决方法:根据需求说明书和Bug情况,多多和开发人员进行交流

23、测试计划工作的目的是什么?测试计划工作的内容都包括什么?其中哪些是最重要的?

  软件测试计划是指导测试过程的纲领性文件,对测试工作的计划和安排包含了产品概述、测试策略、测试方法、测试区域、测试配置、测试周期、测试资源、测试交流、风险分析等内容。借助软件测试计划,参与测试的项目成员,尤其是测试管理人员,可以明确测试任务和测试方法,保持测试实施过程的顺畅沟通,跟踪和控制测试进度,应对测试过程中的各种变更。   测试计划和测试详细规格、测试用例之间是战略和战术的关系,测试计划主要从宏观上规划测试活动的范围、方法和资源配置,而测试详细规格、测试用例是完成测试任务的具体战术。所以其中最重要的是测试测试策略和测试方法(最好是能先评审)

24、怎样保证你所负责的模块通过了测试

  首先是了解用户的需求,设计好的测试用例,严格的进行用例的评审,认真的执行测试用例,对自己提交的Bug进行详细的描述。   反复测试,增强测试的准确性,通过冒烟回归随机测试挖掘缺陷提高测试工作质量,把各个模块整体运行发现未曾出现的错误,完善测试用例

25、您认为性能测试工作的目的是什么?做好性能测试工作的关键是什么?

  性能测试工作的目的是检查系统是否满足在需求说明书中规定的性能,性能测试常常需要和强度测试结合起来,并常常要求同时进行软件和硬件的检测。性能测试主要的关注对象是响应时间,吞吐量,占用内存大小(辅助存储区),处理精度等。

26、怎么编写案例

  案例的编写与测试阶段的定义有很大的关系。系统测试和unit测试的案例可能不同。总体而言测试案例根据系统的需求而定。

27、怎么才能够全面的测试到每一个点

  测试的全面性主要需要在设计测试计划的时候考虑,从测试策略,产品需求等等多个角度考虑从而定义全部的测试点。

28、常用的测试工具及分类

  功能测试工具 — QTP;性能测试工具 — PerfermanceRunner/Loadrunner;测试管理工具 — TestCenter;   白盒测试工具 — Nunit,Junit,C++Test,JTest,BoundsChecker,Logiscope

29、软件测试与调试的关系?

 1) 测试条件已知,规程可定义,结果可预知2) 测试可以计划,过程可控3) 测试是检验,调试是推理过程4) 测试表明程序失败,调试表明正确5) 测试可不了解设计细节6) 测试由非设计人员完成7) 测试有理论依据8) 测试可自动化

30、给你一个网站,你如何测试?

  1.查找需求说明、网站设计等相关文档,分析测试需求。   2.制定测试计划,确定测试范围和测试策略,一般包括以下几个部分:功能性测试、界面测试、性能测试、数据库测试、安全性测试、兼容性测试。   3.设计测试用例:   功能性测试:1链接测试。链接是否正确跳转,是否存在空页面和无效页面,是否有不正确的出错信息返回等。2提交功能的测试。3多媒体元素是否可以正确加载和显示。4多语言支持是否能够正确显示选择的语言等。   界面测试:1页面是否风格统一,美观 2页面布局是否合理,重点内容和热点内容是否突出 3控件是否正常使用 4对于必须但为安装的空间,是否提供自动下载并安装的功能 5文字检查   性能测试:压力测试、负载测试、强度测试   数据库测试:要具体决定是否需要开展。数据库一般需要考虑连结性,对数据的存取操作,数据内容的验证等方面。   安全性测试:1基本的登录功能的检查2是否存在溢出错误,导致系统崩溃或者权限泄露3相关开发语言的常见安全性问题检查,例如SQL注入等。4如果需要高级的安全性测试,确定获得专业安全公司的帮助,外包测试,或者获取支持 兼容性测试:根据需求说明的内容,确定支持的平台组合。1浏览器的兼容性2操作系统的兼容性3软件平台的兼容性4数据库的兼容性   4.开展测试,并记录缺陷。合理的安排调整测试进度,提前获取测试所需的资源,建立管理体系(例如,需求变更、风险、配置、测试文档、缺陷报告、人力资源等内容)。   5.定期评审,对测试进行评估和总结,调整测试的内容。

31、您在从事性能测试工作时,是否使用过一些测试工具?如果有,请试述该工具的工作原理,并以一个具体的工作中的例子描述该工具是如何在实际工作中应用的。

  有使用过LoadRunner,该工具能够录制测试人员的操作步骤,然后对这个操作步骤模拟出多个用户来播放出来。1.Visural User Genertor创建脚本,选择协议,录制操作,编辑操作。2.中央控制器(Controller)调度虚拟用户。创建场景,选择脚本,建立虚拟用户,设计shedual,设置ip spoofer。3.运行脚本。分析shedual。4.分析测试结果。

32、怎样做好测试计划

  1.理解系统。从整个系统的高度了解被测系统必须满足的功能和非功能性需求。利用涉及整个系统的文档,形成对系统的整体了解。   2.及早介入。为了深入了解项目,测试人员应该在系统的开始阶段介入,可以增加对客户需求,客户问题,潜在风险,以及最重要的功能方面的理解   3.测试期望。程序员的期望是什么?客户的期望是什么?销售对测试的期望又是什么?测试目标必须是绝对的,以免说不清楚是否达到目标。   4.吸取教训。把以前工作中学习到的经验教训运用过来,对确定测试策略很有作用。   5.工作量大小。完成测试需要多少工作量?需要多少人员?   6.技术选择。系统会采取什么技术?系统会采用什么架构?这些信息有助于确定测试策略和测试工具。   7.时间表。系统开发和测试分配的时间有多长?截止日期是什么时候?

33、您是否了解以往所工作的企业的软件测试过程?如果了解,请试述在这个过程中都有哪些工作要做?分别由哪些不同的角色来完成这些工作?

  软件测试部门配合系统分析人员软件需求分析讨论,并根据需求说明书制定《项目测试计划》,编写测试用例,建立测试环境。软件测试人员负责软件开发部门的新产品测试及原有产品的升级测试,负责软件问题解决过程跟踪,负责软件开发文档开发工作的规范化及管理开发部门的产品文档,制作用户手册及操作手册,负责产品的上线测试,监督软件开发过程的执行,提高产品质量。需求人员连同系统分析人员&测试人员开会讨论需求。系统分析人员写出需求分析说明,并连同系统分析人员&测试人员&需求人员开会讨论可行性。系统分析人员写出详细设计说明书,程式人员编码,给出系统流程图。交与测试人员,测试人员给出Bug统计表。

34、系统测试阶段低级缺陷较多怎么办?

  公司有预测试这个流程,会在开展测试活动之前对主要功能点的正常流程做一个测试,以判断这个版本是不是可测试版本,如果低级缺陷比较多,严重阻碍测试执行的话,我们会打回开发部,不执行测试。

35、缺陷流落到客户那里怎么办?

  我们公司会尽可能的避免这种情况的出现,让软件缺陷在内部得到解决,万一版本上线了才发现有问题,我们也会及时派技术人员在最短的时间内做出修改,把客户的损失降到最低。

36、代码会审是什么?

  对代码的一个评审的过程,发现一些最基本的错误,方式是静态的代码走读方式,在一些大型软件的设计过程中,还是必不可少的。

37、请问功能测试和性能测试的区别是什么?(只总结了两个方面,有其他的自己补充)

  ①测试目的:   功能测试:检查实际软件的功能是否符合用户的需求,测功能是不是全部实现,某个实现是不是有BUG。主要为了发现以下几类错误:A、是否有不正确或遗漏的功能?B、功能实现是否满足用户需求和系统设计的隐藏需求? C、能否正确接收输入?能否正确输出结果?   性能测试:验证软件质量的三个质量特性,可靠性,正确性和效率。主要是测试产品的健壮性   ②测试方式:   功能测试:按照系统需求说明书和测试用例,对产品的功能一步步进行测试。找出产品功能是否全部实现   性能测试:一般都使用性能工具对产品的健壮性进行评估。通过创建场景和虚拟用户来模拟真是环境,进行压力测试和负载测试。

38、状态为已修改的缺陷 实际没有修改怎么办?

  加强项目质量管理,提高项目执行能力。如果测试人员发现了这样的问题,首先要弄清楚是什么原因导致这种情况,最终还是要督促开发人员,修改掉这些问题。如果是不能重现的问题或者是老版本中遗留下来的问题不能修改的 要做好标示。

39、性能测试什么时候开始最合适

  一般在功能测试最后阶段执行 因为功能走通了 性能才有意义 总之性能测试要根据用户实际性能指标来操作 是一个很重要的测试活动 要根据软件的属性以及它的实际情况来制定策略

40、回归测试中 未解决的缺陷如何处理

  实际项目中 也会因为种种原因 出现最后一轮测试结束了 还有一些缺陷没有解决 那么对于问题的不同 我们有不同的解决方式:严重性问题:必须解决,不允许上线;功能性问题:可以考虑在后续版本中解决;一般性问题:可以不解决或者升级的时候解决。

41、集成测试通常都有那些策略?

1)在把各个模块连接起来的时候,穿越模块接口的数据是否会丢失;   2)各个子功能组合起来,能否达到预期要求的父功能;   3)一个模块的功能是否会对另一个模块的功能产生不利的影响;   4)全局数据结构是否有问题;   5)单个模块的 误差积累起来,是否会放大,从而达到不可接受的程度。

42、软件测试的对象

  答:软件测试并不等于程序测试。软件测试应贯穿于软件定义与开发的整个期间。   需求分析、概要设计、详细设计以及程序编码等各阶段所得到的文档,包括需求规格说明、概要设计规格说明、详细设计规格说明以及源程序,都应成为软件测试的对象。

43、什么是UML?

  答:Unified Modeling Language   它是一种用于描述,构造软件系统以及商业建模的语言。简单的理解就是它可以以一种直观的方式表示出一个系统的各项内容。

点赞是对小编最大的鼓励~

各位小哥哥小姐姐帮小编点一下广告,这对小编最大的鼓励哟,笔芯~

友情链接