第2章 软件测试方法
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第二章 软件测试方法
2.3.1 黑盒测试方法概述
黑盒测试有两种基本方法,即通过测试和失败测试。 在进行通过测试时,实际上是确认软件能做什么,而不会去考验 其能力如何,软件测试人员只是运用最简单,最直观的测试案例。 在设计和执行测试案例时,总是先要进行通过测试,验证软件的基 本功能是否都已实现。 在确信了软件正确运行之后,就可以采取各种手段通过搞垮软件 来找出缺陷。纯粹为了破坏软件而设计和执行的测试案例,被称为 失败测试或迫使出错测试。 黑盒测试的具体技术方法主要包括边界值分析法、等价类划分法 、因果图法、决策表法等。这些方法是比较实用的,在项目中采用 什么方法,在设计具体的测试方案时自然要针对开发项目的特点对 设计方法进行适当的选择。
第二章 软件测试方法
2.1 软件测试方法概述
2.从软件测试用例设计方法的角度分类
从软件测试用例设计方法的角度,可分为黑盒测试(Black-Box Testing)和 白盒测试(White-Box Testing)。 黑盒测试是一种从用户角度出发的测试,又称为功能测试。数据驱动测试 和基于规格说明的测试。使用这种方法进行测试时,把被测试程序当作一个 黑盒,忽略程序内部的结构的特性,测试者在只知道该程序输入和输出之间 的关系或程序功能的情况下,依靠能够反映这一关系和程序功能需求规格的 说明书,来确定测试用例和推断测试结果的正确性。简单地说,若测试用例 的设计是基于产品的功能,目的是检查程序各个功能是否实现,并检查其中 的功能错误,则这种测试方法称为黑盒。 白盒测试基于产品的内部结构来进行测试,检查内部操作是否按规定执行 ,软件各个部分功能是否得到充分利用。白盒测试又称为结构测试,逻辑驱 动测试或基于程序的测试。即根据被测程序的内部结构设计测试用例,测试 者需要预先了解被测试程序的结构。
第二章 软件测试方法
2.2 静态测试与动态测试
根据程序是否运行可以把软件测试方法分为静态测试(Static Testing)和 动态测试(Dynamic Testing)两大类。图2-1是静态测试与动态测试的比喻图。
图2-1 静态测试与动态测试的比喻图
第二章 软件测试方法
2.2.1 静态测试
静态方法的主要特征是在用计算机测试源程序时,计算机并不真正运 行被测试的程序,只对被测程序进行特性分析。因此,静态方法常称为 ‚分析‛,静态分析是对被测程序进行特性分析的一些方法的总称。所谓 静态分析,就是不需要执行所测试的程序,而只是通过扫描程序正文,对 程序的数据流和控制流等信息进行分析,找出系统的缺陷,得出测试报告。 静态测试包括代码检查、静态结构分析、代码质量度量等。它可以 由人工进行,充分发挥人的逻辑思维优势,也可以借助软件工具自动进 行。
第二章 软件测试方法
2.3.1 黑盒测试方法概述
黑盒测试有两个显著的特点: 黑盒测试不考虑软件的具体实现过程,当在软件实现的过程发生变 化时,测试用例仍然可以使用; 黑盒测试用例的设计可以和软件实现同时进行,这样能够压缩总的 开发时间。 黑盒测试不仅能够找到大多数其他测试方法无法发现的错误,而且 一些外购软件、参数化软件包以及某些自动生成的软件,由于无法 得到源程序,在一些情况下只能选择黑盒测试。
软件测试
第二章 软件测试方法
2.1 软件测试方法概述 2.2 静态测试与动态测试 2.3 黑盒测试 2.4 白盒测试 习题
第二章 软件测试方法
本章概要
软件测试方法概述 静态测试和动态测试 黑盒测试和白盒测试
第二章 软件测试方法
2.1 软件测试方法概述
软件测试的方法多种多样,可以从不同角度加以分类: 从是否需要执行被测软件的角度,分为静态测试和动态测试; 从是针对系统的外部功能还是针对系统的内部结构的角度,分为黑 盒测试和白盒测试; 从软件测试的策略和过程的角度,分为单元测试、集成测试、确认 测试、系统测试和验收测试等。
动态方法是通过源程序运行时所体现出来的特征,来进行执行跟 踪、时间分析以及测试覆盖等方面的测试。动态测试是真正运行被测 程序,在执行过程中,通过输入有效的测试用例,对其输入与输出的 对应关系进行分析,以达到检测的目的。 动态测试方法的基本步骤: • 选取定义域的有效值,或选取定义域外的无效值; • 对已选取值决定预期的结果; • 用选取值执行程序; • 执行结果与预期的结果相比,不吻合则说明程序有错。 不同的测试方法各自的目标和侧重点不一样,在实际工作中要将 静态测试和动态测试结合起来,以达到更加完美的效果。 在动态测试中,又可有基于程序结构的白盒测试(或称为覆盖测 试)和基于功能的黑盒测试。
第二章 软件测试方法
2.1 软件测试方法概述
3.从软件测试的策略和过程的角度分类。
按照软件测试的策略和过程分类,软件测试可分为单元测试(Unit Testing),集成 测试(Integration Testing),确认测试(Validation Testing),系统测试(System Testing)和验收测试(Verification Testing)。 单元测试是针对每个单元的测试,是软件测试的最小单位。它确保每个模块能正常 工作。单元测试主要采用白盒测试方法,用以发现内部错误。 集成测试是对已测试过的模块进行组装,进行集成测试的目的主要在于检验与软件 设计相关的程序结构问题。在集成测试过程中,测试人员采用黑盒测试和白盒测试两 种方法,来验证多个单元模块集成到一起后是否能够协调工作。 确认测试是检验所开发的软件能否满足所有功能和性能需求的最后手段,通常采用 黑盒测试方法。 系统测试的主要任务是检测被测软件与系统的其他部分的协调性,通常采用黑盒测 试方法。 验收测试是软件产品质量的最后一关。这一环节,测试主要从用户的角度着手,其 参与者主要是用户和少量的程序开发人员,通常采用黑盒测试方法。
第二章 软件测试方法
2.1 软件测试方法概述
1.从是否需要执行被测软件的角度分类 从是否需要执行被测软件的角度,软件测试可分为静态测试(Static Testing)和动态测试(Dynamic Testing)。顾名思义,静态测试就是通过 对被测程序的静态审查,发现代码中潜在的错误。它一般用人工方式 脱机完成,故亦称人工测试或代码评审(Code Review);也可借助于静 态分析器在机器上以自动方式进行检查,但不要求程序本身在机器上 运行。按照评审的不同组织形式,代码评审又可分为代码会审,走查 以及办公桌检查,同行评分4种。对某个具体的程序,通常只使用一种 评审方式。 动态测试是通常意义上的测试,即使用和运行被测软件。动态测试 的对象必须是能够由计算机真正运行的被测试的程序,它包含黑盒测 试和白盒测试,在2.3节将会具体介绍这两种方法。
Leabharlann Baidu
第二章 软件测试方法
2.2.1 静态测试
检查表达式、语句是否正确,是否含有二义性。例如,下列表达式 或运算符的优先级:<=、=、>=、&&、||、++、--等; 检查常量或全局变量使用是否正确; 检查标识符的使用是否规范、一致,变量命名是否能够望名知义、 简洁、规范和易记; 检查程序风格的一致性、规范性,代码是否符合行业规范,是否所 有模块的代码风格一致、规范; 检查代码是否可以优化,算法效率是否最高; 检查代码注释是否完整,是否正确反映了代码的功能,并查找错误 的注释。
第二章 软件测试方法
2.3.2 等价类划分法
1. 等价类划分法概述 等价类划分法是黑盒测试用例设计中一种常用的设计方法,它将不 能穷举的测试过程进行合理分类,从而保证设计出来的测试用例具有 完整性和代表性。 等价类划分法是把所有可能的输入数据,即程序的输入域划分成若 干部分(子集),然后从每一个子集中选取少数具有代表性的数据作 为测试用例。所谓等价类是指输入域的某个子集合,所有等价类的并 集就是整个输入域。在等价类中,各个输入数据对于揭露程序中的错 误都是等效的,它们具有等价特性。因此,测试某个等价类的代表值 就是等价于对这一类中其他值的测试。也就是说,如果某一类中的一 个例子发现了错误,这一等价类中的其他例子也能发现同样的错误; 反之,如果某一类中的一个例子没有发现错误,则这一类中的其他例 子也不会查出错误。
第二章 软件测试方法
2.3 黑盒测试方法
黑盒测试(Black-box Testing)又称为功能测试、数据驱动 测试和基于规格说明的测试。是一种从用户观点出发的测试, 主要以软件规格说明书为依据,对程序功能和程序接口进行的 测试。 黑盒测试的基本观点是:任何程序都可以看作是从输入定 义域映射到输出值域的函数过程,被测程序被认为是一个打不 开的黑盒子,黑盒中的内容(实现过程)完全不知道,只明确 要做到什么。黑盒测试作为软件功能的测试手段,是重要的测 试方法。它主要根据规格说明设计测试用例,并不涉及程序内 部结构和内部特性,只依靠被测程序输入和输出之间的关系或 程序的功能设计测试用例。
第二章 软件测试方法
2.3.2 等价类划分法
软件不能只接收合理有效的数据,也要具有处理异常数据的功能, 这样的测试才能确保软件具有更高的可靠性。 因此,在划分等价类的过程中,不但要考虑有效等价类划分,同 时也要考虑无效等价类划分。 有效等价类是指对软件规格说明来说,合理、有意义的输入数据 所构成的集合。利用有效等价类可以检验程序是否满足规格说明所 规定的功能和性能。 无效等价类则和有效等价类相反,即不满足程序输入要求或者无 效的输入数据所构成的集合。利用无效等价类可以检验程序异常情 况的处理。 使用等价类划分法设计测试用例,首先必须在分析需求规格说明 的基础上划分等价类,然后列出等价类表。
第二章 软件测试方法
2.3.1 黑盒测试方法概述
黑盒测试是以用户的观点,从输入数据与输出数据的对应关系 出发进行测试的,它不涉及到程序的内部结构。很明显,如果外部 特性本身有问题或规格说明书的规定有误,用黑盒测试方法是发现 不了的。黑盒测试方法着重测试软件的功能需求,是在程序接口上 进行测试,主要是为了发现以下错误: 1.是否有不正确的功能,是否有遗漏的功能; 2.在接口上,是否能够正确地接收输入数据并产生正确的输出结果; 3.是否有数据结构错误或外部信息访问错误; 4.性能上是否能够满足要求; 5.是否有程序初始化和终止方面的错误。
第二章 软件测试方法
2.2.1 静态测试
通常在静态测试阶段进行以下一些测试活动: 检查算法的逻辑正确性,确定算法是否实现了所要求的功能; 检查模块接口的正确性,确定形参的个数、数据类型、顺序是 否正确,确定返回值类型及返回值的正确性; 检查输入参数是否有合法性检查。如果没有合法性检查,则应 确定该参数是否不需要合法性检查,否则应加上参数的合法性 检查; 检查调用其他模块的接口是否正确,检查实参类型、实参个数 是否正确,返回值是否正确。若被调用模块出现异常或错误, 程序是否有适当的出错处理代码; 检查是否设臵了适当的出错处理,以便在程序出错时,能对出 错部分进行重做安排,保证其逻辑的正确性;
2.3.2 等价类划分法
2、按数值划分 规格说明书规定了输入数据的一组值,而且软件要对每个输 入值分别进行处理,则可以为每个输入值确立一个有效等价类。此外, 针对这组值确立一个无效等价类,它是所有不允许输入值的集合。例 如:程序输入条件说明学历可为专科、本科、硕士、博士4种,且程 序中对这4种数值分别进行了处理,则 有效等价类为:专科、本科、硕士、博士 无效等价类为:非这4个值的集合
第二章 软件测试方法
2.2.1 静态测试
静态分析的差错分析功能是编译程序所不能替代的。编译系统虽 然能发现某些程序错误,但这些错误远非软件中存在的大部分错 误。目前,已经开发了一些静态分析系统作为软件静态测试的工 具,静态分析已被当作一种自动化的代码校验方法。
第二章 软件测试方法
2.2.2 动态测试
第二章 软件测试方法
2.3.2 等价类划分法
等价类的划分原则: 1、按区间划分 如果规格说明书规定了输入条件的取值范围或值的数量,则 可以确定一个有效等价类和两个无效等价类。如:规格说明书要求 输入一个数的条件为:10<x<100,则可以得到一个有效等价类为 10<x<100,两个无效等价类为x<=10和x>=100。 eg:规格说明书要求:学生允许选修5到8门功课,则可得到 一个有效等价类为:选课5到8门 两个无效等价类为:选课不足5门 和 选课超过8门