【软考】单元测试

目录

        • 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.rhkb.cn/news/270727.html

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

相关文章

Day19:信息打点-红蓝队自动化项目资产侦察武器库部署企查产权网络空间

目录 各类红蓝队优秀工具项目集合 自动化-武器库部署-F8x 自动化-网络空间-AsamF 自动化-企查信息-ENScan 自动化-综合架构-ARL&Nemo 思维导图 章节知识点 Web:语言/CMS/中间件/数据库/系统/WAF等 系统:操作系统/端口服务/网络环境/防火墙等 应…

wps没保存关闭了怎么恢复数据?恢复文件教程

Microsoft Word是我们不可或缺的工具。很多小伙伴都遇到在WPS中编辑文件时,它可能会突然闪退,或者忘记及时保存文件就直接关闭了,导致我们辛苦编辑的文档丢失。面对这种情况我们该如何应对,尽量减小损失呢?接下来让我为…

【PHP】PHP通过串口与硬件通讯,向硬件设备发送数据并接收硬件返回的数据

一、前言 之前写过两篇PHP实现与硬件串口交互的文章,一篇是【PHP】PHP实现与硬件串口交互,接收硬件发送的实时数据(上)_php串口通信-CSDN博客,另一篇是【PHP】PHP实现与硬件串口交互,向硬件设备发送指令数…

【IEEE会议征稿通知】第九届信息科学、计算机技术与交通运输国际学术会议(ISCTT 2024)

【IEEE会议】第九届信息科学、计算机技术与交通运输国际学术会议(ISCTT 2024) 2024 9th International Conference on Information Science, Computer Technology and Transportation 第九届信息科学、计算机技术与交通运输国际学术会议(ISC…

【深度学习笔记】优化算法——随机梯度下降

随机梯度下降 在前面的章节中,我们一直在训练过程中使用随机梯度下降,但没有解释它为什么起作用。为了澄清这一点,我们刚在 :numref:sec_gd中描述了梯度下降的基本原则。本节继续更详细地说明随机梯度下降(stochastic gradient d…

【项目】图书管理系统

目录 前言: 项目要求: 知识储备: 代码实现: Main: Books包: Book: BookList: Operate包: Operate: addOperate: deleteOperate: exitOperate: findOperate:…

java基础-mysql

文章目录 1:mysql基础面试题什么是mysql什么是事务并发事务带来的影响事物的隔离级别索引大表优化什么是池化思想,什么是数据库连接池,为什么要用数据库连接池⾏锁,表锁;乐观锁,悲观锁MySQL主备同步的基本原…

Intellij IDE 中复制多个服务

Intellij IDE 中复制多个服务 添加此选项 选择启动的端口和运行时的环境 之后就可以了。

xss.haozi.me:0x03及04

这里有一个正则所以&#xff08;&#xff09;要用到实体编码 <a href"javascript:alert1">cc</a> 03 04都一样

模拟三方的模拟平台

https://hellosean1025.github.io/yapi/ https://github.com/YMFE/yapi https://github.com/fjc0k/docker-YApi

VSCode安装与使用

1、下载地址&#xff1a;Documentation for Visual Studio Code 在 VS Code 中使用 Python - 知乎 (zhihu.com) 自动补全和智能感知检测、调试和单元测试在Python环境(包括虚拟环境和 conda 环境)之间轻松切换 在 VS Code 中安装插件非常的简单&#xff0c;只需要打开 VS Code…

SpringBoot整合【RocketMQ】

目录 1.POM文件添加依赖及yml配置 2.RocketmqUtil 3.生产者&#xff08;异步发送示例&#xff09; 4.消费者 5.测试 1.POM文件添加依赖及yml配置 <dependency><groupId>org.apache.rocketmq</groupId><artifactId>rocketmq-spring-boot-starter&l…

安全增强型 Linux

书接上篇 一查看selinux状态 SELinux的状态&#xff1a; enforcing&#xff1a;强制&#xff0c;每个受限的进程都必然受限 permissive&#xff1a;允许&#xff0c;每个受限的进程违规操作不会被禁止&#xff0c;但会被记录于审计日志 disabled&#xff1a;禁用 相关命令…

内含资料下载丨黄东旭:2024 现代应用开发关键趋势——降低成本、简化架构

作为一名工程师和创业者&#xff0c;创办 PingCAP 是我进入创新世界的一次深潜。这段旅程既有令人振奋的发现&#xff0c;也充满令人生畏的不确定性。作为这次探险之旅见证的 TiDB &#xff0c;现在已在全球服务超过 3000 家企业&#xff0c;其中有已经实现了商业成功的大公司&…

【设计模式 01】单例模式

单例模式&#xff0c;是一种创建型设计模式&#xff0c;他的核心思想是保证一个类只有一个实例&#xff08;即&#xff0c;在整个应用程序中&#xff0c;只存在该类的一个实例对象&#xff0c;而不是创建多个相同类型的对象&#xff09;&#xff0c;并提供一个全局访问点来访问…

vite项目修改node_modules

问题详情 在使用某个依赖的时候遇到了bug&#xff0c;提交issue后不想一直等待到作者更新版本&#xff0c;所以寻求临时自己解决 问题解决 在node_modules里找到需要修改的依赖&#xff0c;修改想要修改的代码 修改后记得保存 然后在node_modules里找到.vite文件夹&#x…

阿里云Linux系统MySQL8忘记密码修改密码

相关版本 操作系统&#xff1a;Alibaba Cloud Linux 3.2104 LTS 64位MySQL&#xff1a;mysql Ver 8.0.34 for Linux on x86_64 (Source distribution) MySQL版本可通过下方命令查询 mysql --version一、修改my.cnf文件 文件位置&#xff1a;etc/my.cnf进入远程连接后可以打…

MQTT控制报文介绍(2)

一、CONNECT – 连接 服务端 客户端到服务端的网络连接建立后&#xff0c;客户端发送给服务端的第一个报文 必须是 CONNECT 报文。在一个网络连接上&#xff0c;客户端只能发送一次 CONNECT 报文。服务端 必须将客户端发送的第二个 CONNECT报文当作协议违规处理并断开客户端的…

项目中spring security与jwt.腾讯面试分享

写这篇文章是为了记录我面试pcg时平时没有留意或者钻研的地方。 面试是根据项目问的问题&#xff1a; 为什么采用jwt存储token&#xff1f; 我的项目是微服务项目&#xff0c;里面部署了资源服务和认证服务&#xff0c;这里选择jwt作为token一方面是可以存储用户的信息&#…

Ultimaker Cura使用(具体材料具体分析!)

参考视频&#xff1a;Cura学习视频 1 软件下载地址 Ultimaker官网- 专业便捷的3D打印品牌 2 软件设置 &#xff08;1&#xff09;中文设置&#xff1a; 偏好设置->language->简体中文->关掉界面&#xff0c;重启 &#xff08;2&#xff09;添加打印机 Custom FF…