单元测试基础知识

aaron-007 aaron-007     2023-03-09     727

关键词:

1 背景

测试是开发的一个非常重要的方面,可以在很大程度上决定一个应用程序的命运。良好的测试可以在早期捕获导致应用程序崩溃的问题,但较差的测试往往总是导致故障和停机。

 

单元测试用于测试各个代码组件,并确保代码按照预期的方式工作。单元测试由开发人员编写和执行。大多数情况下,使用JUnit或TestNG之类的测试框架。测试用例通常是在方法级别写入并通过自动化执行。

 

单元测试不仅仅用来保证当前代码的正确性,更重要的是用来保证代码修复、改进或重构之后的正确性。

 

2.单元测试定义:

单元测试又称模块测试,是针对程序模块(软件设计的最小单位)来进行正确性校验的测试工作,程序模块在面向对象编程中一般指方法。

 

 

3.为什么需要进行单元测试

编写单元测试代码并不是一件容易的事情,那为什么还需要去花费时间和精力来编写单元测试呢?原因如下:

  • 减少Bug:如今的项目大多都是多人分模块协同开发,当各个模块集成时再去发现问题,定位和沟通成本是非常高的,通过单元测试来保证各个模块的正确性,可以尽早的发现问题,而不时等到集成时再发现问题。
  • 放心重构:如今持续型的项目越来越多,代码不断的在变化和重构,通过单元测试,开发可以放心的修改重构代码,减少改代码时心理负担,提高重构的成功率。
  • 改进设计:越是良好设计的代码,一般越容易编写单元测试,多个小的方法的单测一般比大方法(成百上千行代码)的单测代码要简单、要稳定,一个依赖接口的类一般比依赖具体实现的类容易测试,所以在编写单测的过程中,如果发现单测代码非常难写,一般表明被测试的代码包含了太多的依赖或职责,需要反思代码的合理性,进而推进代码设计的优化,形成正向循环。

就个人而言,感受最深的就是,有了单测后重构代码起来心里压力小多了,其次是通过单测减少了很多低级错误。

 

4.单元测试带来的一些问题

单元测试在解决了一些问题的同时也容易产生一些问题

  • 学习成本:单元测试框架的学习需要一定的成本
  • 开发成本:项目初期,往往最重要的是快速上线,时间非常紧张,这时容易出现单测代码难以编写,代码经常变化导致单测代码也需要更着同步变化,一定程度上会拖慢项目的进度,可以在项目中后期再补上重要部分的单测代码
  • 推广实行:项目中推广单测有一定成本,单纯为了覆盖率的单测是没什么意义的,所以在项目中推广单测时,要考虑到项目成员是否接受单测,能否编写出较好的单测代码,否则单测容易流于形式,达不到理想的效果。

 

个人经验,在项目中要施行单测,需要做到以下几点:

  • 说服领导,给出合理的考核指标(如单测覆盖率等要求,需要结合现状给出合理的指标)
  • 提供单测指标统计的大盘,显示项目单测指标,督促大家完成指标
  • 对项目结构配置等进行调整,提供单测工具类,基础类,让单测易编写,能运行,速度快
  • 对项目组成员进行单测编写方法分享,使成员熟悉单测技术
  • 提供单测代码示例,示例要够全面够清晰明了,方便成员参考
  • 定时检查成员单测代码,提供改进意见,防止流于形式

 

5 单元测试用例相关概念

5.1正面测试(Positive Testing)

测试被测对象的正确功能实现无误,即正常流程功能。往往需要根据设计说明进行用例导出,严格按照设计说明编写即可,用例划分注意等价类区分等方法。

 

5.2负面测试(Negative Testing)

测试被测对象的异常功能实现无误,多在异常流程,异常数据中体现。该部分测试需要对被测对象进行错误发散,常依赖于边界值区分等方法。

 

5.3分支测试

使用流程图,明确可能出现的每条分支,制造响应的数据进行覆盖,实现对被测对象的测试。这个过程对于分支可以进行响应的简化,可以穿插等价类等方法去除同类分支。

 

5.4 边界值分析法

这种方法更偏向于黑盒测试用例设计中使用,对被测输入进行边界分析,从各个角度都会有边界值,例如程序内部依赖之间,已经有一些边界存在,在程序集成展示后,也会有新的边界出现,在设计的时候,需要注意这些细节。例如我们可输入范围是3-6,和输入类型为浮点数。那么边界值为7-8之间

单元测试===单元测试用例基础!

#coding:utf-8importunittestdefdiv(a,b):   returna/b   #1/2=1classMyfristTestCase(unittest.TestCase):   defsetUp(self):      & 查看详情

数据库基础单元测试策略:在单元测试和测试数据之间截断表

】数据库基础单元测试策略:在单元测试和测试数据之间截断表【英文标题】:Databasebaseunittestingstrategy:truncatingtablesbetweenunittests&testdata【发布时间】:2012-02-0210:28:44【问题描述】:我正在尝试使用JUnit来测试一些数据库代码... 查看详情

单元测试基础知识

6单元测试设计原则和任务6.1三原则为了提高开发人员的代码质量,编写高质量的单元测试,要遵守3R(Responsible,Reliable,Repeative)原则,具体含义如下: Responsible:谁开发谁负责测试,在哪里开发就在哪里测试。 Reliable:测试... 查看详情

单元测试基础(代码片段)

为什么要有这篇文章呢?个人在不断实践中越发觉得,单元测试对于代码质量的保障真的太有意义了,至少能体现在如下两个方面:①让你写出更好的代码,可测试的代码一定是优雅的代码(为了可测试,你必须要解耦,必须要... 查看详情

单元测试-nunit基础

单元测试作为提高代码和软件质量的有效途径,其重要性和益处自不必多说,虽然我没有实践过TDD之类,但坚信单元测试的积极作用。作为一种开发方法,单元测试早在上世纪70年代就已经在Smalltalk语言被运用了,这么多年来,... 查看详情

10th知识点学习:单元测试

...内容:书中是以案例的形式引入的介绍,具体讲述什么是单元测试,即程序员小飞进行练习单元测试,经过一系列的代码更改之后,终于成功实现。通过事后小飞和阿超的探讨作者告诉我们如何做单元测试以及单元测试的作用—... 查看详情

自动化测试-细聊单元测试框架基础

...天的文章会从以下几个方面来细说:测试的分层体系单元测试的概念单元测试的框架咱就不废话了,开始吧。一、测试分层体系主流的测试分层体系可以分为:单元测试、接口测试、界面测试。单元测试粒度最细࿰... 查看详情

学习软件测试c单元测试测试基本流程html基础

目录c单元测试cunitgcovpython代码bat代码cunit测试代码(拿官方历程改了下)正式开始学习测试软件测试的原则软件产品质量模型(ISO/IEC9126)软件质量模型保证(SQA)软件测试基本流程HTML_01_html.html效果CSS样式_02_CSS.html_... 查看详情

java基础学习总结(201)——有效提高单元测试的5个编写技巧实践

一、什么是单元测试“在计算机编程中,单元测试又称为模块测试,是针对程序模块来进行正确性检验的测试工作。程序单元是应用的最小可测试部件。在过程化编程中,一个单元就是单个程序、函数、过程等;对于面向对象编... 查看详情

[java-基础]单元测试junit

Junit是一个用于单元测试的小框架从@Test开始在某个测试程序的方法名上加上注解@Test,不需要main函数,可以直接点击测试方法上的RunAs--->JunitTest,表示运行该测试程序,其它的不运行。需要注意的是方法权限只能是public,不... 查看详情

基础-junit单元测试_反射_注解(代码片段)

一、Junit单元测试1.1测试分类:黑盒测试:不需要写代码,给输入值,看程序是否能够输出期望的值。白盒测试:需要写代码的。关注程序具体的执行流程。1.2Junit使用(白盒测试)使用步骤:定义一个测试类(测试用例)测试类名... 查看详情

软件测试基础理论体系学习4-单元测试的目的?概念是什么?过程是什么?

4-单元测试的目的?概念是什么?过程是什么?1单元测试目的1.1单元测试的错误认识1.2单元测试的重要性1.2.1时间方面1.2.2测试效果1.2.3测试成本1.2.4产品质量1.3单元测试的优点1.3.1它是一种验证行为1.3.2它是一种设计行... 查看详情

浅谈单元测试(代码片段)

单元测试或是最好的项目文档。很早之前在学习使用Java做测试的时候,得到过一个神秘大佬的帮助,在一起聊过单元测试,基本结论就是:单元测试大概率没啥鸟用。众所周知,自动化测试相比手动测试一个比较明显的特点就... 查看详情

java基础学习总结(201)——有效提高单元测试的5个编写技巧实践

一、什么是单元测试“在计算机编程中,单元测试又称为模块测试,是针对程序模块来进行正确性检验的测试工作。程序单元是应用的最小可测试部件。在过程化编程中,一个单元就是单个程序、函数、过程等;对于面向对象编... 查看详情

java基础学习总结(201)——有效提高单元测试的5个编写技巧实践

一、什么是单元测试“在计算机编程中,单元测试又称为模块测试,是针对程序模块来进行正确性检验的测试工作。程序单元是应用的最小可测试部件。在过程化编程中,一个单元就是单个程序、函数、过程等;对于面向对象编... 查看详情

单元测试的艺术-入门篇

前记:前段时间团队在推行单元测试,对于分配的测试任务也很快的完成,但觉得自己对单元测试的理解也不够透彻,所以就买了《单元测试的艺术》这本书来寻找一些我想要的答案。这本书并不是手把手教你写单元测试代码的... 查看详情

go-单元测试详解与代码(代码片段)

目录概述Go的单元测试基础知识快速入门进阶单个文件的测试单个函数的测试单元测试覆盖率参考概述常言道,不会测试的程序猿不是好的产品经理!!!现在越来越多测试和运维的工作也需要研发来做了,本... 查看详情

网易云团队前端单元测试技术方案总结,测试人员必备知识(代码片段)

单元测试的技术方案很多,不同工具之间有互相协同,也存在功能重合,给我们搭配测试方案带来不小的困难,而且随着ES6,TypeScript的出现,单元测试又增加了很多其他步骤,完整配置起来往往需要很大的... 查看详情