软件测试 - 模糊测试
软件测试主要侧重于确认软件的质量。模糊测试是一种测试方法,它将不正确、未预料到和临时的数据提供给软件,然后验证异常,即崩溃、可能的内存泄漏等。它于 1999 年由威斯康星大学的 Barton Miller 首次发现。
什么是软件模糊测试?
软件模糊测试主要是一种自动化测试方法,通过遵循非系统性方法来定义系统测试过程。在执行此类测试时,软件可能会遇到与输入数据集相关的多种类型的缺陷或错误。因此,模糊测试的过程包括向软件提供不正确、意外或任意数据,以确定其可能的安全问题和崩溃。
软件模糊测试的主要目标是确定攻击者可以利用的问题,即缓冲区溢出、SQL 注入等。它是软件测试的关键部分,因为它有助于识别在功能或单元测试时可能无法检测到的所有安全问题,例如性能瓶颈、内存泄漏等。这种类型的测试依赖于特定的工具和测试环境,这使得它成为一个昂贵且耗时的过程。此外,分配给模糊测试的测试人员应该经验丰富,并且对软件的架构、设计、协议、数据格式等有深入的了解。
软件模糊测试可以通过以下列出的不同方式执行 −
- 文件模糊测试 −在这种类型中,无条理或不正确的数据作为输入被传递给文件解析函数,以识别诸如内存损坏、缓冲区溢出等问题。
- 网络模糊测试 − 在这种类型中,无条理或不正确的数据作为输入被传递给网络协议,以识别诸如拒绝服务、其他安全问题等问题。
- API 模糊测试 −在这种类型中,无序或不正确的数据作为输入被传递给应用程序接口 (API),以识别问题,如输入验证、其他安全问题等。
软件模糊测试的目标
软件模糊盒测试的目标列在下面 −
- 模糊测试验证软件中的弱点。
- 模糊测试确定安全问题和对软件的威胁。
- 模糊测试在软件开发生命周期 (SDLC) 的早期阶段识别缺陷。
软件模糊测试的阶段
软件模糊测试的阶段列在下面 −
步骤 1 −确定要测试的系统,也称为测试团队的目标系统。
步骤 2 − 确定要输入到软件中以执行模糊测试的临时输入测试用例。
步骤 3 − 借助任意输入创建模糊数据。
步骤 4 − 通过在模糊数据的帮助下运行软件来执行测试用例。
步骤 5 − 使用随机输入执行软件后,评估测试结果以确定软件中是否遇到任何崩溃、内存泄漏等。
步骤 6 − 如果有偏差,则报告为缺陷。一旦修复,就可以确保软件质量更好。
软件模糊测试的类型
下面列出了不同类型的软件模糊测试 −
覆盖率引导模糊测试
在这种类型的模糊测试中,源代码在软件运行时进行评估。主要目的是使程序失败,使其崩溃,并不断添加新的测试用例。崩溃表示潜在错误。在覆盖率引导模糊测试时收集的详细信息可用于复制崩溃,以找到导致崩溃的代码部分。
行为模糊测试
这种类型的模糊测试以独特的方式运行。它还包括其他模糊测试,如变异模糊测试、Web模糊测试、生成模糊测试、智能模糊测试和协议模糊测试。
软件模糊测试期间检测到的缺陷类型
软件模糊测试期间检测到的不同类型的缺陷列于下方 −
- 文件格式模糊测试
- 字符模糊测试
- 数字模糊测试
- 应用程序模糊测试
- 协议模糊测试
软件模糊测试的应用
可以使用软件模糊测试的不同应用程序列于下方 −
- 区块链
- 操作系统系统
- API
- 加密
- 质量保证
软件模糊测试的优势
软件模糊测试的优势如下 −
- 软件模糊测试可以自动化,从而可以更快、更有效地验证大量输入。
- 软件模糊测试包括随机、无效和意外数据,可以检测在进行其他测试方法时可能无法检测到的缺陷。
- 如果通过自动化执行,软件模糊测试可以具有成本效益。
- 软件模糊测试从 SDLC 的初始阶段识别错误。
- 软件模糊测试是一个动态过程,因为它可以用于各种系统和多种类型的输入,即 API、文件格式、网络协议等。
软件模糊测试的缺点
软件模糊测试的缺点如下 −
- 软件模糊测试可能会产生大量的误报。
- 模糊测试的范围有限,因为它只关注验证输入,可能无法验证软件中的所有类型的弱点,即并发条件和竞争。
- 模糊测试没有提供深入了解软件的机会。
- 模糊测试的范围有限,因为它只关注输入验证问题,可能不会测试其他问题,例如逻辑或安全错误。
- 模糊测试可能会导致软件崩溃或挂起,之后可能无法继续测试,并且需要手动干预才能封面。
结论
至此,我们对软件模糊测试教程的全面介绍就结束了。我们首先描述了什么是软件模糊测试,软件模糊测试的目标是什么,软件模糊测试的阶段是什么,软件模糊测试有哪些不同类型,软件模糊测试期间检测到的不同类型的缺陷是什么,软件模糊测试可用于哪些不同的应用程序,软件模糊测试的优点是什么,软件模糊测试的缺点是什么。这使您具备了软件模糊测试的深入知识。明智的做法是继续实践您学到的知识并探索与软件测试相关的其他知识,以加深您的理解并拓展您的视野。