单元测试简介和Junit的使用介绍


Junit是Java开发中用来支持单元测试的一个软件,这里对它的基本情况、使用方法等做简单的介绍。

提纲

1、软件测试

2、单元测试概述

3、单元测试的具体做法

4、Junit概述

5、Junit使用方法介绍

6、测试驱动的开发模式

1、软件测试概述

==============

在软件开发中,开发人员做完软件的代码之后,就要交付给测试人员对开发出来的功能做详细的测试,以保证质量。

在软件生产中的测试一般包括:单元测试(Unit Test)、模块功能测试(Functional Test)、多个模块的集成测试(System Integration Test)、整个系统的系统测试(System Test)、用户验收测试(User Acceptance Test)。

这个五个测试环节中,单元测试是一种白盒测试方法,一般是由开发人员自己对自己完成的功能做单元测试,测试的对象是单个软件模块内部的类,同一个软件模块,是由多个类组成的,单元测试就是写测试类(Test Class)来对每一个类进行测试。

单元测试的想法挺好的,可是实践中,中国的开发人员一般是没有时间写单元测试的,包括著名的百度、阿里巴巴的工程师,都亲口说过,根本没时间写单元测试,也不会有人在乎单元测试。因为每天的时间都很紧张,连业务功能都实现不完,还写单元测试?

模块功能测试,指的是对一个软件模块的外部功能进行测试,就是把这个模块当成一个黑箱,对它的功能进行测试。这种测试一般肯定最先是由模块的开发人员自己做的,然后请专职测试人员来做。

集成测试,指的是相关之间有密切关系的多个模块联合起来进行测试,主要是为了测试多个模块之间的交互和协同,业界也有人把这种测试叫联调。这种一般是先由多个模块的开发负责人一起测试,然后请专职测试人员再测。

系统测试,指的是对一个软件系统的全部模块集成在一起,把整个系统当成一个黑箱来测试它的外部行为,这也是一种集成测试。一般由专业的测试人员完成。

UAT测试,指的是让用户用这个软件,以达到测试验收软件的目的。在软件公司也可以看到alpha/beta测试,就是这类测试,这种测试一般由用户来完成,或者由公司请来的用户在真实场景下使用软件,在互联网业这种测试就是软件上线了请用户来使用了。

2、单元测试概述

==============

这里对单元测试进行介绍。

单元测试是什么呢?

单元测试是开发人员在开发过程种对自己开发的类或者函数(总之,是软件中最小的单元)进行的测试,这种测试是边开发正式代码,边开发测试代码,边测试的。

它是开发者编写的一小段代码,用于检测被测代码的一个很小的、很明确的功能是否正确,这里的很小的、很明确的功能指的就是最小的软件单元,在面向对象中是类,在面向过程中是函数。

通常而言,一个单元测试是用于判断某个特定条件(或者场景)下某个特定函数的行为。

举例说明一下。比如,当你把一个很大的值放入一个有序list中去的时候,你想确认一下该值确实出现在了list的尾部。又比如,你从一个长字符串中删除了匹配某种模式的字符之后,你想确认字符串中确实不再包含这些字符了。对这些细小部分的测试就是单元测试。

单元测试的好处在哪里呢?

单元测试可以让开发人员更高效地写出质量更好地程序。

单元测试是由程序员自己来完成,并且最终受益地也是程序员自己,因为单元测试关注地是软件内部地每一个小功能点是否正确,软件内部地功能点是否正确是由程序员来保证的。当然只有软件内部地每个功能点都正确了,软件地外部行为才可能正确。

单元测试的设计目的并不是为了获得一些更好地整体质量,而是为了获得软件模块内部的质量而进行的测试。也就说说,它并不是一个针对最终用户、项目经理和开发组长的工具(他们关注地是软件模块或者整个软件外部地行为),而是正对软件模块的具体开发人员的一个工具。

3、单元测试的具体做法

===================

单元测试的具体做法的一般性概述,进而引出在Java开发领域的单元测试方法。

4、Junit概述

=============

JUnit是一个Java语言的单元测试框架。它由Kent Beck和Erich Gamma建立。通过多年的发展,逐渐成为源于Kent Beck的xUnit家族中最为成功的一个测试框架。

多数Java的开发环境都已经集成了JUnit作为单元测试的工具。

目前最新的版本是Junit5(截至2018年9月)。

5、Junit使用方法介绍

=================

6、测试驱动的开发模式

====================

单元测试能很好的保证软件内部的类和函数的正确性,从而最终很好地保证了软件的整体质量,因此,它得到了开发人员、开发组长、项目经理等人员的一致认可。

于是有人提议把它做到极致(这就是极限编程的思想,就是说,如果一个做法是很好的,那么我们就把它发挥到极致,xp,extreme programming),就在这样,测试驱动的开发模式就产生了。

测试驱动的开发模式,英文全称Test-Driven Development,简称TDD。它要求在编写某个功能的代码之前先编写测试代码,也就是针对这个软件单元的单元测试代码,然后才开始编写使测试能够通过的功能代码,通过测试来推动整个开发的进行。

测试驱动开发编写的测试一般是单元测试,而且由开发者编写,针对单个模块容易做到各个情景的测试覆盖。

参考资料

1、https://www.cnblogs.com/ysocean/p/6889906.html

2、《单元测试之道Java版,使用Junit》

3、https://baike.baidu.com/item/%E6%B5%8B%E8%AF%95%E9%A9%B1%E5%8A%A8%E5%BC%80%E5%8F%91/3328831?fr=aladdin

4、https://blog.csdn.net/xiyanggudao/article/details/76315271

5、https://www.cnblogs.com/ysocean/p/6889906.html,通过这个详细了解Junit的试用方法。

单元测试简介和Junit的使用介绍的更多相关文章

  1. 单元测试系列:JUnit单元测试规范

    更多原创测试技术文章同步更新到微信公众号 :三国测,敬请扫码关注个人的微信号,感谢! 原文链接:http://www.cnblogs.com/zishi/p/6762032.html Junit测试代 ...

  2. 【嵌入式开发】裸机引导操作系统和ARM 内存操作 ( DRAM SRAM 类型 简介 | Logical Bank | 内存地址空间介绍 | 内存芯片连接方式 | 内存初始化 | 汇编代码示例 )

    [嵌入式开发]ARM 内存操作 ( DRAM SRAM 类型 简介 | Logical Bank | 内存地址空间介绍 | 内存芯片连接方式 | 内存初始化 | 汇编代码示例 )     一. 内存 ...

  3. Spring4- 01 - Spring框架简介及官方压缩包目录介绍- Spring IoC 的概念 - Spring hello world环境搭建

    一. Spring 框架简介及官方压缩包目录介绍 主要发明者:Rod Johnson 轮子理论推崇者: 2.1 轮子理论:不用重复发明轮子. 2.2 IT 行业:直接使用写好的代码. Spring 框 ...

  4. Python单元测试简介及Django中的单元测试

    Python单元测试简介及Django中的单元测试 单元测试负责对最小的软件设计单元(模块)进行验证,unittest是Python自带的单元测试框架. 单元测试与功能测试都是日常开发中必不可少的部分 ...

  5. Java单元测试 Junit TestNG之介绍

    Junit是Java中默认的单元测试框架,通过注解的方式去识别测试方法 JUnit4 JUnit4通过注解的方式来识别测试方法.目前支持的主要注解有: @BeforeClass 全局只会执行一次,而且 ...

  6. .net持续集成单元测试篇之单元测试简介以及在visual studio中配置Nunit使用环境

    系列目录 单元测试及测试驱动开发简介 什么是单元测试 单元测试是一段自动化的代码,这段代码调用被测试的工作单元,之后对这个单元的单个最终结果的某些假设进行检验.单元测试几乎都是用单元测试框架编写的.单 ...

  7. junit测试的介绍和应用

    目录 1.junit测试简介 2.运行环境 3.测试过程 1.junit测试简介 JUnit是一个Java语言的单元测试框架.它由Kent Beck和Erich Gamma建立,逐渐成为源于Kent ...

  8. TDD学习笔记【二】---单元测试简介

    大纲 Testing 的第一个切入点:单元测试. 本篇文章将针对单元测试进行简介,主要内容包含了5W: Why What Where Who When 而How 的部分,属于实现部分,将于下一篇文章介 ...

  9. Java之单元测试工具(Junit)

    Junit是Java单元测试框架,一般Eclipse里面会集成这个Junit4测试工具 既然是测试工具,虽然开发用得比较多,但作为测试人员也需要具备会Junit测试的思想,况且技多不压身 这里简单介绍 ...

随机推荐

  1. New Concept English three (36)

    21 54 We are less credulous than we used to be. In the nineteenth century, a novelist would bring hi ...

  2. js 取任意两个数之间的随机整数

    function getRandomInt(min, max) { min = Math.ceil(min); max = Math.floor(max); return Math.floor(Mat ...

  3. NLTK下载语言素材中碰到的certificate verify failed (_ssl.c:749)

    NLTK是什么? NLTK是一个开源的项目,包含:Python模块,数据集和教程,用于NLP的研究和开发. NLTK由Steven Bird和Edward Loper在宾夕法尼亚大学计算机和信息科学系 ...

  4. linux TCP Fast Open开启和测试

    linux上要开启TCP Fast Open,内核版本至少为3.7.0, 且需要设置 /proc/sys/net/ipv4/tcp_fastopen 为3. 开启后,如果有连接进来,使用如下命令查看: ...

  5. canvas 绘制文本

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  6. struts2逻辑视图类型汇总与解释(转)

    在struts2框架中,当action处理完之后,就应该向用户返回结果信息,该任务被分为两部分:结果类型和结果本身. 结果类型提供了返回给用户信息类型的实现细节.结果类型通常在Struts2中就已预定 ...

  7. apt-get指令的autoclean,clean,autoremove的区别

    apt-get使用各用于处理apt包的公用程序集,我们可以用它来在线安装.卸载和升级软件包等,下面列出一些apt-get包含的常用的一些工具: 工具 说明 install 其后加上软件包名,用于安装一 ...

  8. JAVA如何以追加的方式向文件中写入信息?

    以FileWriter类为例: FileWriter的构造方法中有一个方法是:FileWriter(String fileName, boolean append)  ,其中第二个参数决定了写文件的方 ...

  9. verilog中function的使用

    函数的功能和任务的功能类似,但二者还存在很大的不同.在 Verilog HDL 语法中也存在函数的定义和调用. 1.函数的定义 函数通过关键词 function 和 endfunction 定义,不允 ...

  10. css控制div下图片自适应解决方法:图片不超过最大宽度

    我们(特别是像我一样的菜鸟)经常会遇到一个问题——图片自适应.这个问题是很普遍的.在文章区,在论坛,可以这么说:哪儿需要上传图片,哪儿就存在这个问题,而论坛上也不时有人询问.为什么?原因很简单,我们不 ...