功能测试和非功能测试有什么区别
功能测试和非功能测试有什么区别?
转载:https://dzone.com/articles/whats-the-difference-between-functional-and-nonfun?fromrel=true
功能测试验证功能是否按照要求工作,而非功能测试则对更广泛的质量问题进行检查。在这篇文章中,我将清楚地说明这种差异,并给出示例和策略。
功能测试和非功能测试之间的主要区别
在我们了解功能性和非功能性测试之间的区别之前,我们需要了解功能性和非功能性需求之间的区别:
- 功能需求:描述软件系统的行为/执行。
- 非功能性需求:描述软件系统的性能或可用性。
虽然功能需求会指定一个特性必须执行某个动作,但非功能需求可能会指定该特性执行该动作的对象。
功能需求是什么;非功能性需求是 HOW。
因此,功能需求的测试是验证软件是否按预期执行操作,而非功能测试则有助于验证是否满足了客户的期望。
功能测试策略
有多种功能测试策略,确保功能测试覆盖率的最佳方法是手动和自动测试的混合。
最常见的功能测试策略是黑盒测试方法——其中测试人员不需要审查内部源代码,而是通过测试各种输入组合来验证功能。
以下是一些常见的功能测试技术:
安装测试- 对于桌面或移动应用程序,测试正确安装。
边界值分析- 测试数字输入的边界。
等价划分- 将测试分组在一起以减少类似功能测试的重叠。
错误猜测- 评估最有可能发现功能问题的位置,并比其他领域更广泛地测试这些问题。
单元测试——在软件的最小级别进行测试——不是系统作为一个整体如何运作,而是每个单元是否正确执行。
API 测试- 检查内部和外部 API 是否正常运行,包括数据传输和授权。
回归测试- 执行测试以验证新的软件更改不会对现有功能产生不利影响(最常见的自动化技术)。
所有功能测试都有一个特定的输出,它是任何输入所期望的。如果您输入有效数据,那么您希望数据被接受。所有功能测试都可以使用非常明确的通过/失败标准编写脚本。
非功能测试策略
非功能性测试有时可能需要更多的创造力和技术专长,因为您正在测试客户对整体质量体验的期望 - 而不是 X 输入导致 Y 输出。
这些是主要的非功能测试技术:
负载测试- 在模拟环境中执行的测试,以测试系统在预期条件下(不同数量的用户)的行为。
压力测试- 在资源不足时测试性能,例如服务器问题或设备上的硬盘空间不足。
可扩展性测试- 检查系统随着使用量的增加而扩展的能力以及性能受到的影响程度。
批量测试- 使用大量数据测试性能,不一定是大量用户,但可以是一个用户执行大量任务,例如多文件上传。
安全测试- 执行测试以发现系统容易受到攻击的程度以及数据的保护程度。
灾难恢复测试- 检查系统在崩溃或重大问题后恢复的速度。
合规性测试- 根据任何标准集(无论是由于行业法规还是公司的标准集)对软件系统进行测试。
可用性测试- 测试 GUI 是否一致,以及整个应用程序是否直观且易于使用。
虽然一些非功能性测试技术可以有通过/失败标准(例如批量测试),但其他的可以更客观并基于测试人员的意见(例如可用性测试)。然而,非功能性测试应该尽可能地编写成可测量和可量化的。
倾听客户反馈对于更新非功能性需求至关重要。虽然企业可能会在需求收集期间确定某些可扩展性和安全因素,但客户反馈可以扩展检查集,以包括更好地测试应用程序在崩溃后如何恢复或应用程序如何在设备上剩余最小存储空间的情况下执行。
客户反馈可以帮助功能测试的风险评估,但对非功能测试更有价值,因为反馈可以帮助设定标准——而功能测试已经设定了标准。
最终,了解这两种类型的测试之间的区别可以帮助制定测试计划,以便您清楚所涵盖的内容以及原因。
“功能测试和非功能测试有什么区别? ”首次出现在 Testlio 上