测试的种类可从不同维度划分,核心维度包括测试阶段、测试技术、执行方式、测试目标及被测对象等,各维度下的具体类别及内涵如下:
1. 按开发阶段划分
覆盖软件全生命周期的关键阶段,确保各阶段产出物的质量:
单元测试:针对软件最小可测试单元(如函数、 *** 、类)的测试,由开发人员执行,验证单元的逻辑正确性(如接口、局部数据结构、边界条件)。
集成测试:验证多个模块/组件之间的交互是否正确(如接口兼容性、数据传递),分为一次性集成(大爆炸集成)和增量式集成(自顶向下/自底向上)。
系统测试:将集成后的系统作为整体,与硬件、外设、支持软件等结合,在真实或模拟环境下测试,验证是否符合需求规格(如功能、性能、安全性、兼容性)。
验收测试:以用户为主导的最终测试,分为内部确认测试(开发方验证)、Alpha测试(内部用户试用)、Beta测试(公测),确认系统是否满足业务需求。
2. 按测试技术/质量特性划分
根据是否关注内部实现及测试重点,分为功能性与非功能性测试:
功能性测试:验证软件功能是否符合需求,包括:
黑盒测试(不关注内部结构,基于输入输出的测试,如等价类划分、边界值分析);
回归测试(修改代码后重新测试,确保未引入新缺陷);
冒烟测试(快速验证核心功能,判断是否可继续测试)。
非功能性测试:验证软件的性能、可靠性等非功能属性,包括:
性能测试(评估响应时间、吞吐量、资源利用率,如负载测试、压力测试);
安全测试(检查安全漏洞,如渗透测试、漏洞扫描);
兼容性测试(验证不同环境下的兼容性,如操作系统、浏览器、设备);
可用性测试(评估用户体验,如易用性、导航流畅性)。
3. 按执行方式划分
根据是否运行程序及自动化程度:
静态测试:不运行程序,通过检查文档、代码或设计发现问题(如需求评审、代码走查、静态代码分析)。
动态测试:运行程序,通过实际执行验证结果(如功能测试、性能测试、压力测试)。
手工测试:由测试人员手动执行测试用例,适合探索性测试、UI测试等场景。
自动化测试:使用工具或脚本自动执行测试,提高效率,适合回归测试、性能测试等重复场景。
4. 按测试目标/实施主体划分
根据测试目的或主导方:
开发方测试:开发方主导的测试,包括单元测试、集成测试、Alpha测试(内部验证),确保代码质量。
用户测试:用户参与的测试,包括Beta测试(公测)、验收测试(确认是否符合用户需求),验证系统是否满足业务要求。
第三方测试:独立于开发方和用户方的第三方机构进行的测试(如认证测试、公正性测试),确保测试客观性。
5. 按被测对象划分
根据测试对象的类型:
Web测试:针对Web应用,包括功能测试、兼容性测试(浏览器/设备)、性能测试(负载/压力)。
移动端测试:针对移动应用(iOS/Android),包括安装/卸载测试、弱网测试、权限测试、场景交互测试(如来电、前后台切换)。
桌面应用测试:针对Windows/MacOS/Linux桌面软件,包括安装测试、功能测试、兼容性测试(操作系统版本)。
嵌入式测试:针对嵌入式系统(如硬件设备、IoT设备),包括功能测试、性能测试、可靠性测试(如温度、湿度)。