【软考】单元测试

news2024/11/18 12:20:45

目录

        • 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.coloradmin.cn/o/1506037.html

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

相关文章

数据库(mysql)-新手笔记(主外键,视图)

数据库基本知识点- http://t.csdnimg.cn/CVa9e 主外键 主键(唯一性,非空性) 主键是数据库表中的一个或多个字段,其值唯一标识表中的每一行/记录。 唯一性: 主键字段中的每个值都必须是唯一的,不能有两个或更多的记录具有相同的主键值 非空性&#x…

Ajax (1)

什么是Ajax&#xff1a; 浏览器与服务器进行数据通讯的技术&#xff0c;动态数据交互 axios库地址&#xff1a; <script src"https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script> 如何使用呢&#xff1f; 我们现有个感性的认识 <scr…

【Python-Docx库】Word与Python的完美结合

今天给大家分享Python处理Word的第三方库&#xff1a;Python-Docx。 什么是Python-Docx&#xff1f; Python-Docx是用于创建和更新Microsoft Word&#xff08;.docx&#xff09;文件的Python库。 日常需要经常处理Word文档&#xff0c;用Python的免费第三方包&#xff1a;Pyt…

【自制操作系统】系统启动流程,工具使用和启动区的制作

&#x1f4dd;本文介绍 本文主要从系统系统的启动流程开始&#xff0c;中间介绍一些所用工具的使用方法&#xff0c;最后将完成一个启动区的制作。此次的启动区只涉及到汇编代码。 &#x1f44b;作者简介&#xff1a;一个正在积极探索的本科生 &#x1f4f1;联系方式&#xff1…

《MySQL实战45讲》课程大纲

1MySQL实战45讲-01基础架构&#xff1a;一条SQL查询语句是如何执行的&#xff1f;2MySQL实战45讲-02日志系统&#xff1a;一条SQL更新语句是如何执行的&#xff1f;3MySQL实战45讲-03事务隔离&#xff1a;为什么你改了我还看不见&#xff1f;4MySQL实战45讲-04深入浅出索引&…

vue3 ref获取子组件显示 __v_skip : true 获取不到组件的方法 怎么回事怎么解决

看代码 问题出现了 当我想要获取这个组件上的方法时 为什么获取不到这个组件上的方法呢 原來&#xff1a; __v_skip: true 是 Vue 3 中的一个特殊属性&#xff0c;用于跳过某些组件的渲染。当一个组件被标记为 __v_skip: true 时&#xff0c;Vue 将不会对该组件进行渲染&am…

Springboot——JSR303校验

1. 请求参数的合法性校验 使用基于JSR303的校验框架实现&#xff0c;Springboot提供了JSR-303的支持&#xff0c;它就是spring-boot-starter-validation&#xff0c;他包括了很多的校验规则&#xff0c;只需要在模型中通过注解指定校验规则&#xff0c;在Controller方法上开启校…

map和set(二)——AVL树的简单实现

引入 二叉搜索树有其自身的缺陷&#xff0c;假如往树中 插入的元素有序或者接近有序&#xff0c;二叉搜索树就会退化成单支树&#xff0c;时间复杂度会退化成O(N)&#xff0c;因此 map、set等关联式容器的底层结构是对二叉树进行了平衡处理&#xff0c;即采用平衡树来实现。简…

深入了解二叉搜索树:原理、实现与应用

目录 一、介绍二叉搜索树 二、二叉搜索树的基本性质 三、二叉搜索树的实现 四、总结 在计算机科学中&#xff0c;数据结构是构建算法和程序的基础。其中&#xff0c;二叉搜索树&#xff08;Binary Search Tree&#xff0c;简称 BST&#xff09;作为一种常见的数据结构&#…

从新手到高手:一站式 SQL Server 学习平台!

介绍&#xff1a;SQL Server是由微软公司开发的关系数据库管理系统&#xff08;RDBMS&#xff09;&#xff0c;自1989年推出以来&#xff0c;已成为全球主流的数据库之一。以下是对SQL Server的详细介绍&#xff1a; 易用性与可伸缩性&#xff1a;SQL Server以其易用性和良好的…

题目:泡澡(蓝桥OJ 3898)

问题描述&#xff1a; 解题思路&#xff1a; 图解&#xff1a;&#xff08;以题目样例为例子&#xff09; 注意点&#xff1a;题目的W是每分钟最大出水量&#xff0c;因此有一分钟的用水量大于出水量则不通过。 补充&#xff1a;差分一般用于对一段区间每个元素加相同值&#x…

arp 代理配置示例

一、应用场景&#xff1a; 当 R1 和 R3 配置静态路由下一跳为接口的时候&#xff0c;让 R2 充当 arp 代理&#xff0c;允许 R1、R3 互访 二、拓朴如下&#xff1a; 三、配置代码&#xff1a; [R1] ip route-static 10.1.23.0 255.255.255.0 GigabitEthernet0/0/0[R2] interf…

Git学习笔记(流程图+示例)

概念 图中左侧为工作区&#xff0c;右侧为版本库。Git 的版本库里存了很多东西&#xff0c;其中最重要的就是暂存区。 • 在创建 Git 版本库时&#xff0c;Git 会为我们自动创建一个唯一的 master 分支&#xff0c;以及指向 master 的一个指 针叫 HEAD。&#xff08;分支和HEAD…

服务器又被挖矿记录

写在前面 23年11月的时候我写过一篇记录服务器被挖矿的情况&#xff0c;点我查看。当时是在桌面看到了bash进程CPU占用异常发现了服务器被挖矿。 而过了几个月没想到又被攻击&#xff0c;这次比上次攻击手段要更高明点&#xff0c;在这记录下吧。 发现过程 服务器用的是4090…

【数据结构】详解时间复杂度和空间复杂度的计算

一、时间复杂度&#xff08;执行的次数&#xff09; 1.1时间复杂度的概念 1.2时间复杂度的表示方法 1.3算法复杂度的几种情况 1.4简单时间复杂度的计算 例一 例二 例三 1.5复杂时间复杂度的计算 例一&#xff1a;未优化冒泡排序时间复杂度 例二&#xff1a;经过优化…

Go语言必知必会100问题-19 浮点数溢出问题

问题呈现 在Go语言中&#xff0c;有两种浮点数类型&#xff08;虚数除外&#xff09;&#xff1a;float32和float64. 浮点数是用来解决整数不能表示小数的问题。我们需要知道浮点数算术运算是实数算术运算的近似&#xff0c;下面通过例子说明浮点数运算采用近似值的影响以及如…

LeetCode:143.重排链表

143. 重排链表 解题过程 /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* ListNode(int val) { this.val val; }* ListNode(int val, ListNode next) { this.val val; this.next next; …

python 蓝桥杯之并查集

文章目录 总述合并过程查找过程算法实战实战1 总述 并查集&#xff08;Disjoint-set Union&#xff0c;简称并查集&#xff09;是一种用来管理元素分组情况的数据结构。它主要用于解决集合的合并与查询问题&#xff0c;通常涉及到以下两种操作&#xff1a; 合并&#xff08;Uni…

Redis基础篇:初识Redis(认识NoSQL,单机安装Redis,配置Redis自启动,Redis客户端的基本使用)

目录 1.认识NoSQL2.认识Redis3.安装Redis1.单机安装Redis2.配置redis后台启动3.设置redis开机自启 4.Redis客户端1.Redis命令行客户端2.图形化桌面客户端 1.认识NoSQL NoSQL&#xff08;Not Only SQL&#xff09;数据库是一种非关系型数据库&#xff0c;它不使用传统的关系型数…

Android14 Handle机制

Handle是进程内部, 线程之间的通信机制. handle主要接受子线程发送的数据, 并用此数据配合主线程更新UI handle可以分发Message对象和Runnable对象到主线程中, 每个handle实例, 都会绑定到创建他的线程中, 它有两个作用,: (1) 安排消息在某个主线程中某个地方执行 (2) 安排…