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