Javascript与QA工程师(一)
单元测试
- 目的:单元测试能够让开发者明确知道代码结果
- 原则:单一职责、接口抽象、层次分离
- 断言库:保证最小单元是否正常运行监测方法
- 测试风格:测试驱动开发(TDD)、行为驱动开发(BDD)均是敏捷开发方法论。TDD关注所有的功能是否被实现(每一个功能都必须有对应的测试用例),suite配合test利用assert('tobi' == user.name);BDD关注整体行为是否符合整体预期,编写的每一行代码都有目的提供一个全面的测试用例集。
单元测试框架
- better-assert(TDD断言库)
- should.js(BDD断言库)
- expect.js(BDD断言库)
- chai.js(TDD BDD双模)
- Jasmine.js(BDD)
- Node.js本身集成
单元测试运行流程
- before单个测试用例(it)开始前
- before.Each每一个测试用例开始前
- it定义测试用例, 并利用断言库进行设置chai,如:expect(x).to.equal(true);
异步 mocha
- 以上专业术语叫mock
自动化单元测试
- Karma 自动化runner集成PhantomJS无刷新
- npm install -g karma
- npm install karma-cli --save-dev
- npm install karma-chrome-launcher --save-dev
- npm install karma-phantomjs-launcher --save-dev
- npm intall karma-mocha --save-dev
- npm install karma-chai --save-dev
报告和单测覆盖率检查
- npm install karma-coverage --save-dev
- coverageReporter:{type: 'html', dir: 'coverage/'}//配置代码覆盖测试率生成结果
性能测试
基准测试
- 面向切面编程AOP无入侵式统计
- Benchmark基准测试方式,它并不是简单地统计执行多少次测试代码后对比时间,它对测试有着严密的抽样过程。执行多少次取决于采样到的数据能否完成统计。根据统计次数计算方差。
压力测试
- 对网络接口做压力测试需要检查的几个常用指标有吞吐率、响应时间和并发数,这些指标反映了服务器并发处理能力
- PV网站当日访问人数UV独立访问人数。PV每天几十万甚至上百万就需要考虑压力测试。换算公式QPS=PV/t ps:1000000/106060=27.7(100万请求集中在10个小时,服务器每秒处理27.7个业务请求)
- 常用的压力测试工具是ab、siege、http_load
安全漏洞检查
功能测试
用户真实性检查
- selenium-webdriver
- protractor-selenium-standalone
- http://webdriver.io/ WEBDRIVERI/O
- 冒烟测试Smoke Test 自由测试的一种,找到一个BUG开发修复,然后专门针对此BUG,优点节省时间防止build失败,缺点是覆盖率极低。
- 回归测试 修改一处对整体功能全部测试,一般配合自动化测试。
javascript lint&Hint
- 目的:检测javascript代码标准
- 原因:javascript代码诡异,保证团队代码规范
- lint:http://www.jslint.com/
- hint:http://www.jshint.com/
- 搭配自动化任务管理工具完善自动化测试grunt-jsint、grunt-jshint