单元测试流程,单元测试到底是什么?应该怎么做呢
admin
2023-06-11 12:56:02

是什么?


单元测试(模块测试)是开发者编写的一小段代码,用于检验被测代码的一个很小的、很明确的功能是否正确。

首先要知道,我们写代码有两个目标:

  1. 实现功能需求
  2. 提高代码质量和可维护性

所以代码写完后并不是直接就可以交付,在规范的开发流程中,必须要对代码进行测试。而单元测试是第一步。

一般来说,每一个函数或方法都是一个小的功能单元,一般是以函数/方法为最小单位进行测试,开发者编写完代码后,会有很多个这样的功能单元,在面向对象思想中,一个类中可以有很多个方法,当代码写完后,其逻辑性、正确性、运行结果、执行效率等等都需要进行测试才能知道编写的代码是否符合要求。

  • 在面向过程中,需要对每个函数进行测试。

  • 在面向对象中,一般要对应着被测试的类建立一个单元测试类,在测试类中编写测试方法对被测类的方法进行测试。

单元测试是测试编写的代码程序的正确性的,因此应该要程序员自己来完成,因为程序员最懂自己写的代码逻辑是怎么样的,单元测试执行通过后,才可以交付,交付时测试代码要同功能代码一并提交。

怎么做?


  1. 要编写测试文档,为每个被测代码函数/方法写好测试用例,根据测试用例来进行测试,测试用例要覆盖每一个条件分支,要保证输入的数据的多样性,每个循环、if的条件都要覆盖,代码块内部的每一行代码都要确保能够在特定输入条件下能够执行。

  2. 针对被测试的单元(功能函数或者类方法),建立对应的测试单元(函数或测试类)

  3. 编写测试方法,要确保根据测试用例,调用被测函数/方法执行,然后根据测试用例来判断执行结果是否符合预期。

单元测试一般涉及的都是白盒测试,是以人能够想到的可能的正确的结果或者错误的结果进行预期,在给定的输入条件下,输出都符合编写人对功能单元的预期(有错误结果的预期,也有正确结果的预期),就表示测试通过。

测试过程中,可以有很多的方法可以引入进来,提高测试效率:

  • 利用合适的测试框架/套件;

  • 使用Mock框架,通过模拟对象,来减少被测试类所需的依赖;

  • 使用代码覆盖率测试工具,它能够检测测试用例的分支覆盖情况,可以减少人为因素漏掉某个分支;

  • 编写完功能代码后,立即编写单元测试,不要拖着后面去做;

同时还有其他可以提高测试质量/效率的几个点:

  • 尽可能将测试数据外部化,因为测试用例提供的输入是固定性的,硬编码到测试用例中,会造成一些限制,比如在更改测试输入时,需要重新修改测试代码,带来返工,将输入输出数据放在外部文件来存储,可以运行测试时动态改变测试用例。

  • 自动化测试生成,很多大部分的功能测试用例的数据都是有迹可循的,有一些工具能够自动生成多种多样的测试用例,省去了人工的麻烦,同时,不光测试用例可以自动生成,甚至测试代码也可以自动生成,自动生成测试代码,然后再交给DevOps进行自动化测试执行(包括回归测试)。自动化测试生成也是目前我在研究的方向。

  • 对单元测试进行评估分析,需要对测试代码的质量进行监督和把握,不光要保证功能代码的质量,也要保证测试代码的质量,有很多的评价的指标数据,其中代码分支覆盖率就是一个非常重要的评估指标。

单元测试流程,单元测试到底是什么?应该怎么做呢图1

相关内容

热门资讯

苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...