How to make a test

测试用例怎么做

Why need test?

开发为什么需要测试?

write a good quality, maintainable code 

写高质量,可维护代码

- 需求和开发脱节

- 开发和测试脱节

Two problem

How to solve?

如何解决上面的问题?

Select a kind of development mode

选择一种敏捷开发模式

1、TDD || BDD

测试驱动开发&行为驱动开发

TDD

Test Driven Development(测试驱动开发)

 

- 测试来驱动开发, 代码即文档

- 其重点偏向开发

- 测试用例是在约束开发者,使开发者的目标明确,设计出满足需求的系统

BDD

Behaviour Driven Development(行为驱动开发)

 

基于TDD发展,保持测试先行的理念

- 其重点偏向设计

- 在测试代码中用一种自然通用语言的方式把系统的行为描述出来

将系统的设计和测试用例结合起来,进而驱动开发工作

 

And we need  some reliable tools

然后我们还需要一些可靠工具

2、Mocha 摩卡

自动化测试框架

Mocha

测试脚本如何编写

describe块称为"测试套件"(test suite),表示一组相关的测试。

it块称为"测试用例"(test case),表示一个单独的测试,是测试的最小单位。

异步测试

Mocha

测试脚本如何编写

Mocha

基本用法

mocha  xxx --xxx

mocha test --recursive   测试test目录里面所有测试脚本

Mocha

简化运行命令

配置文件mocha.opts,简化运行命令

Mocha

简化运行命令

设定scripts 字段

所有的测试用例(it块)都应该含有断言。

断言功能由断言库来实现,Mocha本身不带断言库,所以必须先引入断言库。

3、Should JS 苏德

断言库

ShouldJs 

基本写法

ShouldJs 

建议

assertions without  friendly description

如果断言没有一个友好的描述语

ShouldJs 

建议

 assertions with a friendly description

 如果断言有一个友好的描述语

ShouldJs 

不足

官网文档做得太烂了

有时,我们可能需要模拟HTTP请求的响应数据

是否有工具可以简化呢?

4、Nock 诺克

HTTP响应mock工具

Nock

如果我们需要测试的function需要涉及到HTTPrequest,

如测试model的时候,设计到ajax请求的结果

Nock

可以通过nock,直接模拟请求结果,这样我们就可以不考虑cgi的状态,而专注于model的逻辑测试

测试用例写好了

怎么验证是否写得好?

5、Istanbul 伊斯坦布尔

代码覆盖率检验工具

Istanbul 

istanbul  cover  node_modules/mocha/bin/_mocha

基本使用

Istanbul 

查看结果和原因

颜色块展示了你的测试用例的覆盖率

万事俱备?NO NO NO!

我们还需要更好的视觉体验!

 

 

6、mochawesome摩卡伴侣

测试数据展示工具

mochawesome 

使用

使用mochawesome模块,可以生成漂亮的HTML格式的报告。

 

最后

需要定好测试用例的规范和入手文档

 

 

7、specification

测试用例编写规范

动手环节

题目:编写一个模块的测试用例

1、该模块可以解析cookieStr,并返回cookie对象

2、该模块可以将teacher_model的数据进行加工

Putting it all together

集齐七龙珠,召唤神龙

The End!

how to make a test

By coverguo

how to make a test

  • 564