软件是相对硬件而言的,它是一系列按照特定顺序组织的计算机数据和指令的集合。
软件和其他产品一样,都是有一个从“出生“到”消亡“的过程,这个过程成为软件的生命周期。
软件的生命周期分为多个阶段,通常,划分为6个阶段。
问题定义 -> 需求分析-> 软件设计-> 软件开发 ->软件测试-> 软件维护-> 淘汰
第一阶段:问题定义,该阶段由软件开发与需求方共同讨论,主要确定软件的开发目标机器可行性。
第二阶段:需求分析,该阶段对软件需求进行更深入的分析,划分出软件需求实现的功能模块,并制作出文档。需求分析在软件的整个生命周期中起着非常重要的作用,它直接关系到后期软件开发的成功率。在后期的开发中,需求可能会发生变化,因此,在进行需求分析时,应该考虑到需求的变化,以保证整个项目的顺利进行。
第三阶段:软件设计,该阶段在需求分析结果的基础上,对整个软件系统进行设计,如系统框架设计、数据库设计等。
第四阶段:软件开发,该阶段在软件设计的基础上选择一种编程语言进行开发。在开发的过程中,必须制定同意的、符合标准的程序编写规范,以保证程序的可读性、易维护性以及可移植性。
第五阶段:软件测试,该阶段是软件开发完成后对软件进行测试,以查找软件设计与软件开发过程中存在的问题并加以修正,软件测试过程中包括单元测试、集成测试、系统测试三个阶段;测试的方法以黑盒测试、白盒测试或者两者结合的形式进行。在测试过程中,为了减少测试的随意性,需要指定详细的测试计划并严格遵守;测试完成后,要对测试结果进行分析并对测试结果以文档形式汇总。
第六阶段:软件维护,软件完成测试并投入使用之后,面对庞大的用户群体,软件可能无法满足用户使用需求,此时就需要对软件进行维护升级以延续软件的使用寿命。软件的维护包括纠错性维护和改进型维护两个方面。软件维护是软件生命周期中持续时间最长的阶段。
计划 需求分析 软件设计 编码 测试 运行维护
测试应该基于客户需求
测试应该尽早进行
穷尽测试是不可能的
遵循goodenough原则:goodEnough元组是指测试的投入与产出要适当权衡,形成充分的质量评估过程。
测试缺陷要符合“二八”定理,缺陷集群效应 ,一般情况下,软件80%的缺陷会集中在20%的模块中,缺陷不是平均分布的。
避免缺陷免疫