Mocha单元测试框架介绍–单元测试的基本概念:什么是单元测试、click事件是单元测试吗、各种测试的关系:单元测试、集成测试、功能测试等。

1、单元测试的基本概念

(1)什么是单元测试?

单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证。(百度百科)

经常会提到的敏捷开发,单元测试就是其中必不可少的一步。因此单元测试的需要,尤其是自动化单元测试不可忽略,而且应当作为整个团队的关键责任-而不仅仅是软件开发人员的责任。

  • 单元:相对独立功能模块,类、模块、方法。

  • 又称为模块测试,是针对程序模块(软件设计的最小单位)来进行正确性检验的测试工作。

  • 用来检验程式的内部逻辑,也称为个体测试、结构测试或逻辑驱动测试。

    如果要测试的函数里有Click事件操作怎么办?

(2)click事件是单元测试吗?

click事件是什么,提供给Javascript用来动态修改文档状态。

涉及到 DOM 操作,严格来说这就不是单元测试的范畴了,因为 DOM 并不属于 Javascript 语言本身(或者更严格地说,应该是 ECMAScript 单元测试,而不是 Javascript 单元测试)。

单元测试测试的是代码的内部表现,其着重点是隔离外部依赖以保证测试的“纯粹性”;但是集成测试是通过模拟真实环境的运行来侧面反应你的代码,乃至整个系统的行为表现。

  • Click事件属于DOM(Document Object Model 文档对象模型)操作
  • DOM并不属于Javascript语言本身
  • ECMAScript单元测试,不是Javascript单元测试
  • 集成测试,测试框架selenium+python/java(咱测试部门的自动化测试)

(3)各种测试的关系:单元测试、集成测试、功能测试

三种测试的主要作用

  • 单元测试,单个组件正常工作,开发阶段;用来确保每个组件正常工作 —— 测试组件的 API 。

  • 集成测试,不同组件互相合作,中间阶段;用来确保不同组件互相合作 —— 测试组件的 API, UI, 或者边缘情况(比如数据库I/O,登录等等)。
  • 功能测试,主要测试界面,开发完成。 用来确保整个应用会按照用户期望的那样运行 —— 主要测试界面

三种测试在不同阶段的重要性

  • 开发阶段,主要是程序员反馈。这时单元测试很有用。
  • 在中间阶段,主要是能够在发现问题时立刻停下来。这时各种测试都很有用。
  • 在生产环境,主要是运行功能测试套件,确保部署的时候没有弄坏什么东西。

2、单元测试的重要性

(1)重要性

由于存在浏览器解析环境、用户操作习惯等差异,前端程序的许多问题是无法捕捉或重现的,现在前端程序的测试多是黑盒测试,即靠点击点击点击来寻找程序bug。这种方式既费时费力,又无法保证测试的覆盖面。同时,前端逻辑和交互越来越复杂,和其他编程语言一样,一个函数,一个模块,在修改bug或添加新功能的过程中,很容易就产生新的bug,或使老的bug复活。这种情况下,反复进行黑盒测试,其工作量和测试质量是可想而知的。

  • 反正都要手动测试,所以不如代码自动化。

  • 为了实现依赖接口编程,大型软件项目多人合作时必须要有的
  • 首先,得让你的代码能够测试
  • 增强代码自信

(2)黑盒测试与单元测试

  • 黑盒测试

    • bug无法捕捉、重现
    • 费力,工作量大
    • 覆盖面低
    • 反复出现bug
  • 单元测试

    • 并不是所有的 js 都需要单元测试。中大型项目
    • 并不是所有的 js 都能够单元测试。良好的模块化和解耦

3、为什么选择Mocha

  • 前端库里面,最热门的测试框架。

    效果图

  • GitHub上start数有1万3千多。

  • 近期更新时间,26天前。

    效果图

除了Mocha以外,类似的测试框架还有Jasmine、Karma、Tape等,也很值得学习。

4、Mocha特点

具体可以参考官网里面的说明:

效果图

大致总结如下:

  • 多环境使用:浏览器、Node环境;

  • 既可以测试简单的JavaScript函数,又可以测试异步代码;

  • 可以自动运行所有测试,也可以只运行特定的测试;

  • 使用任意的断言库;

  • 可以通过周期函数来编写初始化代码;

  • 可通过配置文件来实现默认命令行的执行;

  • 方法够用,简单,易入手。

以上文章来自:黄卉 , https://huanghui8030.github.io/mocha/intro.html