软件测试基础知识概述

软件的概念,特点和分类:

软件的概述:

  软件是计算机系统中与硬件相互依存的一部分,包括程序,数据以及与其相关文档的完整集合

软件的特点:

  1)软件是一种逻辑实体,而不是具体的物理实体,所以它具有抽象性

  2)软件的生产和硬件不同,它没有明显的制造过程,对软件的质量控制,必须在软件开发方面下功夫

  3)软件在运行和使用期间是没有硬件的那种磨损和老化问题,但它存在退化问题,需要对其进行多次的修改与维护

  4)软件的开发和运行常常受到计算机系统的制约,对计算机系统有不同程度的依赖性,为了解除这种依赖,软件开发中提出了软件移植的问题

  5)软件的开发至今尚未完全摆脱手工的开发方式

  6)软件本身是复杂的,软件的复杂性可能来自它所反映的实际问题复杂性

  7)软件的成本昂贵

  8)软件工作涉及社会因素

软件的分类:

1)按照软件的功能分类:

    ①:系统软件

    ②:支撑软件

    ③:应用软件

2)按照软件服务对象的范围分类:

    ①:项目软件(制定软件)

    ②:产品软件

3)按照软件规模分类:

    ①:微型

    ②:小型

    ③:中型

    ④:大型

    ⑤:甚大型

    ⑥:极大型

4)按照软件的工作方式分类:

    ①:实时处理软件

    ②:分时软件

    ③:交互式软件

    ④:批处理软件

软件生存周期及其模型:

软件生存周期:

1)制定计划:-----确定开发软件系统的总目标,给出它的功能,性能,可靠性,以及接口等方面的要求

2)需求分析:-----确定软件系统需要做什么,确定软件徐彤必须具备哪些功能

3)软件设计:

  ①:概要设计:-----开发人员要把确定各项功能雪球转换为需求的体系结构,每个成分都是意义明确的模块,每个模块都要和某些功能需求相对应

  ②:详细设计:-----模块完成的功能进行具体的描述,要把功能描述转变为精确的,结构化的过程描述,

4)程序编码----模块的控制结构转为计算机可以接受的程序代码

5)软件测试-----设计测试用例的基础上检验软件的各个组成部分

6)运行测试:-----软件在运行过程中可能由于各个方面的原因,需要对它进行修改.

软件生存周期模型:

1):瀑布模型

2):原型法模型(演化模型)

3)螺旋模型

4)喷泉模型

5)智能模型

6)v模型

 软件开发方式:

1)结构化方法:

  结构化方法由结构化分析,结构化设计,结构化程序设计构成,它是一种面向数据流开发的方法,结构化方法的指导思想是自顶向下,逐步求精,基本原则是功能的分解与抽象,它是软件工程中最早出现的开发方法,适用于数据处理领域的问题

2)Jackson方法:

  Jackson方法是一种面向数据结构的开发方法,Jackson放阿飞根据一个问题的数据结构处理该问题数据结构的控制结构的相似性原理形成了最初的JSP方法

  JSP方法是以数据结构为驱动的,适用于小规模的项目,输入数据结构与输出数据结构无对应关系时,难于用该方法,基于JSP方法的局限性,又发展了JSD方法,该方法是一个完整的系统开发方法,它是以事件为驱动,是一种基于进程的开发方法,它适用于时序特点较强的系统.

3)维也纳开发方法(VDM)

  VDM是一个基于模型的方法

4)面向对象的开发方法

  面向对象的开发方法是以对象作为最基础的元素,对它进行分析问题,解决问题的核心

  面向对象的开发方法主要有Booch方法,Coad方法和OMT方法等

  ①:面向对象方法的概念:

      面向对象方法(OOM)是由面向对象程序设计(OOP)发展起来

      1. 面向对象分析阶段(OOA):在当前要求解的复杂问题中,抽象的识别出对象以及行为,结构,属性方法等,简历未来信息系统的分析模型

      2. 面向对象设计阶段(OOD):对OOA阶段得到的分析模型进一步抽象,归类,整理,并规范化地形成基本的''类'',在模拟应用对象的特性,讲对象的"事件"和"方法"封装进入这些"类"中,形成具有生命活力的智能"组件"

      3. 系统实现阶段:用面向对象的程序设计语言将OOD阶段过程的范式直接映射为应用程序软件

  ②:面向对象方法的特点:

      1. 系统开发的基础统一于对象之上,各个阶段的工作过度平滑,避免了许多中间转换环节和多余劳动,加快了系统开发的进程,提高了系统开发的正确性和效率

      2. OOA方法的分析与结构化分析有较大的区别,前者强调的是在系统调查资料的基础上对所需素材进行归类分析和整理,而后者对管理业务现状和方法的分析

      3. OOD方法是;根据对象来组织信息系统的逻辑结构,与OOA不同,OOD阶段必须考虑系统实现.OOD与系统是两个互相交在一起的过程

      4. 面向对象技术中的各种概念和特性.如继承.封装.多态性以及信息传递机制等,使软件的一致性.模块的独立性以及程序的共享和可重用性大大提高

  ③:面向对象的问题

软件生存周期问题:

软件开发文档 :

  可行性研究报告

  项目开发计划

  软件需求说明书

  数据要求说明书

  概要设计说明书

  详细设计说明书

  数据库设计说明书

  用户手册

  操作手册

  模块开发卷宗

  测试计划

  测试分析报告

  开发进度月报

  项目开发总结报告

软件测试质量:

  1)正确性

  2)可靠性

  3)功效

  4)完整性

  5)可用性

  6)课维护性

  7)灵活性

  8)可测试性

  9)可移植性

  10)可复用性

  11)互操作性   

 软件测试目的:

  1)帮助开发人员,测试工程师发现问题,分析问题

  2)减少软件的缺陷数目或者减低软件的缺陷密度

  3)提高软件的可靠性

  4)评估软件的性能指标

  5)增加用户对软件的信心

  6)测试的最终目的是为了避免错误的发生,确保应用程序能够正常高效的运行

软件测试的步骤:

  

软件错误分类:

1)软件的错误按性质分类

  ①:功能错误

    1.规格说明不完全,有二义性或自身矛盾

    2.程序实现的功能与用户要求的不一致

    3.软件测试的设计与实施发生错误

    4.测试标准引起的错误

  ②:系统错误

    1.外部接口错误

    2.内部接口错误

    3.硬件结构错误

    4.操作系统错误

    5.软件结构错误

    6.控制与顺序错误

    7.资源管理错误

  ③:加工错误

    1.算术与操作错误

    2.初始化错误

    3.控制和次序错误

    4.静态逻辑错误

  ④:数据错误

    1.动态数据错误

    2.静态数据错误

    3.数据结构错误

    4.数据类容错误

    5.数据属性错误

  ⑤:代码错误

    1.语法错误

    2.打字错误

    3.对语法或指令不正确理解所产生的错误

2)软件的错误按生存期阶段分类

  ①:需求分析错误

  ②:规格说明错误

    1.不一致性错误我

    2.冗余性错误

    3.不完整性错误

    4.不可行错误

    5.不可测试错误

  ③:设计错误:

    1.设计部完全错误

    2.算法错误

    3.模块接口错误

    4.控制逻辑错误

    5.数据结构错误

  ④:编码错误

    1.数据说明错误

    2.数据使用错误

    3.计算错误

    4.比较错误

    5.控制流错误

    6.接口错误

    7.输入或输出错误

    8,其他错误

软件测试工具

  1)测试设计工具

  2)测试管理工具

  3)静态分析工具

  4)动态分析工具

  5)覆盖测试工具

  6)负载和性能测试工具

  7)GUI测试驱动和捕获/回放工具

  8)基于故障的测试工具

软件测试的术语定义

  1)80-20原则------80%的软件缺陷常常存在于软件20%的空间里

  2)α测试--------α测试是指在软件开发人员缺席的情况下内部进行模拟的或者实际的操作性测试

  3)β测试-------β测试是指软件开发人员缺席的情况下进行的操作性测试

  4)安全性测试-------用于测试出于系统相关的安全问题,并且能够给去安全漏洞的解决方案

  5)白盒测试------只看一个应用代码的内部逻辑,主要方法有逻辑驱动,基路测试等

  6)本地化语言测试----用于验证所有计划要发布的不同语言版本的软件

  7)边界条件测试

  8)边界值

  9)边界值覆盖

  10)测试报告

  11)测试对象

  12)测试管理

  13)测试环境

  14)测试计划

  15)测试免疫性

  16)测试流程

  17)测试评估

  18)测试用例

  19)程序代码合法性检查

  20)代码合法性测试

  21)单元测试

  22)动态测试和静态测试

  23)非渐增式测试

  24)分支测试

  25)峰谷测试

  26)功能测试

  27)黑盒测试

  28)灰盒测试

  29)回归测试

  30)基本测试集

  31)基本快

  32)基准测试

  33)集成测试

  34)集成与兼容性测试

  35)接收测试

  36)可接受性测试

  37)可靠性测试

  38)链接测试

  39)路径测试

  40)强力测试

  41)全球化测试

  42)缺陷的必然性

  43)确认测试

  44)人工测试

  45)软件缺陷

  46)渗入测试

  47)数据驱动测试

  48)探索式测试

  49)稳定性测试

  50)系统测试

  51)性能测试

  52)性能规划测试

  53)验收测试

  54)用户界面测试

  55)自底向上的测试

  56)装配/安装/配置测试

  57)自顶向下的测试

 

文章截取书籍<<软件测试与软件测试技术>> 

猜你喜欢

转载自www.cnblogs.com/cpxjl/p/9214445.html