一、为什么要进行自动化测试?
1.功能越多越复杂,出现bug的风险越高;
2.bug发现的越晚,修复bug的成本越高;
3.手动测试繁琐,容易出错。
二、两种基本的自动化测试
1.单元测试:直接测试代码的逻辑,一个函数或一个模块都可以是一个单元。
单元测试分两种形态:
a. TDD(Test-Driven Development 测试驱动开发):在开发功能代码之前,先编写测试代码。可以帮助客户和程序员明确需求,
b. BDD(Behavior Driven Development 行为驱动开发):通过自然语言书写不是程序员也可以看懂的测试语言。能让开发者集中精力在开发项目上,而不是写测试代码,也能减少沟通客户、产品、开发之间的沟通成本。
2.验收测试:用脚本控制浏览器来触发web程序的功能,测试程序界面和功能。
三、单元测试常用的工具 mocha、Node assert、should.js
1.用mocha 和 Node 的 assert 模块测试
mocha:是一个在Node.js和浏览器上运行的功能丰富的JavaScript测试框架。
assert:断言,可以测试一个条件,如果条件不满足,就出现错误提示。
全局安装mocha
$ npm install mocha -g
mocha基本语法:
describe、it都是代码块;
describe :测试套件,测试套件里面可以嵌套测试套件,一个测试套件又由若干个测试用例组成;
it:测试用例。
examples:
var assert = require('assert')
describe('Array', function() {
describe('#indexOf()', function() {
it('should return -1 when the value is not present', function() {
assert.equal(-1, [1, 2, 3]/* 填空题 */)
})
})
})
describe('assert', function () {
it('a和b应当深度相等', function () {
var a = {
c: {
e: 1
}
}
var b = {
c: {
e: 1
}
}
// 修改下面代码使得满足测试描述
assert.equal(a, b)
})
it('可以捕获并验证函数fn的错误', function () {
function fn() {
xxx;
}
// 修改下面代码使得满足测试描述
fn()
})
})
启动测试:
mocha
测试结果如图:
修改代码后重新启动测试,成功提示如下图:
2.用mocha 和 should.js 测试
should.js:构建在 Node assert 模块之上的模块,BDD 风格的断言。
安装should :
$ npm install should --save-dev
examples:
var should = require('should');
var return42 = require('../my_code');
it('should work with build script', function() {
return42.should.be.a.Function;
});
注意:之前运行的时候报Cannot find module 'should' 错误,尝试过下载和页面引用都没有用,最后知道了是因为mocha的版本问题,现在用的是最新的6,把mocha降级到5的最高级就可以用了。
3.Karma
Karma : 不是测试框架,也不是断言库。Karma只是启动一个HTTP服务器,可以在多个浏览器中执行JavaScript代码。
安装install:
$ npm install karma --save-dev
初始化
$karma init
1. Which testing framework do you want to use ? (mocha) 选择测试框架
2. Do you want to use Require.js ? (no)是否用Require
3. Do you want to capture any browsers automatically ? (Chrome) 选择浏览器
4. What is the location of your source and test files ? 设置测试文件和依赖文件(https://cdn.bootcss.com/jquery/2.2.4/jquery.js, node_modules/should/should.js, test/**.js)
5. Should any of the files included by the previous patterns be excluded ? 是否应该排除前一种模式所包含的任何文件 不太懂直接忽略吧
6. Do you want Karma to watch all the files and run the tests on change ? (yes) 是否监听文件是否变化,试试刷新
karma.conf.js配置文件 singleRun设置
记得安装karma-chrome-launcher
运行
$karma start
4.Travis CI 持续集成
Travis CI 是目前比较流行的持续集成工具之一,用来构建及测试在 Github 托管的代码,使用它可以极大的简化工作流程。
持续集成:持续集成指的是,频繁地(一天多次)将代码集成到主干。
使用方法,首先进入Travis CI,点击使用github账号登录,
点击添加要测试的项目,打开开关。
在项目的根目录,需要建一个.travis.yml文件,这是配置文件,采用 YAML 格式。
language字段指定了默认运行环境;
script字段指定要运行的脚本,script: true表示不执行任何脚本,状态直接设为成功。
简单的设置如下:
git提交代码后,启动测试,
信息会更新显示在travis面板里,