软件测试面试

文章目录


一、软件测试基本概念

软件测试的基本流程(8步)

在这里插入图片描述

  • 需求沟通
    测试人员在收到需求文档后,需要 确定需求文档中各个功能点具体的功能是什么含义,自己的理解到底对不对,需要去与产品、开发沟通,与产品沟通是确认这个功能点是不是这样,与开发沟通看他是不是这样实现的,而沟通的目的是什么呢?
  • 制定测试方案
    例如这个需求改动是要进行性能测试还是要进行稳定性测试,或者是功能性测试还是兼容性测试,这就是依据需求来的
  • 设计测试用例
    因为测试用例都是来自于需求,没有需求,这个用例的生成就是很难的事情,因为你不太清楚这个需求实现的具体逻辑是什么,尤其是在一个产品没有提测之前,你要设计测试用例的话往往只依赖于需求文档,设计完测试用例后该干什么呢?
  • 准备测试环境
    如果是客户端的,当然要去准备测试机;如果是测服务端的,当然是在Linux服务器上去准备各个环境。准备好测试环境后,如果开发已经提测了,那么这个时候我们就可以进入下一阶段
  • 测试执行
    在这个阶段,我们主要的用例依赖于前面设计测试用例,在实行过程中可能会发现一些问题,有的是Bug,有的可能是建议,还有的可能是一些异常的情况,所有的这些问题我们都要提到某一个系统上去
  • Bug处理
    通过系统把Bug指定到某个开发人员,然后开发人员进行下一步处理,进行修改,或者是需求无法实现,把问题进行遗留等。在所有Bug全部处理完后,这里所有的Bug处理完不代表所有的Bug都改,有一些必须改的Bug可能改了,但是这里面可能有一些Bug遗留,留到下一期去改进或优化,而这个操作是由产品、开发、测试一同的决定,并不是测试单方的决定
  • 回归验证
    在回归所有的功能后,发现已经没有问题了
  • 跟进上线
    客户端需要发版,服务端需要上线新的模块,然后在线上运行起来,这时我们就要跟进线上的情况,比如有没有用户反馈的问题,如果是Bug测试能不能去复现等。这一个过程完成后会在一起进入需求沟通的过程,就是进入下一个版本的迭代,整个的测试过程是一个不断向前迭代的过程
请你回答一下测试的相关流程是什么

我认为W模型中的测试流程最规范:
需求测试->概要设计测试->详细设计测试->单元测试->集成测试->系统测试->验收测试

常用的开发模型和测试模型(瀑布模型,螺旋模型,V 模型,W 模型)

① 瀑布模型(Waterfall Model):串型,适用需求变化比较小的项目
软件的生命周期如下:
在这里插入图片描述

优点:强调开发的阶段性;强调早期计划及需求调查;强调产品测试。
缺点:测试比较晚,出错后修改的成本大。
② 螺旋模型(Spiral Model):渐进式,适用于规模庞大、复杂度高、风险大的项目
在这里插入图片描述
优点:严格的全过程风险管理。
缺点:正由于高严格的风险管理,增大了对人员资金和时间的投入。
③ 软件测试v模型:瀑布模型的变种
在这里插入图片描述
缺点:仅仅把测试作为在编码之后的一个阶段,未在需求阶段就进入测试。
④ 软件测试W模型
在这里插入图片描述
特点:测试与开发时同步进行的。
优点:有利于尽早地全面的发现问题。
缺点:总体上还是串行的,不能适用于需求变更频繁的项目。

你觉得测试和开发需要怎么结合才能使软件的质量得到更好的保障

测试和开发应该按照W模型的方式进行结合,测试和开发同步进行,能够尽早发现软件缺陷,降低软件开发的成本。
在这里插入图片描述

在V模型中,测试过程被加在开发过程的后半部分,

  • 单元测试所检测代码的开发是否符合详细设计的要求,
  • 集成测试所检测此前测试过的各组成部分是否能完好地结合到一起,
  • 系统测试所检测已集成在一起的产品是否符合系统规格说明书的要求,
  • 而验收测试则检测产品是否符合最终用户的需求;

V模型的缺陷在于仅仅把测试过程作为在需求分析、系统设计及编码之后的一个阶段,忽视了测试对需求分析、系统设计的验证,因此需求阶段的缺陷很可能一直到后期的验收测试才被发现,此时进行弥补将耗费大量人力物力资源。
在这里插入图片描述
相对于V模型,W模型增加了软件各开发阶段中应同步进行的验证和确认活动。W模型由两个V字型模型组成,分别代表测试与开发过程,图中明确表示出了测试与开发的并行关系。

W模型强调:测试伴随着整个软件开发周期,而且测试的对象不仅仅是程序,需求、设计等同样要测试,也就是说,测试与开发是同步进行的。W模型有利于尽早地全面的发现问题。例如,需求分析完成后,测试人员就应该参与到对需求的验证和确认活动中,以尽早地找出缺陷所在。同时,对需求的测试也有利于及时了解项目难度和测试风险,及早制定应对措施,这将显著减少总体测试时间,加快项目进度。
W模型中测试的活动与软件开发同步进行,测试的对象不仅仅是程序,还包括需求和设计,因此能够尽早发现软件缺陷,降低软件开发的成本。

请你分别介绍一下单元测试、集成测试、系统测试、验收测试、回归测试

1、单元测试: 研发对 最小的软件设计单元(模块)的验证工作目标是确保模块被正确的编码。把设计描述作为指南,对重要的控制路径进行测试以发现模块内的错误。通常情况下是白盒的,对代码风格和规则、程序设计和结构、业务逻辑等进行静态测试,及早的发现和解决不易显现的错误

2、集成测试: 通过测试发现与 模块接口 有关的问题。目标是把通过了单元测试的模块拿来,构造一个在设计中所描述的程序结构,应当避免一次性的集成(除非软件规模很小),而采用增量集成。

  • 自顶向下集成: 模块集成的顺序是首先集成主模块,然后按照控制层次结构向下进行集成,隶属于主模块的模块按照深度优先或广度优先的方式集成到整个结构中去。
  • 自底向上集成: 从原子模块开始来进行构造和测试,因为模块是自底向上集成的,进行时要求所有隶属于某个给顶层次的模块总是存在的,也不再有使用稳定测试桩的必要。

3、系统测试:基于系统整体需求说明书的黑盒类测试,应覆盖系统所有联合的部件。系统测试是针对整个产品系统进行的测试,目的是验证系统是否满足了需求规格的定义,找出与需求规格不相符合或与之矛盾的地方。系统测试的对象不仅仅包括需要测试的产品系统的软件,还要包含软件所依赖的硬件、外设甚至包括某些数据、某些支持软件及其接口等。因此,必须将系统中的软件与各种依赖的资源结合起来,在系统实际运行环境下来进行测试。

4、回归测试: 回归测试 是指在发生修改之后重新测试先前的测试用例以保证修改的正确性。 理论上,软件产生新版本,都需要进行回归测试,验证以前发现和修复的错误是否在新软件版本上再次出现。根据修复好了的缺陷再重新进行测试。回归测试的目的在于验证以前出现过但已经修复好的缺陷不再重新出现。一般指对某已知修正的缺陷再次围绕它原来出现时的步骤重新测试。

5、验收测试: 验收测试是指系统开发生命周期方法论的一个阶段,这时相关的用户或独立测试人员 根据测试计划和结果对系统进行测试和接收 。它让系统用户决定是否接收系统。它是一项确定产品是否能够满足合同或用户所规定需求的测试。验收测试包括Alpha测试和Beta测试。

  • Alpha测试: 是由用户在开发者的场所来进行的,在一个受控的环境中进行。
  • Beta测试: 由软件的最终用户在一个或多个用户场所来进行的,开发者通常不在现场,用户记录测试中遇到的问题并报告给开发者,开发者对系统进行最后的修改,并开始准备发布最终的软件。
请你回答一下单元测试、集成测试、系统测试、验收测试、回归测试这几步中最重要的是哪一步

这些测试步骤分别在软件开发的不同阶段对软件进行测试,我认为对软件完整功能进行测试的系统测试很重要,因为此时单元测试和集成测试已完成,能够对软件所有功能进行功能测试,能够覆盖系统所有联合的部件,是针对整个产品系统进行的测试,能够验证系统是否满足了需求规格的定义,因此我认为系统测试很重要。

你觉得单元测试可行吗

可行,单元测试可以有效地测试某个程序模块的行为,是未来重构代码的信心保证。事前可以保证质量,事后可以快速复现问题,并在修改代码后做回归自测。可行性考虑的是要用一些可行的方法做到关键的代码可测试,如通过边界条件、等价类划分、错误、因果,设计测试用例要覆盖常用的输入组合、边界条件和异常。

请回答集成测试和系统测试的区别,以及它们的应用场景主要是什么?

区别:
1、计划和用例编制的先后顺序:V模型来讲, 在SRS(需求分析) 阶段就要制定系统测试计划和用例,HLD(概要设计)的时候做集成测试计划和用例,有些公司的具体实践不一样,但是顺序肯定是先做系统测试计划用例,再做集成。(注:概要设计的主要任务是把需求分析得到的系统扩展用例图转换为软件结构和数据结构。)

2、用例的粒度: 系统测试用例相对很接近用户接受测试用例,集成测试用例比系统测试用例更详细,而且对于接口部分要重点写,毕竟要集成各个模块或者子系统。

3、执行测试的顺序: 先执行集成测试,待集成测试出的问题修复之后,再做系统测试。

应用场景:

  • 集成测试:完成单元测试后,各模块联调测试;集中在各模块的接口是否一致、各模块间的数据流和控制流是否按照设计实现其功能、以及结果的正确性验证等等;可以是整个产品的集成测试,也可以是大模块的集成测试;集成测试主要是针对程序内部结构进行测试,特别是对程序之间的接口进行测试。集成测试对测试人员的编写脚本能力要求比较高。测试方法一般选用黑盒测试和白盒测试相结合。

  • 系统测试:针对整个产品的全面测试,既包含各模块的验证性测试(验证前两个阶段测试的正确性)和功能性(产品提交给用户的功能)测试,又包括对整个产品的健壮性、安全性、可维护性及各种性能参数的测试。系统测试测试软件《需求规格说明书》中提到的功能是否有遗漏,是否正确的实现。做系统测试要严格按照《需求规格说明书》,以它为标准。测试方法一般都使用黑盒测试法。

请说一说黑盒与白盒的测试方法(测试常用的方法)

黑盒测试&#

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值