pip3.6.exe install django-redis
1.2、软件开发生命周期的测试
1.2.1 软件开发生命周期模型
为了使软件开发的工作系统化,并且可控制,需要采用软件开发生命周期模型和开发过程来管理所有的活动,软件开发生命周期模型有多种。比如瀑布模型,V模型,
螺旋模型,以及其他各类增列迭代模型,还有目前流行的敏捷或者轻量级方法,所有这些模型都定义了一种系统化的方式,以达到工程项目中工作的有序化
在多数情况下,软件开发生命周期模型定义了软件开发过程中的各个工作阶段和步骤,他们完成后将以文档或代码的形式呈现,一个阶段的完成,通常被称为一个
里程碑。里程碑的实现是指完成了需要的交付物,并且与要求的质量标准保持一致。通常,在软件开发中需要定义专注于特定任务的角色,有时候,除了模型之外,在
特定阶段用到的技术和过程也需要描述,使用模型有助于资源计划(例如:时间,人员,基础设施等)的细化。在软件工程中,软件开发生命周期模型定义了参与项目
的每个人需要完成的任务,以及完成这些任务的事件顺序
测试不是孤立存在的,他是在各种软件开发生命周期模型中重要组成部分,测试活动与开发活动是息息相关的,不同的软件开发生命周期模型定义了不同的测试
阶段、测试活动和测试方法。下面介绍一些常见的软件开发生命周期模型
1.2.1.1 顺序模型
1、瀑布模型
瀑布模型最早在1970年提出,在软件工程中占有重要的地位,他提供了软件开发的基本框架。他从测试角度而言,瀑布模型最大的缺点是,测试是软件开发过程中
的一个阶段,测试被看做是对软件产品的最终检查,类似于制造业中将产品交付给客户之前的检查
传统的瀑布模型,他将软件开发生命周期划分为“系统需求”,“软件需求”,“分析”,“程序设计”,”编码“,”测试“,”运行“七个基本的阶段,并且规定了他们自上
而下,相互衔接的固定次序,如果瀑布流水,逐级下落,从本质上来说,他是一个软件开发架构,其开发过程是通过一系列阶段顺序展开的,只有当一个开发阶段完成
后,下一个开发阶段才会开始
瀑布模型如图所示
系统需求------》软件需求------》分析-------》程序设计--------》编码-------》测试-------》运行
尽管瀑布模型由于存在一些缺点而招致很多的批评,但是他对很多类型的项目而言依然是有效的,如果能够正确使用瀑布模型,可以节省大量的时间和金钱。是否采用
瀑布模型,主要取决于是否能够充分理解客户的需求,以及在项目开发过程中是否经常发生需求变更,对于需求经常发生变更的项目,采用瀑布模型是不合适的,这
时候就需要考虑其他类型的软件开发生命周期
2、V模型
V模型是瀑布模型的变种,他体现的主要思想是:开发任务和测试任务是相互对等的活动且同等重要。V模型的左右两侧组字母V的两个边,形象的体现了这一点,
V模型的左侧代表软件开发过程,在软件开发过程中,系统是逐步设计完善的,编码是最后一步。V模型的右侧描述了集成和测试的过程,通过不断组合程序组件,形成
更大的子系统(集成),并对他们的功能和非功能进行测试,根据这个模型,开发得到的整个系统将以验收测试作为系统集成和测试活动的结束点
下图显示了由开发活动和测试活动共同组成的一个V模型,V模型主要的开发活动有需求规格说明,系统功能设计,系统技术设计,组件规格说明和编码,相应的测试
级别有组件测试,集成测试,系统测试和验收测试,其中,构成V模型左侧的活动就是人们熟知的瀑布模型中的活动
编码
组件规格说明 组件测试
系统技术设计 集成测试
系统功能设计 系统测试
需求规格说明 验收测试
需求规格说明
从客户或者将来的系统用户中收集,并对他们进行详细的描述,最终得到批准的要求和需求。需求规格说明定义了开发系统的目的和需要实现的特性和功能
系统功能设计
将需求映射到系统的功能和框图上
系统技术设计
设计系统的具体实现方式,这个阶段包括定义系统环境的接口,同时将整个系统分解成更小且容易理解的子系统(系统架构),从而可以对每个子系统进行独立
的开发
组件规格说明
定义每个子系统的任务,行为,内部结构以及与其他子系统的接口
编码
通过编程语言实现所有已经定义的组件,例如模块,单元,类
在V模型中,随着整个构建阶段的深入。对软件系统的描述越来越详细,通常来说,在某个构建中引入的错误最容易在本构建阶段中发现,因而,对于每个构建
阶段。V模型的右边定义了相应的测试级别。在每个测试级别都要检查开发的输出是否满足具体的要求,或者是否满足这些特定阶段相关的要求
组件测试
验证软件组件是否按照组件规格说明正确执行,即保证每个最小的单元能够正常运行,组件测试一般由开发人员执行,首先设定最小的测试单元,然后通过设计
相应的测试用例来验证各个组件功能的正确性
集成测试
检查多个组件是否按照系统设计描述的方式协同工作。集成测试的主要关注点是系统能够成功编译,实现了主要的业务功能,系统各个模块之间的数据能够正常
通信等
系统测试
验证整个系统是否满足需求规格说明
验收测试
从用户角度检测系统是否满足合同定义的需求或者用户需求