很多人误以为“测试就是开发完成后拿过来测一测”。实际上软件测试贯穿于整个软件开发生命周期SDLC的每个阶段。越早介入测试越能低成本地预防缺陷。本文将带你走过从需求分析到上线运维的完整流程理解“测试左移”和“测试右移”的现代理念。一、传统误解 vs 现代实践二、各阶段的测试活动详解需求阶段最容易被忽视目标理解业务需求确保需求清晰、可测试。典型活动参加需求评审会提出疑问“如果用户不输入邮箱系统应该怎样处理”评估需求的可测试性例如“系统应具有良好性能”太模糊应改为“95% 的请求在 2 秒内响应”。编写测试要点高阶场景。产出需求评审报告、初步测试计划。设计阶段目标验证架构和设计是否合理识别测试难点。典型活动参与设计评审检查模块划分、接口定义、数据库设计。评估可测试性设计是否预留了测试接口日志是否完善设计集成测试策略哪些模块需要集成先后顺序。产出集成测试计划、测试环境需求。编码阶段开发与测试并行目标尽早发现代码缺陷减少后期返工。测试活动开发人员编写单元测试JUnit、pytest 等要求覆盖核心逻辑。开发人员执行静态代码分析SonarQube 等检查编码规范和安全漏洞。测试人员编写功能测试用例准备测试数据开发自动化脚本。产出单元测试报告、代码扫描报告、测试用例库。测试阶段传统意义上的“测试”又细分为多个层次冒烟测试新版本部署后快速验证主要功能是否可用通过则继续否则打回。功能测试针对每个需求执行测试用例验证功能正确。集成测试验证模块间接口和交互以及外部依赖数据库、第三方API。系统测试在完整集成后的系统上测试端到端业务流程、非功能需求性能、安全、兼容性等。回归测试每次修改代码后重新执行关键测试用例确保旧功能没被破坏。可自动化。用户验收测试UAT由用户或产品经理执行确认软件满足业务需求。UAT 通过才可上线。运维阶段测试的延续目标收集生产环境反馈优化测试。活动监控生产日志和错误报告发现线上缺陷。分析缺陷根因补充测试用例避免同类问题再次出现。执行混沌工程故意在生产环境注入故障测试系统的容错能力适用于高可用系统。这一做法被称为测试右移。三、测试左移Shift Left与测试右移Shift Right为什么要左移因为缺陷发现越晚修复成本越高前文已讲。为什么要右移因为测试环境不可能完全模拟生产必须通过生产反馈持续改进。四、一个完整的示例流程以电商App为例需求阶段产品经理提出“用户忘记密码后可通过手机验证码重置”。测试参与评审指出需要明确“验证码有效期多少分钟”“同一手机号每天最多请求几次”设计阶段架构师设计密码重置接口。测试提出“是否需要防暴力破解机制比如连续失败5次锁定15分钟”编码阶段开发写代码 单元测试测试编写接口测试脚本用JMeter或Postman。测试阶段冒烟测试部署后验证能发送验证码、输入正确验证码可重置。功能测试覆盖正常流程 异常验证码过期、错误验证码、手机号不存在。集成测试验证密码重置后登录接口、购物车接口等是否同步新密码实际应该是token无关但举例。系统测试执行性能测试100人同时请求验证码系统是否稳定、安全测试能否通过伪造手机号获取验证码。回归测试自动执行所有已有功能用例确保没破坏其它功能。UAT产品经理亲自体验流程确认符合业务预期。上线后监控错误日志如果发现有人频繁请求验证码触发告警收集用户反馈在下个迭代改进比如增加图形验证码。五、常见误区与正确认识六、小结测试不是孤立阶段而是贯穿整个软件开发生命周期的持续活动。测试左移预防缺陷降低修复成本。测试右移关注生产质量持续优化。作为测试人员视野不能局限于“点点点”而要关注全流程质量。
第四篇:《软件测试的全生命周期:从需求到上线》
很多人误以为“测试就是开发完成后拿过来测一测”。实际上软件测试贯穿于整个软件开发生命周期SDLC的每个阶段。越早介入测试越能低成本地预防缺陷。本文将带你走过从需求分析到上线运维的完整流程理解“测试左移”和“测试右移”的现代理念。一、传统误解 vs 现代实践二、各阶段的测试活动详解需求阶段最容易被忽视目标理解业务需求确保需求清晰、可测试。典型活动参加需求评审会提出疑问“如果用户不输入邮箱系统应该怎样处理”评估需求的可测试性例如“系统应具有良好性能”太模糊应改为“95% 的请求在 2 秒内响应”。编写测试要点高阶场景。产出需求评审报告、初步测试计划。设计阶段目标验证架构和设计是否合理识别测试难点。典型活动参与设计评审检查模块划分、接口定义、数据库设计。评估可测试性设计是否预留了测试接口日志是否完善设计集成测试策略哪些模块需要集成先后顺序。产出集成测试计划、测试环境需求。编码阶段开发与测试并行目标尽早发现代码缺陷减少后期返工。测试活动开发人员编写单元测试JUnit、pytest 等要求覆盖核心逻辑。开发人员执行静态代码分析SonarQube 等检查编码规范和安全漏洞。测试人员编写功能测试用例准备测试数据开发自动化脚本。产出单元测试报告、代码扫描报告、测试用例库。测试阶段传统意义上的“测试”又细分为多个层次冒烟测试新版本部署后快速验证主要功能是否可用通过则继续否则打回。功能测试针对每个需求执行测试用例验证功能正确。集成测试验证模块间接口和交互以及外部依赖数据库、第三方API。系统测试在完整集成后的系统上测试端到端业务流程、非功能需求性能、安全、兼容性等。回归测试每次修改代码后重新执行关键测试用例确保旧功能没被破坏。可自动化。用户验收测试UAT由用户或产品经理执行确认软件满足业务需求。UAT 通过才可上线。运维阶段测试的延续目标收集生产环境反馈优化测试。活动监控生产日志和错误报告发现线上缺陷。分析缺陷根因补充测试用例避免同类问题再次出现。执行混沌工程故意在生产环境注入故障测试系统的容错能力适用于高可用系统。这一做法被称为测试右移。三、测试左移Shift Left与测试右移Shift Right为什么要左移因为缺陷发现越晚修复成本越高前文已讲。为什么要右移因为测试环境不可能完全模拟生产必须通过生产反馈持续改进。四、一个完整的示例流程以电商App为例需求阶段产品经理提出“用户忘记密码后可通过手机验证码重置”。测试参与评审指出需要明确“验证码有效期多少分钟”“同一手机号每天最多请求几次”设计阶段架构师设计密码重置接口。测试提出“是否需要防暴力破解机制比如连续失败5次锁定15分钟”编码阶段开发写代码 单元测试测试编写接口测试脚本用JMeter或Postman。测试阶段冒烟测试部署后验证能发送验证码、输入正确验证码可重置。功能测试覆盖正常流程 异常验证码过期、错误验证码、手机号不存在。集成测试验证密码重置后登录接口、购物车接口等是否同步新密码实际应该是token无关但举例。系统测试执行性能测试100人同时请求验证码系统是否稳定、安全测试能否通过伪造手机号获取验证码。回归测试自动执行所有已有功能用例确保没破坏其它功能。UAT产品经理亲自体验流程确认符合业务预期。上线后监控错误日志如果发现有人频繁请求验证码触发告警收集用户反馈在下个迭代改进比如增加图形验证码。五、常见误区与正确认识六、小结测试不是孤立阶段而是贯穿整个软件开发生命周期的持续活动。测试左移预防缺陷降低修复成本。测试右移关注生产质量持续优化。作为测试人员视野不能局限于“点点点”而要关注全流程质量。