【IT168 资讯】功能测试根据需求进行功能上的测试,而非功能测试则针对更广泛的质量问题进行测试。在本文中,Dayana Stockdale将帮助读者弄清这两种测试的差异,并给出一些举例和策略。
功能测试与非功能测试的主要区别
在理解功能测试和非功能测试的区别之前,先需要知道功能性和非功能性需求之间的区别:
功能要求:描述软件系统的行为或执行。
非功能性要求:描述软件系统的性能或可用性。
功能需求将指定某一功能必须执行某个操作,而非功能需求则是可能会指定某一功能执行该操作。功能要求是WHAT;而非功能性要求是HOW。
因此,功能需求测试就是验证软件是否正在执行操作,而非功能测试则有助于验证客户的期望是否得到满足。
功能测试与非功能测试实例
为了使读者能更加清晰的了解两者之间的差异,Dayana将详细介绍一些并行的实例:
功能测试策略
功能测试策略多种多样,手动和自动测试混合使用是确保功能测试覆盖率的最佳方法。
最常见的功能测试策略是黑盒测试方法,测试者不需要审查内部源代码,而是通过测试各种输入组合来验证功能。
以下是一些常用的功能测试技术:
1. 安装测试 — 用于测试桌面或移动应用程序是否正确安装。
2. 边界值分析 — 数值输入边界测试。
3. 等价划分 — 分组测试,以减少类似功能测试的重叠。
4. 错误猜测 — 评估功能问题最有可能被发现,并比其他领域更广泛地进行测试。
5. 单元测试 — 在软件的最小级别上执行测试。不是将系统作为一个整体运行,而是在单元上测试。
6. API测试 — 检查内部和外部API是否正常运行,包括数据传输和授权。
7. 回归测试 — 用于验证新软件更改没有对现有功能(最常见的自动化技术)产生不利影响的测试。
所有的功能测试都有一个特定的输出。所有的功能测试都可以用非常明确的通过或者失败标准来编写。
非功能性测试策略
非功能性测试有时可能会比功能性测试要麻烦很多,因为您正在测试客户对整体质量体验的期望,而不是指定输入数据输出确定的结果。
以下是主要的非功能性测试技术:
1. 负载测试 — 在模拟环境中执行的测试,以测试系统在预期条件(不同数量的用户)期间的行为。
2. 压力测试 — 在资源不足时测试性能,例如服务器问题或设备上硬盘空间不足。
3. 扩展性测试 — 检查系统的规模,以便随着使用率的增加和性能受到何种程度的影响而进行扩展。
4. 容量测试 — 用大量的数据测试性能,不一定是数量庞大的用户,但可以是一个用户执行高容量的任务,例如多文件上传。
5. 安全性测试 — 进行测试以发现系统受到攻击的脆弱程度,以及数据的保护程度。
6. 灾难恢复测试 — 检查系统在崩溃或重大问题后能在多久时间内的恢复速度。
7. 一致性测试 — 根据某一套标准(无论是行业法规还是公司的标准)来测试软件系统。
8. 可用性测试 — 测试GUI是否一致,以及整个应用程序是否直观且易于使用。
虽然一些非功能性测试技术可以具有通过/失败的标准(如批量测试),但相比之下,其他测试技术能够基于测试人员的意见(如可用性测试)因此更加客观。
倾听客户反馈对于更新非功能性需求至关重要。虽然在收集意见过程中,可能会识别到某些扩展性和安全因素,但客户反馈可以扩展这些检查集合,包括更好地测试应用程序在崩溃后应该如何恢复,或应用程序如何在设备上占用最小的存储空间。
客户反馈有助于进行功能测试的风险评估。但对于非功能性测试来说,用户反馈更有价值,因为反馈有助于设定栅,而功能测试已经设定好了栅。
举报/反馈

IT168

51.9万获赞 27.3万粉丝
专注行业动态 做更专业更深度内容
IT168官方账号,优质数码领域创作者
关注
0
0
收藏
分享