设计模式和测试模式概述
- 软件的生命周期
- 为什么要进行测试(测试的目的)?
- 软件的设计模式
- 1. **瀑布模型**
- 3. 增量和迭代模型
- 4. 敏捷模型
- 5. 喷泉模型
- 测试模型
- `V`模型
- `W`模型
一个应用程序从出生到“死亡”会经过非常漫长的流程……
软件的生命周期
我们知道一段旅行的周期:
确认旅行地点—>计划旅行时间—>设计旅行内容—>前往旅行目的地—>执行旅行计划—>完成本次旅行
软件的生命周期何尝不是如此:
- 需求分析:分析软件需求,可以从用户角度或者甲方要求切入,输出需求文档
- 计划:根据需求分析出的功能点做好项目计划
- 设计:根据计划设计出功能,输出设计文档
- 编码:根据设计文档,使用合适的计算机语言进行应用程序的编写
- 执行测试用例:根据设计文档和需求文档进行测试,输出测试报告
- 运行维护:软件后期的修复过程,在软件的运行阶段需要对软件进行不断完善的过程。
- 下架:停止对这个软件的一切行为,回收软件资源
为什么要进行测试(测试的目的)?
在软件的生命周期中,我们可以看到,在编码完成之后,需要进行测试,测试的目的是什么?难道开发人员做的应用程序不能用吗?
不是的!测试的目的是为了确保软件解决了应该解决的问题,发现软件中可能存在或者已经存在的问题,是一个尽可能去将软件完善的过程。
如果想要一个软件合乎用户的需求,就必须要进行相应的测试,避免非常多的意外情况出现,不能去让用户发现这个错误,作为测试人员应该要有责任感。
软件的设计模式
1. 瀑布模型
- 该设计模式与软件的生命周期是一样的,需求分析—》计划—》设计—》编码—》测试—》运行维护—》下架
由此我们可以观察到,在这种模型下的软件设计,测试人员是在编码阶段后才加入到项目中,这种设计模式的存在一定的优缺点。
优点:更注重开发的阶段性。强调早期计划及需求调查。
缺点:依赖于早期需求调查,不能适应变化。在开发时中的经验不能反馈到对本产品的一些过程中。风险延后发现,直到测试阶段才发现风险,导致风险无法及时纠正,错过改正错误的最佳时机。
应用场景:更适合于小项目开发,变化幅度小的项目。
#### 2. 螺旋模型
是一种渐进式开发的代表之一,对于一些复杂度高,规模庞大,风险大的项目非常合适,这种迭代开发的模式给软件测试带来了新要求和新规范,它不允许独立测试,测试必须要和开发的迭代进行相关联。其中的回归测试是非常重要的。
优点:在需求阶段就加入测试,非常严谨的风险管理。重视各阶段的开发质量。提供选择机会这个计划是否可行。
缺点:引入非常严格的风险识别、风险分析和风险控制,需要投入大量时间,人力、物力。
应用场景:复杂度高的项目,风险大的项目适配螺旋模式是一个不错的选择。
3. 增量和迭代模型
增量模型可以显著降低项目风险,结合软件持续构建机制,现今成为最流行的开发区模型之一。增量模型是从功能量上进行划分的,每阶段完成一定的功能。
优点:降低项目风险,提高项目安全性。
缺点:可用在完整项目中时的难度大。
应用场景:适用于项目中功能成熟度高。
迭代模型是从深度或细化的程度进行划分的,每阶段功能得到完善,增强,适用于需求不明显,难度大的软件开发。在进行软件开发的时候一般是将系统的项目划分为一个个非常小的模块,每个部分都要经过设计、编码、测试等多个环节。
优点:每个迭代都有一个清晰的目标和可交付成果,避免盲目编码。
缺点:项目变动快,设计、编码和测试的时间线会拉长。
应用场景:受用于一些本就不成熟的阶段,一步步进行改进。
两个设计模型的互相补充,一个设计项目中可以掺杂增量和迭代两种开发模式,会使得项目开发更加高效。
4. 敏捷模型
是一种以迭代进行开发的一种软件开发模式,强调快熟反应和价值驱动。项目在构建初期分为好几个子项目,具备可视,可集成,可运行等特征。
优点:严格按照规则执行,步骤成果是检验程序进度的方法。增加项目的可维护性,允许需求和设计改变。
缺点:更高的成本和更高的人力需求,存在风险和不确定性。
应用场景:适用于多变的数据模型中,适用于复杂场景,因为它灵活多变。
5. 喷泉模型
是一种用于描述用户需求的软件开发过程,这种测试过程以用户需求作为动力,以对象为驱动力。在执行软件生命周期中的每一步时,不需要按照规则,可以进行交叉执行,迭代执行。
优点:风险防范做的好,可以随时补充需求与功能,测试中也可以进行交叉测试
缺点:需要消耗大量人力、物力和时间。
应用场景:在一些大规模项目中,可能会改动需求的项目中适用
测试模型
V
模型
准确描述了测试过程中不同类型的测试,并且清晰地描述了测试阶段和开发阶段中的对应关系。
该模型指出,测试是存在顺序的,单元测试是在集成测试之前,所以在执行测试时应该要先保证前方功能实现成果。
- 局限性:把测试的时间摆放在编码后期,未在需求开始之前就进入测试阶段。
W
模型
该模型配合两个 V 模型进行软件测试,增加了各个阶段性的测试过程,明确表达了测试与开发的并行行为。
特点:测试和开发是同步进行的,测试工作在早期需求分析就加入项目中。
优点:有助于早日发现软件问题,及时修复缺陷。对需求的测试也有益于理解项目难度和测试风险。可以早点制定测试对策,以修复缺陷。
局限性:虽然上图是并行,实则也是串行,只有执行完上一个工作才可以进行下一项工作。无法支持敏捷开发模型,对于当前环境复杂多变,该软件测试模型也同样会面临瓶颈。