什么是测试?
在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。——维基百科
为什么要测试?(软件测试的目的)
软件测试的目的是为了保证软件产品的最终质量,在软件开发的过程中,对软件产品进行质量控制。测试可以达到很多目的,但最重要的是可以衡量正在开发的软件的质量。
测试分类
按是否运行代码分类
- 静态测试:不需要执行所测试的程序,查询代码是否符合规范,对程序的数据流和控制流进行分析。
- 动态测试:选择实际测试用例运行所测试程序,模拟用户输入。
按是否查看代码分类
- 白盒测试:已知软件的实现流程,按照该流程测试,白盒测试又叫结构测试、白箱测试、玻璃盒测试、基于代码的测试或基于设计的测试。
- 黑盒测试:通过对照软件的规格说明书,基于系统应该完成的功能进行测试,测试人员必了解该产品的设计思路,黑盒测试又叫行为测试、功能测试或基于需求的测试。
- 灰盒测试:灰盒(Gray Box)是一种程序或系统上的工作过程被局部认知的装置。灰盒测试,也称作灰盒分析,灰盒测试是介于白盒测试和黑盒测试之间的一种测试方法,或者说是两者的结合,是基于对程序内部细节有限认知上的软件调试方法。
按测试阶段分类
- 单元测试:单元测试在早期实施,侧重于核实软件的最小可测试元素,对单项功能或一段子程序进行测试,包括对每一行代码进行的基本测试。
- 集成测试:集成测试是将模块按照设计要求组装起来进行测试,主要目标是发现与接口有关的问题,主要测试模块之间的数据传输是否正确、模块集成后的功能是否实现、模块接口功能与设计需求是否一致。集成测试紧接在单元测试之后,当单元测试通过后,便可开始配置集成测试环境。
- 系统测试:系统测试是将被测试的软件,作为整个基于计算机系统的一项元素,与计算机硬件、外部设备、支持软件、数据和人员等其他系统元素结合在一起,在实际运作环境下,对计算机系统进行一系列的测试,全面查找被测试系统的错误,测试系统的整体性、可靠性、安全性等,该类测试是从客户或最终用户的角度来看待系统的。
- 验收测试:验收测试是为了检验接受测试的系统是否满足需求,测试的重点是测试产品在常规条件下的使用情况,主要由市场、销售、技术支持人员和最终用户一起按规定的需求,逐项进行有效性测试,检验软件的功能和性能及其他特性是否与用户的要求相一致,验收测试一般采用黑盒测试法。
其中,验收测试还可以分为α测试和β测试:
- α测试:在开发环境下(或公司内部)进行的测试
- β测试:验收的一种测试,交付给用户之前的测试
按测试目的分类
- 功能测试
- 健壮性测试:健壮性测试侧重于对程序容错能力的测试,主要是验证程序在各种异常情况下是否能正确运行,包括数据边界测试、非法数据测试、异常中断测试等。
- 接口测试
- 性能测试
- 强度测试:强度测试是一种性能测试,强度测试总是迫使系统在异常的资源配置下运行。强度测试的目的是找出因资源不足或资源争用而导致的错误,例如,如果内存或磁盘空间不足,测试对象就可能会表现出一些在正常条件下并不明显的缺陷,这些缺陷可能由于争用共享资源(如数据库锁或网络带宽)而显现出来。
- 压力测试:压力测试是一种性能测试,主要是在超负荷环境中,检验程序是否能够正常运行。
- 用户界面测试:用户界面测试主要对系统的界面进行测试,测试用户界面是否友好、软件是否方便易用、系统设计是否合理、界面位置是否正确等问题。
- 安全测试
- 可靠性测试
- 安装/反安装测试
- 文档测试
- 恢复测试
- 兼容性测试
- 负载测试
其他分类
- 冒烟测试:针对不同的版本,在每次需求更改之后,在正式测试之前,对产品或系统进行一次简单的验证测试
- 回归测试:指修改了旧代码后,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误
前端常用测试
我看网上很多都参考了这边文章Static vs Unit vs Integration vs E2E Testing for Frontend Apps
主要有以下四种:
- 静态测试
- 单元测试
- 集成测试
- 端到端测试(e2e,个人觉得属于系统测试)
测试思想
TDD
TDD(Test-Driven Development 测试驱动开发)简单地说就是先根据需求写测试用例,然后实现代码,通过后再接着写下一个测试和实现,循环直到全部功能和重构完成。
BDD
BDD(Behavior Driven Development 行为驱动开发) 其实可以看做是TDD的一个分支。简单地说就是先从外部定义业务行为,也就是测试用例,然后由外入内的实现这些行为,最后得到的测试用例也是相应业务行为的验收标准。
测试工具介绍
断言库
- assert
- chai
Mock工具
- Sinon
- Jest内置
测试覆盖率工具
- Istanbul
- Jest内置
测试框架
将一些测试工具组合到一起,然后使用方便的语法来描述测试用例
- Jest
- Mocha
- Jasmine
E2E测试工具
- Cypress
- Playwright
- Selenium
- Nightwatch(基于Selenium)
参考文章:
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。