单元测试易错点总结,一件收藏

软件测试之【单元测试、系统测试、集成测试】 单元测试(Unit Testing)是对软件基本组成单元进行的测试,如函数(function或procedure)或一个类的方法(method)。当然这里的基本单元不仅仅指的是一个函数或者方法,有可能对应多个程序文件中的一组函数。单元也具有一些基本的属性。比如:明确的功能、规格定义,明确的与其他部分的接口定义等,可清晰地与同一程序的其他单元化分开来。单元测试的目的在于发现各模块内部可能存在的各种错误,主要是基于白盒测试。(也就是说,在单元测试过程中,用的最多的是白盒测试方法,也可能会有灰盒或者黑盒。单元测试 阅读详情

在这里插入图片描述
好的单元测试应该遵守AIR原则:

单元测试在线上运行时,应该感觉像空气(AIR)一样,并不存在,但在测试质量的保障上,确实非常关键的。

好的单元测试宏观上来说,具备以下的特点:

· 自动化(A: Automatic)

· 独立性(I: Independent)

· 可重复(R: Repeatable)

· 单元测试应该是全自动执行的,并且是非交互式的

· 测试用例通常是被定期执行的,执行过程必须完全自动化才有意义

· 输出结果需要人工检查的测试不是一个好的单元测试

· 单元测试中不准使用System.out来进行人的验证,必须使用assert来验证

· 保持单元测试的独立性

为了保证单元测试稳定可靠且便于维护:

· 单元测试用例之间决不能互相调用

· 不能依赖执行的先后次序

· 单元测试是可以重复执行的,不能受到外界环境的影响

· 单元测试通常会被放到持续集成中,每次代码有check in时单元测试都会被执行

· 如果对外部环境(网络,服务,中间件等)有依赖,容易导致集成机制不可用

· 为了不受外界环境的影响,要求设计代码时就把SUT的依赖改成注入

· 在测试时用spring这样的DI框架注入一个本地(内存)实现或者Mock实现

· 对于单元测试,要保证测试粒度足够小,有助于精确定位问题,单元测试粒度至多是类级别,通常是方法级别的

· 只有测试粒度小才能在出错时尽快定位到出错位置

· 单元测试不负责检查跨类或者跨系统的交互逻辑,那是集成测试的领域

· 核心业务,核心应用,核心模块的增量代码确保单元测试通过

· 新增代码及时补充单元测试

· 如果新增代码影响了原有代码,确保及时修正

· 单元测试代码必须写在如下工程目录中 :src/test/java, 不允许写在业务代码目录下

· 源码构建会跳过此目录,而单元测试框架默认扫描此目录

单元测试的基本目标:

· 语句覆盖率达到70%

· 核心模块语句覆盖率和分支覆盖率都要达到100%

· 在工程规约的应用分层中提到的DAO层 ,Manager层,可重用度高的Service, 都应该进行单元测试

编写单元测试代码要遵守BCDE规则,以确保被测试模块交付质量:

B: Border ,边界值测试, 包括循环边界,特殊取值,特殊时间点,数据顺序等。

C: Correct ,正确的输入,并得到预期的结果。

D: Design ,与设计文档相结合, 来编写单元测试。

E: Error ,强制错误信息输入, 比如非法数据,异常流程,非业务允许输入,并得到预期的结果。

对于数据库的查询,更新,删除等操作:

· 不可以假设数据库里的数据是存在的

· 不可以直接操作数据库将数据插入进去

· 必须使用程序插入或者导入数据的方式来准备数据

· 和数据库相关的单元测试,可以设定自动回滚机制,不给数据库造成脏数据,或者对单元测试产生的数据有明确的前后缀标识

· 比如在RDC内部的单元测试中,使用RDC_UNIT_TEST_的前缀标识数据

· 对于不可测的代码要做必要的重构,使代码变得可测,避免为了达到测试要求而书写不规范的测试代码

· 在设计评审阶段,开发人员需要和测试人员一起确定单元测试范围,单元测试最好覆盖所有测试用例

· 单元测试作为一种质量保障手段,不要在项目发布后补充单元测试用例,需要在项目提测前完成单元测试

为了更方便地进行单元测试,业务代码需要避免以下情况:
  
· 构造方法中做的事情过多
  
· 存在过多的全局变量和静态方法
  
· 存在过多的外部依赖

存在过多的条件语句:
  
多层条件语句建议使用卫语句,策略模式,状态模式重构。

不要对单元测试存在误解:
  
· 认为单元测试是测试的事情

· 认为单元测试代码是多余的.系统整体功能与各个单元部件的测试正常与否是强相关的

· 认为单元测试代码不需要维护.这样会导致一段时间过后,单元测试几乎处于废弃的状态

· 认为单元测试与线上故障没有辩证关系.好的单元测试能最大限度地规避线上故障

在这里插入图片描述

最后: 可以在公众号:伤心的辣条 ! 免费领取一份216页软件测试工程师面试宝典文档资料。以及相对应的视频学习教程免费分享!,其中包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。

如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!喜欢软件测试的小伙伴们,可以加入我们的测试技术交流扣扣群:914172719(里面有各种软件测试资源和技术讨论)


好文推荐

转行面试,跳槽面试,软件测试人员都必须知道的这几种面试技巧!

面试经:一线城市搬砖!又面软件测试岗,5000就知足了…

面试官:工作三年,还来面初级测试?恐怕你的软件测试工程师的头衔要加双引号…

什么样的人适合从事软件测试工作?

那个准点下班的人,比我先升职了…

测试岗反复跳槽,跳着跳着就跳没了…

Prim算法面试高频?我用C语言实现并总结了5个易错点与调试技巧 本文详细解析了Prim算法在C语言实现中的5个常见易错点及调试技巧,帮助开发者在技术面试中避免陷阱。内容涵盖最小生成树的核心思想、边界条件处理、代码健壮性优化,以及如何通过系统化调试方法提升代码质量。特别适合准备数据结构与算法面试的开发者参考。 阅读详情

相关推荐

PMP第1~4章单元测试易错习题和知识点汇总

PMP第1~4章单元测试易错习题和知识点汇总 1.项目经理被分配管理一个新项目,发现一些专家认为,所选择的软件将不会提供预期效 益。项目经理接下来应该怎么做? A:开始项目发起人批推的项目,并与专家一起审查绩效。 B:创建一个商业论证一致的项目章程,并将其提交给发起人的组织批准 C:与专家一起召开会议,重新审查商业论证,并获得使用相应软件的协议。 D:让专家解决这个问题,并为项目团队开始资源规划活动。 答案解析: 由于所选的软件不会提供预期效益,因此需要重新进行商业论证。选项C属于制定项目章程过程的工具之一

zhengzaifeidelushang的博客 760

通用测试技术4——软件测试分类(单元测试,集成测试,系统测试,验收测试,黑盒测试,白盒测试……

目录一. 软件测试分类1.按照开发阶段划分2.按照测试技术划分3.按照代码运行划分4.按照软件特性划分5.其他测试类型二. 软件测试的原则三. 软件测试人员职业发展 一. 软件测试分类 1.按照开发阶段划分 单元测试:又称模块测试,是针对软件设计的最小单位——程序模块进行正确性检验的测试工作(对于软件的一个一个小功能进行测试就是单元测试)。其目的在于检查每个程序单元能否正确实现详细设计说明中的模块功能、性能、接口和设计约束等要求(对应下图),发现各模块内部存在的各种错误。单元测试需要从程序的内部结构出发

qq_41955652的博客 2116

PMP第7章:成本基准单元测试易错习题和知识点汇总

PMP第7章成本基准单元测试易错习题和知识点汇总 1.项目经理被任命管理一个项目,项目发起人已为该项目选定一个外部供应商交付工作范围。但该供应商并没有历史业绩信息。项目经理应如何制定项目预算? () A:向项目发起人提交其他供应商报价 B:分析个别可交付成果的价格,并执行储备分析 C:考虑使用自上而下估算,并执行储备分析 D:询问外部供应商作为参考 答案解析: 题干问的是如何“制定预算”,考的是制定预算的ITTO,选项C描述的是制定预算的工具“专家判断”、“储备分析”。选项A和D不是制定预算的工具和方法;选

zhengzaifeidelushang的博客 828

单元测试过程常见测试用例错误

在实际计算过程中较为常见的错误主要包括以下几点: 1 误解或用错了算符优先级; 2 混合类型运算; 3 变量初值错; 4 精度不够; 5 表达式符号错。 比较判断与控制流常常紧密相关,测试用例还应致力于发现下列错误: 1 不同数据类型的对象之间进行比较; 2 错误地使用逻辑运算符或优先级; 3 因计算机表示的局限性,期望理论上相等而实际上不相等的两个量相等; 4 比较运算或变量出错; 5 循环终止条件或不可能出现; 6 迭代发散时不能退出; 7 错误地修改了循环变量。 测试应

2028

软件测试面试题之易错题

(1)白盒测试:又称功能功能 测试、数据驱动测试和行为测试,是一种从用户观点出发的测试,被测程序为黑盒子, 通过测试来检测每个功能是否能够正常使用。(2)黑盒测试:又称结构测试和逻辑驱动 测试,是知道产品内部工作过程,通过测试来检测产品内部动作是否按照规格说明书 的规定去正常运行。(1)、测试需求分析;(2)动态白盒测试:需要对各个模块功能、模块间的接口、局部数据结构、主要执行路径、 错误处理等方面的测试。(2) 集成测试所测试的对象是模块间的接口,其目的是在找出在模块接口上面,包括整体体系结构上的问题;

m0_37449634的博客 678

testbed单元测试常见例子

testbed单元测试常见例子,包括testbed在使用过程中出现的问题和解决方法

单元测试中常见的错误:5个常见错误

1.单元接口 被测单元的输入,输出参数,他们的个数,属性,顺序上与设计上是否一致。 调用其他单元时,形式参数的个数,属性,顺序 与设计上是否一致 约束条件的变化是否导致单元间的耦合增大 2.局部数据结构(最常见的错误) 不正确或不一致的数据类型说明 错误的初始值或者默认值 变量名的拼写错误 未赋值或未初始化变量 3.独立路径 ...

闫振兴的博客 6946

10X Visium空间转录组学入门:从芯片结构到数据分析全流程解析(附避坑指南)

本文全面解析10X Visium空间转录组学技术,从芯片物理结构、探针化学原理到湿实验全流程操作与避坑指南,并详细介绍了从FASTQ数据到空间可视化的核心分析流程。文章旨在帮助科研人员跨越从理论到实操的鸿沟,掌握从样本准备、文库构建到使用Space Ranger和Seurat进行数据分析与可视化的完整路径,为组织生物学研究提供清晰的实践指引。

weixin_29306011的博客 163

单元测试

单元测试是软件测试的第一步,其详细描述如下:         第一,单元测试的主要任务。         单元测试针对每个程序的模块,主要测试5个方面的问题:模块接口、局部数据结构、边界条件、独立的路径和错误处理;如下图所示: (1)模块接口         这是对模块接口进行的测试,检查进出程序单元的数据流是否正确;模块接口测试必须在任何其它测试之前进行。         模块接口

周兆熊的专栏 5471

深入解析MTK平台hang_detect机制:从原理到实战调试

本文深入解析了MTK平台hang_detect机制的工作原理与实战调试技巧。作为系统健康监测的核心机制,hang_detect通过多层级监控体系检测应用层和内核层异常,结合Kernel_exception等日志信息快速定位问题。文章详细介绍了典型问题案例、调试方法及预防措施,帮助开发者提升MTK平台系统稳定性调试能力。

purple的博客 1004

保姆级教程:STK 11.0 从下载到安装成功(附Matlab互联配置与常见问题解决)

本文提供STK 11.0的完整安装指南,包括下载、安装步骤、Matlab互联配置及常见问题解决方案。详细介绍了系统要求核查、分步安装流程、关键文件替换和许可证配置,确保用户能够顺利完成STK 11.0的部署并实现与Matlab的无缝对接。

weixin_30698297的博客 344

11类C语言易错点,你一定犯过的错

C语言作为一门底层且灵活的编程语言,存在许多容易混淆或出错的知识点。C语言的灵活性是一把双刃剑,需要严格遵循语法规则和内存管理原则。:所有成员共享同一块内存,修改一个会影响其他成员。:结构体成员因对齐规则导致实际大小与预期不同。:声明变量/函数在其他文件中定义。:数组作为函数参数时退化为指针。:混合类型运算可能导致意外结果。:指针和数组的相似性与差异。:释放内存后未置空指针。:宏参数可能被多次求值。:对同一指针多次调用。

极客代码 1043

四自由度SCARA机器人的运动学和动力学MATLAB建模与仿真

本文介绍了四自由度SCARA机器人的运动学和动力学建模,使用MATLAB进行了相应的建模与仿真。通过正运动学和动力学分析,可以了解机器人在不同状态下的运动特性和力学特性。这为后续的控制算法设计和性能优化打下了基础。希望本教程对学习SCARA机器人有帮助。

小蜗牛的珍贵百宝箱 3636

Java编程易错点及经验总结

Java是一种广泛使用的编程语言,但在编写Java代码时,开发人员可能会遇到一些常见的错误。本文将介绍一些Java编程的易错点,并通过实例进行说明,最后总结一些避免这些错误的经验。开发人员可能会在类型转换时出现错误,例如将double转换为int时,小数部分会被截断。通过遵循良好的编程习惯和规范,以及使用适当的工具和技术,可以减少编程错误并提高代码质量。在Java中,空指针异常是一种常见的运行时异常。Java数组索引从0开始,因此开发人员可能会在访问数组时出现越界异常。二、Java编程易错点。

m0_73683523的博客 256

别再浪费HDRI了!D5渲染器环境光设置避坑指南(附天空球调试参数)

本文深入解析D5渲染器中HDRI环境光的高阶调试技巧,揭示90%渲染师常犯的错误认知。通过参数联动黄金法则、特殊材质应对方案及动态场景优化策略,帮助用户精准控制光子能量分布,实现建筑玻璃反射云层过渡等专业级效果。附赠天空球调试参数和商业项目验证案例,助您彻底释放HDRI潜力。

weixin_29216049的博客 494

基于ROS2 Humble和VGR数据集完整部署GADEN气体分散仿真环境及模型替换实践

文章摘要 本文详细介绍了基于ROS2 Humble和VGR数据集部署GADEN气体分散仿真环境的方法。GADEN是一款专为移动机器人嗅觉研究设计的3D仿真框架,能够精确模拟气体扩散过程并集成多种环境传感器。文章从系统配置开始,逐步指导读者完成ROS2 Humble环境的搭建、GADEN框架的编译部署,以及VGR数据集的使用。VGR数据集包含120个基于真实房屋模型的CFD仿真案例,为研究提供高度真实的测试环境。教程涵盖了常见问题的解决方案,并深入探讨了气体扩散模型参数的修改方法,为机器人嗅觉算法的开发和验证

huanghm88的专栏 272

模拟题中的 “边界陷阱”:蓝桥杯近 3 年真题易错点复盘

在蓝桥杯编程竞赛中,“边界陷阱”指处理问题时容易忽略边界条件(如数组索引、循环范围、特殊输入值等),导致程序错误或崩溃。这类错误在近三年真题中频繁出现,尤其在模拟题环节,选手常因细节疏忽而失分。下面我将基于常见题型(如数组操作、搜索算法、动态规划等),逐步复盘易错点,并提供真实可靠的避免策略。复盘结构如下:边界陷阱的定义与重要性 边界陷阱源于程序逻辑未覆盖极端或临界情况,例如:近三年真题常见易错点复盘(基于典型题型) 以下分析结合蓝桥杯高频考点,每个点附示例代码和错误解析。注意:真题细节因保密要求无法公

tggchjhjsjss的博客 488

【系列06】端侧AI:构建与部署高效的本地化AI模型 第5章:模型剪枝(Pruning)

结构化剪枝移除的是模型中的整个结构,比如一个完整的神经元、一个卷积核或一个通道。修剪后的模型权重矩阵仍然是稠密的,因此能够充分利用现代硬件和软件的并行计算优势,从而显著提升推理速度。非结构化剪枝是最细粒度的剪枝方法。对于需要极致压缩但对推理速度要求不高的场景,非结构化剪枝是好的选择。它就像修剪一棵树,通过移除模型中不必要的“枝叶”,让模型变得更精简、更高效,从而适应资源受限的设备。,开发者可以方便地对模型的不同层进行剪枝,并根据需求进行微调,从而在不影响太多性能的前提下,获得一个更轻量、更高效的模型。

学习,输出==》再学习再输出 648

Go语言常见易错点与调试技巧

循环变量在每次迭代中复用,若在闭包或协程中直接引用循环变量,会导致所有协程共享同一变量值。混合使用可能导致预期外的行为,尤其在接口实现时需保持一致。)在函数外不可用,且同一作用域内重复使用会导致遮蔽(shadowing)问题。未使用的局部变量会导致编译错误,而全局变量允许声明但不使用。操作可能触发底层数组重新分配,若未正确处理返回值会导致意外结果。,可能导致资源未及时释放,应改用匿名函数包装或显式管理。在函数退出时执行,但参数会立即求值。数组是值类型,切片是引用类型。,可能引发运行时错误。

2301_80469128的博客 225

DW3000芯片驱动API介绍

详细介绍DW3000驱动程序API的调用流程说明和中断处理程序流程说明

DT程序员的博客 1519

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

hibernate项目易错点总结

  之前写了一个hibernate+struts2的小案例,来巩固学习,现在总结下项目中的易错点: 这里使用了oracle12,上一个表的代码:create table Msguser( id number primary key, name varchar2(64) not null, password varchar2(128) not null );因为之前手动配置过hibernate的配置...

qq_39512671的博客 197

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

我们为什么需要单元测试?

造成的后果也非常严重,团队 oncall 的同学>50%的时间都是在修复各种奇怪的 bug,无法投入到宝贵的精力到架构升级等更长期更重要的项目上。好的代码是容易测的:市场上很早就提出了圈复杂度(Cyclomatic Complexity)的概念,利用来简化一个模块替代结构的复杂程度,其数量上行走独路径的条数,也可理解为覆盖所有的可能情况最少使使用者的测试使用例个数。如果把测试体系的演进类比为人类的进化,那么认为有单测覆盖和有充分的单测覆盖的软件就可以比作爬出丛林的古猿和直立行走的现代人。

OKCRoss的博客 1254

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Java单元测试常见问题与解题思路总结

可以快速验证这些知识点,平台内置的Java环境能实时显示代码运行结果,特别适合用来测试边界条件和异常场景。我实际测试发现,相比本地配置环境,在线编写调试这些单元测试案例效率提升了至少3倍。

DiamondWolf89的博客 393

【软件测试】期末复习易错点

1.软件质量模型 ISO/IEC 9126(6) 25010 (8)指标 2.理解产品质量和使用质量 3.正交试验设计 4.V W模型特点

晚安Alice 319

二级C语言易错点归纳

公共基础知识部分: 1.整数在计算机中存储和运算通常采用的是补码的形式 2.在操作系统中,将文件名转换为文件存储地址的结构是文件目录,文件目录是计算机系统建立的文件索引,是文件名和文件物理位置之间的映射关系。 3.树中结点数=树中所有结点的度之和+1 4.循环队列Q(1:m)初始状态为空,在循环运转起来后,若rear-front>0,则队列中元素为rear-front个,若rear-front<0,则队列中元素个数为rear-from+m个。 5.还是这个循环队列,若rear=front=m,则

肥宅的博客 1872

Java代码重构两万字超全总结(实战案例+易错点+核心原则)

本文是一篇系统性的Java代码重构指南,重点讲解了重构的核心理论、设计原则和十大经典重构手法。文章首先阐述了重构的必要性,指出劣质代码会导致维护成本上升、扩展性差等问题,而重构能提升代码质量。重构必须遵守行为不变性、渐进式优化和结构优先性三大铁律,并在合适的时机进行。文中详细介绍了十大重构手法,包括提取方法、提取变量、替换魔法数字等基础重构,以及多态替代分支、拆分长方法等进阶技巧,每个手法配有正反案例和易错点分析。此外,文章还提供了企业级重构的标准化流程和避坑指南,强调重构应遵循团队规范,避免过度重构和业务

devilnumber的博客 387
上一篇: 自动化测试工具Parasoft和LoadRunner的功能对比
下一篇: 自动化测试框架的好处,看了就会爱上!
字节自动化测试
博客等级 码龄6年 7034粉丝 1810原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值