【软考】单元测试

目录

        • 1. 概念
        • 2. 测试内容
          • 2.1 说明
          • 2.2 模块接口
          • 2.3 局部数据结构
          • 2.4 重要的执行路径
        • 3. 测试过程
          • 2.1 说明
          • 2.2 单元测试环境图
          • 2.3 驱动模块
          • 2.4 桩模块
        • 4. 模块接口测试与局部数据结构测试的区别

1. 概念
  • 1.单元测试也称为模块测试,在模块编写完成且无编译错误后就可以进行
  • 2.单元测试侧重于模块中的内部处理逻辑和数据结构
  • 3.如果选用机器测试,一般用白盒测试法
  • 4.这类测试可以对多个模块同时进行
  • 5.提高模块的内聚度可以简化单元测试。如果每个模块只完成一种功能,对于具体模块来讲所需的测试方案数据会显著减少,而且更容易发现和预测模块中的错误。
2. 测试内容
2.1 说明
  • 1.单元测试主要检查模块的以下5个特征
  • 2.模块接口:模块的接口保证了测试模块的数据流可以正确地流入、流出
  • 3.局部数据结构:在单元测试中,局部数据结构出错是比较常见的错误,在测试时应重点
  • 4.重要的执行路径:在单元测试中,对路径的测试是最基本的任务。由于不能进行穷举测试,需要精心设计测试例子来发现是否有计算、比较或控制流等方面的错误
  • 5.出错处理:好的设计应该能预测到出错的条件并且有对出错处理的路径。虽然计算机可以显示出错的内容,但仍需要程序员对出错进行处理,保证器逻辑的正确性,以便于用户维护
  • 6.边界条件:边界条件的测试是单元测试的最后工作,也是非常重要的工作。软件容易在边界出现错误
2.2 模块接口
  • 1.测试模块的输入参数和形式参数在个数、属性、单位上是否一致
  • 2.调用其他模块时,所给出的实际参数和被调用模块的形式参数在个数、属性、单位上是否一致
  • 3.调用标准函数时,所用的参数在属性、数目和顺序上是否正确
  • 4.全局变量在各模块中的定义和用法是否一致
  • 5.输入是否仅改变了形式参数
  • 6.开/关的语句是否正确
  • 7.规定的I/O格式是否与输入/输出语句一致
  • 8.在使用文件之前是否已经打开文件或使用文件之后是否已经关闭文件
2.3 局部数据结构
  • 1.变量的说明是否合适
  • 2.是否使用了尚未赋值或尚未初始化的变量
  • 3.变量的初始值或默认值是否正确
  • 4.变量名是否有错(例如拼写错)
2.4 重要的执行路径
  • 1.计算方面的错误。算术运算的优先次序不正确或理解错误;精度不够;运算对象的类型彼此不相容;算法错;表达式的符号表示不正确等
  • 2.比较和控制流的错误。本应相等的量由于精度造成不相等;不同类型进行比较;逻辑运算符不正确或优先次序错误;循环终止不正确(如多循环一次或少循环一次)、死循环;不恰当地修改循环变量;当遇到分支循环时出口错误等
3. 测试过程
2.1 说明
  • 1.由于模块不是独立运行的程序,各模块之间存在调用与被调用的关系。在对每个模块进行测试时,需要开发两种模块,驱动模块和桩模块
2.2 单元测试环境图

在这里插入图片描述

2.3 驱动模块
  • 1.相当于一个主程序,接收测试例子的数据,将这些数据送到测试模块,输出测试结果
2.4 桩模块
  • 1.也称为存根模块。桩模块用来代替测试模块中所调用的子模块,其内部可进行少量的数据处理,目的是为了检验入口,输出调用和返回信息
4. 模块接口测试与局部数据结构测试的区别
  • 1.模块接口测试和局部数据结构测试是软件开发过程中单元测试阶段的重要部分,它们各自关注不同的方面,具有不同的目标和测试重点。

  • 2.模块接口测试主要关注模块之间的数据交互。它测试的是模块之间的接口,包括输入参数和输出参数,以及模块之间的调用关系。这种测试的目的是确保模块之间的数据传递正确无误,保证模块能够正确地与其他模块进行交互。在进行模块接口测试时,会检查调用模块时的输入参数与模块的形式参数在个数、属性和顺序上是否匹配,同时也会检查文件的具体描述,包括文件的定义、记录的描述、文件的处理方式是否正确等。

  • 3.局部数据结构测试则主要关注模块内部的数据结构。它测试的是模块内部的数据是否正确,包括变量的类型、初始化、赋值等。这种测试的目的是确保模块在执行过程中,其内部的数据结构能够保持完整和正确。在进行局部数据结构测试时,会检查局部数据结构是否存在错误,如不正确或不相容的类型说明、错误的初始化或缺省值、变量无初值、不正确的变量名、出现上溢和地址错等。

  • 4.模块接口测试更侧重于模块之间的交互,而局部数据结构测试更侧重于模块内部的数据处理。两者都是单元测试阶段的重要部分,共同保证了软件的质量和稳定性。

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

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

相关文章

16.Git从入门到进阶

一.Git 初识 1. 概念: 一个免费开源,分布式的代码版本控制系统,帮助开发团队维护代码 2. 作用: 记录代码内容,切换代码版本,多人开发时高效合并代码内容 3. 如何学: 个人本机使用&#xf…

数据库中 SQL Hint 是什么?

前言 最近在调研业界其他数据库中 SQL Hint 功能的设计和实现,整体上对 Oracle、Mysql、Postgresql、 Apache Calcite 中的 SQL Hint 的设计和功能都进行了解,这里整理一篇文章来对其进行梳理,一是帮助自己未来回顾,加深自己的思…

Python之Web开发中级教程----搭建Git环境三

Python之Web开发中级教程----搭建Git环境三 多人分布式使用仓库操作实例 场景:开发者A,开发者B在同一个项目协同开发,修改同一个代码文件。开发者A在Win10下,开发者B在Ubuntu下。 1、开发者A修改提交代码 从GitHub: Let’s bu…

44岁「台偶一哥」成现实版「王子变青蛙」,育一子一女成人生赢家

电影《周处除三害》近日热度极高,男主角阮经天被大赞演技出色,最让人意想不到,因为该片在内地票房报捷,很多人走去恭喜另一位台湾男艺人明道,皆因二人出道时外貌神似,至今仍有不少人将两人搞混。 多年过去&…

11.Node.js入门

一.什么是 Node.js Node.js 是一个独立的 JavaScript 运行环境,能独立执行 JS 代码,因为这个特点,它可以用来编写服务器后端的应用程序 Node.js 作用除了编写后端应用程序,也可以对前端代码进行压缩,转译,…

Linux最小系统安装无法查看IP地址

1,出现原因 服务器重启完成之后,我们可以通过linux的指令 ip addr 来查询Linux系统的IP地址,具体信息如下: 从图中我们可以看到,并没有获取到linux系统的IP地址,这是为什么呢?这是由于启动服务器时未加载网…

《探索虚拟与现实的边界:VR与AR谁更能引领未来?》

引言 在当今数字时代,虚拟现实(VR)和增强现实(AR)技术正以惊人的速度发展,并逐渐渗透到我们的日常生活中。它们正在重新定义人与技术、人与环境之间的关系,同时也为各行各业带来了全新的可能性。然而,究竟是VR还是AR更有潜力改变未来?本文将围绕这一问题展开深入探讨。…

Unity ShaderGraph实现地面积水效果

先看看效果 右侧参数,能够控制水高,波纹的速度等,但是这个效果需要修改高度图和凹凸图,毕竟有些模型并不是平面,对于具有斜面的模型就需要修改贴图。 ShaderGraph如下

基于pytorch的视觉变换器-Vision Transformer(ViT)的介绍与应用

近年来,计算机视觉领域因变换器模型的出现而发生了革命性变化。最初为自然语言处理任务设计的变换器,在捕捉视觉数据的空间依赖性方面也显示出了惊人的能力。视觉变换器(Vision Transformer,简称ViT)就是这种变革的一个…

第一代高通S7和S7 Pro音频平台:超旗舰性能,全面革新音频体验

以下文章来源于高通中国 如今,音频内容与形式日渐丰富,可满足人们放松心情、提升自我、获取资讯等需求。得益于手机、手表、耳机、车载音箱等智能设备的广泛应用,音频内容可以更快速触达用户。从《音频产品使用现状调研报告2023》中发现&…

幕译--本地字幕生成与翻译--Whisper客户端

幕译–本地字幕生成与翻译 本地离线的字幕生成与翻译,支持GPU加速。可免费试用,无次数限制 基于Whisper,希望做最好的Whisper客户端 功能介绍 本地离线,不用担心隐私问题支持GPU加速支持多种模型支持(中文、英语、日…

连接时序分类 Connectionist Temporal Classification (CTC)

CTC全称Connectionist temporal classification,是一种常用在语音识别、文本识别等领域的算法,用来解决输入和输出序列长度不一、无法对齐的问题。在CRNN中,它实际上就是模型对应的损失函数(CTC loss)。 一、背景 字母和语音的对齐(align)非…

【数据通信】数据通信基础知识---信号

1. 信息、数据、信号 信息是人们通过施加于数据的一些规定而赋予数据的特定含义(ISO定义)通信就是在信源和信宿之间传递信息。 信息和消息的关系:消息中包含信息,消息不等于信息。 消息所包含信息的多少,与在收到消息…

transformer--使用transformer构建语言模型

什么是语言模型? 以一个符合语言规律的序列为输入,模型将利用序列间关系等特征,输出一个在所有词汇上的概率分布.这样的模型称为语言模型. # 语言模型的训练语料一般来自于文章,对应的源文本和目标文本形如: src1"Ican do",tgt1…

Revit-二开之不同个立面/剖面上点的处理-(8)

由上图我们可以知道,在不同的立面坐标系是不同的。在很多业务逻辑处理的时候,需要对不同的立面进行处理,在此封装了一个方法,便于处理不同立面上点的计算。 viewSection 立面或者剖面 point 立面或者剖面上的点 horizontalOffset 点在屏幕中水平方向上的偏移量 verticalOf…

Android14之解决报错:No module named sepolgen(一百九十二)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…

推荐算法中经典排序算法GBDT+LR

文章目录 逻辑回归模型逻辑回归对于特征处理的优势逻辑回归处理特征的步骤 GBDT算法GBDTLR算法GBDT LR简单代码实现 逻辑回归模型 逻辑回归(LR,Logistic Regression)是一种传统机器学习分类模型,也是一种比较重要的非线性回归模型&#xff0…

浅谈Redis和分布式系统

浅谈Redis Redis用于存储数据,且在内存当中进行存储。 但是在日常编写代码中,定义一个变量也就属于在内存当中存储一个数据。 Redis主要会在分布式系统当中发挥重要作用,如果只是单机程序,直接通过变量存储数据的方式会比使用Re…

Listener(监听器)

文章目录 Listener和ServletContext1.0 ServletContext对象介绍1.1 Listener概述1.2 Listener快速入门① xml版本② 注解版本 1.3 案例:模拟spring框架 Listener和ServletContext 补充:1.ServletContext 表示上下文对象,属于接口&#xff0c…

MySQL主从读写分离之Proxysql(openEuler版)

实验目的: 基于proxysql实现MySQL的主从读写分离。 实验过程: 前期准备: 一共有四台虚拟机,其中三台为配置好的一主两从虚拟机,还有一台干净的虚拟机用来配置proxysql。 主机名地址master192.168.27.137node1192.…