
大家好,我是轩辕,我们通过一系列内容学习软件架构设计师相关内容,这一篇重点学习软件测试相关内容等。
4.软件测试(★★★★)
软件测试常考,建议掌握,涉及选择和论文等。
软件测试是使用人工或自动的手段,运行或测定某个软件系统的过程。其目的在于检验它是否满足规定的需求,或弄清预期结果与实际结果之间的差别。
其核心目标是确保软件质量,发现错误,验证软件是否符合技术要求,并为软件质量评估和风险管理提供依据。软件测试应贯穿整个软件开发过程,以保证开发的高质量和稳定性。
4.1.测试方法
软件测试方法可根据不同维度进行分类:
(1) 按程序执行状态
静态测试(Static Testing, ST)
不运行程序,通过分析源代码、需求文档、设计文档等发现错误。
适用于代码审查、结构分析、流程图分析等。
主要检查参数匹配、未定义变量等静态错误。
动态测试(Dynamic Testing, DT)
运行程序,通过输入测试数据并分析运行结果,检查是否符合预期。
关注程序的功能、性能、健壮性等。
主要步骤包括构造测试实例、执行程序、分析结果。
(2) 按测试方式
黑盒测试(Black Box Testing)
只关注输入与输出,不考虑程序内部结构。
依据需求规格说明书设计测试用例,检查软件功能是否符合要求。
主要测试界面、功能、交互行为,常用于系统测试和验收测试。
白盒测试(White Box Testing)
关注程序内部逻辑,检查代码是否按设计逻辑执行。
主要用于测试逻辑结构、代码路径、数据流等。
采用控制流分析、数据流分析、路径分析等方法。
白盒测试常见的覆盖标准:
语句覆盖:每个语句至少执行一次。
判定覆盖:每个判断条件至少执行一次。
分支覆盖:每个分支(如if-else)至少执行一次。
路径覆盖:所有可能的执行路径都要测试。
灰盒测试(Gray Box Testing)
结合黑盒和白盒的特点,既关注输入输出,也考虑部分内部逻辑。
适用于集成测试,可提高测试效率和适用性。
适合于已有部分内部逻辑信息,但无法完全了解代码的场景。
(3) 按执行方式
人工测试(Manual Testing, MT)
测试人员手动执行测试,观察系统行为,判断是否符合需求。
优点:适用于探索性测试、UI 交互测试。
缺点:效率低、容易受人为因素影响。
自动化测试(Automatic Testing, AT)
通过测试工具自动运行测试用例,分析结果,减少人工干预。
优点:提高测试效率,适合大规模回归测试。可重复执行,减少人为误差。
缺点:需要投入开发测试脚本,初期成本较高。
自动化测试常用工具:
功能测试:Selenium、JMeter
性能测试:LoadRunner、Gatling
单元测试:JUnit、TestNG
接口测试:Postman、Rest-Assured
4.2.测试阶段
软件测试的阶段可以分为单元测试、集成测试、系统测试、性能测试、验收测试以及其他测试。这些测试阶段层层递进,确保软件质量符合需求。
1. 单元测试(Unit Testing)
主要是对该软件的模块进行测试,通过测试以发现该模块的功能不符合/不满足期望的情况和编码错误。
方法:
静态测试(代码审查、结构分析)。
黑盒测试(功能验证)。
白盒测试(覆盖逻辑路径)。
关键点:满足代码覆盖率要求(语句覆盖、路径覆盖等)。
2. 集成测试(Integration Testing)
集成测试通常要对已经严格按照程序设计要求和标准组装起来的模块同时进行测试,明确该程序结构组装的正确性,发现和接口有关的问题。
方法:
采用黑盒测试和白盒测试结合的方式。
验证模块的正确集成和数据流通情况。
关键点:发现模块间的兼容性和数据传递问题。
3. 系统测试(System Testing)(★★★)
一般情况下,系统测试采用黑盒测试,以此来检查该系统是否符合软件需求。
主要内容:
功能测试:验证系统功能是否符合设计要求。
性能测试:评估系统在不同负载下的响应和稳定性。
健壮性测试:检验系统在异常情况下的稳定性。
压力测试:测试系统的最大承受能力。
安全性测试:检查系统的安全漏洞。
安装与卸载测试:验证软件的部署与卸载过程。
用户界面测试:确保界面友好性和交互合理性。
关键点:通过多轮回归测试以修复因需求变更带来的问题。
4. 性能测试(Performance Testing)
性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。
方法:
负载测试:观察系统在不断增加的负载下的响应情况。
压力测试:找出系统瓶颈,测定最大负荷能力。
关键点:确保系统在高并发、高负载情况下仍能稳定运行。
5. 验收测试(Acceptance Testing)
验收测试是最后一个阶段的测试,是软件产品投入正式交付前的测试工作。
方法:
Alpha测试:在开发环境中,由用户模拟实际操作进行测试。
Beta测试:在真实环境中,邀请部分用户进行试用并反馈问题。
关键点:用户验证系统的可用性、功能完整性、可靠性。
6. 其他测试
除了上述各种常规的测试种类之外,近年来由于Web应用和 App 应用的大规模兴起,也出现了一些新型的测试种类,例如 AB 测试、 Web 测试中的链接测试、表单测试等。
AB测试:对比多个版本的用户反馈,选择最佳方案。
Web测试:主要针对Web应用的功能、性能和安全性进行测试。
链接测试:确保所有链接指向正确页面,无失效链接或孤立页面。
表单测试:验证表单提交的完整性和数据正确性,确保后端能正确解析和处理输入数据。
综上所述,软件测试贯穿开发全流程,从单元测试(模块级)、集成测试(接口级)、系统测试(整体功能)、性能测试(负载优化)、 验收测试(用户验证),确保软件的功能正确性、稳定性和用户体验。

夜雨聆风