软件测试基础-软件概述

软件的概念

1.概念:按照特定顺序组织的计算机数据和指令的集合

2.计算机=软件+硬件(软件=系统软件+应用软件)

3.它由软件------程序-----(子系统)------模块-------函数构成

软件团队

软件生命周期

分为六个阶段:

1.计划

工作内容:对资源、成本、效益和进度作出估计;制定完成研发计划。

2.需求分析

工作内容:对研发的软件进行详细的定义。一般由需求分析人员根据客户或者市场调研来编写完成:软件需求说明书SRS(SoftwareRequirementSpecification)

3.设计

工作内容:选取开发语言,开发架构等。该阶段会完成两个文档:概要设计(HLD)详细设计(LLD)

需求说明书SRS---程序(需求分析人员)

概要设计说明书HLD---模块(开发)

详细设计说明书LLD---函数(开发)

4.编码

工作内容:编写代码。复杂软件牵扯前端代码、后端代码、中间件等的编写。

5.测试

工作内容:检验软件是否符合需求。通过手工或者工具来检测软件是否满足功能、性能、易用性等要求。

6.运行和维护

工作内容:将软件交付用户投入正式使用。进入维护阶段,可能有多种原因需要对它进行修改,如软件错误、软件升级、增强功能、提高性能等。

软件开发模型

1.瀑布模型

定义:采用从上至下一次性完成整个软件产品的开发的方式,这是一种经典模型,提供了软件开发的基本框架。

计划--需求分析--软件设计--编码--测试--运行维护

优点:各阶段划分清晰,适合需求稳定的产品开发

缺点:单一流程,不可逆,风险显露得晚,纠正机会少,测试只是其中一个阶段,缺乏全过程测试思想

2.快速原型模型

定义:先迅速建造一个可以运行的软件原型,以便理解和澄清问题。开发人员与用户针对原型反复讨论,直到达成共识,最终在确定的客户需求基础上开发客户满意的软件产品。

优点:克服瀑布模型的缺点,减少由于软件需求不明确带来的开发风险,适合预先不能确切定义需求的软件系统的开发,能快速吸引用户,从而抢占市场先机

缺点:没有考虑软件整体质量和长期维护,大部分开发都不适合,往往只用于演示功能,若达不到质量要求,就会被抛弃,并重新设计

3.迭代模型

又称增量模型或演化模型,它将一个完整的软件拆分成不同的组件进行开发测试,确定此组件功能和性能满足用户需求,将组件集成到软件体系结构中。包括一系列的增量的步骤或迭代,每个迭代都包括很多的开发活动(需求、分析、设计、实包括一系列的增量的步骤或迭代,每个迭代都包括很多的开发活动(需求、分析、设计、实现等)
实现软件的每项功能反复求精的过程,是从模糊到清晰的开发过程。每次迭代是从功能的深度和细化程度来划分的。
迭代模型最适合使用与前期需求不稳定,需求多变的项目。

开发人员不需要一次性地把整个软件产品提交给用户,而是可以分批次进行提交。

1.保证项目不要有失败的风险
2.保证代码质量
3.让客户等待时间最少

4.螺旋模型

融合了瀑布模型和快速原型模型,引入了风险分析。它将整个软件开发过程划分几个阶段,每个阶段前都会进行风险分析,如果能消除重大风险,则可以完成阶段任务。

5.敏捷模型

增量模型和迭代模型的组合,也是现在流行的模型。项目在构建初期被拆分成多个相互联系而又独立运行的子项目,然后开发人员迭代完成各个子项目,各个项目都要经过开发测试,在此过程中软件一直处于可使用状态。相比于传统的开发模型,敏捷模型更注重“人”在软件开发中的作用。

人和交互重于过程和工具。

可以工作的软件重于求全而完备的文档。

客户协作重于合同谈判。

随时应对变化重于循规蹈矩。

因此敏捷方法更适用于较小的队伍,40、30、20、10人或者更少。

软件质量

1.概念

就是软件与明确和隐性需求相一致的程度。软件质量不仅仅是软件功能的质量。

2.软件质量铁三角

1.组织健全2.技术领先3.流程科学规范

3.软件质量模型

软件质量模型由6个特征和12个子特性组成。

1.功能性:满足用户基本需求和隐式需求的能力

2.可靠性:维持规定级别的能力

3.可使用性:被使用、理解、学习的能力

4.效率:相对于所有资源的数量,软件可提供适当性能的能力

5.可维护性:被修改的能力,修改包括修正、优化、功能规格变更

6.可移植性:从一个环境迁移到另一个环境的能力。

上一篇:leetcode做题记录 1041 1647-1041. 困于环中的机器人


下一篇:Python 全栈系列239 使用消息队列完成分布式任务-内容