功能测试和非功能测试的区别在于二者的测试侧重点不同,功能测试关注系统的功能和业务需求,而非功能测试关注系统除功能外的性能、稳定性、安全性、易用性等其他方面。
一、功能测试和非功能测试的区别
功能测试和非功能测试是软件测试中的两个重要方面,二者的区别在于测试重点不同,功能测试关注系统的功能和业务需求,而非功能测试关注系统除功能外的性能、稳定性、安全性、易用性等其他方面。
- 功能测试(Functional Testing):是基于软件组件规范进行黑盒测试的一种质量保证(QA)过程。通过输入数据并检查输出,来测试一个系统或应用程序的各种功能,以确定其是否符合规格说明书中的功能要求。在功能测试中,不考虑内部程序结构,主要关注系统行为,并检查是否满足用户的业务需求。
- 非功能测试(Non-functional Testing):是对软件应用程序或系统进行非功能要求测试的一种测试。它是与系统运行方式相关的测试,而不是针对特定行为的测试。包括性能测试、稳定性测试、安全测试、易用性测试等。非功能性测试不关注程序的实现细节,而关注系统是否具备运行所需的性能、稳定性、可靠性、安全性等功能。
二、功能测试类型
- 单元测试:在单元测试中,在开发阶段将测试软件应用程序的各个组件。单元测试通常由开发人员而不是测试人员完成。测试一段代码形式的功能以验证准确性。驱动程序,单元测试框架,模拟对象和存根用于执行单元测试。单元测试通常是自动化的,但有时可以手动完成。
- 整合测试:进行集成测试以检查应用程序的各个组件在集成时是否按预期运行。通常,在对所有构建进行测试和组合后,在单元测试之后进行集成测试。
- 健全性测试:在收到软件版本后,会对功能进行细微更改,以进行完备性测试,以确保纠正错误,并且将来不会由于这些更改而出现问题。目的是在表面上测试功能,而不是彻底检查开发人员是否合理构建了功能。
- 烟雾测试:这样做是为了检查构建是否足够稳定以进行进一步的测试。烟雾测试是端对端完成的,而不是像我们进行疯狂测试那样针对特定组件进行的。
- 回归测试:进行回归测试以检查新添加的代码是否对应用程序的功能没有任何不利影响。当应用程序中添加了新功能时或仅在代码中进行了一些更改时,即可完成此操作。代码中的更改可能影响产品的现有流程或存在错误。可以通过进行回归测试来评估。在回归测试中,动机是启动优化,增强功能并解决现有功能中需要的问题。
- 系统测试:系统测试是对完全集成的软件产品的测试。该软件与硬件和其他软件连接,并在系统上完全集成的应用程序上进行了一系列测试。既可以是白盒,也可以是黑盒。
- Beta/用户接受度测试:在准备好发布应用程序之前,此测试会在测试过程的最后阶段进行。由客户/用户执行以验证端到端业务流程和用户友好性。
三、非功能测试类型
- 性能测试:性能测试是为了确保该应用程序在预期的工作负载下能够正常运行。目的是发现性能问题,例如可靠性,资源使用情况等,而不是发现错误。在进行性能测试时,我们应牢记的三件事是快速响应,最大的用户负载以及在变化的环境中的稳定性。即使您专注于移动测试并使用在线Android模拟器,也无法避免性能测试。
- 耐力测试:这样做是为了检查应用程序是否能够承受预期必须长时间承受的负载。
- 可伸缩性测试:可以检查应用程序在软件,硬件和数据库级别的最大负载和最小负载下的性能。
- 负载测试:在这种情况下,系统会模拟任何应用程序上的实际用户负载,以检查该应用程序可以承受的最大负载的阈值。
- 压力测试:这样做是为了检查极端负载条件下应用程序的可靠性,稳定性和错误处理。
- 峰值测试:在这种情况下,测试应用程序时用户负载会突然增加和减少。通过执行峰值测试,我们还可以了解应用稳定的恢复时间。
- 容量测试:这样做是为了分析充斥大量数据时应用程序的行为和响应时间。
- 相容性测试:执行兼容性测试以确保该应用程序可以在不同的硬件,操作系统,网络环境和屏幕尺寸上正常运行。
- 安全测试:安全测试是移动应用程序测试过程中最重要的部分,它可确保您的应用程序安全且不会受到恶意软件和病毒等任何外部威胁的攻击。通过这样做,我们可以找出应用程序中的漏洞,这些漏洞可能导致数据丢失,收入增加或对组织的信任。
延伸阅读1:软件测试的意义
软件测试的意义在于,保证发布出去的产品达到了一定的质量标准。软件测试工程师的工作就是利用测试工具按照测试方案和流程对产品进行功能和性能测试,甚至根据需要编写不同的测试工具,设计和维护测试系统,对测试方案可能出现的问题进行分析和评估。执行测试用例后,需要跟踪故障,以确保开发的产品适合需求。 使用人工或者自动手段来运行或测试某个系统的过程,其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别. 它是帮助识别开发完成(中间或最终的版本)的计算机软件(整体或部分)的正确度(correctness) 、完全度(completeness)和质量(quality)的软件过程;是SQA(software quality assurance)的重要子域。