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

news2025/3/19 18:10:39

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

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

单元测试

概述

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

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

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

单元测试的内容

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

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

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

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

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

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

单元测试的优点

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

单元测试的停止准则

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

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

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

单元测试的任务

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

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

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

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

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

集成测试

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2317927.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数学建模:MATLAB循环神经网络

一、简述 1.循环神经网络 循环神经网络(RNN)是一种用于处理序列数据的神经网络。不同于传统的前馈神经网络,RNN在隐藏层中加入了自反馈连接,使得网络能够对序列中的每个元素执行相同的操作,同时保持一个“记忆”状态…

EagleTrader为何重申重要数据前后2分钟禁止交易?

3月12日,美国公布了2月份的CPI数据。 美国2月未季调CPI年率录得2.8%,为去年11月来新低,低于市场预期的2.9%。 美国2月季调后CPI月率录得0.2%,为去年10月来新低,预期值为0.3%,前值为0.5%。 数据公布后&#…

个人blog系统 前后端分离 前端js后端go

系统设计: 1.使用语言:前端使用vue,并使用axios向后端发送数据。后端使用的是go的gin框架,并使用grom连接数据库实现数据存储读取。 2.设计结构: 最终展示:仅展示添加模块,其他模块基本相似 前…

单元测试mock

一、背景 现在有A类,B类,C类,A类依赖B类,依赖C类,如果想要测试A类中的某个方法的业务逻辑。A类依赖其他类,则把其他类给mock,然后A类需要真实对象。这样就可以测试A类中的方法。 举例:Ticket类需要调用Flight类和Pas…

GreenKGC: A Lightweight Knowledge Graph Completion Method(论文笔记)

CCF等级:A 发布时间:2023年7月 代码位置 25年3月17日交 目录 一、简介 二、原理 1.整体 2.表示学习 3.特征修剪 4.决策学习 三、实验性能 1.主要结果 2.消融实验 四、结论和未来工作 一、简介 传统知识图谱补全方法中,嵌入维度…

SSM基础专项复习5——Maven私服搭建(2)

系列文章 1、SSM基础专项复习1——SSM项目整合-CSDN博客 2、SSM基础专项复习2——Spring 框架(1)-CSDN博客 3、SSM基础专项复习3——Spring框架(2)-CSDN博客 4、SSM基础专项复习4——Maven项目管理工具(1&#xff…

ASP4644四通道降压稳压器的工业高效电源管理方案

ASP4644工业级型号(ASP4644I6B)是一款专为工业场景设计的四通道降压稳压器,支持-40C至85C工作温度。其核心特性包括: 宽输入电压范围:4V–14V,适配工业现场多变的电源环境。 高负载能力:单通道…

RabbitMq C++客户端的使用

1.RabbitMq介绍 RabbitMQ 是一款开源的消息队列中间件,基于 AMQP(高级消息队列协议)实现,支持多种编程语言和平台。以下是其核心特点和介绍: 核心特点 多语言支持 提供 Java、Python、C#、Go、JavaScript 等语言的客…

用通义大模型写爬虫程序,汇总各科成绩

需求:根据各科网址,输入学号、姓名查询成绩。 中间反反复复很多次,本文只记下重点的几次和大模型的沟通历史。 输入界面 查询界面 round0(最初的问题) 请在windows下,使用python的selenium库&#xff0…

电商项目Ts版本

文章目录 项目地址一、环境安装1.1 配置作为导入1.2 文件目录 二、路由2.1 publicRoutes 项目地址 教程作者:教程地址: 代码仓库地址: 所用到的框架和插件: dbt airflow一、环境安装 1.1 配置作为导入 vite.config.ts impor…

HarmonyOS Next中的弹出框使用

HarmonyOS Next弹出框概述及分类 弹出框是一种模态窗口,通常用于在保持当前上下文环境的同时,临时展示用户需关注的信息或待处理的操作。用户需在模态弹出框内完成相关交互任务之后,才能退出模态模式。弹出框可以不与任何组件绑定&#xff0…

FPGA中级项目4——DDS实现

FPGA中级项目4——DDS实现 DDS简介 DDS(直接数字频率合成器,Direct Digital Frequency Synthesis)是一种基于数字信号处理技术的频率合成方法,广泛应用于通信、雷达、仪器仪表等领域。在 FPGA中实现 DDS 具有灵活性高、集成度强、…

STM32 DAC详解:从原理到实战输出正弦波

目录 一、DAC基础原理1.1 DAC的作用与特性1.2 DAC功能框图解析 二、DAC配置步骤2.1 硬件配置2.2 初始化结构体详解 三、DAC数据输出与波形生成3.1 数据格式与电压计算3.2 正弦波生成实战3.2.1 生成正弦波数组3.2.2 配置DMA传输3.2.3 定时器触发配置 四、常见问题与优化建议4.1 …

基于PyQt5与Open3D的轻量化BIM工具开发指南(下)‌

‌基于PyQt5与Open3D的轻量化BIM工具开发指南(下)‌ ‌——参数化建模、数据导出与性能优化‌ 【跳转】基于PyQt5与Open3D的轻量化BIM工具开发指南(上)‌ ‌四、详细实现步骤(Part 2)‌ ‌3. 参数化建模…

Pytest项目_day01(HTTP接口)

HTTP HTTP是一个协议(服务器传输超文本到浏览器的传送协议),是基于TCP/IP通信协议来传输数据(HTML文件,图片文件,查询结果等)。 访问域名 例如www.baidu.com就是百度的域名,我们想…

在vue项目中,使用Patch请求,实现根据id修改某张发票的日结状态

目录 前言 一.问题描述 二.后端实现 1.分析 2.检查后端拦截器,看看是否允许接收Patch类型的请求 3.编写Dto 4.编写controller层 5.编写service层 6.mapper层 7.使用apifox,测试后端接口的可用性 三.前端实现 1.封装api(本质是ax…

某快餐店用户市场数据挖掘与可视化

1、必要库的载入 import pandas as pd import matplotlib.pyplot as plt import seaborn as sns2、加载并清洗数据 # 2.1 加载数据 df pd.read_csv(/home/mw/input/survey6263/mcdonalds.csv)# 2.2 数据清洗 # 2.2.1 检查缺失值 print(缺失值情况:) print(df.isn…

[C++面试] 标准容器面试点

一、入门 1、vector和list的区别 [C面试] vector 面试点总结 vector 是动态数组,它将元素存储在连续的内存空间中。支持随机访问,即可以通过下标快速访问任意位置的元素,时间复杂度为 O(1),准确点是均摊O(1)。但在中间或开头插…

单片机学完开发板,如何继续提升自己的技能?

很多人学完开发板后都会卡在一个尴尬的阶段:觉得自己会的东西不少,但又不知道下一步该干啥。会点C语言,能烧录程序,能点亮LED,玩转按键,搞定串口等等,能用开发板做点小玩意儿,但面对…

明基PD2700U显示器无法调节图像模式

现象:明基PD2700U显示器无法调节图像模式,如下图: 目前未找到根本原因,推测可能是下面的原因: 1、安装了远程桌面软件:向日葵、虚拟显示器 2、显卡插入了接口,但是没接显示器 解决办法&#xf…