优点:
开发的各个阶段比较清晰。
强调早期计划及需求调查。

适合需求稳定的产品开发。
缺点:
依赖于早期的需求调查,不适应需求的变化。
单一流程不可逆。
风险往往延至后期才显露,失去及早纠正的机会。
问题在项目后期才开始暴露。
前面未发现的错误会传递并扩散到后面的阶段,可能导致项目失败。
优点:
克服瀑布模型的缺点,更好地满足用户的需求并减少由于软件需求不明确带来的项目开发风险。适合预先不能确切定义需求的软件系统的开发。
缺点:
不适合大型系统的开发(适合开发小型的、灵活性高的系统)。前提要有一个展示性的产品原型,因此在一定程度上可能会限制开发人员的创新。
优点:
螺旋模型很大程度上是一种风险驱动的方法体系,因为在每个阶段之前及经常发生的循环之前,都必须首先进行风险评估。
缺点:
采用螺旋模型需要具有相当丰富的风险评估经验和专门知识,在风险较大的项目开发中, 如果未能够及时标识风险,势必造成重大损失。过多的迭代次数会增加开发成本,延迟提交时间。
测试模型:
需求分析:
用户需求、业务需求、需求规格说明书
概要设计:
系统架构、模块划分、模块与模块之间的接口。
详细设计:
模块内部实现的逻辑和方法。
编码:
实现上面的设计。
单元测试:
检测代码的开发是否符合详细设计的要求。
集成测试:
检测此前测试过的各组成部分是否能完好地结合到一起。
系统测试:
检测已集成在一起的产品是否符合系统规格说明书的要求。
验收测试:
检测产品是否符合最终用户的需求。
优点:
测试V模型即包含了底层测试又包含了高层测试;
底层测试:检验源代码质量的测试,如:单元测试;
高层测试:检验整个系统的需要,如:系统测试;
V模型清楚地标识出了软件开发的阶段。
它采用自顶向下逐步求精的方式把整个开发过程分成不同的阶段,每个阶段的工作都很明确,因此便于控制开发过程。当所有的阶段都完成之后,该软件的开发过程也随之结束。
缺点:
V模型一大缺点正是它自身的顺序性所导致的。到了测试阶段,程序已经完成,错误已经产生,很多前期的错误一直到测试阶段才发现,甚至无法发现,往往无从修改了。
同时实际的开发过程中,在需求阶段很难把用户的需求完全明确下来,因此,当需求变更时将会导致阶段反复,而且都要重复需求、设计、编码、测试等过程,返工量非常大,模型灵活性比较低。
W模型的优点:
开发强调测试伴随着整个软件开发周期,而且测试的对象不仅仅是程序,需求和概要设计同样要测试;
更早地接入测试,可以发现开发初期的缺陷,那么可以用更加低的成本进行缺陷修复。
同样是分阶段的工作,便于控制项目过程。
W模型的缺点:
依赖于软件开发和软件测试依然保持一前一后的线性关系,依然无法支持迭代、自发性和需求等变更调整;
对于当前很多项目,在执行的过程中根本不产生文档,那么W模型基本无法适用;
使用起来技术复杂度很高,对于需求和设计的测试要求很高,实践起来困难。
软件测试分类:
单元测试
又称模块测试,针对软件设计中的最小单位——程序模块,进行正确性检查的测试工作。单元测试需要从程序的内部结构出发设计测试用例。多个模块可以平行地独立进行单元测试。
集成测试
又叫组装测试,通常在单元测试的基础上,将所有程序模块进行有序的、递增的测试。重点测试不同模块的接口部分
系统测试(system testing):
指的是将整个软件系统看为一个整体进行测试,包括对功能、性能、以及软件所运行的软硬件环境进行测试。
系统测试在系统集成完毕后进行测试,前期主要测试系统的功能是否满足需求,后期主要测试系统运行的性能是否满足需求,以及系统在不同的软硬件环境中的兼容性等。
黑盒测试(black-box testing)
又称数据驱动测试,完全不考虑程序内部结构和内部特性,注重于测试软件的功能需求,只关心软件的输入数据和输出数据。
白盒测试(white-box testing)
指的是把盒子打开,去研究里面的源代码和程序结构。
黑盒测试的分类
功能测试(functiontesting):
逻辑功能测试(functiontesting)
界面测试(UItesting)
易用性测试(usability testing)
安装测试(installationtesting)
兼容性测试(compatibilitytesting)
性能测试(performance testing):
时间性能(事务响应时间等)
空间性能(系统资源消耗)
一般性能测试
稳定性测试
负载测试:通过负载测试来确定在各种工作负载下,系统各项性能指标的变化情况。
压力测试:通过确定一个系统的瓶颈或者刚好不能接受的性能点,来获得系统能够提供的最大服务级别。
静态测试(static testing),指不实际运行被测软件,而只是静态地检查程序代码、界面或文档中可能存在的错误过程。
动态测试(dynamic testing),是指实际运行被测程序,输入相应的测试数据,检查实际输出结果和预期结果是否相符的过程。
验收测试:
α测试-
Alpha 是内测版本,即现在所说的CB,此版本表示该软件仅仅是一个初步完成品, 通常只在软件开发者内部交流, 也有很少一部分发布给专业测试人员。一般而言, 该版本软件的bug 较多, 普通用户最好不要安装。
β测试-
Beta是公测版本,是对所有用户开放的测试版本。该版本相对于α 版已有了很大的改进,消除了严重的错误, 但还是存在着一些缺陷,需要经过大规模的发布测试来进一步消除。这一版本通常由软件公司免费发布, 用户可从相关的站点下载。通过一些专业爱好者的测试, 将结果反馈给开发者, 开发者们再进行有针对性的修改。该版本也不适合一般用户安装。
γ测试-
Gamma版本,指的是软件版本正式发行的候选版。该版本已经相当成熟了, 与即将发行的正式版相差无几, 成为正式发布的候选版本。
测试用例:
•定义:测试用例(Test Case)是为特定的目的而设计的一组测试输入、执行条件和预期的结果,以便测试是否满足某个特定需求。通过大量的测试用例来检验软件的运行效果,它是指导测试工作进行的依据。
等价类划分法:
等价类划分是一种重要的、常用的黑盒测试方法,不需要考虑程序的内部结构,只需要考虑程序的输入规格即可。它将不能穷举的测试过程进行合理分类,从而保证设计出来的测试用例具有完整性和代表性。
等价类的分类
有效等价类
指符合《需求规格说明书》,输入合理的数据集合
无效等价类
指不符合《需求规格说明书》,输入不合理的数据集合
等价类思考步骤:
1、先确定有效和无效等价类
2、有效等价类就是题目条件(两端的极值(边界值)要判断、中间随意一个值也要判断)
3、无效等价类先划分与条件相反的情况,再找到特殊情况(中文、英文、符号、空格、空)