基于Jasmine 的 Javascript 测试 -- 第一章
发布在基于Jasmine的Javascript测试2013年10月13日view:3812
在文章任何区域双击击即可给文章添加【评注】!浮到评注点上可以查看详情。

第一章 介绍测试


什么是软件测试

简单来说,软件测试就是你能针对某一项具体的要求对软件进行测试。

比如说你正在编写一个只能进行加法的计算器。在你开始动手之前,想想看它应该有什么样的行为。他应该能做两个正整数的加法。它应该能做两个负整数的加法。它应该能做两个小数的加法,而不仅仅是整数。你可以考虑到你的计算器在工作时遇到的各种不同的情况。

在你开始写代码之前,你就知道你想让它具备什么样的行为。对于它的行为,你有了一些具体要求。

你可以用写代码的方式将这些具体要求写下来。你可能会说:“好的,它应该这样工作。”你会对它做一些测试,比如1+1,2+2,-1+5,-1.2+6.8,0+0等等。当你运行这些测试时,你会看到运行成功(根据要求它就是这么工作的)或者运行失败(这不可能发生)。如果对每一个要求运行测试成功,那么你就能完全确定你的计算器工作很正常。如果你运行测试并且发现一些运行失败,你便知道你的计算器存在一些问题。

这便是在果壳里(in a nutshell)进行的软件测试。你针对一些具体要求对你的代码进行测试。许多工具(Jasmine 就是其中一个)能帮助你自动完成这些测试工作。

关于测试,很重要的一件事情是了解到你很难(或者说基本不可能)对每一种情况进行测试。在计算器的例子中,有无数种可能的两个数相加的组合。在测试时,你应该通过对一些不同分类(整数,负整数,正负混合等等)进行测试去覆盖到每一种合理的情形。同时你也应该考虑到特定的边界情形(比如说0)和边界条件,尽可能对每种不同的情形都进行测试。

为什么测试是有用的

有很多理由能说明测试是有用的。

首先,测试能评估程序在修改之后的正确性。比如说所有的测试已经通过,现在我想让其中一个函数运行的更快。我专心coding,做了一些修改,发现他确实比以前快了。但是当我再次运行测试时发现了运行失败,这是我才发现我做的修改损坏了代码中的一些部分。自动化测试使得我们能够在一些错误在“真实的世界中”发生之前便发现它们。

对于其他开发者来说,测试代码同时也是好的范例。如果一个开发者想要弄明白怎么使用你的代码中一些没有文档的部分,一段精心编写的测试有助于他了解这些代码片段式怎么运行的。

测试驱动开发

一种相对新兴的软件开发技术叫做测试驱动开发,或者TDD。它的工作流程大致如下:

  1. 针对具体代码片段编写测试情形。在计算器的例子中,你会编写两个正数相加,两个负数相加,两个整数相加等等情形。当然,你现在还没有写下一行计算器的代码,所以所有的测试将会运行失败!

  2. 编写代码区“填满”测试。你的代码仅仅只需要使得测试通过而无需更多。

  3. 一旦你的所有测试完美通过,回过头去清理你的代码(这也叫做 重构)。

测试驱动开发使得开发者在脑子里对于具体细节一片混乱的时候能够弄明白具体的需求。它也能保证总是有人来写测试,当然这是很有用的。

行为驱动测试

行为驱动测试,或者BDD,你需要编写短小而易读的具体要求。下面是两个BDD的关键部分:

  1. 你的测试必须短小并且每次只能测试一种情形。你需要编写小测试而不是针对整个应用的测试。在计算器的例子中,你需要对每个加法组合编写一个测试:一个针对0+0,一个针对1+1,一个针对-5+8,一个针对6.2+1.2等等。
  2. 测试需要以句子的方式呈现。在计算器的例子中,句子需要看起来像“计算器将两个正整数相加”。你所使用的测试框架(例如本书讲述的Jasmine)将会为你自动完成这些事情。

上述两条原则让你能在进行代码测试时一眼就能看出究竟哪里发生率错误。如果你看到了一连串的运行成功但是在“计算器将两个负数相加”时运行失败,你就知道应该检查代码的什么地方啦!

Dan North 被认为发明了BDD. 在他的网站中对BDD系统的细节有更多的描述。

现在对于什么是测试了解的够多了吧。下一章我们将进入主题,了解什么是Jasmine。


本系列文章译自Javascript testing with Jasmine,2013年3月由O’Reilly 出版社出版。

翻译文章需要花费大量时间和精力。如果您觉得本文对自己有帮助,请点击下面链接为我提供一些赞助。您的赞助是我继续前进的动力。

评论
发表评论
6年前

这个是翻译自哪里的?是书还是文章,最好在正文结束注明下来源哦,否则怕被说是侵权,哈哈

6年前

最近也在学习前端自动化测试,支持

6年前

支持张小俊128同学。。。

6年前

@芋头 谢谢芋头鼓励,我会再接再励,把自己看到的好书好文和大家一起分享。

6年前

内容太少了,如果内容少最好多个章节放在一起,另外希望能一直保持更新哦

WRITTEN BY
张小俊128
Intern in Baidu mobile search department。认真工作,努力钻研,期待未来更多可能。
TA的新浪微博
PUBLISHED IN
基于Jasmine的Javascript测试

本系列文章译自Javascript testing with Jasmine,2013年3月由O’Reilly 出版社出版。

我的收藏