软件质量其实是在软件开发生命周期中慢慢形成的,或者说,软件质量是内建的(Quality is built in),而不是测试测出来的。
贯穿于软件开发全过程的测试,不仅可以在第一时间内发现缺陷,降低缺陷带来的成本(劣质成本),而且能有效的预防缺陷的产生,构建更好的软件产品质量。
2.1 测试的左移和右移
测试左移:将测试计划与设计提前进行,以及开展需求评审、设计评审、代码评审等。
测试右移:将测试延伸到研发阶段之后的其他阶段,一般主要指产品上线后的测试,包括在线测试、在线监控和日志分析,包括alpha测试、beta测试。
2.2 测试驱动开发
“测试驱动开发(Test Driven Development,TDD)”——测试在先,编码在后。
1.UTDD(Unit Test Driven Development):在编码之前先写测试脚本,可以称为单元测试驱动开发。
2.ATDD(Assurance TDD):在需求分析时就确定需求(如用户故事)的验收标准,即验收测试驱动开发。
3.BDD(Behavior Driven Development):从ATDD演化出来一种具体落地的开发模式就是行为驱动开发,将验收标准更加明确化,可以看作ATDD的实例化。GWT(Given When Then)
4.RBE(Requirement By Example):BDD再往前推进一步,就是需求实例化,更加明确需求的具体表现。
2.3 传统研发模式的测试环
从软件工程来看,经过需求评审、设计评审、代码评审与单元测试、集成测试、系统测试和验收测试,再到产品缺陷根因分析、产品改进计划(提出新的产品需求)阶段,再进入下一个循环。
从项目管理角度看,经过测试分析、测试计划、测试设计、脚本开发、测试件评审、测试执行与监控、测试过程与结果评估、测试与西凉报告和项目总结阶段,形成项目过程环。
2.4 敏捷研发中的测试环
持续设计、持续编程、持续构建、持续集成、持续测试、持续交付。
2.5 DevOps与测试
2017年,作为一个软件工程实践,DevOps旨在统一软件开发和运维,与业务目标紧密结合,在软件构建、集成、测试、发布到部署和基础设施管理中大力提倡自动化和监控,目标是缩短开发周期,增加部署频率,更可靠的发布。
特征:
1.打通用户、PMO、需求、设计、开发、测试、运维等各上下游部门或不同角色。
2.打通业务、架构、代码、测试、部署、监控、安全、性能等各领域工具链。
2.6 小结
全程软件测试,强调软件测试不再是一个阶段,而是贯穿整个软件开发与维护的生命周期,只要软件研发项目一启动,软件测试就介入,从需求评审开始,直到产品交付后的在线测试。测试左移——TDD;测试右移——DevOps。