前端测试&OA工程师
- 黑盒测试.谁都能测试。
功能 | 测试行为 | 测试结果 test | 正确结果 | 测试人 | 测试时间 |
---|---|---|---|---|---|
登录 | 点击的按钮 | 没有反应; | loading 请求… | 延期 | 2021、04、18 |
- 白盒测试(编写测试代码的)
测试分类
为什么要有测试
测试通常考虑的问题如下
-
**正确性:**验证代码的正确性。在上线前做到心里有数(例如代码编写规范)
-
自动化:测试是可以通过手工测试,也可以通过console.log测试结果。但是问题:只能测试这么一次,再有内容重新测试。编写测试用例;一次编写,第多次测试,只需要运行测试代码就可以了
-
**解释性:**测试用例用于测试接口,模块的重要性,那么测试用例中就会涉及到如何使用这些API ,其他开发人员如何要使用这些API 。阅读测试用例有时候比阅读文档好很多
-
驱动开发:指导设计:代码被测试的前提是代码本身的可测试性,那么要保证代码 的可测试性,就需要在开发中注意API的设计,TDD将测试前移就是起到这么一个 作用
-
**保证重构:**互联网行业产品迭代速度很快,迭代后必然存在代码重构的过程,那怎 么才能保证重构后代码的质量呢?有测试用例做后盾,就可以大胆的进行重构
单元测试
- 目的:单元测试能够让开发者明确知道代码结果
- 原则:单一职责、接口抽象、层次分离 断言库:保证最小单元是否正常运行检测方法
- 测试风格:测试驱动开发(Test-Driven Development,TDD)、(Behavior Driven Development,BDD)行为驱动开发均是敏捷开发方法论。 TDD关注所有的功能是否被实现(每一个功能都必须有对应的测试用 例),suite配合test利用assert(‘tobi’ == user.name); BDD关注整体行为是否符合整体预期,编写的每一行代码都有目的提 供一个全面的测试用例集。expect/should,describe配合it利用自然语 言expect(1).toEqual(fn())执行结果
单元测试的框架
- better-assert(TDD断言库Github 190star 19fork)
- should.js(BDD断言库Github 2295star 194fork)
- expect.js(BDD断言库Github 1391star 162fork)
- chai.js(TDD BDD双模Github 2823star 271fork)
- Jasmine.js(BDD Github10723star1680fork)
- Node.js本身集成 require(“assert”);
- Intern 更是一个大而全的单元测试框架
- QUnit 一个游离在jQuery左右的测试框架
- Macaca 一套完整的自动化测试解决方案 国产神器来自阿里巴巴
- jest
单元测试流程
- 1 每一个【测试用例组】通过 describe进行设置
- 2 before
- 3 beforeEach
- 3 it
- 4 after
- 5 afterEach
1.before单个测试用例(it)开始前
2.beforeEach每一个测试用例开始前
3.it定义测试用例 并利用断言库进行
设置chai如:expect(x).to.equal(true);
异步mocha
4.以上专业术语叫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 install 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、h
- ab -c 100 -n 100 http://localhost:8001 每秒持续发出28个请求 Request per second 表示服务器每秒处理请求数 即为QPS Failed requests 表示此次请求失败的请求数 理论上压测值越大增加 Connection Times 连接时间,它包括客户端向服务器端建立连接、服 务器端处理请求、等待报文响应的过程
安装测试
安全漏洞检查
- XSS
- SQL
- CSRF
功能测试
用户真实性检查
- selenium-webdriver
- protractor selenium-standalone
- http://webdriver.io/ WEBDRIVERI/O
- 冒烟测试 SmokeTest 自由测试的一种,找到一个BUG开发 修复,然后专门针对此BUG,优点节省生煎防止build失败, 缺点是覆盖率极低。
- 回归测试 修改一处对整体功能全部测试,一般配合自动化 测试。
JsLint&JsHint、
JavaScript Lint&Hint
目的:检测JavaScript代码标准
原因:JavaScript代码诡异,保证团队代码规范
lint:http://www.jslint.com/
hint: http://www.jshint.com/
搭配自动化任务管理工具完善自动化测试grunt
jshint、grunt-jslint