软件测试面试常见问题(一)

本文详述了软件测试的常见面试问题,包括软件测试的理解、测试原则、步骤、用例设计方法以及测试人员的职业规划。内容涵盖测试用例的基本元素、软件测试方法、测试用例设计、测试原则、测试步骤、职业发展路径等,旨在帮助准备面试的软件测试工程师全面了解和准备相关问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(1)

一、测试

1、你对软件测试的理解。

软件测试就是利用测试工具按照测试方案和流程对产品进行功能和性能测试,甚至根据需要编写不同的测试工具,设计和维护测试系统,对测试方案可能出现的问题进行分析和评估。执行测试用例后,需要跟踪故障,以确保开发的产品适合需求。

2、你觉得你哪些方面适合做软件测试?你的优势和劣势在哪儿?

首先,应对软件测试感兴趣和对自己有自信,善于怀疑,世界上没有绝对正确的,总有错误的地方,具有叛逆心理,别人认为不可能发生的事,我却认为可能发生。。。。。

。。。。。

3、测试用例的基本元素?例举测试用例设计方法(至少5种)

测试用例文档由简介和测试用例两部分组成。简介部分编制了测试目的、测试范围、定义术语、参考文档、概述等。测试用例部分逐一列示各测试用例。

测试用例组成元素

   1.用例ID;

   2.用例名称;

   3.测试目的;

   4.测试级别;

   5.参考信息;

   6.测试环境;

   7.前提条件;

   8.测试步骤;

   9.预期结果;

   10.设计人员。

每个具体测试用例都将包括下列详细信息:

用例编号、用例名称、测试等级、入口准则、验证步骤、期望结果(含判断标准)、出口准则、注释等。

测试用例的基本元素:测试索引,测试环境,测试输入,测试操作,预期结果,评价标准。

早期的测试用例是按功能设置用例。后来引进了路径分析法,按路径设置用例。目前演变为按功能、路径混合模式设置用例。

测试用例可以分为基本事件、备选事件和异常事件。设计基本事件的用例,应该参照用例规约(或设计规格说明书),根据关联的功能、操作按路径分析法设计测试用例。而对孤立的功能则直接按功能设计测试用例。基本事件的测试用例应包含所有需要实现的需求功能,覆盖率达100%。

软件测试常用的基本方法:等价类划分法、边界值分析法、错误推测法、因果图法、逻辑覆盖法等设计测试用例。

测试用例设计方法:  

3.1. 等价类划分方法

3.2. 边界值分析方法

3.3. 错误推测方法  

3.4. 因果图方法

3.5. 判定表驱动分析方法 

3.6. 正交实验设计方法 

3.7. 功能图分析方法 

3.8. 场景设计方发

附:

测试用例设计原则

   1.测试用例的代表性:能够代表并覆盖各种合理的和不合理的、合法的和非法的、边界的和越界的以及极限的输入数据、操作和环境设置等。

   2.测试结果的可判定性:即测试执行结果的正确性是可判定的,每一个测试用例都应有相应的期望结果。

   3.测试结果的可再现性:即对同样的测试用例,系统的执行结果应当是相同的。


4、你使用过哪些测试工具?如果有,说明工具的工作流程。

这个得自由发挥了!

5、你对5年内的职业规划?

1~2年,测试技能:熟悉整个测试过程及产品业务领域,学习和掌握自动化工具,学习测试自动化编程技术;开发和执行测试脚本,承担系统测试实施任务;掌握编程语言、操作系统、网络与数据库方面的技能。
3~4年,测试过程:深入了解测试过程,掌握测试过程设计及改进,参与软件工作产品的同行评审;进一步了解产品业务领域,改进测试自动化编程技术;能指导初级测试工程师;加强编程语言、操作系统、网络与数据库方面的技能。
4~5年,测试组织工作:管理1~3名测试工程师,担任任务估算、管理及进度控制;进一步培养在软件项目管理及支持工具方面的技能。
5~6年,技术管理:管理4~8名测试工程师,提高任务估算、管理及进度控制能力,完成测试规划并制定测试计划;研究测试的技术手段,保持使用项目管理及支持工具的技能;用大量时间为其他测试工程师提供技术及过程方面的指导;开始与客户打交道并做演示推介。
6~12年,测试管理:管理8名以上测试工程师,负责一个或多个项目的测试工作;与客户打交道并做演示推介;保持使用项目管理及支持工具的技能。

6、用你熟悉的语言编写一段程序 ,输入三个数,x,y,z, 使它们从大到小输出。

参考之前博文 "排序"

二、数据库
1、什么是左连接和右连接?(可举例说明)

查看如下语句: 
SELECT ename , dname 
FROM Emp, Dept 
WHERE Emp.Deptno(+) = Dept.Deptno 
也可以写成: 
SELECT ename , dname 
FROM Emp RIGHT JOIN Dept 
ON Emp.Deptno = Dept.Deptno 
此SQL文使用了右连接,即“(+)”所在位置的另一侧为连接的方向,右连接说明等号右侧的所有记录均会被显示,无论其在左侧是否得到匹配,也就是说上例中无论会不会出现某个部门没有一个员工的情况,这个部门的名字都会在查询结果中出现。 

反之: 
查看如下语句: 
SELECT ename , dname 
FROM Emp, Dept 
WHERE Emp.Deptno = Dept.Deptno(+) 
也可以写成: 
SELECT ename , dname 
FROM Emp LEFT JOIN Dept 
ON Emp.Deptno = Dept.Deptno 

则是左连接,无论这个员工有没有一个能在Department表中得到匹配的部门号,这个员工的记录都会被显示 

(2)

1. 什么是软件测试?测试的根本目的是什么?

软件测试就是利用测试工具按照测试方案和流程对产品进行功能和性能测试,甚至根据需要编写不同的测试工具,设计和维护测试系统,对测试方案可能出现的问题进行分析和评估。执行测试用例后,需要跟踪故障,以确保开发的产品适合需求。

测试的根本目的就是为了发现尽可能多的缺陷;这里的缺陷是一种泛称,它可以指功能的错误,也可以指性能低下,易用性差等等。因此,测试是一种“破坏性”行为。测试的目的是发现程序中的错误,是为了证明程序有错,而不是证明程序无错。即软件测试是为了“证伪”而非“证真”。把证明程序无错当作测试目的不仅是不正确的, 完全做不到的,而且对做好测试没有任何益处,甚至是十分有害的。软件测试要设法使软件发生故障,暴露软件错误, 能够发现错误的测试是成功的测试,否则是失败的测试。

2.测试用例包含哪两个部分?

测试用例文档由简介和测试用例两部分组成。

3.测试应遵循什么原则?

    (1)所有的测试都应追溯到用户需求。

  软件测试的目标在于揭示错误。从用户角度来看,最严重的错误是那些导致程序无法满足需求的错误。

  (2)应当把“尽早地和不断地进行软件测试”作为软件测试者的座右铭。

  应该在测试工作真正开始前的较长时间内就进行测试计划。测试计划可以在需求模型一完成就开始,详细的测试用例定义可以在设计模型被确定后立即开始。因此,所有测试应该在任何代码被产生前就进行计划和设计。

  (3)pareto原则:测试发现的错误中80%很可能起源于20%的模块中。

  当某个功能出问题,其对用户的影响有多大?然后根据风险大小确定测试的优先级。优先级高的测试,优先得到执行,一般来讲,针对用户最常用的20%功能(优先级高)的测试会得到完全执行,而低优先级的测试(另外用户不经常用的80%功能)就不是必要的,如果时间或经费不够,就暂时不做或少做。

  (4)完全测试是不可能的,测试需要终止。

  测试无法显示软件潜在的缺陷,“测试只能证明软件存在错误而不能证明软件没有错误”。最初的测试通常把焦点放在单个程序模块上,进一步测试的焦点则转向在集成的模块簇中寻找错误,最后在整个系统中寻找错误。在测试中不可能运行路径的每一种组合。然而,充分覆盖程序逻辑,并确保程序设计中使用的所有条件是有可能的。

  (5)应由独立的第三方来构造测试。

  第三方测试最大的特点在于它的专业性、独立性、客观性和公正性。对于软件开发商来说,经过第三方测试机构的测试,不仅可以通过专业化的测试手段发现软件错误,帮助开发商提升软件的品质,而且可以对软件有一个客观、科学的评价,有助于开发商认清自己产品的定位。对于行业主管部门以及软件使用者来说,由于第三方测试机构独立公正的地位,可以对被测试的软件有一个客观公正的评价,帮助用户选择合适、优秀的软件产品。

  (6)充分注意测试中的群集现象。

  测试后程序残存的错误数目与该程序中已发现的错误数目或检错率成正比。不要在某个程序段中找到几个错误就误认为该程序段就没有错误而不再测试,相反应该对错误群集的程序段进行重点测试。

  (7)尽量避免测试的随意性。

  测试计划应包括:所测软件的功能,输入和输出,测试内容,各项测试的进度安排,资源要求,测试资料,测试工具,测试用例的选择,测试的控制方法和过程,系统的配置方式,跟踪规则,调试规则,以及回归测试的规定等以及评价标准。

  (8)兼顾合理的输入和不合理的输入数据。

  (9)程序修改后要回归测试

  修改程序后,应该重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误。

  (10)应长期保留测试用例,直至系统废弃。

  妥善保存测试计划,测试用例,出错统计和最终分析报告,为维护等提供方便。
        1.应当把“尽早和不断地测试”作为 开发者的座右铭。

  2.程序员应该避免检查自己的程序,测试工作应该由独立的专业的软件测试机构来完成。

  3.设计测试用例时,应该考虑到合法的输入和不合法的输入,以及各种边界条件,特殊情况下要制造极端状态和意外状态,比如网络异常中断、电源断电等情况。

  4.一定要注意测试中的错误集中发生现象,这和程序员的编程水平和习惯有很大的关系。

  5.对测试错误结果一定要有一个确认的过程。一般有A测试出来的错误,一定要有一个B来确认,严重的错误可以召开评审会进行讨论和分析。

  6.制定严格的测试计划,并把测试时间安排得尽量宽松,不要希望在极短的时间内完成一个高水平的测试。

  7.妥善保存一切

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值