测试你的前端代码 - part1(引见篇)

《测试你的前端代码 - part1(引见篇)》

本文作者:Gil Tayar
编译:胡子大哈

翻译原文:http://huziketang.com/blog/posts/detail?postId=58d3dcb87413fc2e8240855a
英文衔接:Testing Your Frontend Code : Part I (Introduction)

转载请申明出处,保存原文链接以及作者信息

近来我的一个方才打仗前端开辟的朋侪,问我怎样测试他的 app。当时是电话交换的,人人都晓得测试是一个冗杂的学问系统,不能够经由过程电话说清楚,不过我也跟他保证了要给他发一份“测试指引”。

然后我经由过程 Google 搜刮测试相干的主题,找到了异常多的文章,然则我关于这些文章所引见的深度并不惬意。别的关于一个前端新手来讲,我找不到一个综合性的教程能让前端小白逐渐深切地举行运用测试。我想要找的是理论连系实践的前端测试教程。

所以我决议本身写一个前端测试系列。这里就是这一系列的最先。

什么是测试?

我把测试定义成:是一段检测你的运用代码(也叫“临盆代码”)是不是按预期实行的代码。有些人称之为 TDD(Test-Driven Development 或许 Test-Driven Design),然则 TDD 是一种特定的测试要领,它先写测试,然后用测试来驱动产物的设想和完成。

坦率地讲,我以为在临盆代码完成之前写测试代码,照样在完成以后写测试代码并不主要。只需你写了充足多的测试样例测试你的临盆代码,直到你对你的临盆代码已充足有自信心就好。然则有很多人(包括我所尊重的人)以为递次很主要,这里我持本身的保存意见。

一个不好的现象是如今工业界已把测试和 TDD 的看法殽杂在一同,如许关于写临盆代码的开辟者所写的测试代码,就没有一个规范术语来称谓了。我倾向于叫它开辟测试,或许一般测试。假如你对 “TDD vs 一般测试” 的议论感兴趣,能够看这里,不过我发起你把我这个系列博文看完再介入议论。

为何测试?

我不盘算在这里议论为何要举行测试。假如你不想写测试,那你就不写。不过你须要手动地一遍又一各处测试你的 web 运用,这简直糟透了。那些憎恶的 bug,会不断地过来讨扰你。把如许的代码布置到临盆环境,将是你恶梦的最先。

所以,我不盘算深切议论为何要举行测试。

测试的范例

别的一个新手进修测试很轻易有疑问的处所是:有很多种差别的测试范例。假如你提早做了点作业的话,你能够听说过(这里列出部份测试要领列表):单元测试、验收测试、集成测试、端到端测试、组件测试和效劳测试。

更糟的是,当谈到了上面某一个详细的测试时,差别的人又有差别的明白。

这里再次申明我的看法,我以为叫什么名字都不主要,由于种种测试的定义都不难明白。一切的测试都散布于“测试光谱”中,光谱的一头是单元测试,另一头是端到端测试(背面一致称为 E2E 测试)。

测试光谱

光谱的一端——单元测试

望文生义,代码以单元为单元举行测试。那末什么是单元呢?这就差别的编程言语的定义不一样了。它能够是一个函数、一个模块、一个包或许一个类,以至是一个对象(比方 JavaScript 和 Scala 言语)。在 JavaScript 中,一般是以类或许模块作为一个单元。

以单元举行测试很主要的一点是其测试是自力的。关于一些场景这类测试异常合适,比方算法、某些功能性函数(如字符串中有若干字符)和包括一组考证性功能的类等场景。

这些场景下举行自力的单元测试异常轻易,由于他们不依赖于其他单元。然则假定一个单元依赖于其他单元怎么办?能够有两种做法:两个单元一同测试,或许 mock 另一个单元。

什么是 mock?下面我们举例来诠释:

假定一个模块是一个单元,模块中包括了 writeSumToFile 这个函数,函数吸收两个数字参数,并把他们的和写入文件中。

这里注重,这个模块本身并没有做写文件操纵。写文件操纵是在另一个单元 fileSumWriter 中做的。

那末为了测试第一个单元,我们既能够传一个实在的 fileSumWriter 进来,也能够模仿(mock)一个写文件操纵(并不必真的完成写操纵)。

假如我们通报一个 mock 到这个函数,那末这个单元测试,固然能够叫做“单元测试”,由于没有涉及到其他单元。然则假如两个单元一同测试,那末能够就有人说你这并非单元测试了。

照样那句话,我不关心这究竟应当叫什么。

光谱的另一端——端到端测试

上面引见了以一个单元为单元的测试。如今引见端到端测试——测试悉数运用。测试过程当中,运用的一切设置会设置成和临盆环境一样,运用中的一切都会被测试到。

这两个是“测试光谱”的两头。上面提到的其他测试要领,都是散布在这两个极度中心。他们的基本思路是逐渐扩展测试局限,被测试的代码越来越多,mock 的代码越来越少。

很多人把这两个极度测试中心的部份叫做“集成测试”,然则关于 TDD 崇尚者们来讲,集成测试是另一个完全差别的看法。在本系列文章中我将会运用这个看法隐约的名字——集成测试,详细说来就是:测试多个单元,但不是测试悉数单元。

结语

那末你的测试究竟在什么测试层级上呢?很多人说有一个测试金字塔——大批的单元测试,少部份的集成测试,异常小部份的端到端测试。然则我不想议论这些,这个系列文章我愿望议论的是怎样对前端代码举行单元测试、集成测试和端到端测试。

接下来的文章,第一篇将会引见前端单元测试,第二篇会引见端到端测试,第三篇会引见集成测试。

应这个系列的博文须要,我写了一个小 app——计算器——我用它来展现怎样举行差别范例的测试。你能够在这里猎取它的源代码,不过请注重如今还不完全,当悉数系列博文完成的时才算完全。

这个系列文章团体以下:

我近来正在写一本《React.js 小书》,对 React.js 感兴趣的童鞋,迎接指导

    原文作者:胡子大哈
    原文地址: https://segmentfault.com/a/1190000008812275
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞