测试流程体系
一. 测试流程体系简介测试流程体系Testing Process Framework是指在软件开发生命周期中为确保软件质量而定义的一系列系统化和标准化的测试活动、方法、工具和管理流程。其目的是通过规范的流程和严格的测试发现和解决软件中的缺陷提高软件的稳定性、可靠性和可维护性。二、测试流程体系价值学习和实施测试流程体系对软件开发团队和项目的成功至关重要。它不仅有助于提高软件质量和开发效率还能降低成本、管理风险、满足合规要求并提升客户满意度和团队能力。提高软件质量降低开发成本提高开发效率提升团队能力提高客户满意度三、软件测试基本概念软件测试基础概念软件测试模型软件测试和软件开发一样都遵循软件工程原理遵循管理学原理 。测试专家通过实践总结出了很多很好的测试模型。这些模型将测试活动进行了抽象明确了测试与开发之间的关系是测试管理的重要参考依据。目前主流的软件测试模型V模型、W模型、H模型这三个模型代表了软件测试发展的三个不同阶段它们各有侧重适用于不同的项目环境。简单来说V模型适合“按部就班”的传统项目W模型适合“追求高质量”的严谨项目而H模型则适合“唯快不破”的敏捷项目。V模型稳扎稳打的“守门员”V 模型是一种软件开发模型它强调在软件开发过程中测试和验证的重要性。V 模型从整体上看起来像一个 V 字型结构由左右两边组成。左边代表需求分析、概要设计、详细设计、编码等开发阶段右边则代表单元测试、集成测试、系统测试、验收测试等测试阶段。每个开发阶段的输出都与一个相应的测试阶段相对应确保软件的质量和可靠性。V 模型是瀑布模型的一种改进。V 模型标明了测试过程中的不同阶段。V 模型阶段任务1. 需求分析从用户、利益相关者和市场调研中收集需求信息。对需求定义明确并记录功能需求、非功能需求如性能、安全性、可靠性和约束条件。进行需求验证确保需求是完整的、一致的、可测试的并且符合用户的期望。产出需求规格说明书SRS编写正式的需求规格说明文档作为后续设计和开发的基础。2. 概要设计设计系统整体架构包括主要组件和它们之间的交互关系。将系统划分为若干个模块或子系统并定义模块的接口和职责。编写概要设计文档描述系统的结构和模块的功能。3.详细设计详细描述每个模块的内部逻辑、数据结构、算法和接口。编写详细设计文档提供每个模块的详细实现方案和接口定义。对详细设计进行评审确保设计符合需求并且可实现。4. 软件编码实现系统的功能并确保代码质量和稳定性。为后续的集成和测试阶段提供可靠的代码基础。5. 单元测试验证每个模块的功能和性能确保模块在独立运行时能够正常工作。提高系统的稳定性和可靠性6. 集成测试确保模块在集成后能够正确地协同工作。提发现和修复模块集成时出现的缺陷。7. 系统测试确保系统作为一个整体满足所有需求和规格。验证系统的功能、性能、安全性等方面的表现。8. 验收测试确保系统满足用户的实际需求和期望。确认系统可以投入生产环境并正式交付给用户。V 模型的优缺点优点既有底层测试又有高层测试。将开发阶段清楚的表现出来便于控制开发的过程。缺点容易让人误解为测试是在开发完成之后的一个阶段。由于它的顺序性当编码完成之后正式进入测试时这时发现的一些bug可能不容易找到其根源并且代码修改起来很困难。如果需求变更较大导致要重复变更需求、设计、编码、测试。返工量大。W 模型质量至上的“双保险”W 模型是一种软件开发模型它是 V 模型的扩展指在解决传统开发模型在需求分析和设计阶段的局限性。这种模型在两个主要阶段之间增加了反向的设计和需求分析阶段确保了开发早期阶段的需求和设计的准确性和有效性。与传统的瀑布模型相比W 模型增强了团队之间的沟通和协作允许在早期阶段进行迭代和变更。此外W 模型强调测试应伴随整个开发周期不仅限于代码编写后的测试从而有助于在开发早期就发现和修复问题。核心逻辑测试与开发同步进行。开发在写文档测试就在评审文档开发在写代码测试就在设计用例。适用场景对质量要求极高的项目比如航空航天、汽车电子、金融交易系统。这些项目一旦出错代价巨大所以必须在需求阶段就通过评审把Bug找出来缺陷预防大型复杂系统系统庞大如果等到最后才测一旦出问题很难定位。W模型通过“双V”结构确保每个环节都有验证。测试资源丰富、团队成熟度高的组织W模型要求测试人员有很强的分析能力能看懂设计文档并提前介入这对团队素质要求较高。W 模型的优缺点优点将测试贯穿到整个软件的生命周期中且除了代码要测试需求、设计等都要测试。更早的介人到软件开发中能尽早的发现缺陷进行修复。测试与开发独立起来并与开发并行。缺点无法支持迭代的开发模型。对有些项目开发过程中根本没有文档产生故 W 模型无法使用。对于需求和设计的测试技术要求很高实践起来很困难。H 模型灵活多变的“特种兵”H 模型是一种将测试活动完全独立出来的模型形成了一个完全独立的流程将测试准备活动和测试执行活动清晰地体现出来。 H 模型相对于 V 模型和 W 模型更加注重测试的灵活性和独立性。软件开发中需求、设计、编码等活动被分阶段执行、但是实践中他们并不是完全串行的它们之间更多时候是交叉进行的更多的是迭代执行。把测试活动完全独立出来形成一个完全独立的流程将测试准备活动和测试执行活动清晰地体现出来。测试在该模式下主要完成三部分工作测试前期的准备、测试就绪点的预判、测试执行。测试人员需要根据实际项目的特点及时判断当下测试执行的条件是否满足然后尽早地投入测试工作中。核心逻辑测试是独立的。只要某个功能点准备好了测试就绪点测试就可以立刻开始不需要等整个系统开发完。H 模型的优缺点优点软件测试完全独立贯穿整个生命周期且与其他流程并发进行。软件测试活动可以尽早准备、尽早执行具有很强的灵活性。缺点测试就绪点分析困难。对于整个项目组的人员要求非常高。软件测试工作流程系统测试流程提前介入测试什么是系统测试流程即软件开发流程中测试人员秉承着原则三尽早介入测试 Testing Early。那么如何提前介入介入后的工作内容是什么且看如下需求分析理解和分析系统需求明确测试范围和测试目标。编写需求分析文档作为测试计划和测试设计的基础。确保测试团队对系统需求有全面的了解以便制定有效的测试策略。测试计划为测试过程提供明确的指导和框架确保测试活动有序进行。明确测试团队的角色和职责分配具体任务。确定测试工具和测试标准。测试设计确保测试用例的全面性和覆盖率为后续的测试执行提供详细指导。设计测试用例覆盖所有功能需求和非功能需求如性能、安全性、兼容性等。创建测试数据和测试环境确保测试环境与生产环境尽可能一致。编写详细的测试用例文档描述测试步骤、预期结果和实际结果。用例评审确保测试用例的质量和准确性提高测试执行的有效性。组织评审会议邀请相关团队成员如开发人员、业务分析师对测试用例进行评审。讨论并确认测试用例的完整性、准确性和有效性。根据评审反馈对测试用例进行修改和完善。测试执行验证系统是否符合需求规格说明书中的要求发现并报告系统中的缺陷。按照测试计划和测试用例执行系统测试。记录测试结果标记测试通过和失败的用例。发现并记录缺陷提交缺陷报告。Bug管理确保所有发现的缺陷得到及时修复和验证提升系统的质量。跟踪和管理测试中发现的缺陷记录缺陷的详细信息。协调开发团队修复缺陷并进行验证测试。维护缺陷状态如新发现、已修复、已验证、已关闭和优先级。发布维护确保系统顺利发布并在实际环境中稳定运行及时响应用户反馈和问题。准备发布文档包括发布说明、已知问题和解决方案。收集用户反馈进行必要的维护和优化。传统测试流程各个测试环节的作用和目标单元测试单元测试是指对软件的最小可测试部分通常是一个函数或方法进行测试。通常由开发人员在编码阶段进行并使用单元测试框架如 JUnit、pytest来自动化测试。目标是验证该单元在独立运行时是否能够正确执行其功能。集成测试集成测试是在各个单元或模块集成后对它们之间的接口和交互进行测试。可以分为两种类型增量集成测试逐步集成并测试和大爆炸集成测试一次性集成所有模块并测试。目标是发现模块之间的集成问题确保它们在一起协同工作时能够正常运行。冒烟测试冒烟测试是一种基本功能测试用于验证新版本的软件构建是否稳定是否可以进行更深入的测试。通常在每次构建之后进行测试范围较小只覆盖关键功能。目标是快速确认软件的核心功能是否正常运行类似于硬件中的“冒烟测试”确保设备接通电源后不冒烟。系统测试系统测试是在完整的系统上进行的全面测试验证整个系统是否符合需求规格说明书SRS中的要求。包括功能测试、性能测试、安全性测试、兼容性测试等多种类型。目标是确保系统作为一个整体在真实环境中能够正常工作。回归测试回归测试是在软件修改或更新后进行的测试以确保新版本没有引入新的缺陷并且之前修复的问题没有重新出现。通常使用自动化测试工具进行覆盖范围较广。目标是验证修改对其他功能的影响确保软件的整体稳定性。验收测试验收测试是由最终用户或客户进行的测试验证软件是否满足业务需求和用户需求。目标是确认系统准备好投入实际使用通常是开发和测试的最后一个阶段。包括Alpha测试内部用户测试和Beta测试外部用户测试。Bug 管理流程Bug处理主流程1.当测试人员发现 Bug 后提交相关的缺陷场景描述及现象即缺陷的状态为 New。测试人员在创建缺陷之前首先应该保证这个缺陷是没有被提过的以免造成有重复的缺陷。2.创建时会指定给开发缺陷创建成功后对应的开发确认缺陷即缺陷的状态为 Open。开发接收到一个缺陷时首先是根据测试人员的描述对缺陷进行分析及重现如果发现不是缺陷或缺陷对应的场景无法复现则需要将缺陷直接重新指派给测试人员并注明原因。3.当开发确认缺陷并解决完后此时缺陷的状态为 Fixed并当前缺陷被重新指派给测试人员。4.测试发现缺陷的指派更改后进行当前缺陷的回归测试若通过则关闭缺陷即缺陷的状态为 Close。测试左移和测试右移测试左移左移是往测试之前的开发阶段移。测试团队在软件开发周期早期就开始介人。对代码进行测试。从发现 bug 到预防 bug。测试左移-质量保障手段代码评审code review由团队成员通常是开发人员检查代码的质量包括编码规范、逻辑正确性、可读性和可维护性。通过评审发现潜在的缺陷和问题。代码审计由独立的审计团队或工具对代码进行全面检查重点关注安全性、性能、合规性和潜在的漏洞。发现代码中的安全漏洞和性能瓶颈提升系统的安全性和性能。单元测试验证每个代码单元的功能确保其在独立运行时能正常工作。提高代码的稳定性和可维护性。自动化冒烟测试使用编写的自动化脚本在每次代码变更后快速验证系统的核心功能。确保系统的基本功能在持续集成过程中始终保持正常。研发自测开发人员在提交代码前自行进行测试包括单元测试、功能测试和集成测试。在代码提交前发现并解决潜在问题减少后续测试阶段的缺陷数量。测试右移右移是往发布之后移。产品上线后进行线上监控。测试右移-线上监控闭环的线上问题反馈-检查-解决-更新流程。更便捷的日志查看、回传服务。丰富有效的log便于问题的快速定位。丰富的监控指标(例如业务异常点指标)。业务监控(例如短信发送等)。关键指标每日监控(服务器指标)。生产数据监控(警报)。