软件测试生命周期(Software Testing Life Cycle)定义了软件生命周期(System Development Life Cycle)内的全部或主要测试活动,搞清楚软件测试生命周期定义的背景和出发点,对于指导和规范测试活动具有重要意义。
查阅了国外同行对软件测试生命周期的描述,比较有代表性的有以下几个版本:
版本一(Title: Software testing life cycle)
从严格划分软件生命周期内开发和测试活动的角度,将STLC划分为以下阶段:
l Test Planning
l Test Analysis
l Test Design
l Construction and Verification
l Testing Cycles
l Final Testing and Implementation
l Post Implementation
浅析:
该划分过于强调测试活动在项目团队活动中的独立性,测试活动可定义、可重复。缺点似乎也比较明显:测试活动的管理缺乏灵活性,测试活动对产品定义、开发等活动工作输出的依赖性比较强,测试进度可能因此而变得不可控。本划分,适用于产品开发各阶段边界定义清晰的软件开发模式,同时要求项目中各方(产品定义、开发、测试等)的进度可控。
可参考:http://editorial.co.in/software/software-testing-life-cycle.php
版本二(Title: Software testing life cycle)
从建立测试过程模型的角度对软件生命周期内的测试活动进行划分:
l Models for testing, economics of testing
l High level test planning
l Component Testing(also known as unit, module, program testing)
l Integration testing in the small
l System testing(non-functional and functional)
l Integration testing in the large
l Acceptance testing
l Maintenance testing
浅析:
该划分类似W模型(V模型的改进型),强调宏观测试活动(绿色部分)的指导意义,突出微观测试活动的细微差别(蓝色部分),并将软件维护阶段的测试活动纳入软件测试生命周期。不足之处:测试过程的可重复性比较差。本划分,适用于规模比较大或系统比较复杂的软件产品,测试和开发模式都倾向于增量模型(Incremental Model)。
可参考:http://www.slideshare.net/gueste730d5/software-testing-life-cycle
版本三(Title: Life Cycle of Testing Process)
从协调项目内产品定义、开发、测试活动同步展开的角度,将STLC划分为以下阶段:
l Requirements stage
l Test Plan
l Test Design
l Design Reviews
l Code Reviews
l Test Cases preparation
l Test Execution
l Test Reports
l Bugs Reporting
l Reworking on patches
l Release to production
浅析:
该划分强调测试全程参与整个软件的开发周期,保持测试活动独立性(蓝色部分)的同时,也体现了测试应尽早介入的原则,是比较理想的一种开发测试模式。本划分,适用于敏捷等开发模式,但对项目团队的人员能力和项目管理成熟度要求比较高。
可参考:http://www.exforsys.com/tutorials/testing/life-cycle-of-testing-process.html
比较以上三个不同版本的描述,似乎可以发现软件测试生命周期的定义受以下因素的影响:
(1) 软件开发过程模型。
(2) 软件规模和复杂度,甚至软件体系结构(比如Component Testing,不是所有的软件都适用)。
(3) 项目团队整体人员能力水平和项目管理成熟度(比如敏捷开发模式)。
当我们接手一个新的测试任务时,对项目的上述特点进行分析,灵活运用各版本定义的优点,规划适合项目自身特点的软件测试生命周期,对于指导我们从全局来规范和优化测试活动是很有意义的。
初次发布:2011-04-03
本次修改:2012-02-01