单元测试基础知识

本人博客文章网址:https://www.peretang.com/basic-knowledge-of-unit-testing/


什么是单元测试

单元测试, 用于验证你的应用程序是否可以按照预期的方式正常运行.

主要通过Mock或者Stub机制来隔绝与其他组件/服务之间的依赖, 控制测试的边界, 从而针对一个个单独的类或方法进行代码检查与测试.

为什么需要单元测试

因为每个单元(类或方法)都是整个系统的基石.

当实施单元测试时, 虽然短期来会对生产效率造成影响, 但是由于实施单元测试后, 项目的质量会得到提升, 从而避免了后期的维护和修改缺陷的花费, 所以从长远的角度来说, 实施单元测试有助于提高项目的生产效率.

并且由于实施单元测试, 问题将会被提前找出, 改变了以往没有单元测试时, 所有问题都集中到项目最后爆发的弊端.

从以上几点我们可以得出: 单元测试=提高质量+提高生产效率+降低开发和测试成本+改善工作流程

单元测试带来的好处

1. 带来更高的测试覆盖率: 单元测试可以很容易地模拟错误条件, 模拟各种有可能的情况, 从而提高代码的稳健性.

2. 提高团队效率: 单元测试可以让你在"功能测试"前提交 高质量/经过测试的代码, 避免在整体功能测试时遇到问题, 从而避免需要重复修改.

3. 辅助监管: 一组成功的通过的单元测试可以确认您的代码能正确运行, 或在你做得不对的时候及时提醒你.

4. 减少调试: 一组良好的单元测试将会减少调试应用程序来找错误的机会与所消耗的时间.

5. 给予重构的信心: 如果没有单元测试的话, 要证明重构是否成功将会是一件非常困难的事情, 单元测试提供了一个安全网, 为你的重构提供信心.

6. 找出需改进的部分: 通过管理单元测试, 可找出被测试的代码是否存在设计上的问题, 是否需要改进代码, 或是否需要重构.

7. 提供完美的代码示例: 单元测试可以完美的提供应用程序中的代码是如何使用的, 提供给其他开发人员一个使用示例.

8. 启用代码覆盖率与其他指标: 提供诸如代码覆盖率, 代码的性能, 应用程序的执行速度等数据.

单元测试隔绝依赖的两种机制

Stub: 用来模拟一个外部的依赖.

Mock: 用来屏蔽一个外部的依赖.

注意: 在单元测试中我们总习惯使用这两种机制来隔绝外部依赖, 但是请避免过度隔绝依赖, 这会导致你的测试完整性降低, 导致当外部的依赖发生改变时, 你的测试代码也没有检测出来.

参考

JUnit in Action, Second Edition

时间: 2024-10-13 19:46:28

单元测试基础知识的相关文章

单元测试基础知识(三)

9.单测工具简介 JUnit Java用的最多的单测框架,使用非常简单,主流IDE基本都集成了JUnit,具体用法就不介绍了,可以花十分钟看看官方文档http://junit.org/junit4/ TestNg 是一款基于junit框架上的加强版单元测试框架,具备更多更强大的功能,能够执行比较复杂的程序代码,具体用法这里也不介绍了,可以花十分钟看看官方文档http://testng.org/doc/documentation-main.html Runner JUnit的Runner是指继承了

单元测试基础知识(二)

6 单元测试设计原则和任务 6.1 三原则 为了提高开发人员的代码质量,编写高质量的单元测试,要遵守3R(Responsible, Reliable, Repeative)原则,具体含义如下: Responsible: 谁开发谁负责测试,在哪里开发就在哪里测试. Reliable: 测试case要可靠,并且是值得信赖的,对于底层的任何改动都要能够及时感知. Repeative: 所有单元测试用例都要能够重复运行.能够重复运行就能够进行回归测试.覆盖率统计等等. 6.2 单元测试任务 一般来说,单

单元测试基础知识(一)

1 背景 测试是开发的一个非常重要的方面,可以在很大程度上决定一个应用程序的命运.良好的测试可以在早期捕获导致应用程序崩溃的问题,但较差的测试往往总是导致故障和停机. 单元测试用于测试各个代码组件,并确保代码按照预期的方式工作.单元测试由开发人员编写和执行.大多数情况下,使用JUnit或TestNG之类的测试框架.测试用例通常是在方法级别写入并通过自动化执行. 单元测试不仅仅用来保证当前代码的正确性,更重要的是用来保证代码修复.改进或重构之后的正确性. 2.单元测试定义: 单元测试又称模块测试,

[Solution] 单元测试系列(1) 基础知识

单元测试不是软件开发的新概念,在1970年就一直存在,屡屡被证明是最理想的方法之一. 本系列将分成3节: 单元测试基础知识 打破依赖,使用模拟对象,桩对象,模拟框架 创建优秀的单元测试 本节索引: 单元测试与集成测试 测试驱动开发 UnitTest和NUnit 第一个单元测试 命名规范 单元测试与集成测试 单元测试几乎总是基于框架来写的,因为框架可以为我们提供统一的API来管理测试. 常用的框架有Unit Test(MS Test),NUnit(开源) 定义 单元测试是一段代码调用另一段代码,随

Spring框架基础知识

本人博客文章网址:https://www.peretang.com/basic-knowledge-of-spring-framework/ Spring框架简介 Spring , 一个开源的框架 , 由Rod Johnson创建. Spring是为了解决企业应用开发的复杂性而创建的 , 可以让简单的JavaBeans/POJO来实现之前只有EJB[1]才能完成的事情. Spring还提供了大量API简化与其他第三方框架的集成. 纵览Spring , 你会发现Spring可以解决非常多的问题 ,

selenium自动化基础知识

什么是自动化测试? 自动化测试分为:功能自动化和性能自动化 功能自动化即使用计算机通过编码的方式来替代手工测试,完成一些重复性比较高的测试,解放测试人员的测试压力.同时,如果系统有不份模块更改后,只要通过修改部分代码的方式来覆盖这部分修改的内容,大大提高测试效率.但是后期代码维护需要一定的成本,如果系统属于表单比较多或者经常修改改动的系统不太适合使用自动化,因为这个维护成本太高:针对于一些相对比较成熟(改动不是很频繁)的系统和跑回归测试的系统很适合进行自动化测试. 性能自动化即使用性能测试工具(

转载 前端基础知识体系 一个新手的学习之路

原帖地址:  转载的原因是我学习前端和php已经4个多月了.看看自己还有那些不足.自己得努力学习,牛人太多.红色是我会的,或者学过的.希望今天把大部分飘红. 一.HTML 标签的分类 标签表示一个元素 按性质划分: Block-Level和Inline-Level 按语义划分: Headings: h1, h2, h3, h4, h5, h6 Paragraphs: p Text Formatting: em, strong, sub, del, ins, small Lists: ul, li

测试基础知识(白盒测试,黑盒测试,测试用例,功能测试等等)

测试基础知识 找实习工作的过程中总结了下测试基础知识,编程能力重要,测试基础同样重要,希望对大家有帮助 软件测试方法:静态测试和动态测试                     白盒测试和黑盒测试                     传统测试与面向对象测试 软件测试过程:单元测试,集成测试,系统测试,验收测试 按测试类型:功能.性能.界面.易用性测试.兼容性测试.安全性测试.安装测试 (单元测试:在编码过程中,对每个小程序单元测试) (集成测试:将单元集成在一起后,可称为组件) 回归测试.冒

软件测试基础知识

软件测试基础知识 1.  软件质量与软件测试 软件测试:在规定条件下对程序进行操作,以发现错误,对软件质量进行评估,包括对软件形成过程的文档.数据以及程序进行测试 软件质量:软件特性的总和,软件满足规定或潜在用户需求的能力 2.  软件测试与质量保证 软件测试只是质量保证工作中的一个环节,软件质量保证与软件测试是软件质量工程的两个不同层面的工作: 质量保证:通过预防.检查与改进来保证软件质量,采用全面质量管理和过程改进的原理来开展质量保证工作,主要关注软件质量的检查与测试,主要着眼于软件开发活动