分层测试(2)单元测试【必备】

news/2024/3/29 17:06:11/文章来源:https://blog.csdn.net/HUA1211/article/details/129264717

1. 什么是单元测试?

对代码中的逻辑隔离的最小代码片段进行测试,验证其逻辑是否符合预期,单元可以是函数,方法,类,功能模块。

2. 单元测试的优点

  1. 掌握代码:单元测试允许开发人员了解单元提供的功能以及如何使用它以获得对单元 API 的基本了解。
  2. 回归测试:单元测试允许程序员改进代码并确保模块正常工作。
  3. 尽早测试:单元测试可以测试项目的某些部分,而无需等待其他部分完成。
  4. 测试左移:在软件开发的早期定位和解决错误。
  5. 提升复用度:使代码的可重用性更可行。

3. 单元测试的挑战

  1. 时间成本:编写单元测试会增加开发人员工作量,单元测试跟生产代码是一样的,并不会因为是用来测试的就有所不同,开发人员同样要面对测试代码的编写,维护等工作,要将单元测试代码写好非常考验开发人员编码能力和测试代码设计能力。
  2. 资源投入:推广和让单元测试发生作用投入比较大,只有让每个开发同学都编写足够好,足够稳定的单元测试代码,才能真正享受单元测试带给我们的好处,在达到这种程度之前,需要非常多的资源投入。

4. 单元测试原则

1. 写出合适的测试名称

编写测试时要考虑的基本事项是选择测试名称。这非常重要,因为好的测试名称可以提高程序员和将来可能使用该代码的其他人的代码的可读性。可以在单元测试中应用标准命名约定。

2. 创建简单的测试

保持测试代码尽可能简单是维护代码的关键。单元测试代码也可能有错误,尤其是在高度复杂的情况下。测试不需要很花哨。因此,逻辑、手动字符串或所述圈复杂度等功能应该最少。

3. 幂等性测试

只要代码保持不变,无论输入如何,测试总是会产生相同的结果。这最大限度地减少了误报和漏报的发生率。测试需要是幂等性的,因为呈现可变结果的测试是不可信的。要使测试具有幂等性,它必须与其他测试用例、环境值和外部依赖性隔离开来。

4. 解决单个使用场景

每个测试都应该只用于测试单个使用场景。这将更更易验证代码输出和更好地洞察所发现错误的原因,而无需怀疑问题是否是误报。

5. 最小化测试依赖

当测试不依赖于其他软件部分时,它们的稳定性是最好的。外部因素也不应该影响测试的结果。

6. 测试自动化

尽管可以手动进行单元测试,但当前的做法鼓励使用自动化单元测试方法。事实证明,它不仅高效、便宜,而且省时。单元测试是DevOps 自动化工具执行的一项基本功能,可简化编码过程。

最后感谢每一个阅读我文章的人,一点小心意,虽然不是啥值钱的,需要的话直接拿走:

 

 

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

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

相关文章

软件测试之场景法

场景法 1. 概述 1.1 为什么使用场景法设计测试用例 大多数业务软件由后台管理(比如:用户管理、角色管理、权限管理等等各种管理)和工作流等几个部分组成。终端用户,期望软件能够实现业务需求,而不是简单的功能的组合…

2023湖北土建施工员证报考条件考试时间及报考流程 启程别

2023湖北土建施工员证报考条件考试时间及报考流程 启程别 土建施工员证是建设厅七大员中的施工员证的一种。分为土建、装饰装修、市政、设备安装。土建施工员证怎么报考等一系列相关问题启程别告诉你 施工员证报考条件 其实施工员证的报考条件没有那么复杂,基本上年…

智慧扫码点餐系统源码

智慧餐厅扫码点餐小程序系统源码 1. 开发语言:JAVA 2. 数据库:MySQL 3. 原生小程序 4. Saas 模式 5. 带调试部署视频 6、总后台管理端商家端门店端小程序用户端 智慧扫码点餐系统支持多店铺运营,单店铺运营以及连锁店铺运营。系统功能支…

numpy常用操作

文章目录1 numpy库2 数组对象 ndarray2.1 数组对象的创建2.1.1 利用array函数创建ndarray对象2.1.2 np.ones()和np.zeros()函数2.1.3 np.random.rand()函数2.1.4 np.arange()函数2.1.5 np.linspace()函数2.1.6 np.empty()函数2.2 ndarray对象常用属性2.3 ndarray常用操作2.3.1 …

IAP初探

IAP(In-Application Programming)在应用编程,浅显易懂,按照字面意思即是在程序不关闭情况下,对应用进行再次写入程序,对程序的写入需要传输数据,而传输数据的前提是通信, IAP对代码进行更新可以简要分为以…

为什么需要学习shell、shell的作用

课程基于B站于超课程笔记 03 Shebang的正确玩法_哔哩哔哩_bilibili P1 shell的作用 P2 shell执行命令的流程 P3 Shebang的正确玩法 什么是shell及组成 shell概念 shelll组成 Shebang概念 /bin/sh /bin/bash一样,都是指向一个bash解释器 [rootlocalhost ~]#…

医疗床头卡(WIFI方案)

一、产品特性 7.5寸墨水屏显示WIFI无线通信,极简部署,远程控制按键及高亮LED指示灯指示800*480点阵屏幕锂电池供电,支持USB充电DIY界面支持文本/条码/二维码/图片超低功耗/超长寿命,一次充电可用一年基于现有Wifi环境&#xff0c…

Unity EasyObjectPool2.0 对象池插件

效果展示 运行时: 非运行时: 功能列表 支持预加载 支持动态扩容 支持代码新建pool 支持可视化内存管理 支持常规对象池化管理 支持延迟回收 工厂方法和案例 //生成var bullet EasyObjectPool.GetInstance().Spawn( "bullet" );//回收EasyObjectPool.GetInstanc…

模拟微信聊天-课后程序(JAVA基础案例教程-黑马程序员编著-第八章-课后作业)

【案例9-1】 模拟微信聊天 【案例介绍】 1.案例描述 在如今,微信聊天已经人们生活中必不可少的重要组成部分,人们的交流很多都是通过微信来进行的。本案例要求:将多线程与UDP通信相关知识结合,模拟实现微信聊天小程序。通过监…

微电影广告的内容突破方案

微电影作为新媒体时代背景的产物,深受大众的欢迎,同时,微电影广告在微电影模式环境下应运而生,以自己独特的传播优势,俘获了大量企业主的青睐,也获得了广大青年群体的喜爱。微电影广告欲确保可持续发展&…

springboot+pgbouncer+postgres数据库连接池集成方案及问题解决

期望通过每一次分享,让技术的门槛变低,落地更容易。 —— around 前言 旨在解决微服务项目全是连接池并影响数据库并发连接,作者的环境是基于sprongboot微服务连接postgres数据库,每个微服务的DAO层配置都使用了连接池技术。后续…

PGLBox 超大规模 GPU 端对端图学习训练框架正式发布

作者 | PGLBox项目组 导读 PGLBox是百度研发的基于GPU的大规模图模型训练框架,支持数百亿节点和边的图模型全GPU训练,已在百度广泛部署。相比业界主流的分布式 CPU 解决方案,PGLBox 具有超高性能、超大规模、算法丰富、灵活易用、落地广泛等优…

复习知识点十之方法的重载

目录 方法的重载 练习1: 练习1: 数组遍历 练习2: 数组的最大值 练习3: 练习4: 复制数组 基本数据类型和引用数据类型 方法的重载 Java虚拟机会通过参数的不同来区分同名的方法 练习1: public class Test4 {public static void main(String[] args) {//调用方法 // …

【架构师】零基础到精通——服务与网关

博客昵称:架构师Cool 最喜欢的座右铭:一以贯之的努力,不得懈怠的人生。 作者简介:一名Coder,软件设计师/鸿蒙高级工程师认证,在备战高级架构师/系统分析师,欢迎关注小弟! 博主小留言…

Raki的读paper小记:BART

Abstract&Introduction&Related Work 研究任务 预训练语言模型已有方法和相关工作 BERT等面临挑战 已有的方法依赖下游任务创新思路 融合了双向和自回归模型随机打乱原始句子的顺序,并同时使用一种novel的填空方案,文本的span只用一个masked to…

近期常见组件漏洞更新:

(1)mysql 5.7 在2023年1月17日,发布了到5.7.41版本 mysql 8.0 在2023年1月17日,发布了到8.0.32版本 MySQL :: Download MySQL Community Serverhttps://dev.mysql.com/downloads/mysql/ (2)Tomcat8在202…

RedisTemplate 的基本使用手把手教

下载实例源码 使用步骤 1、引入 spring-boot-starter-data-redis 依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId> </dependency>2、在 application.yml 配置 R…

springboot使用Gateway搭建网关服务及Nacos实现动态路由

实际工作中我们会有很多个项目&#xff0c;这些项目共同使用同一个网关gateway来实现路由&#xff0c;各个项目之间调用以及前端调用都可以直接通过服务名称来调用&#xff0c;不用管ip&#xff0c;后续项目迁移到其它服务器也不受影响。 首先搭建springboot微服务&#xff0c…

CANoe TC8测试脚本的结构介绍

CANoe TC8脚本是通过vTESTstudio平台编写。每个协议(ARP\ICMPv4\IPv4\UDP\TCP\SOMEIP\DHCP)都有自己的vtt文件。每个vtt文件的测试树结构为: Test Fixture Fixture Preparation Test Case Test Case … Test Case Test Case Fixture Completion 当Test Fixture里的Test Case…

分布式ID生成系统

目录背景常用分布式ID生成系统介绍UUIDSnowflake背景 在大多数复杂的分布式系统中&#xff0c;往往需要对大量的数据和消息进行唯一标识。而对分布式系统后台数据库的分库分表后需要有一个唯一的ID来表示一条数据或者是消息。那么我们分布式系统ID一般都有哪些需求呢&#xff1…