静态测试

2025年03月17日 | 阅读 9 分钟

在本节中,我们将了解静态测试,它用于在不执行代码的情况下检查应用程序。我们还将学习静态测试、为什么要使用静态测试、如何执行静态测试、静态测试的不同技术、静态测试的优点以及各种静态测试工具。

静态测试简介

静态测试是一种验证过程,用于在不实现应用程序代码的情况下测试应用程序。它是一个成本效益高的过程。

为了避免错误,我们将在开发的初始阶段执行静态测试,因为这样更容易识别错误的来源,并且易于修复。

换句话说,我们可以说静态测试可以通过手动或借助工具进行,通过在开发早期发现错误来提高应用程序的质量;这也被称为验证过程

在执行静态测试时,我们可以执行以下一些重要活动:

  • 业务需求审查
  • 设计审查
  • 代码走查
  • 测试文档审查

注意:静态测试在白盒测试阶段进行,在此阶段,开发人员会在将代码交给测试工程师之前检查每一行代码。

静态测试还有助于我们识别可能通过动态测试找不到的错误。

为什么要执行静态测试?

我们可以执行静态测试来满足以下方面:

  • 我们可以使用静态测试来提高开发效率。
  • 如果我们在应用程序上执行了静态测试,我们就能在早期阶段发现缺陷并轻松修复。
  • 使用静态测试将降低测试成本、开发周期和时间。

在静态测试中,我们可以测试哪些不同的功能?

我们可以在静态测试中测试各种测试活动,如下所示:

  • BRD [业务需求文档]
  • 功能或系统需求
  • 单元用例
  • 原型
  • 原型规范文档
  • 测试数据
  • DB 字段字典电子表格
  • 文档/培训指南/用户手册
  • 测试用例/测试计划策略文档
  • 可追溯性矩阵文档
  • 性能测试脚本/自动化

何时执行静态测试?

要执行静态测试,我们需要遵循以下步骤:

步骤 1:为了完全审查应用程序的设计,我们将执行检查过程

步骤 2:之后,我们将为每个待审查的文档使用一个清单,以确保所有审查都已完整覆盖。

在执行静态测试时,我们还可以实施几项活动,如下表所示:

活动说明
架构审查
  • 架构审查活动包含所有业务流程,例如网络图、负载均衡、服务器位置、协议定义、测试设备、数据库可访问性等。
用例需求验证
  • 它用于验证所有最终用户操作以及相关的输入和输出。
  • 如果用例更全面和详细,我们可以制定更精确和全面的测试用例。
功能需求验证
  • 功能需求验证活动用于确保所有必要元素都能正确识别。
  • 它还负责软件、接口列表、网络需求、硬件和数据库功能。
字段字典验证
  • 在字段字典验证中,我们将测试用户界面中指定的每个字段,以创建字段级验证测试用例。
  • 我们可以检查字段的错误消息、最小或最大长度、列表值等。
原型/屏幕模拟图验证
  • 原型验证活动包含对需求和用例的身份验证。

为什么要进行静态测试?

当我们在测试应用程序或软件时遇到以下情况时,我们需要静态测试:

  • 动态测试耗时
  • 早期阶段的缺陷/Bug 识别
  • 动态测试成本高昂
  • 软件规模增大

动态测试耗时

我们需要静态测试来测试应用程序,因为动态测试是一个耗时的过程,即使动态测试可以识别 Bug 并提供一些关于 Bug 的信息。

早期阶段的缺陷/Bug 识别

在开发软件时,我们不能完全依赖动态测试,因为它会在应用程序/软件的后期阶段才发现 Bug 或缺陷,修复 Bug 需要程序员大量的时间和精力。

动态测试成本高昂

我们需要对软件产品执行静态测试,因为动态测试比静态测试更昂贵。动态测试中涉及测试用例的成本很高,因为测试用例是在早期阶段创建的。

而且我们还需要维护测试用例的实现和验证,这会花费测试工程师大量的时间。

软件规模增大

每当我们测试软件时,软件产品的规模都会增加,而我们由于代码覆盖率降低而无法处理。

这就是为什么我们需要静态测试,以便在软件开发生命周期的早期阶段摆脱 Bug 或缺陷。

静态测试的目标

执行静态测试的主要目标如下:

  • 静态测试将减少生产中的缺陷。
  • 静态测试将尽早识别、预测和修复 Bug。
  • 它用于节省时间和成本。
  • 它用于在 SDLC 的早期阶段识别缺陷,我们可以在此阶段轻松修复它们。

成功静态测试过程的一些有用要点

以下指南有助于我们在软件测试中执行成功的静态测试过程。

  • 我们可以通过示例培训参与者。
  • 如果我们消除了测试执行中的主要延迟,测试成本和时间将会降低。
  • 我们可以根据项目文化将流程保持正式。
  • 我们可以只强调重要的事情。
  • 众所周知,软件走查和审查通常合并到同行评审中;因此,我们可以明确计划并跟踪审查活动。
  • 我们可以解决客户的问题。

静态测试技术

静态测试技术为提高软件开发的质量和效率提供了绝佳的方式。静态测试技术可以通过两种方式完成,如下所示:

  • 审查
  • 静态分析
Static Testing

审查

在静态测试中,审查是一种技术或过程,用于查找应用程序中可能的 Bug。我们可以在各种支持文档(如 SRS [软件需求规范])中轻松识别和消除审查过程中的故障和缺陷。

换句话说,我们可以说静态测试中的审查是指所有团队成员都了解项目进展的地方。

在静态测试中,审查可分为四个不同部分,如下所示:

  • 非正式审查
  • 走查
  • 技术/同行评审
  • 检查
Static Testing

让我们逐一详细了解它们:

  • 非正式审查
    非正式审查中,文档设计者将内容放在查看者面前,每个人都给出自己的观点;因此,Bug 会在早期阶段被承认。
  • 演练
    通常,走查审查由熟练人员或专家执行,以验证 Bug。因此,在开发或测试阶段可能没有问题。
  • 同行评审
    同行评审中,我们可以相互检查文档,以查找和解决 Bug,这通常在团队中完成。
  • 检查
    在审查中,检查基本上是由上级验证文档,例如SRS [软件需求规范] 文档的验证。

静态分析

另一种静态测试技术是静态分析,它用于包含对开发人员建立的代码质量的评估。

我们可以使用不同的工具来执行代码的分析和评估。

换句话说,我们可以说开发人员编写的代码通过一些工具进行分析,以查找可能导致缺陷的结构性 Bug。

静态分析还有助于我们识别以下错误:

  • 死代码
  • 未使用的变量
  • 无限循环
  • 语法错误
  • 未定义值的变量

在静态测试中,静态分析可进一步分为三个部分,如下讨论:

Static Testing

数据流:在静态分析中,数据流与流处理相关。

控制流:通常,控制流用于指定命令或指令的实现方式。

圈复杂度:它是对程序复杂度的度量,主要与程序控制流图中的独立路径数有关。

用于静态测试的工具

在静态测试中,市面上有许多工具,但这里我们讨论最常用的工具,如下所示:

  • CheckStyle
  • SourceMeter
  • Soot

CheckStyle

它是一个开发工具,用于帮助开发人员编写符合编码标准的 Java 代码。CheckStyle 工具自动化了检查 Java 代码的过程。

它是一个高度可配置的工具,旨在支持几乎任何编码标准。Google Java Style、Sun 代码约定是 CheckStyle 支持的配置文件。

Static Testing

CheckStyle 的特点

以下是 CheckStyle 最常见的特点:

  • 它可以检查我们源代码的各种特征。
  • CheckStyle 代码能够验证代码布局和格式问题。
  • 它还可以帮助识别方法设计问题、类设计问题。

SourceMeter

它是用于对各种编程语言(如C/C++C#Java、PythonRPG 项目)进行特定静态源代码分析的高级工具。

借助SourceMeter 工具,我们可以轻松地从源代码识别正在开发的系统的脆弱点。

SourceMeter 的免费版本(具有部分功能)可用于所有编程语言。

在 SourceMeter 中,我们可以使用分析的输出,分析源代码的质量来以定向的方式在短期和长期内进行增强和开发。

Static Testing

SourceMeter 的特点

SourceMeter 工具最常用的特点如下:

  • 它提供了最精确的代码错误检测。
  • SourceMeter 工具将提供深入的静态代码分析。
  • 它通过第三方集成改进了用户界面。
  • 它将提供平台无关的命令行工具。

Soot

它是一个Java 优化框架,这意味着它是用于分析和转换 Java 和 Android 应用程序的框架,我们可以在其中测试以下方面:

  • 命名模块和模块化 jar 文件。
  • 自动模块,这意味着模块是从 module-path 中的 jar 重复创建的。
  • 展开的模块
  • 在 Soot 中解析模块
Static Testing

Soot 还可以以各种输出格式生成可能经过转换的代码,例如Android 字节码、Java 字节码 Jasmin 和 Jimple

静态测试的优点

静态测试的优点如下:

  • 提高产品质量
    静态测试将提高产品质量,因为它在软件开发早期阶段识别了缺陷或 Bug。
  • 提高动态测试的效率
    静态测试的使用将提高动态测试的效率,因为在执行静态测试后,代码会变得更干净、更好。
    正如我们在上面所理解的,静态测试需要一些努力和时间来生成和维护高质量的测试用例。
  • 降低 SDLC 成本
    静态测试降低了 SDLC 成本,因为它在软件开发生命周期的早期阶段识别了 Bug。因此,修改产品和修复它们需要较少的努力和时间。
  • 即时评估与反馈
    在开发软件产品的每个阶段,静态测试都为我们提供了软件的即时评估和反馈。
  • Bug 的确切位置可被追踪
    当我们执行静态测试时,与动态测试相比,我们可以轻松地识别 Bug 的确切位置。

概述

在静态测试部分,我们学习了以下主题:

  • 静态测试用于在软件开发周期 [SDLC] 的早期阶段识别故障。
  • 我们已经理解,静态测试不能替代动态测试,因为这两种测试可以识别不同类型的 Bug。
  • 我们已经理解了静态测试的目标。
  • 在静态测试中,审查是测试应用程序的有效方法,因为审查有助于识别 Bug 并识别设计缺陷、缺失的需求和不可维护的代码等。
  • 我们已经了解了几种静态测试工具,它们有助于我们提高软件产品的测试性能。

下一个主题动态测试