当前位置: 首页 > article >正文

【从零开始学习计算机科学】软件测试(二)单元测试 与 集成测试

【从零开始学习计算机科学】软件测试(二)单元测试 与 集成测试

  • 单元测试
    • 概述
    • 单元测试的内容
    • 单元测试的优点
    • 单元测试的停止准则
    • 单元测试的过程与文档管理
    • 单元测试的任务
  • 集成测试
    • 集成测试关注的问题
    • 模块分析
    • 集成测试与系统测试的区别
    • 集成测试与开发的关系
    • 集成测试的层次
    • 集成测试的原则
    • 集成测试重点考虑的内容
    • 集成测试策略
    • 模块组装方法
      • 非渐增式集成。
      • 渐增式集成。
        • 渐增方式集成测试策略-自顶向下集成
          • 自顶向下集成测试的步骤
          • 渐增方式集成测试策略-自底向上集成
    • 集成测试用例设计
      • 为正向集成测试设计用例
      • 为逆向集成测试设计用例
      • 为满足特殊需求设计用例
      • 为覆盖设计用例
    • 集成测试流程
    • 面向对象的集成测试
      • 对象交互的测试方法分类
        • 原始类测试
        • 汇集类测试
        • 协作类测试
      • 面向对象集成测试的常用方法
    • 分布式对象测试
      • 线程
      • 分布式对象的概念
      • 功能测试

单元测试

概述

单元是指一个最小的单元应该有明确的功能、性能、接口定义而且可以清析地与其他单元区分开。

单元测试(Unite Testing)又称为模块测试,主要来检验软件设计中最小的单位——模块。一般来说模块的内聚程度高,每一个模块只能完成一种功能,因此模块测试的程序规模小,易检查出错误。我们可以通过单元测试进行程序语法检查和程序逻辑检查,验证程序的正确性。单元测试非常重要,因为它影响的范围比较广,主要表现在如果一个单元模块的一个函数或者参数出现问题,会造成后面很多问题的出现,而且如果单元测试做不好,使得集成测试或者后面系统测试工作也做不好。做好单元测试是一个重要而且基础性的工作,主要的测试方法分为人工测试和自动化测试两种方式。

单元测试目的是检查单元模块内部的错误,为软件的评审验收提供依据。单元测试是以程序设计说明书和之前所作的测试数据(正常的和错误的)为指导,测试模块内重要的路径,以检查出错误;检验信息能否正确地流入和流出单元;在单元测试工作过程中,其内部数据能否保持其完整性,包括内部数据的形式、内容及相互关系不发生错误,也包括全局变量在单元中的处理和影响。以及在为限制数据加工而设置的边界处,能否正确工作。单元的运行能否做到满足特定的逻辑覆盖。单元中发生了错误,其中的出错处理措施是否有效等等方面。

单元测试的内容

目标:确保模块被正确地编码。

依据:详细设计说明书、源程序。

过程:包括设计、脚本开发、执行、调试和分析结果。

执行者:开发人员和测试人员。

测试方法:白盒为主,黑盒为辅。

评估:通过所有单元测试用例,代码没有严重缺陷。

单元测试的优点

单元测试是一种验证行为,其为程序中的每一项功能都是测试来验证它的正确性。单元测试是一种设计技术:单元测试使我们把程序设计成易于调用和可测试的设计,是一种设计技术。单元测试是一种编写文档的行为:单元测试是一种文档,它是展示函数或类如何使用的最佳文档。这份文档是可编译、可运行的,并且它保持最新,永远与代码同步。单元测试具有回归性:单元测试避免了代码出现回归,编写完成之后,可以随时随地的快速运行测试。单元测试保证:保证代码质量,保证代码的可维护性,保证代码的可扩展性。

单元测试的停止准则

单元测试停止至少需要满足以下条件:软件单元功能与设计需求一致;软件单元接口与设计需求一致;能够正确处理输入和运行中的错误;在单元测试中发现的错误已经修改并通过了测试;达到了相关的覆盖率的要求;完成软件单元测试报告。

单元测试的过程与文档管理

单元测试过程由以下5个步骤组成:
在详细设计阶段完成单元测试计划;
建立单元测试环境,完成测试设计和开发;
执行单元测试用例,并详细记录测试结果;
判定测试用例是否通过;
提交《单元测试报告》;

单元测试的任务

模块独立执行通路测试:检查每一条独立执行路径的测试。保证每条语句被至少执行一次。主要解决以下问题:误解或用错了算符优先级。混合类型运算。变量初值错。精度不够。表达式符号错等等。

模块局部数据结构测试:检查局部数据结构完整性。主要解决以下问题:不适合或不相容的类型说明。变量无初值。变量初始化或默认值有错。不正确的变量名或从来未被使用过。出现上溢或下溢和地址异常等等。

模块接口测试:检查模块接口是否正确。主要解决以下问题:输入的实际参数与形式参数是否一致,包含个数、属性、量纲;调用其他模块的实际参数与被调模块的形参是否一致,包含个数、属性、量纲;调用预定义函数时所用参数是否一致,包含个数、属性、量纲;全程变量的定义在各模块是否一致;外部输入、输出相关的问题,包含文件、缓冲区、错误处理等等。

模块边界条件测试:检查临界数据处理的正确性。主要解决以下问题:普通合法数据的处理;普通非法数据的处理;边界值内合法边界数据的处理;边界值外非法边界数据的处理等等。

模块的各条错误处理通路测试:预见、预设的各种出错处理是否正确有效。主要解决以下问题:输出的出错信息难以理解;记录的错误与实际不相符;程序定义的出错处理前系统已介入;异常处理不当;未提供足够的定位出错的信息等等。

集成测试

集成就是把多个单元组合起来形成更大的单元。
集成测试也称为组装测试、联合测试、子系统测试、部件测试。其在假定各个软件单元已经通过了单元测试的前提下,检查各个软件单元接口之间的协同工作(参数、全局数据结构、文件、数据库)是否正确。
集成测试通常采用黑盒测试用例设计方法、灰盒测试方法。


http://www.kler.cn/a/592095.html

相关文章:

  • el-table树形表格合并相同的值
  • 牛客周赛84 题解 Java ABCDEFG AK实录
  • 机器学习(七)
  • Linkreate wordpressAI插件 24小时自动生成原创图文,新增从百度、必应搜索引擎自动获取相关下拉关键词
  • 逻辑回归Review
  • 【软考-架构】13.1、软件架构概述-构件技术
  • Java泛型是什么?有什么作用?
  • Linux 云计算运维三剑客grep、sed、awk简单对比
  • 拉取镜像太慢?一文解决!
  • 前端传参+后端接参对照
  • c++ 基础题目lambda
  • 【前端小组件实现】 鼠标经过标签元素显示,另一个元素宽度改变。float,inline-block,block
  • template mixin对装饰器设计模式的实现
  • 海康SDK协议在智联视频超融合平台中的接入方法
  • python开发订单查询功能(flask+orm bee)
  • 一文读懂 EtherNET/IP 转 Modbus RTU 网关
  • 蓝桥杯刷题day1:温度转换
  • SpacetimeDB 1.0 正式发布,Rust 编写的开源关系型数据库
  • 高并发场景下的淘宝API优化:如何设计商品数据采集系统?
  • 深入理解数据库:从概念到MySQL应用