为什么需要单元测试

简介: 在互联网时代,软件迭代加速,研发需对代码质量与测试负责。测试金字塔强调“单元测试优先”,底层单元测试占80%,为软件打牢基础;中层集成测试占15%;顶层端到端测试仅占5%。该结构源自Google实践,旨在提升研发效率与产品信心,践行“你构建,你测试”的DevOps理念。

在如今的互联⽹时代,软件迭代的速度越来越快,研发的职责也越来越多。DevOps的理念是"you build it, you run it",研发/测试合⼆为⼀的趋势也可以理解为对"you build it, you test it"的呼吁。当研发要对⾃⼰写的代码质量和测试负责的时候,好的测试实践就必不可少了。
测试⾦字塔
就像盖楼需要从打地基、竖钢筋、灌⽔泥层层往上构建⼀样,测试也有类似的测试⾦字塔架构。下图出⾃《Software Engineering at Google》的测试章节,总结了Google在测试⽅⾯的最佳实践。我们可以看到测试⾦字塔由三层构成,最底层就是单元测试、占⽐80%,是软件系统的地基。再往上是集成测试和端到端测试,分别占15%和5%。因为从下往上占⽐逐层缩减,因此被称为测试⾦字塔(跟盖⾼楼⼀样)。⾕歌推荐的这个⽐例是多年实践出来的结果,意在提升研发的效率(productivity)并提升对产品的信⼼(product confidence)。
测试⾦字塔的核⼼理念之⼀就是“Unit Test First“,每个软件项⽬⾥的第⼀⾏测试应该是单测(TDD甚⾄认为第⼀⾏代码就应该是单测),⽽且⼀个项⽬⾥占⽐最⾼的测试也应该是单测。

相关文章
|
6月前
|
人工智能 安全 架构师
不只是聊天:从提示词工程看AI助手的优化策略
不只是聊天:从提示词工程看AI助手的优化策略
434 119
|
12月前
|
JavaScript 数据可视化 Docker
简易制作MCP服务器并测试
本文介绍了如何简易制作并测试MCP服务器,包括环境搭建、代码实现及Docker部署。首先通过uv包创建项目,在main.py中定义MCP服务器及其工具和资源函数。接着详细说明了在Windows上安装uv、配置Docker镜像加速、生成requirements.txt文件以及编写Dockerfile的过程。最后,通过构建和运行Docker容器部署MCP服务器,并使用Node.js工具测试其功能,确保服务器正常工作。此教程适合初学者快速上手MCP服务器的开发与部署。
4310 63
|
5月前
|
存储 监控 定位技术
GPS 人员定位系统:原理拆解 + 优劣分析 + 避坑指南(二)
本文深入剖析GPS人员定位系统的核心优劣:户外信号广、成本低,但室内易失效、抗干扰弱。针对遮挡环境下的定位痛点,提出“GPS+UWB/蓝牙”融合方案,实现室内外无缝切换,并给出场景适配与避坑建议。
|
存储 测试技术 C#
Azure 云服务与 C# 集成浅谈
本文介绍了 Azure 云服务与 C# 的集成方法,涵盖基础概念、资源创建、SDK 使用、常见问题解决及单元测试等内容,通过代码示例详细说明了如何在 C# 中调用 Azure 服务,帮助开发者提高开发效率和代码质量。
309 8
|
数据采集 人工智能 文字识别
【AAAI 2024】MuLTI:高效视频与语言理解
多模态理解模型具有广泛的应用,比如多标签分类、视频问答(videoQA)和文本视频检索等。现有的方法已经在视频和语言理解方面取得了重大进展,然而,他们仍然面临两个巨大的挑战:无法充分的利用现有的特征;训练时巨大的GPU内存消耗。我们提出了MuLTI,这是一种高度准确高效的视频和语言理解模型,可以实现高效有效的特征融合和对下游任务的快速适应。本文详细介绍基于MuLTI实现高效视频与语言理解。
|
存储 缓存 负载均衡
带你认识DM 共享存储数据库集群
带你认识DM 共享存储数据库集群
588 3
|
安全 API 数据安全/隐私保护
上云时代的“细粒度”访问权限,拿捏!
亿格云自研的SASE一体化办公安全平台——亿格云枢,以身份为驱动的零信任SASE架构,提供稳定高效的网络访问体验,一个平台融合零信任访问、数据防泄漏、终端检测与响应、上网行为管理、合规基线检测等安全能力,实现内外部应用统一管控,确保无论是总部、分支机构、居家办公还是移动办公,都能达到一致的高标准安全防护,360°严密防护敏感数据!
|
机器学习/深度学习 存储 算法
MNIST数据集简介
【7月更文挑战第24天】MNIST数据集简介。
959 2
|
测试技术 决策智能
专业智能体指导让小模型学会数学推理!微调Mistral-7B实现86.81%准确率
【5月更文挑战第13天】Orca-Math研究展示如何用小模型解决小学数学题,通过70亿参数的SLM在GSM8K基准测试上达到86.81%准确率。采用合成数据集和迭代学习技术,包括多智能体协作创建问题集及“偏好学习”优化解决方案。虽优于其他大、小模型,但可能不适用于复杂数学问题,且依赖高质量合成数据集的创建。[论文链接](https://arxiv.org/abs/2402.14830)
415 4
|
缓存 前端开发 安全
前后端分离架构下Java Web开发的挑战与解决方案
前后端分离架构下Java Web开发的挑战与解决方案
478 1