We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
最近,团队对测试用例十分的注重,因此,下面是我对测试用例的一些解析。
首先,我们需要知道:为什么需要测试用例?
理由很简单,就是为了在测试用例的辅助下,编写出高质量,可维护代码。
正如因为地震的爆发,才会有地震仪的诞生。 测试用例的诞生,也必然有其需要解决的问题:
当我们在开发,我们往往会有以下的问题:
当一份需求来了, 开发人员往往不能百分百的理解需求的内容(抛弃产品自己变更需求的可能性。。),这往往会让开发人员开发出的功能会有跟需求有所差别,这会带来额外的工作量
什么是开发和测试脱节,说的是,当开发人员按照自己的想法开发完了一个需求。然后测试人员也按照自己的想法去测试这个需求,然后由于双方的分歧,导致测试认为开发有bug,开发认为测试是sb.
那么如何解决上面的问题呢?
答案就是 选择一种软件敏捷开发模式
目前比较流行的开发模式有两种: TDD 和 BDD
###TDD (Test Driven Development 测试驱动开发)
两种方式各有其特点,我们通常选择的是BDD的方式
为了,方便我们编写测试用例,我们需要使用一些可靠工具,以下是我认为比较好的前端测试用例工具。
Mocha(发音"摩卡")诞生于2011年,是现在最流行的JavaScript测试框架之一,在浏览器和Node环境都可以使用。 通过Mocha, 我们可以安装基于mocha的规范,轻松的编写测试用例和管理测试用例。
对于mocha, 一个测试用例必定包含 describe和 it,来实现一个测试用例的具体模版 describe块 称为"测试套件"(test suite),表示一组相关的测试。 it块 称为"测试用例"(test case),表示一个单独的测试,是测试的最小单位
describe
it
以上的是同步情况的测试用例
若我们需要测试异步代码时,只需要在每个it的回调中,增加done的参数,具体如下
所有的测试用例(it块)都应该含有断言。 断言功能由断言库来实现,Mocha本身不带断言库,所以必须先引入断言库。 因此,我们在上面的测试用例添加断言:如下
有时,我们可能需要模拟HTTP请求的响应数据 是否有工具可以简化呢?那就是Nock啦, Nock使用起来十分方便,API都十分简单名利
var should = require('should'); var nock = require('nock'); var teacheModel = require('teacherModel'); //定义模拟的http请求的响应结果 var cgiData = { retcode:0, result: { num: 10, } }; //测试方法updateTeacherData describe('测试Module.updateTeacherData()', function() { it('请求接口,能够正确处理数据', function() { //这里定义,get请求XXX.qq.com域名下的/cgi-bin/teacher/get_about的数据能返回200 //并且返回结果是cgiData nock('http://xxx.qq.com') .get('/cgi-bin/teacher/get_about') .reply(200, cgiData); testModule.getData({}, req, function(data){ data.retcode.should.equal(0, 'teacher数据拿到, 不能正确处理'); }) }); });
通过nock,直接模拟请求结果,这样我们就可以不考虑cgi的状态,而专注于model的逻辑测试
测试用例写好了, 怎么验证是否写得好? Istanbul是可以给出测试用例的代码覆盖率检验的工具
如下面我们使用istanbul,可以看到我们的util.test.js的覆盖率情况
然后,如果想知道具体覆盖率情况,可以通过打开生成的报文去查看,如下面可以知道,哪些部分测试用例没有覆盖到
万事俱备?NO NO NO! 我们还需要更好的视觉体验 通过使用mochawesome工具,在当命令行运行 mocha 是增加 --reporter mochawesome 参数,将测试用例运行情况转成更为直观的测试报文,如下:
--reporter mochawesome
懂得如何编写测试用例,但仍需要有一套比较明确的编写规范和,编写教程,才能让项目的测试用例生生不息,持之以恒带来功效、
The text was updated successfully, but these errors were encountered:
No branches or pull requests
前言
最近,团队对测试用例十分的注重,因此,下面是我对测试用例的一些解析。
首先,我们需要知道:为什么需要测试用例?
理由很简单,就是为了在测试用例的辅助下,编写出高质量,可维护代码。
问题
正如因为地震的爆发,才会有地震仪的诞生。
测试用例的诞生,也必然有其需要解决的问题:
当我们在开发,我们往往会有以下的问题:
需求和开发脱节
当一份需求来了, 开发人员往往不能百分百的理解需求的内容(抛弃产品自己变更需求的可能性。。),这往往会让开发人员开发出的功能会有跟需求有所差别,这会带来额外的工作量
开发和测试脱节
什么是开发和测试脱节,说的是,当开发人员按照自己的想法开发完了一个需求。然后测试人员也按照自己的想法去测试这个需求,然后由于双方的分歧,导致测试认为开发有bug,开发认为测试是sb.
那么如何解决上面的问题呢?
答案就是 选择一种软件敏捷开发模式
敏捷开发模式
目前比较流行的开发模式有两种: TDD 和 BDD
###TDD (Test Driven Development 测试驱动开发)
BDD (Behaviour Driven Development 行为驱动开发)
两种方式各有其特点,我们通常选择的是BDD的方式
测试工具
为了,方便我们编写测试用例,我们需要使用一些可靠工具,以下是我认为比较好的前端测试用例工具。
Mocha 摩卡
Mocha(发音"摩卡")诞生于2011年,是现在最流行的JavaScript测试框架之一,在浏览器和Node环境都可以使用。
通过Mocha, 我们可以安装基于mocha的规范,轻松的编写测试用例和管理测试用例。
Mocha测试脚本如何编写
对于mocha, 一个测试用例必定包含
describe
和it
,来实现一个测试用例的具体模版describe块 称为"测试套件"(test suite),表示一组相关的测试。
it块 称为"测试用例"(test case),表示一个单独的测试,是测试的最小单位
以上的是同步情况的测试用例
若我们需要测试异步代码时,只需要在每个it的回调中,增加done的参数,具体如下
Should JS 苏德 断言库
所有的测试用例(it块)都应该含有断言。
断言功能由断言库来实现,Mocha本身不带断言库,所以必须先引入断言库。
因此,我们在上面的测试用例添加断言:如下
Nock 诺克 HTTP响应mock工具
有时,我们可能需要模拟HTTP请求的响应数据
是否有工具可以简化呢?那就是Nock啦,
Nock使用起来十分方便,API都十分简单名利
通过nock,直接模拟请求结果,这样我们就可以不考虑cgi的状态,而专注于model的逻辑测试
Istanbul 伊斯坦布尔 代码覆盖率检验工具
测试用例写好了, 怎么验证是否写得好?
Istanbul是可以给出测试用例的代码覆盖率检验的工具
如下面我们使用istanbul,可以看到我们的util.test.js的覆盖率情况
然后,如果想知道具体覆盖率情况,可以通过打开生成的报文去查看,如下面可以知道,哪些部分测试用例没有覆盖到
mochawesome
万事俱备?NO NO NO!
我们还需要更好的视觉体验
通过使用mochawesome工具,在当命令行运行 mocha 是增加
--reporter mochawesome
参数,将测试用例运行情况转成更为直观的测试报文,如下:补充
懂得如何编写测试用例,但仍需要有一套比较明确的编写规范和,编写教程,才能让项目的测试用例生生不息,持之以恒带来功效、
The text was updated successfully, but these errors were encountered: