成功的软件测试需要内部测试团队和第三方测试团队各展所长、紧密配合。它们不是简单的替代关系,而是互补和协同的关系。以下是几种典型的协作模式:
一、 角色定位和优势互补
内部测试团队
角色定位:项目质量的“日常守护者”和“深度参和者”。
主要优势:
业务理解深入:深刻理解产品业务逻辑、历史背景和用户真实场景。
测试持续快速:可进行持续集成测试、快速冒烟测试和每日构建测试。
沟通成本低:和开发、产品团队沟通便捷,反馈问题、验证修复速度快。
成本可控:负责绝大部分常规测试活动。
第三方测试团队
角色定位:项目质量的“独立审计师”和“专项评估专家”。
主要优势:
客观和公正:独立视角,避免思维定式和“灯下黑”,结果更具公信力。
专业和深度:在性能、安全、可靠性等专项领域具备专业工具、知识和方法。
经验和标准:熟悉行业最佳实践和标准,能提供规范化的测试流程和文档。
资源弹性:可在项目高峰期、内部资源不足时提供额外的人力和技术支撑。
二、 主要协作模式
根据项目目标、阶段和资源情况,可采用以下一种或多种混合模式:
模式一:阶段性专项协作模式
场景:适用于项目重要里程碑(如上线前、版本发布前)。
流程:
内部测试先行:内部测试团队完成所有常规测试(功能、集成、回归),确保系统达到可交付状态。
第三方介入:邀请第三方团队在内部测试基础上,进行独立的验收测试、性能测试或安全测试。
问题反馈和回归:第三方发现的问题正式提交给项目管理方,由内部团队分配给开发修复,并自行完成初步验证。
第三方复核:对修复后的缺陷,特别是重要缺陷,进行回归验证,确保问题真正解决。
特点:目标明确,周期清晰,以“终检”和“背书”为主要目的。
模式二:全过程并行协作模式
场景:适用于对质量要求极高、周期紧张的大型项目。
流程:
职责划分:在项目早期即明确分工。
内部团队:负责需求分析、测试用例设计、日常功能测试、冒烟测试和回归测试。
第三方团队:专注于非功能性测试(如性能、安全、可靠性),并定期(如每两周)对已稳定的功能模块进行功能符合性抽查。
持续沟通:双方通过每日站会、周度例会同步进度、风险和问题,共享测试报告和缺陷列表。
特点:将第三方测试“左移”,提前发现问题,降低项目后期风险。
模式三:资源增强协作模式
场景:适用于内部测试资源短期不足,或需要特定技术专家时。
流程:
第三方测试人员作为内部团队的延伸,接受内部测试领导的统一管理和任务分配。
他们使用内部的测试环境、用例和流程,执行指定的测试任务(如大规模回归测试、特定模块测试)。
发现的缺陷直接提交到内部的缺陷管理系统,由内部团队进行跟踪和管理。
特点:第三方主要提供“人力”而非“独立视角”,快速补充测试产能。
三、 重要的协作和保障机制
为确保协作顺畅,无论采用何种模式,以下实践比较重要:
明确的范围和职责
在开始前,通过《测试任务书》或SLA(服务水平协议)清晰界定双方的工作范围、交付物和责任,避免重复测试或遗漏。
沟通和统一的工具平台
缺陷管理:使用统一的缺陷管理系统(如Jira、禅道),并约定缺陷的提交规范、工作流和严重等级定义。
文档共享:使用共享的文档库(如Confluence、SVN/Git)同步需求文档、测试计划、用例和报告。
定期会议:建立定期的同步会议机制(如每日站会、周度评审会),及时同步进度和风险。
知识传递和信息透明
内部团队需向第三方团队全面介绍系统架构、业务逻辑和重要测试点。
第三方团队应分享其测试策略、方法和初步发现,确保信息对等。
成果交付和闭环
第三方测试的产出是权威的《测试报告》。该报告不仅列出问题,更应对软件质量做出总体评价,为项目上线决策提供直接依据。