单元测试简介和Junit的使用介绍
单元测试简介和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的使用介绍的更多相关文章
- 单元测试系列:JUnit单元测试规范
更多原创测试技术文章同步更新到微信公众号 :三国测,敬请扫码关注个人的微信号,感谢! 原文链接:http://www.cnblogs.com/zishi/p/6762032.html Junit测试代 ...
- 【嵌入式开发】裸机引导操作系统和ARM 内存操作 ( DRAM SRAM 类型 简介 | Logical Bank | 内存地址空间介绍 | 内存芯片连接方式 | 内存初始化 | 汇编代码示例 )
[嵌入式开发]ARM 内存操作 ( DRAM SRAM 类型 简介 | Logical Bank | 内存地址空间介绍 | 内存芯片连接方式 | 内存初始化 | 汇编代码示例 ) 一. 内存 ...
- Spring4- 01 - Spring框架简介及官方压缩包目录介绍- Spring IoC 的概念 - Spring hello world环境搭建
一. Spring 框架简介及官方压缩包目录介绍 主要发明者:Rod Johnson 轮子理论推崇者: 2.1 轮子理论:不用重复发明轮子. 2.2 IT 行业:直接使用写好的代码. Spring 框 ...
- Python单元测试简介及Django中的单元测试
Python单元测试简介及Django中的单元测试 单元测试负责对最小的软件设计单元(模块)进行验证,unittest是Python自带的单元测试框架. 单元测试与功能测试都是日常开发中必不可少的部分 ...
- Java单元测试 Junit TestNG之介绍
Junit是Java中默认的单元测试框架,通过注解的方式去识别测试方法 JUnit4 JUnit4通过注解的方式来识别测试方法.目前支持的主要注解有: @BeforeClass 全局只会执行一次,而且 ...
- .net持续集成单元测试篇之单元测试简介以及在visual studio中配置Nunit使用环境
系列目录 单元测试及测试驱动开发简介 什么是单元测试 单元测试是一段自动化的代码,这段代码调用被测试的工作单元,之后对这个单元的单个最终结果的某些假设进行检验.单元测试几乎都是用单元测试框架编写的.单 ...
- junit测试的介绍和应用
目录 1.junit测试简介 2.运行环境 3.测试过程 1.junit测试简介 JUnit是一个Java语言的单元测试框架.它由Kent Beck和Erich Gamma建立,逐渐成为源于Kent ...
- TDD学习笔记【二】---单元测试简介
大纲 Testing 的第一个切入点:单元测试. 本篇文章将针对单元测试进行简介,主要内容包含了5W: Why What Where Who When 而How 的部分,属于实现部分,将于下一篇文章介 ...
- Java之单元测试工具(Junit)
Junit是Java单元测试框架,一般Eclipse里面会集成这个Junit4测试工具 既然是测试工具,虽然开发用得比较多,但作为测试人员也需要具备会Junit测试的思想,况且技多不压身 这里简单介绍 ...
随机推荐
- 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 ...
- js 取任意两个数之间的随机整数
function getRandomInt(min, max) { min = Math.ceil(min); max = Math.floor(max); return Math.floor(Mat ...
- NLTK下载语言素材中碰到的certificate verify failed (_ssl.c:749)
NLTK是什么? NLTK是一个开源的项目,包含:Python模块,数据集和教程,用于NLP的研究和开发. NLTK由Steven Bird和Edward Loper在宾夕法尼亚大学计算机和信息科学系 ...
- linux TCP Fast Open开启和测试
linux上要开启TCP Fast Open,内核版本至少为3.7.0, 且需要设置 /proc/sys/net/ipv4/tcp_fastopen 为3. 开启后,如果有连接进来,使用如下命令查看: ...
- canvas 绘制文本
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- struts2逻辑视图类型汇总与解释(转)
在struts2框架中,当action处理完之后,就应该向用户返回结果信息,该任务被分为两部分:结果类型和结果本身. 结果类型提供了返回给用户信息类型的实现细节.结果类型通常在Struts2中就已预定 ...
- apt-get指令的autoclean,clean,autoremove的区别
apt-get使用各用于处理apt包的公用程序集,我们可以用它来在线安装.卸载和升级软件包等,下面列出一些apt-get包含的常用的一些工具: 工具 说明 install 其后加上软件包名,用于安装一 ...
- JAVA如何以追加的方式向文件中写入信息?
以FileWriter类为例: FileWriter的构造方法中有一个方法是:FileWriter(String fileName, boolean append) ,其中第二个参数决定了写文件的方 ...
- verilog中function的使用
函数的功能和任务的功能类似,但二者还存在很大的不同.在 Verilog HDL 语法中也存在函数的定义和调用. 1.函数的定义 函数通过关键词 function 和 endfunction 定义,不允 ...
- css控制div下图片自适应解决方法:图片不超过最大宽度
我们(特别是像我一样的菜鸟)经常会遇到一个问题——图片自适应.这个问题是很普遍的.在文章区,在论坛,可以这么说:哪儿需要上传图片,哪儿就存在这个问题,而论坛上也不时有人询问.为什么?原因很简单,我们不 ...