测试基础理论(总结)

 

一、软件开发的阶段划分

    1.需求分析阶段

      需求分析人员

      产出物:《需求规格说明书》

    2.概要设计阶段

      《概要设计说明书》

    3.详细设计阶段

      《详细设计说明书》

      设计阶段一般由系统架构师(分析师)完成

    4.编码阶段

      由开发人员完成

      产出物:程序

 

二、哪个阶段产生的bug最多?哪个阶段最少?

    需求阶段产生的bug最多,其次是设计阶段,编码阶段产生的bug最少,由此得出结论:

      1)测试过程中不仅程序要测文档也要测

      2)测试工作要尽早介入,并且要贯穿整个开发过程始终(尽早测试原则、不断测试原则)

 

三、软件测试的阶段划分?

    1.单元测试阶段

      单元测试是最小的测试单位,一般是一个功能,一个窗口,一个类,一个方法(函数)

      单元测试主要依据的是《详细设计文档》

      单元测试以白盒测试为主

      单元测试要求编写驱动模块和桩模块

        驱动模块:模拟被测模块的上一级模块(调用被测模块的)

        桩模块:模拟被测模块的下一级模块(被“被测模块”调用)

      在实际工作中,单元测试往往由程序员完成—为了节约成本,但是可能会测试不严格,影响测试质量,公司的解决办法是互换测试和有测试人员完成单元测试的第二轮(双保险)

    2.集成测试阶段

      也叫组装测试,是在单元测试的基础之上完成,将程序的各个模块逐步组装在一起,进行测试的过程

      组装过程一般是逐步完成的,会形成很多的临时版本。

      集成测试阶段主要依据:概要设计文档

      集成测试阶段以黑盒测试为主,核心模块适当采用白盒测试。

      拿到一个新的测试版本后,一般先做一个“冒烟测试”(版本验证测试):使用较少的人(1-3人,经验丰富),较少的时间(0.5-2天)对软件的核心功能进行测试。如果核心部分没有问题,那么测试组接受该版本,全组投入测试工作,如果问题较多,版本不稳定,就退回开发组。

      集成测试中,拿到一个新版本的基本思路:

        --首先做“冒烟测试”,确认该版本是否可以接受

        --返测:对解决的缺陷进行测试,验证缺陷是否真的已经解决。

        --回归测试:对上一个版本中所有测过的功能再次测试一遍,以验证修改了代码或新加了功能后,之前的功能是否正常

        --对该版本的新加功能进行测试,有些版本可能只是修复之前的bug,没有新功能

    3.系统测试阶段

      整个功能全部组装完成后,对集成了硬件、软件的整个模拟真实系统进行的测试。重点在于测试:

        a)系统的正确运行

        b)系统的兼容性

      系统测试阶段主要依据是需求文档

      系统测试阶段全部为黑盒测试

      在系统测试之前,一般会安排“确认测试”,主要确认:

        该系统是否可以进入到全面的系统测试阶段

        确认相关文档是否准备齐全,主要是给用户的文档和参与认证的文档

      说明:确认测试一般时间较短,参与人员较少。所以一般不把它与单元、集成、系统、验收测试所并列。

    4.验收测试阶(UAT: user acceptance testing 用户接受度测试):

      由用户参与的检查过程。

      验收测试可以分为两个小的测试阶段:

        Alpha测试:在软件公司的可控环境内进行,应该由软件的最终用户对软件进行检查。(实际情况是常常由软件公司找人替用户完成或者用户自己找测试公司替自己完成)

        Beta测试:在用户的实际环境中进行,由最终用户对软件进行检查。

          例如:公共类软件(os,网络游戏,输入法,qq等),一般把软件免费发放给最终用户,通过最终用户的使用发现问题,收集缺陷—公测版本

 

四、测试的模型

  软件的测试模型表达的是测试阶段和开发阶段的对应关系

    1.V模型  

    

      优缺点

        优点:

          1)开发和测试阶段划分明确,对应关系明确

          2)测试阶段(级别)既包含单元测试(专业级),也包含用户验收测试(用户级)。

        缺点:没有将开发前期(需求阶段、测试阶段)的测试工作体现出来,容易理解成测试是开发完成后的收尾工作。

    2.W模型(了解)

      可以看成是双v模型,第一个v是完整的开发活动,第二个v是完整的测试活动

      W模型强调:软件开发的前期阶段测试(需求和设计阶段的测试),测试对象不仅是程序,需求和设计阶段同样需要测试(文档测试为主),测试与开发是同步进行的。

      W模型更加符合尽早测试原则和不断测试原则

    

 

 

五、测试的分类(名词、术语)

  1.按测试技术划分

    黑盒测试:又称功能测试,是不考虑程序内部结构特征,只知道输入和输出的情况下进行的功能的测试

    白盒测试:又称为结构测试或基于程序的测试。是只考虑程序的内部结构,而不考虑程序功能的测试。

    灰盒测试:结合了黑盒测试和白盒测试的要素,一般先做黑盒测试,发现bug,然后对可能产生bug的代码再进行白盒测试的过程(在集成测试中经常采用)

      说明:

        白盒测试:常用来对核心功能模块还有风险较大、难度较大的模块进行补充测试

          白盒测试要求测试人员要懂代码

          白盒测试效率低,时间成本较高,但是测试质量较好。

          白盒测试也要编写测试用例。

  2、按是否需要运行代码划分:

    1)静态测试:不需要运行程序,就能进行的测试。

      例如:文档测试,界面测试,代码测试:主要测试代码是否符合相应的标准和规范。(不需要懂代码)

    2)动态测试:使程序运行起来进行测试。例如:功能测试(黑盒测试)一般都是动态测试

      说明:白盒测试有可能是静态的也有可能是动态的

      问题:白盒测试和代码测试(静态)的区别:

        白盒测试主要关注的是代码的逻辑实现,测试者必须要懂代码才能测试,要求编写测试用例

        代码测试主要关注代码的规范性和标准性,测试者不需要懂代码,不用写测试用例,只需要按照代码审查单检查即可。

  3、按软件的特性分类:

    1)功能测试:

      A)任何软件都需要先做功能测试

      B)功能测试既可以手工完成也可以借助工具实现功能自动化测试

    2)性能测试

      A)分布式软件(B/s,C/s)需要做性能测试

      B)性能测试只能借助工具实现,性能自动化测试(loadRunner等)

      C)负载测试,压力测试、数据库容量测试

  4、其它(常见的名词、术语)

    1)返测:对程序员修改的bug进行测试,以验证bug是否被解决

    2)回测(回归测试):

      对上一个版本中所有功能重新测试一遍。验证新版本中,程序原有的功能是否依然正常,回归测试中存在大量重复性工作,所以可以使用自动化工具实现回归测试。

    3)随机测试:也叫猴子测试,在测试用例执行完之后,对软件进行的随意的测试过程。(提示:只是测试时间充足时,对正常测试用例之外的补充。)

    4)兼容测试:就是指所设计软件与硬件和软件之间的兼容性测试,主要分为3大类:

      硬件兼容:

        与整机兼容

        与相关的外设兼容

      软件兼容:

        操作系统

        应用软件之间的兼容

        不同浏览器兼容

        数据库的兼容

      数据兼容:

        不同版本之间的数据兼容

  5、软件项目的测试流程:

    步骤1:分析、熟悉需求

    步骤2:制定测试计划

    步骤3:用例设计(编写用例)

    步骤4:执行测试

    步骤5:记录执行结果,记录缺陷(缺陷报告)

    步骤6:跟踪和管理缺陷

    步骤7:测试总结(测试报告)

  6、测试用例编写的策略

    将7种测试用例编写方法的应用场合答出来即可。

    在测试应用中通常会2-4种测试方法综合使用