测试工程师面试常见问题

萌到你眼炸
729次浏览
2021年02月21日 08:52
最佳经验
本文由作者推荐

-

2021年2月21日发(作者:悠悠球)


目录
































01.


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


软件测试概念:


在规定的条件下对程序进行操作,以发现错误,对软件质量进行评估 的一个过程:



测试的目的


:是想以最 少的人力,物力和时间找出软件中潜在的各种错误与缺陷,通过修正各种错误


和缺陷提高 软件质量,回避软件发布后由于潜在的软件缺陷和错误造成的隐患以及带来的商业风险。



因为没有经过测试的软件很难在发布之前知道该软件的质量,就好比

ISO


质量认证一样,测试同样也


需要质量的保证,


这个时候就需要在团队中开展软件测试的工作。


在测试的过程发现软件 中存在的问


题,及时让开发人员得知并修改问题,在即将发布时,从测试报告中得出软件 的质量情况。



软件测试生命周期


1< /p>


)计划


2


)分析,


3


)设计,


4


)构建,


5


)测试周期,


6


)最后测 试和实施,


7


)实


施后。



02.


您在以往的测试工作中都曾经具体从事过哪 些工作其中最擅长


哪部分工作



我曾经 做过


web


测试,后台测试,客户端软件,其中包括功能测试, 性能测试,用户体验测试。最擅


长的是功能测试



03.


您所熟悉的软件测试类型都有哪些请试着分别比较这些不同



测试类型有:功能测试,性能测试,界面测试。



功能测试


在测试工作中占的比例最大,


功能测试也叫 黑盒测试


。是把测试对象看作一个黑盒子。利用


黑盒测试法进行 动态测试时,需要测试软件产品的功能,不需测试软件产品的内部结构和处理过程。


采用 黑盒技术设计测试用例的方法有


:等价类划分(有效


/


无效等价划分)


、边界值分析、错误推测、


因果 图和综合策略。



性能测试


是通过


自动化的测试工具模拟多种正常、


峰值以及异常负载条件来对系统的 各项性能指标进


行测试


。负载测试和压力测试都属于性能测试, 两者可以结合进行。


通过负载测试,确定在各种工作


负载下系统 的性能,目标是测试当负载逐渐增加时,系统各项性能指标的变化情况


。压力测试是通过


确定一个系统的瓶颈或者不能接收的性能点,来获得系统能提供的最大服务级别的测试。



界面测试


,界面是软件与用户交互的 最直接的层,界面的好坏决定用户对软件的第一印象。而且设计


良好的界面能够引导用户 自己完成相应的操作,起到向导的作用。同时界面如同人的面孔,具有吸引


用户的直接优 势。


设计合理的界面能给用户带来轻松愉悦的感受和成功的感觉,


相反由于界面设计的


失败,让用户有挫败感,再实用强大的功能都可能在用户的畏惧与 放弃中付诸东流


.


区别


在于,


功能测试


关注产品的所有功能上,要考虑到每个细节功能,每个可能存 在的功能问题。



能测试


主要关注于产 品整体的多用户并发下的稳定性和健壮性。


界面测试


更关注于用 户体验上,


用户


使用该产品的时候是否易用,是否易懂,是否规 范(快捷键之类的)


,是否美观(能否吸引用户的注


意力)


,是否安全(尽量在前台避免用户无意输入无效的数据,当然考虑到体验性,不能太粗鲁的弹


出警告)做某个性能测试的时候,首先它可能是个功能点,首先要保证它的功能是没问题 的,然后再


考虑该功能点的性能测试。



04


.您认为做好测试用例设计工作的关键是什么



白盒测试用例设计的关键是以较少的用例覆盖尽可能多的内部程序逻辑结果(补充)



黑盒法用例设计的关键同样也是以较少的用例覆盖模块输出和输入接口。< /p>


不可能做到完全测试,


以最


少的用例在合 理的时间内发现最多的问题(补充)



05.

< br>请试着比较一下黑盒测试、白盒测试、单元测试、集成测试、


系统测试、验收测试 的区别与联系。



黑盒测试:


已知产品 的功能设计规格,可以进行测试证明每个实现了的功能是否符合要求。




软件的黑盒测试意味着测试要在软件的接口处进行

< p>


这种方法是把测试对象看做一个黑盒子,


测试人


员完全不考虑程序内部的逻辑结构和内部特性,


只依据程序的需 求规格说明书,


检查程序的功能是否


符合它的功能说明。


因此黑盒测试又叫功能测试或数据驱动测试。


黑盒测试主要是为了发现 以下几类


错误:






1


、是否有不正确或遗漏的功能







2


、在接口上,输入是否能正确的接受能否输出正确的结果





3


、是否有数据结构错误或外部信息(例如数据文件)访问错误





4


、性能上是否能够满足要求






5


、是否有初始化或终止性错误



测试方法,根据需求指定的测试计划和测试用例来测相应的功能和性能



------------------------------------- -------------------------------------------------- ------------------------------------


白盒 测试:


已知产品的内部工作过程,可以通过测试证明每种内部操作是否符合设计规格要求 ,所有


内部成分是否以经过检查。



软 件的白盒测试是对软件的过程性细节做细致的检查。这种方法是把测试对象看做一个打开的盒子,


它允许测试人员利用程序内部的逻辑结构及有关信息,


设计或选择测试用例,< /p>


对程序所有逻辑路径进


行测试。通过在不同点检查程序状态,确定 实际状态是否与预期的状态一致。因此白盒测试又称为结


构测试或逻辑驱动测试。白盒测 试主要是想对程序模块进行如下检查:



1

、对程序模块的所有独立的执行路径至少测试一遍。



2< /p>


、对所有的逻辑判定,取“真”与取“假”的两种情况都能至少测一遍。

< br>


3


、在循环的边界和运行的界限内执行循环体。



4


、测试内部数据结构的有效性,等等。< /p>



5.


数据引用错误数据声明错误运算 错误比较错误控制流程错误接口错误



输入

/


输出错误其他检查其他检查



常 用测试方法


:所谓插桩,就是借助往被测程序中插入操作,来实现测试目的的方法。


(如常常加入


打印语句,看执行后的效果是否为我们希望的结果)< /p>


,以及


junit


测试

< br>


单元测试(模块测试)


是开发者编写的一小段代码,用 于检验被测代码的一个很小的、很明确的功能


是否正确。通常而言,一个单元测试是用于 判断某个特定条件(或者场景)下某个特定函数的行为。








单元测试是由程序员自己来完成,最终受益的也是程序员自己。可以这么说,程序员有责任编 写功


能代码,同时也就有责任为自己的代码编写单元测试。执行单元测试,就是为了证明 这段代码的行为


和我们期望的一致。







--- -------------------------------------------------- -------------------------------------------------- -----------------------


集成测试(也叫组装测试,联合测 试)


是单元测试的逻辑扩展。它的最简单的形式是:两个已经测试


过的单元组合成一个组件,并且测试它们之间的接口。从这一层意义上讲,组件是指多个单元的集成

< p>
聚合。在现实方案中,许多单元组合成组件,而这些组件又聚合成程序的更大部分。方法是测试片段


的组合,并最终扩展进程,将您的模块与


其他组的模块一起测试。最后,将构成进程的所有模块一起测试。




--------------------------- -------------------------------------------------- --------------------------------------------------





系统测 试


是将经过测试的子系统装配成一个完整系统来测试。


它是检验 系统是否确实能提供系统方案


说明书中指定功能的有效方法。


( 常见的联调测试)







系统测试的目的是对最终软件系统 进行全面的测试,


确保最终软件系统满足产品需求并且遵循系统设


计。





-------------------------------------------------- -------------------------------------------------- -------------------------


验收测试

是部署软件之前的最后一个测试操作。


验收测试的目的是确保软件准备就绪,


并且可以让最


终用户将其用于执行软件的既定功能和任务。

< p>


验收测试是向未来的用户表明系统能够像预定要求那

样工作。经集成测试后,已经按照设计把所有的模块组装成一个完整的软件系统,接口错误也已经基


本排除了,接着就应该进一步验证软件的有效性,这就是验收测试的任务,即软件的功能和性能如 同


用户所合理期待的那样。



06.


测试计划工作的目的是什么测试计划工作的内容都包括什么


其中 哪些是最重要的







软件测试计划

是指导测试过程的纲领性文件,包含了产品概述、测试策略、测试方法、测试区域、测


试配置、测试周期、测试资源、测试交流、风险分析等内容。借助软件测试计划,参与测试的项目成

< p>
员,尤其是测试管理人员,可以明确测试任务和测试方法,保持测试实施过程的顺畅沟通,跟踪和控


制测试进度,应对测试过程中的各种变更。


< br>测试计划和测试详细规格、测试用例之间是战略和战术


的关系,测试计划主要从宏 观上规划测试活动的范围、方法和资源配置,而测试详细规格、测试用例


是完成测试任务 的具体战术。所以其中最重要的是测试测试策略和测试方法(最好是能先评审)



07.


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




1.


明确测试的目标,增强测试计 划的实用性,编写软件测试计划得重要目的就是使测试过程能够发


现更多的软件缺陷,< /p>


因此软件测试计划的价值取决于它对帮助管理测试项目,


并且找出 软件潜在的缺


陷。因此,软件测试计划中的测试范围必须高度覆盖功能需求,测试方法必 须切实可行,测试工具并


且具有较高的实用性,便于使用,生成的测试结果直观、准确< /p>





2


.坚持“


5W


”规则,明确内容与

< p>
过程








5W< /p>


”规则指的是“


What


(做什么)





Why


(为什么做)





When


(何时做)





Where


(在哪里)





How


(如何做)




利用



5W



规则创建软件测试计划,


可以帮助测试团队理解测试的目的



Why




明 确测试的范围和内容



What




确定测试的开始和结束日期


< p>
When




指出测试的 方法和工具



How




给出测试文档和软件的存放位置(


Where







3


.采用评审和更新机制,保证测试 计划满足实际需求




测试计划写作完 成后,如果没有经过评审,


直接发送给测试团队,


测试计划内容 的可能不准确或遗漏测试内容,


或者软件需求变更引起测试范围


的增减,而测试计划的内容没有及时更新,误导测试执行人员。







4.


分别创建测试计划与测试详细规格、测试用例应把详细的 测试技术指标包含到独立创建的测试详


细规格文档,


把用于指导 测试小组执行测试过程的测试用例放到独立创建的测试用例文档或测试用例


管理数据库中 。测试计划和测试详细规格、测试用例之间是战略和战术的关系,测试计划主要从宏观


上 规划测试活动的范围、方法和资源配置,而测试详细规格、测试用例是完成测试任务的具体战术。



08.


您所熟悉的测试用例设计方法都有哪些请分 别以具体的例子


来说明这些方法在测试用例设计工作中的应用。






1


.等价类划分







划分等价类


:


等价类是指某个输入域 的子集合


.


在该子集合中


,

< p>
各个输入数据对于揭露程序中的错误都


是等效的


.


并合理地假定


:


测试某等价类的代表值 就等于对这一类其它值的测试


.


因此


,


可以把全部输入


数据合理划分为若干等价类

,


在每一个等价类中取一个数据作为测试的输入条件


,


就可以用少量代表性


的测试数据


.


取得较好的测试结果


.


等价类划分可有两种不同 的情况


:


有效等价类和无效等价类


.







2


.边界值分析法







边界值分析方法是对等价类划分方法的补充。测试工作经验告诉我


,


大量的错误是发生在输入或输出


范围的边界上

< br>,


而不是发生在输入输出范围的内部


.

< br>因此针对各种边界情况设计测试用例


,


可以查出更


多的错误


.





使用边界值分析方法设计测试用例


,


首先应确定边界情况


.


通常输入和输出 等价类的边



,


就是应着重测试的边界 情况


.


应当选取正好等于


,

< p>
刚刚大于或刚刚小于边界的值作为测试数据


,


而不


是选取等价类中的典型值或任意值作为测试数据


.





3


.错误推测法







基于经验和直觉推测程序中所有可能存在的各种错误


,


从而有针对性的设计测试用例的方法


.






误推测方法的基本思想


:


列举出程序中所有可能有的错误和容易发生错误的特殊情况


,

< p>
根据他们选择


测试用例


.


例如


,


在单元测试时曾列出的许多在模块中常见的错误


.


以前产品测试中曾经发现的错误



,


这些就是经验的总结


.


还有


,


输入数据和输出数据为


0


的情况


.


输入表格为空格或输入表格只有


一行


.


这些都是容易发生错误的情况


.


可选择这些情况下的例子作为测试用例



4


.因果图方法


前面介绍的等价类划分方法和边界值分析方法


,


都是着重考 虑输入条件


,


但未考虑输入条件之间的联系

,


相互组合等


.


考虑输入条件之间 的相互组合


,


可能会产生一些新的情况


.


但要检查输入条件的组合不是


一件容易的事情


,


即使把所有输入条件划分成等价类


,


他们之间的组合情况也相当多


.


因此必须考虑采


用一种适合于描述对于多种条件的组合


,


相应 产生多个动作的形式来考虑设计测试用例


.


这就需要利用


因果图(逻辑模型)


.


因果图方法最终生成的 就是判定表


.


它适合于检查程序输入条件的各种组合情况


.


09.


请以您以往的实际工作为例,详细 的描述一次测试用例设计的


完整的过程。



就说最近的这次网站功能的测试吧



首 先:得到相关文档


(需求文档和设计文档)


,理解需求和设计设 计思想后,想好测试策略(测试计


划简单点就


OK


了)


,考虑到测试环境,测试用例,测试时间等问题。



第二步:设计测试用例,


测试策略是:把网站部分的功能点 测试完,然后在进行系统测试(另外个模


块呢有另一个测试人员负责,可以进行联调测试 )


,网站模块的测试基本是功能测试和界面测试(用


户并发的可 能性很小,所以不考虑)


:这次的网站的输入数据呢是使用数据库中的某张表记录,如果


表中某一数据记录中新加进来的(还没有被处理的,有个标志位)


,网站启动后会立刻去刷那张表,


得到多条数据,然后在进行处理。处理过程中,会经 历


3


个步骤,网站才算完成了它的任务。有

3



步骤呢,就可以分别对这


3< /p>


个步骤进行测试用例的设计


,


尽量覆盖到 各种输入情况(包括数据库中的


数据,用户的输入等)


,得出了 差不多


50


个用例。界面测试,也就是用户看的到的地方,包括 发送的


邮件和用户填写资料的页面展示。


第三步:搭建测试环境


(为什么这个时候考虑测试环境呢因为我对网站环境已经很熟 了,只有有机器


能空于下来做该功能测试就可以做了)


,因为网 站本身的环境搭建和其他的系统有点不同,它需要的


测试环境比较麻烦,需要

< p>
web


服务器(


Apache,tomcat



,不过这次



需 求呢,网站部分只用到了


tomcat


,所以只要有

< p>
tomcat


即可



第四步:执行测试



10.

< p>
您以往是否曾经从事过性能测试工作如果有,请尽可能的详细


描述您以往的 性能测试工作的完整过程。



是的,曾经做过网站方面的性能测 试,虽然做的时间并不久(


2


个月吧)


,当时呢,是有位网站性能


测试经验非常丰富的前辈带着我一起做。性能测试类型包括负 载测试,强度测试,容量测试等



负载测试:

< br>负载测试是一种性能测试指数据在超负荷环境中运行,程序是否能够承担。强度测试:强

< br>度测试是一种性能测试,他在系统资源特别低的情况下软件系统运行情况



容量测试:


确定系统可处理同时在线的最大用户数


在网站流量逐渐加大的情况下,开始考虑做性能测试了,首先要写好性能测试计划 ,根据运营数据得


出流量最大的页面(如果是第一次的话,一般是首页,下载页,个人帐 户页流量最大,而且以某种百


分比)




关注服务器的


CPU


使用情况,内存使 用情况,


服务器上线文切换平率,


服务器磁盘读写速度,已经磁


盘内存情况



关注客户端响应时间,关 注客户点操作成功情况,关注客户端操作失败情况,关注客户端发起的并发


是处理情况等 ,连续操作处理情况,



11.


您在从 事性能测试工作时,是否使用过一些测试工具




Loadruner:


就用了破解版的


lodarr unner


进行测试



12.


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


什么



性能测试的概念


-


在正常,峰值以及异常负载条件下,测试系统的各项性能指标;通过自动化的测试工具模拟进行。



性能测试的目的



1




评估系 统的能力


----


测试中得到的负荷和响应时间数据可被用于验 证所计划的模型的能力,


并帮助


作出决策。


2




识别体系中的弱点


----


受控的负荷被增加到一个极端水平,


并突破它,


从而修复体系的瓶颈或薄弱


的地方。



3




系统调 优


---


重复运行测试,验证调整系统的活动得到了预期的结果 ,从而改进性能。检测软件中


的问题,


长时间的测试执行可导致 程序发生由于内存泄漏引起的失败,


揭示程序中的隐含问题或冲突。


4




验证稳定性,可靠性


---


在一个生产负荷下执行测试一定的时 间是评估系统稳定性和可靠性是否满


足要求的唯一方法。



关键是对需求的理解能力,以及对性能测试要用的工具的掌握程度,要会用性能测试工具,以 及对性


能测试结果的分析能力,以及对性能调优要能给出自己的建议能力,这些都比较重 要。



13.


在您以往的工作中,一条 软件缺陷(或者叫


Bug


)记录都包含了


哪些内容如何提交高质量的软件缺陷(


Bug


)记录(


bug


的生命周


期)



测试条件:软件(平台、版本等)


、硬件配置;



重现步骤:如何让开发人员重现你提的


BUG


。测试现



/


结论、 分析、建议等;



这几条是最主要的。



此外,还应当尽量包括:重要度、紧急度、


BUG


产生阶段(需求、设计、实现、文档)




Bug


的生命周期:起始


--

< br>发现


BUG-


提交


BUG--< /p>


修复


BUG--


回归

BUG



关闭


BUG--


结束


-


-


-


-


-


-


-


-