什么是功能测试和非功能测试?
功能测试 vs 非功能测试核心对比
维度 | 功能测试 (Functional Testing) | 非功能测试 (Non-Functional Testing) |
---|---|---|
测试目标 | 验证系统"做什么"(是否符合需求文档) | 验证系统"做得如何"(质量属性) |
测试重点 | 功能逻辑、输入输出正确性 | 性能、可靠性、安全性等非功能特性 |
测试阶段 | 贯穿全周期(单元→集成→系统→验收) | 通常在功能稳定后执行(如压力测试在系统测试阶段) |
是否必需 | 必选(所有系统必须验证功能) | 可选(根据项目类型决定,如金融系统必做安全测试) |
缺陷类型 | 功能错误(如计算错误、流程中断) | 系统缺陷(如并发崩溃、响应超时) |
典型技术 | 等价类划分、状态转换测试 | 压力测试、渗透测试、兼容性矩阵 |
工具举例 | Selenium(UI)、Postman(API) | JMeter(性能)、OWASP ZAP(安全) |
功能测试详解(What & How)
定义:验证软件功能是否满足需求规格说明书(SRS)的测试
常见子类型:
-
冒烟测试:核心流程验证(开发提交后的快速检查)
-
回归测试:确保修改不影响原有功能(自动化高优先级)
-
边界测试:针对输入边界值的特殊用例(如文本框最大字符限制)
实战案例:
测试微信红包功能
-
功能点①:输入金额不能超过200元 → 边界值测试
-
功能点②:拼手气红包总额分配正确 → 计算逻辑验证
非功能测试详解(What & How)
定义:评估系统在真实环境中的表现特性
关键分类(ISO 25010标准):
-
性能测试:包括负载测试(最大并发用户)、压力测试(超出负载极限)
-
安全测试:SQL注入检测、XSS攻击防护(金融类系统必做)
-
兼容性测试:浏览器/操作系统/设备矩阵(如H5页面需测iOS/Android主流机型)
-
可用性测试:用户操作路径合理性(常配合A/B测试)
典型场景:
电商大促前的性能测试:
-
模拟10万用户同时抢购 → 检查服务器CPU/内存是否过载
-
持续运行24小时 → 验证内存泄漏风险