软件报废的情况:

1. 无用户群体

2. 软件版本达不到用户需求

软件:指一系列按照某种特定规则组织在一起,实现用户需求的计算机数据和指令的集合。

国家软件标准:与计算机系统操作有关的计算机程序、规程、规则,以及肯能有的文件、文档及数据。

简单而言,软件既是源代码、文档、配置数据的集合体。

软件生命周期:

  ① 市场需求调研

  ② 可行性分析

  ③ 产品项目立项

  ④ 需求调研开发(测试在此阶段加入)

  ⑤ 设计开发测试

  ⑥ 发布运行维护

产品:由软件公司主动挖掘市场需求,从而开发出解决大众需求的软件系统。

项目:

 

 

 

研发模型与软件测试

概要设计说明说(HLD,high level design)

详细设计说明说(LLD,low level design)

瀑布模型:将软件生命周期划分为计划、需求分析、设计、编码、测试与运行维护6个基本活动阶段,规定了他们自上而下,相互衔接的固定次序。

    软件开发的各项活动严格按照线性方式进行。瀑布模型间的耦合度较高,不利于需求频繁变更或需求灵活的项目开发。

原型模型:更关注用户需求的正确性,在确认用户需求的过程中不断修改调整原型,克服瀑布模型的缺点,减少由于需求调研不充分、需求表达不明确带来的开发风险,提高产品研发成功率。在需求分析阶段添加原型设计。

螺旋模型:它将瀑布模型和原型模型结合,强调了其他模型所忽略的风险分析,特别适合于大型复杂的软件项目。缺点:不适合小项目,成本相对较高,需要专业的风险分析专家参与。

RUP模型:有两个轴,时间轴(动态的)和工作流轴(静态的)。(了解就好)

    时间轴(4个阶段):起始阶段、细化阶段、构建阶段、发布阶段。每个阶段都是用了迭代的概念。

    工作流轴(6个核心工作流和4个核心支撑工作流):

      6个:业务建模工作流、需求工作流、分析设计工作流、实现工作流、测试工作流和部署工作流。

      4个:环境、项目管理、配置管理、变更管理。

  优点:

    ① 针对大型复杂的系统,逐步完善,降低了实施复杂度。

    ② 用户可在开发早期提出变更进行修复,从而有效控制变更风险及代价(往往都是局部变更)

    ③ 可在早期增强用户的信心。

  缺点:

    ① 要有专业的架构师,在功能与功能之间联系太过紧密,模块与模块间的耦合度较高时,不使用RUP模型

    ② 已经确定了的功能将不允许变更,但由设计引起的内在联系的变更是无法控制的。

敏捷模型:以人为核心,迭代,循序渐进的开发方法。

     敏捷建模(agile modeling AM)的价值观包括了XP(Extreme Programming,极限编程)的5个价值观:沟通、简单、反馈、勇气、谦逊。

软件测试定义

测试,即检测、试验,利用一定的手段,检测被测对象特性表现是否与预期需求一致。

软件测试的目的:

  ① 发现被测对象与用户需求之间的关系,即缺陷。

  ② 通过测试活动发现并解决缺陷,增加人们对软件质量的信心。

  ③ 通过测试活动了解被测对象的质量状况,为决策提供数据依据。

  ④ 通过测试活动积累经验,预防缺陷出现,降低产品失败风险。

软件测试原则:

  ① 测试证明软件存在缺陷

  ② 不可能执行穷尽测试

  ③ 测试应尽早启动、尽早介入

  ④ 缺陷存在群集现象

  ⑤ 杀虫剂悖论

  ⑥ 不同的测试活动依赖不同的测试环境

  ⑦ 不存在缺陷的谬论

开发需求与测试需求有什么不同:针对不同的人员。

软件测试级别:

  需求测试:检查SRS中是否存在描述不准确、定义模糊、需求用例不正确、语言存在二义性等问题;完整性,正确性,一致性,可行性,无二义性,健壮性,必要性,可测试性,可修改行。

  组件/单元测试:程序代码中的函数或者类成为单元,或者实现某个独立需求的功能模块,称为组件/单元。组件可能由多个单元组成。

  集成测试:对组件/单元之间及组件/单元之间与第三方接口之间进行测试,其目的是验证接口是否与设计相符,是否与需求相符。

       分为三种集成:组件/单元间集成,模块间集成,子系统间集成。

       自顶向下,自底向上,三明治三种策略,大爆炸式集成策略已渐渐被淘汰。

  系统测试:通过集成测试的软件,部署到某种较为发杂的计算机用户环境进行测试。目的在于通过与系统的需求定义做比较,发现软件与系统的需求定义不符合或与之矛盾的地方。

  验收测试:以用户为主的测试。

    Alpha测试:由用户在开发环境下进行的测试,也可以在开发机构内部的用户模拟实际操作环境中进行测试。开发人员在场。

    Beta测试:由软件的多个用户在一个或多个用户的实际操作环境下进行的测试。开发人员不用在场。

    UAT测试:用户接受度测试。

软件测试类型

  功能测试:验证软件在指定条件下使用时,提供满足明确需求和隐含功能需求的能力情况。

    主要检查被测对象是否存在以下几种错误

      ①是否有不正确、遗漏或多余的功能

      ②是否满足用户需求和系统设计的隐藏需求

      ③是否对输入做出正确的响应,输出结果能否正确显示。

  性能测试:模拟系统运行业务压力和场景组合,验证系统性能是否满足预先定义的性能需求。一般有3个特点

    主要目的是验证系统是否具有宣称具有的能力

    需了解测试系统典型场景,并具有确定的性能目标

    要求在真实的运行环境下执行

  负载测试:在超过被测对象标准性能负荷指标下,验证系统的负载承受能力,并要求在超负荷时,被测对象依然能够正常实现业务功能。

    主要的目的是找到系统处理能力极限和性能临界点,便于设定阈值

    在超过被测对象性能负荷情况下实施

    一般用来了解系统性能容量,或者配合性能调优来使用

  压力测试:测试被测对象在超过性能指标的饱和状态下,系统处理业务的能力情况,以及系统是否会出现错误

    主要目的是检查被测对象在峰值情况下应用的表现

 

 

 

 

 

为什么要执行测试用例:

  测出更多的缺陷,更完整的测试功能点,理清思路,避免遗漏,理清思路,避免遗漏