常见的测试面试题总结

1.   α测试测试与β测试的区别

首先alpha测试和beta都属于验收测试,这两种测试都需要用户参加,且都不能由程序员和测试员执行。广义上来讲, α测试是“内测”, β测试是“公测”

alpha测试是用户在开发环境或者是公司内部模拟实际操作环境的测试

α测试的特点是
  1、它是在开发环境下进行的(不对外发布)
  2、它不需要测试用例评价软件使用质量
  3、用户往往没有相关经验,可以是兼职人员,开发者或测试者坐用户旁边
  4、目的主要评价软件产品的功能、局域化、可用性、可靠性、性能等

Beta测试是真实用户在实际操作环境下进行的测试。    而且顺序不能错,必须先进行Alpha测试再进行Beta测试;先α测试后β测试

Alpha测试的环境是受开发方控制的,用户的数量相对比较少,时间比较集中。

而beta测试的环境是不受开发方控制的,谁也不知道用户如何折磨软件,用户数量相对比较多,时间不集中。

对于软件产品来说,在系统测试后,才有α测试β测试,而且通用的软件产品需要较大规模的beta测试,测试周期比较长。如果产品通过了beta测试,那么就可以正式发行了。

 

如果还不能够理解明白,就类比一款叫做《王者荣耀》的游戏,有体验服(内测玩家)、正式服(大众的普遍玩家)。

 2.  单元测试有哪些内容?自顶向下和自底向上有什么区别?

单元测试的内容包括:接口测试、

          局部数据结构测试、

          边界条件测试、

          独立执行路径测试、

          内部错误处理测试

自顶向下的单元测试:先对最顶层的基本单元进行测试,把所有调用的单元做成桩模块;然后再对第二层的基本单元进行测试,使用上面之前已测试的单元做驱动模块,以此类推直到测试完所有的基本单元。

          优点:不需要开发驱动模块;

          缺点:测试过程越来越复杂,开发和维护成本增加;不是单元测试的一个好的选择 

自底向上的单元测试:先对最底层的基本单元进行测试,模拟 调用该单元  的单元做驱动模块;然后再对上一层进行测试,用下面之前已测试的单元做桩模块,以此类推直到测试完所有的单元。

          优点:不需要开发桩模块;

          缺点:测试过程越来越复杂,测试周期较冗长;

 

 3.  增量式集成测试有过了解吗?与非增量式集成测试有什么区别?

 增量式集成的策略有很多种,主要有以下三种:①自顶向下集成,②自底向上集成,③三明治集成

       该策略最大的特点就是:支持故障隔离、定位问题

非增量式集成测试策略也叫做大爆炸集成、一次性集成,即在最短的时间内把所有的系统组件一次性集成到被测系统中,并通过最少的用例来验证整个系统,不考虑各组件之间的相互依赖性或者可能存在的风险

       该策略最大的特点就是:问题定位和修改都比较困难,适用于维护型的项目,并且新增的项目只有少数的模块被增加或修改;或者适用于测试系统比较小,并且各个组件都经过了充分的单元测试。

 

 4.  白盒测试的逻辑覆盖类型有哪些?能由弱到强排个序吗?

         由弱到强依次排序: 语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖
    拓展1:还有,有时面试官或者笔试题上会问你    路径测试的环、节点的计算准备设计多少个测试用例?还有一种问法就是问圈复杂度,这是同一个意思,如何回答?
          对于考查基本路径法需要覆盖几条,有以下两种方法
            一直接画出一个树一样的分支图,有几条分支就有几条路径
                                           二直接套公式:基本路径=谓词节点+1     谓词节点是指条件语句,比如while、if 、break等
    拓展2:颗粒度与测试的关系,有没有什么顺序关系?
                           粒度从小到大顺序:单元->集成->系统->验收  (验收测试粒度最大)

 5.  在性能测试中,压力测试、负载测试、 稳定性测试能讲讲它们的区别吗?

  1.压力测试:压力测试(又叫强度测试),它在系统资源特别低的情况下软件系统运行情况,目的是找到系统在哪里失效以及如何失效的地方。
        目的是测试软件的瓶颈和极限,通常会出现一个阈值、峰值等数据(重点在阈值、峰值)
       2.负载测试:指数据在超负荷环境中运行,程序是否能够承担,能够坚持多久,一般会出现一个可坚持的时间(重点在时间)
  3.稳定性测试:是指被测试系统在特定硬件、软件、网络环境条件下,给系统加载一定业务压力,使系统运行一段较长时间,以此检测系统是否稳定,
         一般稳定性测试时间为 n*12 小时

 6.  听过软件调试技术吗?有哪些呢,列举一下?LoadRunner用过吗,有哪几部分?

    试探法(强行排错法),
    回溯法:人工沿着程序的控制流程往跟踪代码,直到找出错误根源为止
    对分查找法:缩小错误的范围,
    归纳演绎
    原因排除法
LoadRunner通过以模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题, 可适用于各种体系架构的自动负载测试,能预测系统行为并评估系统性能
    包括三部分:脚本编辑工具 、测试执行工具 、结果分析工具
      首先可以新建场景,编写不同的测试脚本,我在上一家公司是用java语言编写过测试脚本;
      编写完成之后,就可以执行测试了;
      测试结束之后,就可以生成各种图表,进行结果分析。

 7.  如果说我们公司开发了一款手机APP应用,那么,属于界面元素测试内容有哪些?对手机软件的压力测试有哪些?

    窗口测试、菜单测试、文字测试、图标测试、鼠标测试

               存储压力、响应能力压力、网络流量压力、边界压力

  拓展:再提一个问题,并发压力算不算压力测试呢?

    否,因为并发压力是针对服务器的,因为每次并发是一个客户端,并发压力只发生在多用户操作的情况下,因为手机本身是对应一个用户操作,并不存在并发压力的可能

8.  确认测试、冒烟测试、回归测试的区别?

  1.确认测试:也叫有效性测试,有的也叫合格性测试,主要指针对软件系统/软件子系统的测试。一般来说,有种比较约定俗成的顺序:UT--IT--VT--ST。
        但实际上并非绝对如此,严格的说,确认测试在某种情况下就属于集成测试,但在某种情况下就属于系统测试。如何理解?
        比如:①当你的被测系统由软件子系统、硬件子系统等一些子系统组成的时候,这个时候针对这个被测系统中的软件子系统的测试就属于集成测试中的“系统内集成(子系统间集成)”,
           由于确认测试本身就是测纯软件子系统的,所以在这个时候确认测试本身就属于集成测试阶段中的子系统集成测试了
           ②而当你的被测系统本身就是一个纯软件系统时,这个时候针对这个系统的测试就变成了系统测试了,所以在这个时候确认测试又变成了系统测试阶段的活动了
        主要看你所测的是独立的纯软件系统(系统测试)还是软件系统中的子系统(集成测试),可以这样去理解
 
       2.冒烟测试只是一个测试活动,并不是一个测试阶段。也就是说,冒烟测试贯穿于测试的任何一个阶段,单元测试里会有冒烟测试、集成测试里会有冒烟测试、系统测试里也会有冒烟测试。
        冒烟测试和其他所有的测试活动的目的不一样,它不是为了证明程序存在BUG,而是为了证明程序的基本功能、核心功能没有问题
        冒烟测试一般是由程序员来执行;冒烟测试带有一定的随机性,它不需要去设计正式的测试用例,这个活动在开发部门内开展;
 
  3.回归测试:是指修改了旧代码后,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误。严格来说,回归测试不是一个测试阶段,只是一种测试技术
        一种用于这种各个测试过程(UT、IT、ST、UAT)的测试技术。在理想的测试环境中、程序每改变一次,测试人员都要重新执行回归测试。
        因此,通过选择正确的回归测试策略来改进回归测试的效率和有效性是非常有意义的。

        

 

posted @ 2019-12-09 18:19  excellent_1  阅读(567)  评论(0编辑  收藏  举报