第五篇:《软件测试的分类:从不同角度看测试》
软件测试的世界非常庞大为了清晰地理解它我们需要从多个维度进行分类。就像给动物分类可以按栖息地水生/陆生、按食性肉食/草食、按纲目哺乳/爬行……每种分类方式都有其用途。本文将带你从测试阶段、是否运行程序、是否了解内部结构、测试目的等角度全面认识软件测试的分类体系。一、按测试阶段分类经典V模型这是最基础、最常用的分类方式对应软件开发的不同阶段。二、按是否运行程序分类2.1 静态测试Static Testing不运行被测软件而是通过检查文档、代码、模型来发现缺陷。典型活动需求评审、设计评审、代码走查、代码静态扫描SonarQube、Checkstyle。优点可以在编码前就发现缺陷成本极低。例子产品经理写“系统要有良好的用户体验”测试指出“良好”无法量化建议改为“新手在3分钟内完成首次下单”。2.2 动态测试Dynamic Testing运行被测软件通过输入数据、观察输出来发现缺陷。典型活动功能测试、性能测试、安全测试等。优点能发现运行时才能暴露的问题如内存泄漏、并发竞争。例子输入错误的密码验证系统是否提示“密码错误”而不是崩溃。关系静态测试和动态测试互补。静态测试能提前发现逻辑缺陷和规范问题动态测试验证实际行为。三、按是否了解内部结构分类这是面试中经常被问到的分类。四、按测试目的分类这是最丰富、最实际的分类方式根据你想验证的质量属性来划分。4.1 功能测试Functional Testing验证软件的功能是否符合需求规格。例子用户能成功注册、登录、修改密码。4.2 性能测试Performance Testing验证软件的响应速度、吞吐量、资源使用等。子类型负载测试在期望并发下表现如何压力测试超出极限后会不会崩溃稳定性测试长时间运行是否有内存泄漏并发测试多个用户同时操作同一资源是否冲突4.3 安全测试Security Testing验证软件是否有漏洞能否抵御攻击。常见测试点SQL注入、跨站脚本XSS、越权访问、敏感数据泄露。4.4 兼容性测试Compatibility Testing验证软件在不同环境下的表现。浏览器Chrome、Firefox、Safari、Edge。操作系统Windows、macOS、Linux、iOS、Android。设备不同屏幕尺寸、分辨率。4.5 可用性测试Usability Testing验证软件是否易用、是否符合用户习惯。例子按钮是否放在用户期望的位置错误提示是否清晰操作流程是否太繁琐4.6 回归测试Regression Testing验证代码修改没有破坏原有功能。通常自动化执行。4.7 冒烟测试Smoke Testing新版本部署后快速验证核心功能是否可用决定是否继续进行详细测试。4.8 探索性测试Exploratory Testing不依赖预设用例测试人员边学习系统边设计测试发挥创造力发现意外缺陷。五、按执行方式分类手动测试人手工操作。适合探索性测试、可用性评估、复杂场景的一次性验证。自动化测试用脚本或工具执行。适合回归测试、重复性高的场景如每晚运行。六、一张图总结分类体系text软件测试├─ 按阶段│ ├─ 单元测试│ ├─ 集成测试│ ├─ 系统测试│ └─ 验收测试├─ 按是否运行程序│ ├─ 静态测试│ └─ 动态测试├─ 按是否了解内部结构│ ├─ 黑盒│ ├─ 白盒│ └─ 灰盒├─ 按测试目的│ ├─ 功能│ ├─ 性能│ ├─ 安全│ ├─ 兼容性│ ├─ 可用性│ ├─ 回归│ └─ …└─ 按执行方式├─ 手动└─ 自动化七、小结不同的分类维度服务于不同的目标和场景。一个完整的测试策略通常会组合使用多种分类例如用自动化做回归测试按执行方式用黑盒方法设计功能测试用例按结构用性能测试验证系统稳定性按目的。作为测试人员了解这些分类有助于你设计更全面的测试方案也能让你在面试中表现出体系化的知识。