zoukankan      html  css  js  c++  java
  • 软件工程——测试

    单元测试 (白盒测试)

    1模块接口:  

    内部检查:传输参数的数目、属性、单位、次序是否匹配;全程变量的定义是否一致;只做输入的变元有无被修改,等等  

    内部检查:打开、结束、关闭文件的操作;文件和属性;I\O错误处理;输出拼写,等等

    2局部数据结构:  

    数据说明;初始化与缺省值的设置;变量名拼写;数据类型的相容性;上\下溢出及地址异常,等等。

    3重要的执行通路:

     由于穷尽测试的不可能,故通常针对最常见的错误设计测试方案。

    较常见的错误有:  计算次序问题;  不同类型混合运算;  初值设置错误;  精度问题;  表达式错误  循环终止条件错误;

    4出错处理通路:

     预见出现错误的条件,设置处理。

    较常见的问题有:  

    输出的错误信息难以理解,

    不能确定错误位置

    描述的错误与实际错误不符  

    处理之前系统已经干预  

    处理不正确

    5边界条件——单元测试中最后,也可能是最重要的任务,因为软件常在其边界失效。

    单元测试的主要手段:

    1代码审查  

    走读 walk_through:

    例如 Lucent Technologies 的测试策略,是由三人一组(包括author,reader,和recorder),逐行检查源代码。  预演由人扮演computer,模拟执行情况

    优点:一次审查科发现多个错误,不必改一个测一个。

    2制作测试软件:  

    Stub(存根)和Driver(驱动)软件的编写,属额外开支。模块高内聚可简化这一过程。

    设计测试方案

    任务:

    1预定要测试的功能

    2设计输入的测试数据

    3列出预期结果

    主要技术:

    1逻辑覆盖(Logical coverage)——适用于白盒测试  覆盖程度由弱到强依次为:  

    (1)语句覆盖(Statement coverage):每个语句至少执行依次。  

    (2)判定覆盖(Branch coverage):再(1)的基础上,每个判定的每个分支至少执行依次。  

    (3)条件覆盖(Condition coverage):在(1)的基础上,使每个判定表达式的每个条件都取到各种可能的结果。  

    (4)判定/条件覆盖:即判定覆盖∩条件覆盖  

    (5)条件组合覆盖:每个判定表达式中条件的各种肯能组合都至少出现依次。  

    (6)点覆盖=语句覆盖  

    (7)边覆盖=判定覆盖  

    (8)路径覆盖(Path coverage):每条可能的路径都至少执行依次,若图中有环,则每个环至少经过依次。  

    (9)路径覆盖/条件组合覆盖

    2等价划分(Equivalence Partitioning)——适用于黑盒测试  

    是一种很常用的测试方法。其对测试数据的选择是基于对程序功能的分析,按照程序输入要求和输出要求,选择若干数据进行测试功能的过程。

    (1)划分经验

    当规定了输入范围时:无效类【 有效类 】无效类 当规定了一组输入值,且对不同值做不同处理时。

      例:教工分房方案中,按教授、副教授、讲师、助教分别计分=》有效类4个;无效类1个(4个有效类之外)

    当规定了输入的规则时:例:PASCAL 语言规定,每个语言以“;”结束=》有效类1个;无效类若干(以“,”结束、以“:”结束、以空格结束等等)

    当输入为整型时:有效类可分为Z+、0、Z- 三种

    当处理表格时:有效类可分为空表、含一项的表、含多项的表等

    (2)设计步骤

    设计一个新方案以尽可能多地覆盖尚未被覆盖的有效等价类;重复这一步骤直到所有有效类都被覆盖为止。

    设计一个新方案以覆盖一个且仅一个尚未被覆盖的无效等价类;重复这一步骤直到所有无效类都背覆盖为止。(通常程序执行一个错误后即不继续检查其他错误)

    3边界值分析(Boundary Value Analysis)

    注意:  (1)程序最容易在边界发生错误;  (2)通常与等价划分结合进行。

    4错误推测(Failure Prediction)

    思路:  (1)列出可能有的错误;  (2)列出容易发生错误的特殊情况。

    以此为基础设计测试方案

    根据:经验、直觉

    5实用策略(Practical Strategies) 黑盒设计+白盒补充

    (1)在任何情况下都应首先实用边界值分析的方法;

    (2)必要时用等价划分法补充;

    (3)必要时再用错误推测法补充;

    (4)对照程序逻辑,检查测试方案。可根据对程序可靠性的要求采用不同的逻辑覆盖标准,必要时补充一些测试方案。

    注:即使用上述综合策略设计测试方案,仍不能保证发现一切错误。例如Lucent公司经过包括逐行检查源代码在内的多方面测试之后,其软件能达标运行的成功率为 80%,可想而知,没有经过测试的软件运行成功率更低。

     

  • 相关阅读:
    Bootstrap中,模态框嵌套模态框时,关闭第二个模态框时,导致第一个模态框的滚动条消失
    heidisql 远程登录本地虚拟机中的 MariaDB
    ssh-keygen -t rsa -C "content" 解释
    IIS 环境 CodeIgniter 隐藏 URL 中的 index.php
    Windows 环境下 PHP 安装 xdebug 及配置
    win10 更新后主机背部音频输出无声音
    MySql.Data.MySqlClient.MySqlException: Packets larger than max_allowed_packet are not allowed
    关于 IIS 中 iconfont.woff 报 404(Not Found) 的原因即解决方法
    IIS Web API 长时间不连接后第一次访问非常缓慢
    VS Code 中 HTML 文档注释 js 语句异常
  • 原文地址:https://www.cnblogs.com/13yan/p/2822658.html
Copyright © 2011-2022 走看看