(8.1.4)软件测试之基础理论

来源:互联网 发布:excel单元格数据关联 编辑:程序博客网 时间:2024/05/19 09:13

  • 1软件可靠性的定义
  • 2软件缺陷的主要原因
  • 3软件测试的定义
  • 4软件测试的目标和对象
  • 5软件测试的工作范畴
  • 6软件测试的分类
    • 根据测试目的的不同
    • 从是否关心软件内部结构和具体实现的角度划分
    • 从是否执行程序的角度
    • 从软件开发的过程按阶段划分
      • 需求审查
      • 设计审查
      • 单元测试
      • 集成测试
      • 确认测试
      • 系统测试
        • 1 功能测试
        • 2 回归测试
        • 3 非功能性测试特征测试
      • 验收测试
        • 1 正式验收测试
        • 2 测试非正式验收测试
        • 3 测试非正式验收测试
        • 4 合格标准
  • 7黑盒测试
    • 1 等价类划分法
      • 11 有效等价和无效等价的概念P92
      • 12 等价类划分的原则 P93
      • 13 选取方法
    • 2 边界值分析法 黑白盒都适用
      • 21 选取方法
    • 3 错误推测法
    • 4 因果图法
    • 5 判定表驱动法
    • 6 正交试验设计法
    • 7 功能图法把软件分解为相对独立的功能单元
    • 8 场景法
  • 白盒测试
    • 1 代码检查法
    • 2 静态结构分析法
    • 3 静态质量度量法
    • 4逻辑覆盖法
    • 5 基本路劲覆盖法
      • 51 程序的控制流程图 流程图转为控制流图
      • 52 程序环路复杂性
      • 53 基本路径测试步骤
  • 9CMM测试过程成熟度
  • 10常用的测试工具

1:软件可靠性的定义

答:系统在特定环境下,在给定的时间内无故障运行的概率。

2:软件缺陷的主要原因

答:源于软件需求规格说明书。
修复缺陷的代价不是随着时间线性增加,而是近乎指数。

3:软件测试的定义

答:
(1)软件测试是为了发现错误而执行程序的过程。
(2)软件测试是根据软件开发各阶段的规格说明和程序内部结构而精心设计的一批测试用例。并利用这些测试用例运行程序以及发现错误的过程,即执行测试步骤。

4:软件测试的目标和对象

答:
(1)测试是程序的执行过程,目的在于发现错误,不能证明程序的正确性, 仅限于处理有限的情况。 (2)检查系统是否满足需求,这也是测试的期望目标。
(3)一个好的测试用例在于发现未曾发现的错误,成功的测试是发现了错误的测试。

软件测试的对象不仅仅是程序测试,软件测试应该包括整个软件开发期间各个阶段所产生的文档,如需求规格说明、概要设计文档、详细设计文档,当然软件测试的主要对象还是源程序

5:软件测试的工作范畴

软件测试主要工作内容是验证(verification)和确认(validation)

软件测试计划评审会需要有 项目经理、客户(可选)、配置管理员、测试经理、开发组长等人的参加。

  1. 软件测试工作的组织与管理: 【测试经理】
    1. 制定测试策略
    2. 测试计划
    3. 确认所采用的测试方法与范围
    4. 控制测试进度
    5. 管理测试资源
    6. 评估测试活动
  2. 测试工作的实施:【测试设计员】
    1. 编制符合标准的测试文档
    2. 搭建测试环境
    3. 设计测试用例
    4. 设计测试过程、脚本

6:软件测试的分类

根据测试目的的不同

1. 回归测试:检验修改或优化过程是否引发新的问题1. 压力测试:检验软件所能达到处理能力,压力测试的目的是要检验软件运行在非正常的情形下的性能表现,即测试需要在反常规数据量、频率或资源的方式下运行系统。1. 性能测试:检验是否达到预期的处理能力2. 负载测试:实质上是测试系统在临界状态下运行是否能够稳定运行的性能指标。

从是否关心软件内部结构和具体实现的角度划分

  1. 白盒测试-结构测试
  2. 黑盒测试-功能测试
  3. 灰盒测试 是基于对程序内部细节有限认知上的软件调试方法
    1. 灰盒测试与黑盒测试相比,更关心模块与模块之间的交互
    2. 灰盒测试与白盒测试相比,灰盒测试无需关心内部模块实现细节,而白盒测试仍需更深入了解内部模块细节。

从是否执行程序的角度

  1. 静态测试
    1. 代码审查:
      1. 代码走查:非正式会议,以开发人员为主
      2. 会议审查:正式会议,项目组成员包括测试人员,利用缺陷检查表,提前准备好文档和工具
  2. 动态测试
    1. 驱动程序:用以模拟被测模块的上级模块,能够调用被测模块,在测试过程中,驱动模块接受测试数据,调用被测试模块并把相关的数据传送给被测模块。(我认为JUnit就是基于驱动的,因为我们要测一个类,是通过JUnit来模拟类方法的执行,通过JUnit调用类方法并传递数据)
    2. 桩程序:用以模拟被测模块工作过程中所调用的下层模块。

从软件开发的过程按阶段划分

这里写图片描述

1.需求审查

2. 设计审查

3 单元测试

代码评审员一般由程序员担任
对软件基本组成单元(如函数、类的方法等)进行的测试,检查各个程序模块是否正确地实现了规定的功能
参考项目文档:软件详细说明书
时机:一般在代码完成后由开发人员完成,QA(质量管理员)人员辅助。
方法:静态测试(代码走查、会议审查)+动态测试(驱动程序+桩程序)

4. 集成测试

   把已测试过的模块组装起来,主要对与设计相关的软件体系结构的构造进行测试

5. 确认测试

   则是要检查已实现的软件是否满足了需求规格说明中确定了的各种需求,以及软件配置是否完全、正确

6. 系统测试

项目阶段性关键文档—>需要同行评审
把已经经过确认的软件纳入实际运行环境中,与其它系统成份组合在一起进行测试
参考项目文档:需求说明书,概要设计说明书,详细设计说明书、软件测试计划、软件需求规范、迭代计划

6.1 功能测试

   主要是根据产品规格说明书,来检验被测试的系统是否满足各方面功能的使用要求。(黑盒测试也长被称为功能测试,虽然这不是一种准确的说法)

6.2 回归测试

    在程序有修改的情况下,保证原有功能正常的一种测试方法。

6.3 非功能性测试(特征测试)

    性能测试、压力测试、容量测试、负载测试、强度测试、易用性测试、安全性测试、可靠性测试和容错性测试

7. 验收测试

   在功能测试和系统测试之后进行的,所以验收测试的前提条件是系统或软件产品已通过了内部测试。然后和用户一起验收软件,在真实环境下运行软件,看是否存在与用户需求不一致的问题或违背产品规格书的要求。由于测试人员不可能完全用户实际使用情况,所以软件是否真正满足最终用户的要求,应由用户进行一系列的验收测试。   参考项目:国家规范、行业标准、合同条款、用户确认的需求规格说明书。

7.1. 正式验收测试

7.2. α测试:非正式验收测试

  • 是指软件开发公司组织内部人员模拟各类用户行对即将面市软件产品(称为α版本)进行测试,试图发现错误并修正。
  • 在开发环境下进行的测试即内测

7.3. β测试:非正式验收测试

  • 软件开发公司组织各方面的典型用户在日常工作中实际使用β版本,并要求用户报告异常情况、提出批评意见。然后软件开发公司再对β版本进行改错和完善。
  • 是用户实际使用环境下进行的测试即公测

7.4. 合格标准

  • 软件需求分析说明书中定义的所有功能已全部实现,性能指标全部达到要求。
  • 所有测试项没有残余一级、二级和三级错误。
  • 立项审批表、需求分析文档、设计文档和编码实现一致。
  • 验收测试工件齐全。

7:黑盒测试

黑盒测试:又称功能测试、数据驱动测试和基于规格说明的测试,是不考虑程序内部结构特征,只知道输入和输出的情况下进行的测试。

7.1 等价类划分法

7.1.1 有效等价和无效等价的概念(P92)

有效等价类:是指对软件规格说明而言,是有意义的、合理的输入数据所组成的集合。 无效等价类:是指对软件规格说明而言,是无意义的,不合理的输入数据所构成的集合。

7.1.2 等价类划分的原则 (P93)

按照区间划分 按照数值划分 按照数值集合划分 按照限制条件或规格划分

7.1.3 选取方法

问:某程序规定:”输入三个整数 a、 b、 c分别作为三边的边长构成三角形。通过程序判定所构成的三角形的类型,当此三角形为一般三角形、等腰三角形及等边三角形时,分别作计算 … “。用等价类划分方法为该程序进行测试用例设计。(三角形问题的复杂之处在于输入与输出之间的关系比较复杂。)
解:
分析题目中给出和隐含的对输入条件的要求:
(1)整数
(2)三个数
(3)非零数
(4)正数
(5)两边之和大于第三边
(6)等腰
(7)等边
如果 a、 b 、 c满足条件( 1 ) ~ ( 4 ),则输出下列四种情况之一:
1)如果不满足条件(5),则程序输出为 ” 非三角形 ” 。
2)如果三条边相等即满足条件(7),则程序输出为 ” 等边三角形 ” 。
3)如果只有两条边相等、即满足条件(6),则程序输出为 ” 等腰三角形 ” 。
4)如果三条边都不相等,则程序输出为 ” 一般三角形 ” 。
列出等价类表并编号
这里写图片描述
覆盖有效等价类的测试用例:
a b c 覆盖等价类号码
3 4 5 (1)–(7)
4 4 5 (1)–(7),(8)
4 5 5 (1)–(7),(9)
5 4 5 (1)–(7),(10)
4 4 4 (1)–(7),(11)

6.2 边界值分析法 :黑白盒都适用

7.2.1 选取方法

选取正好等于、刚刚大于或刚刚小于边界值作为测试数据,而不是选取等价类中典型值或任意值作为测试数据。

如果程序的规格说明中规定:“重量在10公斤至50公斤范围内的邮件,其邮费计算公式为:货物重量*费率=邮费”。   有效等价类边界值(10、10.01、50、49.99)       无效等价类边界值(9.99、50.01)

7.3 错误推测法

7.4 因果图法

7.5 判定表驱动法

7.6 正交试验设计法

7.7 功能图法(把软件分解为相对独立的功能单元

7.8 场景法

8 白盒测试

白盒测试:又称结构测试、逻辑驱动测试或基于程序的测试。是只考虑程序内部结构,而不考虑程序功能的测试。

8.1 代码检查法

代码检查方式(桌面检测、代码审查、走查) 代码检查项目 编码规范 代码检查规则 缺陷检查表

8.2 静态结构分析法

8.3 静态质量度量法

8.4逻辑覆盖法

  • 语句覆盖(SC) :它要求被测程序的每一可执行语句在测试中尽可能都检验过;
  • 判断覆盖(DC) :要求程序中所有判定的分支尽可能得到检验;
  • 条件覆盖(CC) :当判定式中含有多个条件时,要求每个条件的取值均得到检验;
  • 条件判定覆盖(CDC) :保证每个判断中每个条件的真假至少满足一次,同时每个判断的取真分支和取假分支至少经历一次
  • 条件组合覆盖覆盖(MCC):对于每个判断,组合其中的条件的真假值(假如这个判断中由两个条件组成,那么应设计T1T2、T1F2、F1T2、F1F2这样的组合),并让每个判断的真假值都取到。
  • 修正条件判定覆盖(MCDC)

8.5 基本路劲覆盖法

8.5.1 程序的控制流程图 :流程图转为控制流图

8.5.2 程序环路复杂性

从程序的环路复杂性可导出程序基本路径集合中的独立路径条数,这是确定程序中每个可执行语句至少执行一次所必须的测试用例数目的上界。
(1) 区域数 (2) 边数—节点数+2 (3) 判定节点数=条件节点数+1 33:逻辑测试覆盖方法的步骤。(P124)

8.5.3 基本路径测试步骤

环路复杂度个数就是应该准备的路经测试个数

9:CMM测试过程成熟度

  1. 初始级
  2. 可重复级
  3. 已定义级
  4. 已管理级
  5. 优化

10:常用的测试工具?

1、 功能测试工具——QTP
2、 性能测试工具——LoadRunner、JMeter压力
3、 测试管理工具——TestDirector、TestLink
4、 白盒测试工具——Nunit,Junit,C++Test,JTes

0 0
原创粉丝点击