1.1软件开发过程模型
一、瀑布模型:
1、流程:需求分析——设计——编码——实现(测试切入点)——软件测试——完成——维护(软件测试——维护的过程中可能出现需求变更)
2、瀑布模型是一种线性模型,是所有模型的基础
程序中的bug越早发现成本越低
优点:开发的各个阶段清晰、强调早期需求分析和及需求调查、适合需求稳定的产品开发
缺点:依赖于早期的需求调查,不适应需求的变化、单一流程不可逆、风险往往延至后期才暴露、前面未发现的错误会传递并扩散到后期
改良:沿用瀑布模型的线性思想,细化了各个阶段,在某些重要关注的阶段之间渗入迭代(更新)的思想
二、快速原型模型
在开发真实系统之前,构造一个原型,在该原型的基础上,逐步完成整个系统
优点:克服瀑布模型的缺点,更好地满足用户的需求并减少由于软件需求不明确带来的项目开发风险,适合预先不能确切定义需求 的软件系统的开发。
缺点:不适合大型系统的开发(适合开发小型的、灵活性高的系统)
三、螺旋模型
将开发周期分为几个螺旋周期,要有具有相当丰富的风险评估经验。
1.2软件测试&软件工程
软件测试和软件工程息息相关,软件测试是软件工程中不可缺少的一部分
一、软件测试模型——(V模型、W模型、H模型)
1、V模型
需求分析——概要设计——详细设计——编码——单元测试——集成测试——系统测试——验收测试
(1)单元测试又称模块测试,针对软件设计中的最小单位——程序模块
(2)集成测试又称组装测试,在单元测试的基础上,将所有程序模块进行有序的、递增的测试。重点测试不同模块的接口部分
(3)系统测试指将整个软件系统看做一个整体进行测试,包括对功能、性能以及软件所运行的软硬件环境进行测试。系统测试 在系统集成完毕后进行测试前期主要测功能是否满足要求,后期主要测试系统运行的性能是否满足要求,以及在不同软硬 件环境中的兼容性等。
(4)验收测试
i)α测试是内测版本,通常只在软件开发者内部交流,也有很少一部分发布给专业测试人员,测试完一般不会有大问题了(开发环 境下测试)
ii)β测试是公测版本,是对所有用户开放的测试版本,通过一些专业爱好者的测试,将结果反馈给开发者,开发者再进行有针对 性的修改(实际情况下测试)
iii)γ测试,是指软件正式发行的候选版
优点:既包含了底层测试(检验源代码质量的测试,如:单元测试)又包含了高层测试(检验整个系统的需要,如:系统测 试);清楚的标识了开发和测试的各个阶段;采用自顶向下逐步求精的方式将整个开发过程分成了不同阶段,每个阶段分 工明确,便于整体把控
缺点:自上而下的顺序导致测试工作在编码之后,就导致错误不能及时的进行修改;同时实际的开发过程中,在需求阶段很难把 用户需求完全明确下来,返工量大,灵活度较低
改良:每个步骤都可以进行小的迭代模型
2、W模型(双V模型)
IEEE的原则中提出了软件的需求和设计阶段也应有测试活动,开发一个V,测试一个V,并行组合成一个W模型
需求分析——概要设计——系统设计——编码——集成——实施——交付
验收/系统测试设计——集成测试设计——单元测试设计——单元测试——集成测试——系统测试——验收测试
优点:开发和测试伴随整个开发周期,测试对需求和设计同样要测试;更早地接入测试可以发现开发初期的缺陷,可以更加低成 本进行缺陷修复
缺点:开发和测试依然是线性关系,依然无法支持迭代、自发性和需求等变更调整;很多项目执行过程中不产生文档,W模型基 本无法适应;对需求和设计的测试要求高
3、H模型:将测试活动完全独立出来,形成了一个完全独立的流程(测试准备、测试就绪点、测试执行)
总结:V模型适用于中小企业,W模型适用于中大型企业(人员要求高),H模型人员要求非常高,很少有公司使用
二、测试分类
1、按测试阶段划分:单元测试、集成测试、系统测试
2、按是否覆盖源代码:白盒测试、黑盒测试(包含功能测试和性能测试)、灰盒测试
(1)白盒测试:研究里面的源代码和程序结构
黑盒测试:又称为数据驱动,完全不用考虑程序内部结构和内部特性,注重于测试软件的功能需求,只关心软件的输入数 据和输出数据
灰盒测试:白盒测试和黑盒测试相结合
(2)黑盒测试又分为功能测试和性能测试
功能测试包括:逻辑功能测试、界面测试、易用性测试、安装测试、兼容性测试
性能测试包括:时间性能(事物响应时间)、空间性能(系统资源消耗)、一般性能测试、稳定性测试、负载测试、压力 测试
3、按是否运行代码分类:静态测试、动态测试<