单元测试

17 Mar 2025 | 5 分钟阅读

单元测试涉及测试软件应用程序的每个单元或单个组件。 它是功能测试的第一个级别。 单元测试的目的是验证单元组件及其性能。

单元是软件系统的单个可测试部分,并在应用程序软件的开发阶段进行测试。

单元测试的目的是测试隔离代码的正确性。 单元组件是应用程序的单个函数或代码。 白盒测试方法用于单元测试,通常由开发人员完成。

每当应用程序准备就绪并交给测试工程师时,他/她将开始独立或逐一检查模块的每个组件或应用程序的模块,此过程称为单元测试组件测试

为什么需要单元测试?

在测试级别层次结构中,单元测试是在集成和其他剩余测试级别之前完成的第一个测试级别。 它使用模块进行测试过程,从而减少了等待单元测试框架的依赖性,桩、驱动程序和模拟对象用于辅助单元测试。

Unit Testing

通常,软件会经历四个级别的测试:单元测试、集成测试、系统测试和验收测试,但有时由于耗时,软件测试人员会进行最少的单元测试,但跳过单元测试可能会导致在集成测试、系统测试和验收测试期间,甚至在软件应用程序完成后进行的 Beta 测试期间出现更高的缺陷。

以下列出了一些关键原因

  • 单元测试有助于测试人员和开发人员理解代码库,从而使他们能够快速更改导致缺陷的代码。
  • 单元测试有助于文档编制。
  • 单元测试在开发阶段的早期修复缺陷,这就是为什么在即将到来的测试级别中出现较少缺陷的可能性。
  • 它通过迁移代码和测试用例来帮助代码重用。

单元测试示例

让我们看一个示例,以便更好地理解单元测试的概念

Unit Testing

对于金额转账,要求如下

1.金额转账
1.1从账号 (FAN) → 文本框
1.1.1FAN → 仅接受 4 位数字
1.2到账号 (TAN) → 文本框
1.2.1TAN → 仅接受 4 位数字
1.3金额 → 文本框
1.3.1金额 → 接受最多 4 位数字
1.4转账 → 按钮
1.4.1转账 → 已启用
1.5取消 → 按钮
1.5.1取消 → 已启用

以下是客户提供的应用程序访问详细信息

  • URL → 登录页面
  • 用户名/密码/确定 → 主页
  • 要访问金额转账模块,请按照以下步骤操作

贷款 → 销售 → 金额转账

执行单元测试时,我们应遵循以下一些规则

  • 要开始单元测试,我们至少应该有一个模块。
  • 测试正值
  • 测试负值
  • 不要过度测试
  • 不需要假设

当我们觉得达到最大测试覆盖率时,我们将停止测试。

现在,我们将开始对不同的组件执行单元测试,例如

  • 从账号(FAN)
  • 到账号(TAN)
  • 总额
  • 调动
  • Cancel (取消)
Unit Testing

对于 FAN 组件

描述
1234accept
4311错误消息 → 账号有效与否
空白错误消息 → 输入一些值
5 位/ 3 位错误消息 → 仅接受 4 位数字
字母数字错误消息 → 仅接受数字
被阻止的账号错误信息
复制并粘贴值错误消息 → 输入值
与 FAN 和 TAN 相同错误信息

对于 TAN 组件

  • 提供值,就像我们在从账号 (FAN) 组件中所做的那样

对于金额组件

  • 提供值,就像我们在 FAN 和 TAN 组件中所做的那样。

对于转账组件

  • 输入有效的 FAN 值
  • 输入有效的 TAN 值
  • 输入正确的金额值
  • 单击转账按钮 → 金额转账成功(确认消息)

对于取消组件

  • 输入 FAN、TAN 和金额的值。
  • 单击取消按钮 → 应清除所有数据。

单元测试工具

市场上有各种类型的单元测试工具,如下所示

  • NUnit
  • JUnit
  • PHPunit
  • Parasoft Jtest
  • EMMA

有关单元测试工具的更多信息,请参考以下链接

unit-testing-tools

单元测试技术

单元测试使用所有白盒测试技术,因为它使用软件应用程序的代码

  • 数据流测试
  • 控制流测试
  • 分支覆盖测试
  • 语句覆盖测试
  • 决策覆盖测试

如何通过单元测试获得最佳结果?

通过遵循以下列出的步骤,单元测试可以给出最佳结果,而不会感到困惑并增加复杂性

  • 测试用例必须是独立的,因为如果需求发生任何更改或增强,测试用例将不会受到影响。
  • 单元测试用例的命名约定必须清晰一致。
  • 在单元测试期间,必须在跳转到 SDLC 的下一阶段之前修复已识别的错误。
  • 一次只能测试一个代码。
  • 采用编写代码的测试用例,如果不这样做,执行路径的数量将会增加。
  • 如果任何模块的代码发生更改,请确保该模块是否有相应的单元测试可用。

单元测试的优缺点

单元测试的优点和缺点如下

优点

  • 单元测试使用模块方法,因此可以在不等待完成另一部分的测试的情况下测试任何部分。
  • 开发团队专注于单元提供的功能以及功能在单元测试套件中的外观,以了解单元 API。
  • 单元测试允许开发人员在几天后重构代码,并确保模块仍然正常工作,没有任何缺陷。

缺点

  • 它无法识别集成或广泛级别的错误,因为它适用于代码单元。
  • 在单元测试中,无法评估所有执行路径,因此单元测试无法捕获程序中的每个错误。
  • 它最适合与其他测试活动结合使用。

下一个主题集成测试