D6-07 8–10 分钟 重要程度:高
软件安全测试类型
软件安全测试题常考代码审查、静态测试、动态测试、模糊测试、突变测试、接口测试和误用例测试的边界。
一、必须记住
- Code review 或 Peer review 由其他开发人员检查代码缺陷。
- Fagan inspection 是正式代码审查流程,包括规划、概述、准备、审查、返工和追查。
- Static testing 不运行软件,通过源码或编译产物分析安全性。
- Dynamic testing 在运行环境中测试软件,生产环境要谨慎。
- Fuzz testing 是动态测试,向程序提供无效、随机或特殊构造输入。
- Mutation fuzzing 修改真实输入;Generational fuzzing 基于数据模型生成输入。
- Mutation testing 修改程序本身,用来评估测试用例是否能发现变化。
- Misuse case testing 关注组织不希望发生的行为。
二、核心概念
代码审查与静态测试
代码审查是人工同行评审,最正式形式是 Fagan inspection。静态测试不执行程序,可分析源码或编译后的应用,适合早期发现缺陷。
动态测试与模糊测试
动态测试在程序运行时观察行为。Fuzz testing 向输入接口投放异常资料以触发崩溃、边界错误或未处理例外,但通常无法完全覆盖复杂业务逻辑。
其他测试
Interface testing 检查 API、UI 和物理接口。Misuse case testing 从攻击者或错误使用者角度描述不希望发生的行为。Mutation testing 修改程序来验证测试套件是否能捕捉行为变化。
三、CISSP 判断规则
- 问“不运行程序分析代码”,选 Static testing。
- 问“运行程序观察行为”,选 Dynamic testing。
- 问“无效、随机或特殊构造输入”,选 Fuzz testing。
- 问“修改程序本身以评估测试质量”,选 Mutation testing。
- 问“正式同行代码审查六步骤”,选 Fagan inspection。
四、常见陷阱
- Fuzz testing 是动态测试的一种,不是静态分析。
- Mutation testing 修改的是程序,不是只修改输入;Mutation fuzzing 才是从真实输入变异。
- 误用例测试关注不希望发生的行为,不是普通用例测试。
五、英文关键字
Code review (代码评审) 定义:人工或自动检查代码缺陷、逻辑和编码标准。 Peer review Fagan inspection (Fagan 检查) 定义:结构化代码或设计检查方法。 Static testing (静态测试) 定义:不运行代码而检查源码、设计或配置。 Dynamic testing (动态测试) 定义:在运行状态下测试系统或应用行为。 Fuzz testing (模糊测试) 定义:输入大量异常、随机或变异资料以触发缺陷。 Mutation fuzzing Generational fuzzing Mutation testing (变异测试) 定义:通过改变程序或输入验证测试集发现缺陷的能力。 Interface testing Misuse case testing (误用案例测试) 定义:从攻击者或滥用者视角测试系统。 API testing
小测验
1. 不运行应用程序,只分析源码或编译后的应用以找安全问题,属于?
静态测试不执行软件;动态测试才是在运行环境中观察行为。
2. 向程序输入随机或特殊构造的无效资料以发现崩溃和边界错误,属于?
Fuzz testing 是动态测试技术,通过异常输入发现未处理缺陷。
3. 小幅修改程序,然后查看测试是否失败,用来评估测试套件质量,称为?
Mutation testing 修改程序本身;Mutation fuzzing 是从既有输入变异产生模糊输入。
本节进度
完成后会保存在当前浏览器。线上版可保存;不同手机、平板之间暂不自动同步。
尚未完成