zoukankan      html  css  js  c++  java
  • 软件测试的艺术(读书笔记3)

    下面继续本书第二部分的读书笔记部分

    第二部分 软件测试基础

      包括第4章 测试用例设计;第5章 单元(模块)测试;第6章 更高级别的测试

    第5章 单元(模块)测试

      单元(模块)测试时构建大型程序测试的第一个步骤。模块测试时对程序中的单个子程序、子程序或过程进行测试的过程。单元(模块)测试的动机:1.一种管理组合的测试元素的手段;2.减轻调试的难度(错误被发现,可以知道在哪个具体的模块中);3.为同时测试多个模块提供可能。分为三个部分进行探讨:1.单元(模块)测试的测试用例设计方法;2.模块测试及集成的顺序;3.对执行模块测试的建议;

      1、模块测试的测试用例设计方法

      设计测试用例时,需要两种信息:1.模块的规格说明(规格说明规定了模块的输入和输出以及模块的功能);2.模块的源代码。

      模块测试总体上时面向白盒的测试。模块测试用例的设计过程如下:使用一种或多种白盒测试方法分析模块的逻辑结构,然后使用黑盒测试方法对照模块的规格说明以补充测试用例。

      首先,找出程序中所有的条件判断,如下图所示

      

      然后,使用判定覆盖准则设计设计用例;接着,使用条件覆盖准则设计测试用例,如果不满足要求,需要将判定和条件合并后进行测试用例的设计;

      最后,如果都不太完善,则需要使用多重条件覆盖准则进行设计。设计测试用例的方法是:挑选一个测试用例尽可能覆盖多种组合,然后再挑选一个测试用例覆盖剩余的准则。

      以上是通过模块的源代码进行用例设计,然后需要通过模块的规格说明书设计测试用例,这种设计用例的方法,需要借鉴黑盒设计方法(等价类、边界值,错误推测方法等)。

      2、模块测试及集成的顺序 

      2.1 增量测试和非增量测试区别

      非增量测试:一个模块一个模块的进行测试,最后将所有模块集成到一起测试(先独立测试每个模块,然后将模块组装成完整程序)。

        如下图所示,分别对A、B、C、D、E、F分别进行单独测试。而每个单独的模块需要一个驱动模块(driver module)和一个或多个桩模块(stub module)

        驱动模块:编写的小模块,用于将测试用例传输到被测模块中。桩模块:用于代替真实模块的临时模块(需具有真实模块的控制功能并能够编译通过)。

      增量测试:将未测试的模块添加到测试好的模块中进行测试(将下一步要测试的模块组装到测试完成的模块集合中,再进行测试)。

        如下图所示,如果按照从底部往上进行测试,先测试模块E、C、F,同时为他们准备驱动模块;然后,测试模块B、D,会将模块E、F合并到B、D模块中进行测试;最后测试到模块A。

        

      增量测试和非增量测试优点:

      1)增量测试工作量少

        非增量测试,每个模块都需要驱动模块和桩模块;增量测试,自底向上,无需桩模块;自顶向下,无需驱动模块。

      2)增量测试可较早发现接口不匹配和不正确错误

        增量测试,早早的对模块进行组合测试,非增量测试,最后阶段才进行模块组合。

      3)增量测试让调试会容易些

        模块接口间错误会较早定位解决。

      4)增量测试会将测试进行的更彻底

        增量测试使用先前测试过的模块,取代非增量测试中使用的桩模块或驱动模块。

      5)增量测试需要时间多些

      6)非增量测试可以并行操作

      2.2 自顶向下测试与自底向上测试

      1.自顶向下测试:从程序顶部或初始模块开始测试。

      原则:1)后续测试模块的从属模块须经过测试;

         2)编写桩模块很关键;

         3)程序中关键部分应尽早添加测试;

         4)I/O模块应尽早测试;

      2.自底向上测试:从程序底部往上进行测试。

      原则:1)后续测试模块的从属模块须经过测试;

         2)每个模块都需要特殊的驱动模块;

      3.比较

      3、执行模块测试的建议

      1)应在执行测试之前对测试用例集进行审核或检查

        测试用例造成输出的实际结果与预期结果不匹配时,要么是模块有问题,要么是测试用例不正确。

      2)应使用自动化工具提升效率

        使用工具生成驱动模块;使用流程分析工具列举程序路径。

      3)执行模块测试时,应遵守软件测试的心理和经济学原则

        比如,对预期输出进行定义;执行测试时,应查找模块执行了那些不该执行的操作;程序员不应测试自己编写的模块;对模块的调试应由编程人员本人进行。 

     

    参考文献:

    [1].百度文库,PL1初学指南.https://wenku.baidu.com/view/a4fc2eefb8f67c1cfad6b81b.html

    [2].shenghuiping2001,PL/1基础入门教程.https://blog.csdn.net/shenghuiping2001/article/details/4155294

    [3].PL/I Language Programmer's Guide.http://bitsavers.informatik.uni-stuttgart.de/pdf/digitalResearch/pl1/PL1_Language_Programmers_Guide_Dec82.pdf

    [4].茹炳晟,软件测试52讲.https://time.geekbang.org/column/article/10275

  • 相关阅读:
    docker cacti
    zabbix5.0官方部署+监控nginx+mysql
    CentOS7 Haproxy2.2.2部署示例
    LVS(DR) + keepalived
    linux备份整个系统
    docker部署OceanBase 试用版
    NextCloud开源视频会议平台
    idea使用maven proguard 对ssm项目进行代码混合详细步骤
    C# 范围运算符[1..2]
    对象是否为空的扩展方法
  • 原文地址:https://www.cnblogs.com/chengabc/p/11260916.html
Copyright © 2011-2022 走看看