单元测试
单元测试
单元测试涉及对软件应用程序的每个单元或单个组件的测试。它是功能测试的第一级。单元测试背后的目的是验证单元组件的性能。
单元是软件系统的单个可测试部分,并在应用软件的开发阶段进行测试。
单元测试的目的是测试隔离代码的正确性。单元组件是应用程序的单个功能或代码。用于单元测试的白盒测试方法,通常由开发人员完成。
每当应用程序准备好并交给测试工程师时,他/她将开始检查模块的每个组件或应用程序的模块独立或一项一项,这个过程称为单元测试或组件测试。
为什么要进行单元测试?
在测试级别层次结构中,单元测试是在集成和其他其余测试级别之前完成的第一级测试。它在测试过程中使用模块,减少了等待单元测试框架的依赖,存根、驱动程序和模拟对象用于辅助单元测试。
通常, 软件经过四个级别的测试: 单元测试、集成测试、系统测试和验收测试,但有时由于时间消耗软件测试人员只进行最少的单元测试,但在集成测试、系统测试和验收测试期间,甚至在软件应用程序完成后进行的 Beta 测试期间,跳过单元测试可能会导致更高的缺陷。
下面列出了一些关键原因:
单元测试可帮助测试人员和开发人员了解代码的基础,从而使他们能够快速更改导致缺陷的代码。
单元测试有助于文档。
单元测试会在开发阶段的早期修复缺陷,这就是为什么在即将到来的测试级别中可能会出现较少数量的缺陷。
它通过迁移代码和测试用例来帮助提高代码的可重用性。
单元测试示例
让我们看一个示例示例以更好地理解单元测试的概念:
对于金额转移,要求如下:
1. |
金额转移 |
1.1 |
从帐号(FAN)→ 文本框 |
1.1.1 |
FAN→ 只接受 4 位数字 |
1.2 |
到帐号(TAN)→ 文本框 |
1.2.1 |
TAN→ 只接受 4 位数字 |
1.3 |
金额→ 文本框 |
1.3.1 |
金额 → 最多接受 4 位数 |
1.4 |
转移→按钮 |
1.4.1 |
传输 → 启用 |
1.5 |
取消→按钮 |
1.5.1 |
取消→ 启用 |
以下是应用访问详情,由客户提供
网址→登录页面
用户名/密码/确定 → 主页
要达到金额转移模块,请按照以下操作
贷款→销售→金额转移
在进行单元测试时,我们应该遵循一些规则,如下:
要开始单元测试,至少我们应该有一个模块。
测试正值
测试负值
不要过度测试
无需假设
当我们觉得达到了最大测试覆盖率时,我们将停止测试。
现在,我们将开始对不同的测试进行单元测试组件如
来自帐号(FAN)
到帐号(TAN)
金额
转移
取消
对于风扇组件
价值观 |
说明 |
1234 |
接受 |
4311 |
错误信息→帐号有效与否 |
空白 |
错误信息→输入一些值 |
5位数/3位数 |
错误信息→只接受 4 位数字 |
字母数字 |
错误信息→只接受数字 |
被阻止的帐户号 |
错误信息 |
复制并粘贴值 |
错误信息→输入值 |
与 FAN 和 TAN 相同 |
错误信息 |
对于 TAN 组件
像我们在从帐号(FAN) 组件中所做的那样提供值
对于金额组件
提供值,就像我们在 FAN 和 TAN 组件中所做的那样。
对于传输组件
输入有效的风扇值
输入有效的 TAN 值
输入正确的金额值
点击转账按钮→转账成功(确认信息)
对于取消组件
输入 FAN、TAN 和金额的值。
单击"取消"按钮 → 应清除所有数据。
单元测试工具
我们在市场上有各种类型的单元测试工具,如下:
NUnit
JUnit
PHP 单元
Parasoft Jtest
艾玛
单元测试技术:
单元测试使用所有白盒测试技术,因为它使用软件应用程序的代码:
数据流测试
控制流测试
分支覆盖测试
语句覆盖测试
决策覆盖测试
如何通过单元测试达到最好的结果?
按照下面列出的步骤,单元测试可以提供最佳结果而不会混淆并增加复杂性:
测试用例必须是独立的,因为如果需求有任何变化或增强,测试用例不会受到影响。
单元测试用例的命名约定必须清晰一致。
在单元测试期间,必须修复识别出的错误,然后才能进入 SDLC 的下一阶段。
一次只能测试一个代码。
在编写代码时采用测试用例,否则会增加执行路径的数量。
如果任何模块的代码发生更改,请确保该模块的相应单元测试可用或不可用。
单元测试的优缺点
单元测试的优缺点如下:
优点
单元测试使用模块方法,因为可以测试任何部分,而无需等待其他部分测试完成。
开发团队专注于提供的单元的功能以及单元测试套件中的功能应如何显示以了解单元 API。
单元测试允许开发人员在几天后重构代码,并确保模块仍然可以正常工作而没有任何缺陷。
缺点
它无法识别集成或广泛级别的错误,因为它适用于代码单元。
在单元测试中,不可能评估所有执行路径,因此单元测试无法捕获程序中的每一个错误。
最适合与其他测试活动结合使用。