Skip to content
难度基础(★)
建议时长45分钟

7.6.2 软件测试的基本概念及分类

软件测试的分类很多,但考试最爱考的是分类依据。看到题干不要先背名词,而要先问:它是否运行程序?是否看内部结构?是在什么阶段做?它的测试目的是什么?

按是否运行程序:静态测试与动态测试

静态测试不执行程序。它通过阅读、审查、走查来发现问题,适用于需求、设计、代码等多种产物。动态测试执行程序,观察实际输出、状态变化和性能表现。

类型是否执行程序典型活动适合发现的问题
静态测试桌前检查、代码审查、代码走查、文档评审需求矛盾、设计遗漏、代码规范问题、明显逻辑缺陷
动态测试黑盒测试、白盒测试、性能测试、压力测试运行错误、边界错误、接口错误、资源泄漏、性能瓶颈

三种常见静态检查

方法谁参与怎么做关键词
桌前检查开发者自己对照需求、设计和代码逐项检查自查
代码审查多人评审由评审人员检查代码质量、逻辑和规范他人检查、正式性更强
代码走查开发者带领他人按样例数据在脑中模拟程序执行人工执行、逻辑跟踪

代码走查的关键不是“运行程序”,而是人工模拟执行路径。题干如果说“不实际执行程序,但用测试数据检查代码逻辑”,一般仍属于静态测试。

按是否关注内部结构:黑盒、白盒、灰盒

类型视角依据常见方法
黑盒测试把系统看成输入输出转换器需求规格、业务规则、界面约定等价类划分、边界值分析、错误推测、因果图
白盒测试把程序内部逻辑看清楚源代码、控制流、条件、路径语句覆盖、判定覆盖、条件覆盖、路径覆盖、基本路径测试
灰盒测试介于两者之间了解部分结构,同时从外部验证行为接口测试、组件级测试中较常见

灰盒测试不是软考中本节最核心的考点,通常知道它“结合黑盒和白盒思想”即可。重点仍是黑盒和白盒的边界:黑盒不看代码,白盒看代码结构。

按测试阶段:从模块到交付

阶段测试对象主要关注
单元测试函数、类、模块等最小可测单元模块内部逻辑是否正确
集成测试多个模块组合后的子系统接口、调用、数据传递、协作关系
系统测试完整系统是否满足需求规格和非功能要求
验收测试待交付系统用户是否接受,业务目标是否达成
回归测试修改后的相关功能修复是否成功,旧功能是否被破坏

阶段分类与黑盒/白盒不是互斥关系。单元测试可以用白盒思想,系统测试常用黑盒思想;集成测试既可能看接口行为,也可能分析内部调用关系。

有效数据与无效数据

设计测试用例不能只测“正常输入”。有效数据检查系统是否能完成正确业务,无效数据检查系统能否抵御错误输入。

课程中的招聘系统例子可以这样理解:假设岗位要求年龄 20 到 60 岁、学历为本科/硕士/博士、专业为计算机/通信/电子。一个好用例应尽量让错误点可定位。

用例年龄学历专业评价
A35本科计算机有效用例,验证正常路径
B18本科计算机好的无效用例,只错年龄
C18高中计算机不够好,同时错年龄和学历
D35本科机械好的无效用例,只错专业

一条无效用例同时包含多个错误点,执行失败时很难判断系统是因哪个规则失败,也不利于定位缺陷。

测试目的分类

类型目标例子
功能测试验证业务功能是否按需求工作订单能否提交、退款能否成功
性能测试验证响应时间、吞吐量、资源占用并发 1000 用户下响应时间
压力测试观察超负载时系统表现持续增加并发直到系统瓶颈出现
安全测试验证权限、输入校验、敏感数据保护越权访问、SQL 注入、防重放
回归测试修改后验证旧功能是否仍正确修复登录缺陷后重测注册、找回密码

这些分类有时会交叉。例如系统测试阶段可以包含功能测试、性能测试、安全测试;回归测试也可能同时包含黑盒用例和白盒用例。

题目识别口诀

题干关键词优先判断
不运行程序、评审、审查、走查静态测试
运行程序、输入输出、观察结果动态测试
等价类、边界值、因果图、错误推测黑盒测试
语句覆盖、判定覆盖、条件覆盖、路径覆盖白盒测试
模块内部单元测试
模块接口、组装、桩模块、驱动模块集成测试
完整系统、需求规格系统测试
用户确认、交付验收测试

例题

单选
根据程序内部逻辑结构设计测试用例,属于:
单选
下列通常属于静态测试的是:

本节小结

测试分类要按依据理解:静态/动态看是否运行,黑盒/白盒看是否关注内部结构,单元/集成/系统/验收看测试范围,功能/性能/安全/回归看测试目的。做题时先找分类维度,再匹配关键词。