深色模式
Software Testing 软件测试概述 🧪💻
在本视频中,您将学习:
定义功能测试(Functional Testing)、非功能测试(Non-Functional Testing)和回归测试(Regression Testing)
比较并对比常见的测试层次结构

软件测试的目的 🎯
软件测试 是在软件开发周期中进行质量检查的实践。其主要目的是检查软件是否符合预期的需求,并确保软件没有错误。

在测试过程中,团队会编写 测试用例(Test Cases),这些用例用于验证软件应用的功能性,确保需求已被满足。测试用例可在软件开发生命周期(SDLC)的不同阶段编写,具体取决于所采用的测试类型或开发方法,例如敏捷(Agile)或瀑布模型(Waterfall)。
测试用例的组成 📝
一个测试用例通常包括以下内容:
步骤(Steps)
输入(Inputs)
数据(Data)
预期输出(Expected Outputs)
不论测试类型或开发方法如何,测试用例应该在需求最终确定后编写。

测试的类型 🔍
软件测试可以大致分为三类:功能测试、非功能测试和回归测试。

1. 功能测试(Functional Testing) ✅
功能测试通常涉及 黑盒测试(Black Box Testing),即在不查看源代码或内部结构的情况下进行测试。
功能测试仅关注 系统的输入 和 相应的输出,并确保软件符合功能需求。功能测试可以手动进行,也可以使用自动化工具进行。

功能测试的目标是确保应用程序的功能正确,且具有良好的可用性和可访问性。
当出现用户输入错误或边界情况时,功能测试应确保软件能够无缝地处理这些异常,给出适当的错误消息。

2. 非功能测试(Non-Functional Testing) ⚙️
非功能测试主要关注 性能、安全性、可扩展性 和 可用性 等方面。

它检查 系统非功能性行为 是否正常。非功能测试应回答以下问题:
应用程序在压力下如何表现?
当多个用户同时登录时,会发生什么?
文档和用户手册中的说明是否与应用程序行为一致?
在不同操作系统下,应用程序的表现是否一致?
应用程序如何处理灾难恢复?
应用程序的安全性如何?


3. 回归测试(Regression Testing) 🔄
回归测试,也称为 维护测试,其目的是确保最近对应用程序进行的修改(如修复 bug)不会对现有功能产生负面影响。
回归测试应在 需求变更 或 缺陷修复 后进行。

进行回归测试时,团队需要选择部分或全部测试用例来验证修改后的应用程序。
回归测试用例的选择和优先级排序可能面临一些挑战,常见的选择依据包括:
经常发生缺陷的测试用例
包含常用功能的测试用例
最近进行过修改的功能测试用例
边界测试用例、复杂测试用例和随机成功或失败的用例

测试层次结构 🔧
在软件开发生命周期中,共有四个测试层次:单元测试、集成测试、系统测试和验收测试。每个测试层次在不同的时间点进行,目的是通过防止重叠来减少测试的时间。

1. 单元测试(Unit Testing) 🧱
单元测试是验证特定代码段功能的测试,通常在函数级别进行。
单元测试由开发人员在软件开发阶段执行,目的是在代码与其他模块集成之前消除构建错误,从而提高软件质量和开发效率。

2. 集成测试(Integration Testing) 🔗
集成测试的目的是发现当两个或多个独立代码模块组合时出现的错误。
在进行集成测试之前,已经通过单元测试的小模块会被整合进更大的软件应用中。

集成测试的目标是揭示代码模块之间交互时发生的 缺陷,包括模块之间的 通信问题、逻辑差异,以及可能由 不完全的单元测试 或 不良的异常处理 导致的问题。

3. 系统测试(System Testing) 🌐
系统测试在集成测试之后进行,目的是在完整的集成系统上评估其是否符合规定的需求。
系统测试是对系统的全面验证,既包括 功能测试 也包括 非功能测试。
系统测试通常在 仿真环境 中进行,这个环境应尽可能接近实际的生产环境。

4. 验收测试(Acceptance Testing) ✅
验收测试是针对 用户需求、要求和业务流程的正式测试。
它的目的是确定系统是否满足 用户、客户及其他 利益相关方 的需求。
通常,验收测试由 客户或 利益相关方 在软件开发生命周期的 维护阶段执行。

总结 📚
在本视频中,您学到了:
软件测试分为三类:功能测试、非功能测试和回归测试。
单元测试验证小的独立代码块;集成测试寻找多个小模块组合时的错误;系统测试验证完整的软件产品;验收测试验证软件是否满足用户需求和业务流程。
