软件测试及其案例分析 第7章

合集下载

软件测试教程2版-第7章软件项目单元测试(简版)

软件测试教程2版-第7章软件项目单元测试(简版)

2)设计测试类模块 一个模块或一个方法并不是一个独立的程序,在考虑测试时要同时考虑它与外界的联 系, 用些辅助模块去模拟与所测模块相联系的其他模块。 辅助模块分两种: 驱动模块 (driver) , 相当于所测模块的主程序,接收测试数据,把这些数据传送给所测模块,最后再输出实际测 试结果;桩模块(stub) ,用于代替所测模块调用的子模块,可做少量数据操作,不需要把子 模块所有功能都带进来,但不容许不做任何事情。
《软件测试教程(第 2 版) 》
第 7 章 软件项目的单元测试(简版)
贺 平 编著
电子工业出版社
所测模块与它相关驱动模块及桩模块共同构成了“测试环境” 。因为在软件交付时不作 为产品的一部分一同交付,且其编写需一定工作量,特别是桩模块,不能只简单地给出“曾 经进入”的信息。为正确测试,桩模块需要模拟实际子模块功能。 编写桩模块较困难、费时,一种方法是只须在项目进度管理时将实际桩模块的代码编写 工作安排在被测模块之前编写即可, 这样可提高测试工作效率, 提高实际桩模块的测试频率, 有效保证软件质量。但为保证能向上一层级提供稳定可靠实际桩模块,为后续模块测试打下 良好基础,驱动模块必不可少。 3)跟踪调试 跟踪调试不仅是深入测试代码的最佳方法,也是程序调试发现错误根源的有力工具。 代码开发工具(如 JBuilder )一般都集成排错工具,其一般由执行控制程序、执行状态 查询程序、跟踪程序组成。执行控制程序包括断点定义、断点撤销、单步执行、断点执行、 条件执行等功能。 执行状态查询程序包括寄存器、堆栈状态、变量、代码等与程序相关的各种状态信息的 查询。跟踪程序用以跟踪程序执行过程中所经历的事件序列(如分支、子程序调用等) 。可通 过对程序执行过程中各种状态的判别进行程序错误的识别、定位及改正。 对于模块单元跟踪调试,最好能做到对被测模块的每次修改都用测试用例进行跟踪执行 一遍,以排除所有可能出现或引进的错误。必须调用驱动模块对所有测试用例执行一次,并 对出现错误或异常的测试用例跟踪执行一次,以发现问题根源。 几种排错时应采用的方法策略: (1)断点设置。通常断点的设置除了根据经验与错误信息来设置外,还应重点考虑: ① 函数调用语句。 ② 判定转移/循环语句。 ③ SQL 语句。 (2)复杂算法段。出错的概率常与算法复杂度成正比,越复杂算法越需重点跟踪,如递 归、回溯等算法。 (3)可疑变量查看。当程序停止在某条语句时,可查看变量当前值和对象当前属性,通 过对比这些变量当前值与预期值可轻松定位程序的问题根源。 3.单元测试的设计方案 主要定义单元测试环境、静态测试和动态测试执行三个方面需做工作和完成任务。 1)单元测试环境配置的测试 (1)网络连接是否正常。 (2)网络流量负担是否过重。 (3)软件测试平台是否可选,是否在不同的软件测试平台进行软件测试。 (4)所选软件测试平台的版本(包括 Service Pack)是否正确。 5 / 60

第7章软件测试标准

第7章软件测试标准

和隐含需要的能力和特性总和” 和隐含需要的能力和特性总和”
Байду номын сангаас
• 从软件质量的定义可以看出以下4个含义:
• 具有能满足给定需要的所有特性 • 具有所希望的各种属性的组合的程度 • 顾客或用户认为能满足其综合期望的程度 • 软件的组合特性,它确定软件在使用过程中将满足顾客预期要求的程度。
5
7.1.1 软件质量与度量
19
3.1.3软件质量评价
1. 开发人员的评价过程 2. 顾客的评价过程 3. 评价者的评价过程
20
1.开发人员的评价过程
• 指开发人员对软件产品的质量进行评价的 过程
– 首先要明确评价的概念,包括软件质量指示器 – 规定了对评价过程的要求,包括对组织的要求 (数据收集的反馈方式和途径)、项目的要求 (如确定质量要求、确定内部和外部质量度量 等),以及对质量分析、质量控制和质量评价 的要求。
• GB/T 18905-2002系列标准等同于ISO/IEC 14598标准是为软件产品 质量的测量、评估和评价提供了方法。 • 软件质量评价的基本部分包括:质量模型、评价方法、软件的测量和 支持工具。 • GB/T 18905-2002系列由6部分组成:
– – – – – – GB/T 18905.1-2002,概述软件产品评价的产品,提供评价需求和指南 GB/T 18905.2-2002,策划和管理 GB/T 18905.3-2002,开发者用的过程 GB/T 18905.4-2002,需求方用的过程 GB/T 18905.5-2002,评价者用的过程 GB/T 18905.6-2002,评价模块的文档编制
17
3.ISO 9126质量模型
18
3.ISO 9126质量模型

软件测试方法与技术实践指南 Java篇

软件测试方法与技术实践指南 Java篇
? 跟踪提交的问题解决状态
什么是评审
产品需求审查是软件开发重要环节之一,也是测试活动之 一,即静态测试——需求验证。借助需求审查保证用户需 求在市场/产品需求文档及其相关文档中得到准确、完整、 无歧义的反映,并使各类开发人员在需求理解上达成一致。 软件评审是对软件元素或者项目状态的一种评估手段,以 确定其是否与计划的结果保持一致,并使其得到改进。
? 用户解决某一问题或达到某一目标所需的软件功能。 ? 系统或系统构件为了满足合同、规约、标准或其他正式实行的文档
而必须满足或具备的软件功能。
软件需求 -需求分析的任务
? 需求分析的任务:确定用户需求,准确地回答 “系统必须 做什么?” 的问题,获得需求规格说明书。
软件需求 -需求类型
? 业务需求(business requirement )
?产品规格说明书阶段测试工程师需要做什么 ?阅读并查看SPEC中的功能是否符合PRD要求 ?和EM保持良好的沟通,并且一起阅读SPEC的详细内容 ?根据SPEC设计Test Case ?跟踪SPEC中提出的问题解决状态
第4章 项目初期各阶段的主要工作
?产品技术文档设计阶段
?编写技术设计文档 ?什么是产品的技术文档 ?技术文档中包括哪些内容 ?技术文档实例介绍
为什么需要需求评审
? 1.软件缺陷并不只是在编程阶段才产生,需求和 设计阶段同样会产生缺陷
? 2.软件测试对需求的依赖
? 在制定测试计划之前,必须清楚测试需求 ? 明确测试需求的优先级 ? 测试需求分解得越细,对测试用例的设计质量越有帮助 ? 详细的测试需求还是衡量测试覆盖率的重要依据 ? 测试需求是规划具体项目资源和时间的基础。
第二篇 基于Java EE 产品线的项目实践

精品文档-软件工程经济学(赵玮)-第7章

精品文档-软件工程经济学(赵玮)-第7章

第7章 软件测试的资源分配、进度管理与最优发行 NIS软件的测试过程通常包括拟定测试计划和编制测试大 纲,设计和生成测试用例,按序完成单元测试、集成测试、系 统测试和运行测试,生成相应的测试报告等基本活动,其测试 流程见图7.1。需要说明的是,系统测试是需在相关硬件(计 算机硬件与网络设备)配置好的情况下所进行的软/硬件系统联 试,经系统测试通过后即可交付用户运行,而运行测试则是在 用户的作用下为提高软件可靠性所做的相关测试。此外,为使 软件测试能省时高效,应采用测试与开发同步进行和逐步推进 的渐近策略,并将测试贯穿于软件的整个生命周期的始终。
第7章 软件测试的资源分配、进度管理与最优发行
集成测试包括功能集成测试、操作剖面建立和有效性测试 三部分,其中功能测试通常采用非增量式集成方法或增量式集 成方法。非增量式集成方法是首先分别测试各个模块,然后再 把这些已被测试并确认为功能与性能符合设计要求的模块组合 起来进行整体测试;增量式集成测试方法则是采用测试一个模 块组装一个模块,然后再测试再组装,直到所有模块均被组装 完毕,并被整体测试合格为止的一种逐步组装的方式。显然, 非增量式集成测试可以对所有模块并行进行单元测试,能充分 利用人力,加快工程进度;但这种一步到位的方法容易形成混 乱,出现错误后不容易查找和定位,故一般适用于规模较小的 软件。增量式集成测 试虽然采用逐步到位的方法,要多费人力和工时,但由于每个 已被测试过的模块还可以在以后组装过程中的每一步骤(组装 一个新模块)进行新的测试,从而使得程序测试更为彻底。因 而从测试有效性角度来看,增量式集成测试将比非增量式集成
第7章 软件测试的资源分配、进度管理与最优发行 集成测试的第三个重要部分是有效性测试。由于软件经组 装测试并排错后,接口方面的问题已经解决,故以后集成测试 的主要问题是解决软件的有效性问题,所谓软件的有效性问题, 是指软件的功能、性能、可靠性、安全性及保障性等方面软件 的实际水平是否达到用户的需求。有效性测试是在开发方地点 在模拟用户运行环境的条件下所进行的一种用户需求测试,一 般采用黑盒测试来检验所开发并经单元测验、组装集成测试及 排错后的软件是否与描述用户需求的需求分析说明书相一致。 测试人员一般由开发方的测试人员及软件设计人员组成。以下 简述各类测试的基本内涵。

第7章 调试、测试和异常处理PPT教学课件

第7章 调试、测试和异常处理PPT教学课件
第7章 调试、测试和异常处理
• 每一个应用程序开发出来,交给客户使用前都要进行检查, 确保其没有错误并且安全可靠,才能交付使用。任何软件 都不能保证完全没有错误,程序员应尽力去发现其中的错 误并修正这些错误。发现并消除错误的过程就是调试。如 果程序调试通过,就要检测该软件是否符合用户需求,软 件中是否包含未发现的错误,这个过程成为测试。在编写 程序过程中,有些错误是可以预测到的,有些是预测不到 的,对于可预测的错误C#提供了异常处理机制,保证程序 的正确性和可靠性。本章将详细讨论C#中的调试、测试和 异常处理方法。主要内容如下:
• 这个例子中,感冒就是一个异常,因为预先考虑 到可能出现的问题,进行了合适的处理,这就是 异常处理。适当的异常处理可以避免系统终止当 前操作,程序不会出现故障,系统也不会崩溃。
7.3.2 异常类
• .NET提供了大量与异常有关的类,用来处理异常, 每一个异常类都表示一种异常,Exception类是所 有异常的基类。异常类继承关系的结构图如图7.8 所示。
• 在消除了程序中的语法错误和运行时错误后,程序依旧不 能保证完全正确,程序员可以自己进行简单的单元测试, 来确定基本功能是否完善,复杂的测试有专业测试人员进 行。什么是单元测试呢?
• 单元测试是测试隔离的单元或模块,对各种方法分别使用 不同的输入和执行参数来测试。单元测试的依据是详细设 计描述,单元测试应对模块内所有重要的控制路径设计测 试用例,以便发现模块内部的错误。单元测试多采用白盒 测试技术,系统内多个模块可以并行地进行测试。VS2008 将单元测试工具集成在IDE中,方便程序员的使用,下面通 过一个简单的例子来说明VS2008中单元测试工具的使用。
7.3 异常处理
• 利用调试和测试,可以有效地减少程序中的错误, 但是程序中的错误是不可避免的,就像人难免会 生病一样。错误是客观存在的,程序员有责任和 义务尽量减少错误的发生。面对不可避免的、可 能出现的错误,如何积极面对,以保证程序的稳 定可靠,具有非常重要的意义。

软件测试案例分析完整版

软件测试案例分析完整版

软件测试案例分析 HEN system office room 【HEN16H-HENS2AHENS8Q8-HENH1688】对软件测试理解软件测试作为软件质量保证的一种重要方法,近些年来, 软件测试越来越受到产业界、教育界和学术界的重视。

软件测试,描述一种用来促进鉴定软件的正确性、完整性、安全性和质量的过程。

换句话说,软件测试是一种实际输出与预期输出间的审核或者比较过程。

软件测试的经典定义是:在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。

1软件测试的方法黑盒测试在黑盒测试(或称功能测试)中,不考虑程序的内部结构和表现,其目的是确定程序的输入与输出是否与其规格一致,力图发现以下几类错误:是否有不正确或遗漏了的功能?在接口上,输入能否正确地接受?能否正确地输出结果?是否有数据结构错误或外部信息(例如数据文件)访问错误?性能上是否能满足要求?是否有初始化或终止性错误?黑盒测试的主要缺点是依赖于规格的正确性(实际情况并非如此)和需要采用所有可能的输入作为测试用例才能保证模块的正确性。

白盒测试在该方法对软件的过程性细节做细致检查,对程序所有逻辑进行测试。

通过在不同点检查程序的状态,确定实际的状态是否与预期的状态一致。

测试用例从程序的逻辑中产生。

确定程序逻辑覆盖有几条原则,其中之一是语句覆盖,要求程序中的每条语句至少执行一次。

这条原则是必要的,但不充分,因为部分错误并不能检测出来。

从上至下测试从上至下测试从程序的顶点模块开始,然后逐步对较低级的模块进行测试。

为了模仿被测试模块的低级模块,需要哑模块或桩子模块。

从上至下测试的主要好处就是排除了系统测试和集成,它可以让人们看见系统的早期版本并证明系统的正确性。

它的效果之一可以提高程序员的士气。

从上至下测试的主要缺点是需要桩子模块,并且在桩子模块中的测试数据直到输入输出模块加入之前不能确定。

某些模块的测试数据难以创建,因为桩子模块不能模拟数据流使得模块之间的数据流不能组织成有向无环图。

软件测试技术及其应用案例分析

软件测试技术及其应用案例分析近年来,随着软件行业的迅速发展,软件测试技术也逐渐成为了软件研发中不可或缺的重要环节。

软件测试技术不仅仅是指单纯的代码测试,更包括了测试方案、测试计划、测试用例设计、测试执行与结果分析等多方面内容。

在这篇文章中,我们将会通过一些实际的应用案例分析,深入了解软件测试技术的相关知识点及其在实践中的应用。

一、测试类型概述及其实际应用针对软件测试的具体内容,一般来说可以分为功能测试、性能测试、安全测试、兼容性测试、随机性测试等多个子项。

其中,功能测试通常是最主要的一个测试类型。

在实际应用中,功能测试是针对软件产品中固有的功能,通过人工或自动化方式进行测试,以保障软件产品在实际使用中的正确性。

具体而言,我们可以通过对用户需求、系统架构、用例设计等等方面进行测试,来评估软件产品的功能是否合理,是否符合用户实际需求。

除了功能测试之外,其他测试类型也都具有实践应用价值。

性能测试可以评估软件在高负荷下的性能表现,安全测试可以评估软件在安全方面的表现,兼容性测试可以评估软件在不同操作系统、硬件设备下的表现,随机性测试则可以评估系统在极端情况下的表现等等。

综合来看,不同的测试类型适用于不同的场景,针对不同的问题解决方法,则需要采用不同的测试方式及相应的测试策略。

二、测试用例设计思路及实际操作一旦确定了测试类型,我们就可以为软件产品设计相应的测试用例。

针对测试用例的设计,我们可以考虑使用较为流行的BDD (Behavior-Driven Development)框架。

BDD框架通过将软件需求和测试场景整合在一起,促进了“通用语言”的建立,使得测试用例更容易理解和践行。

通常来说,我们可以通过业务领域分解、场景分析、用例设计等多个步骤来完成测试用例的设计。

举个例子,假设我们现在需要为一个社交APP设计测试用例。

首先我们需要定位业务领域,即社交领域。

然后,我们可以再按照功能、性能、安全、兼容等方式,将测试用例进行细分。

软件测试技术及其应用案例分析

软件测试技术及其应用案例分析软件测试技术是一种通过检查、分析和评估软件的过程,以确保其符合预期的功能、性能和质量要求的方法。

软件测试技术在软件开发过程中起到至关重要的作用,可以提高软件的稳定性、可靠性和用户满意度。

下面将介绍几种常用的软件测试技术,并分析它们在实际应用中的案例。

1.黑盒测试技术:黑盒测试技术是一种不考虑软件内部结构,仅基于功能需求和规格说明来设计和执行测试的方法。

它通过输入测试数据和检查输出结果来验证软件的功能是否符合预期。

例如,一个银行系统需要进行黑盒测试以验证转账功能是否正确。

测试人员可以尝试不同的输入数据(如账户金额、收款人信息等)并检查转账结果是否与预期相符。

2.白盒测试技术:白盒测试技术是一种基于对软件内部结构的了解,并利用代码覆盖率等指标进行测试的方法。

它可以帮助测试人员发现潜在的逻辑错误、死代码等问题。

例如,一个购物网站需要进行白盒测试以验证支付功能的正确性。

测试人员可以通过查看代码并设计测试用例,来全面测试支付过程中的各种情况(如支付成功、支付失败等)。

3.自动化测试技术:自动化测试技术是一种利用自动化工具和脚本执行测试的方法。

它可以提高测试效率和准确性,并节省测试人员的时间和精力。

例如,一个电商平台需要进行自动化测试以验证商品功能的正确性。

测试人员可以使用自动化测试工具录制和回放过程,并检查结果是否与预期相符。

4.性能测试技术:性能测试技术是一种通过模拟并评估软件在不同工作负载下的性能指标(如响应时间、吞吐量等)的方法。

它可以帮助测试人员发现系统的瓶颈和性能问题,并优化软件的性能。

例如,一个社交媒体应用需要进行性能测试以验证系统在用户高峰期的稳定性。

测试人员可以通过模拟大量用户同时访问系统,并记录响应时间等指标。

综上所述,软件测试技术在实际应用中起到了非常重要的作用。

它可以帮助发现软件中的问题,并提供改进和优化的建议。

无论是黑盒测试、白盒测试、自动化测试还是性能测试,它们都是保证软件质量的有效手段。

软件测试技术课程设计

软件测试技术课程设计一、课程目标知识目标:1. 学生能够理解软件测试的基本概念,掌握软件测试的目的和重要性。

2. 学生能够掌握各类软件测试方法,如单元测试、集成测试、系统测试和验收测试。

3. 学生能够了解软件测试流程,包括测试计划、测试设计、测试执行和测试评估。

4. 学生能够熟悉常见的软件测试工具及其使用方法。

技能目标:1. 学生能够运用软件测试方法编写测试用例,对实际软件进行测试。

2. 学生能够运用测试工具进行自动化测试,提高测试效率。

3. 学生能够分析测试结果,找出软件缺陷,并提出合理的改进建议。

情感态度价值观目标:1. 学生培养良好的团队合作精神,能够在团队中进行有效的沟通与协作。

2. 学生树立质量意识,关注软件质量,对软件测试工作充满热情。

3. 学生培养自主学习、探究学习的习惯,不断提升自己的软件测试技能。

课程性质:本课程为实践性较强的学科,旨在培养学生掌握软件测试的基本知识和技能,提高学生的实际操作能力。

学生特点:学生具备一定的计算机编程基础,对软件测试有一定了解,但缺乏实际操作经验。

教学要求:结合学生特点和课程性质,注重理论与实践相结合,强调学生在实际操作中掌握软件测试方法和技术,提高解决问题的能力。

通过课程学习,使学生能够达到上述课程目标,具备从事软件测试工作的基本素质。

二、教学内容1. 软件测试基本概念:包括软件缺陷、软件测试目的、软件测试类型等。

- 教材章节:第一章 软件测试概述2. 软件测试方法:单元测试、集成测试、系统测试、验收测试等。

- 教材章节:第二章 软件测试方法3. 软件测试流程:测试计划、测试设计、测试执行、测试评估。

- 教材章节:第三章 软件测试流程与策略4. 测试用例设计:等价类划分、边界值分析、因果图等。

- 教材章节:第四章 测试用例设计方法5. 常见软件测试工具:Selenium、JMeter、QTP等。

- 教材章节:第五章 自动化测试工具6. 测试管理工具:禅道、JIRA等。

第7章测试计划与测试管理


测试计划概述(续)
制定测试计划的目的 – 一个计划一定是为了某种目的而产生的, 对于软件质量管理而言,制定测试计划 的目的主要有3个。
– 1.使软件测试工作进行更顺利 – 2.促进项目参加人员彼此的沟通 – 3.使软件测试工作更易于管理
测试计划概述(续)
– 制定测试计划的原则 • 制定测试计划是软件测试中最有挑战性 的一个工作。以下原则将有助于制定测试计 划工作。
• 软件——字处理程序、数据库程序和自定义工具等。
• 其他资源——软盘、电话、参考书、培训资料等。
测试计划主要内容(续)
• 4 正式合格性测试 • 分节对每个正式合格性测试进行说明,并描述软件 测试计划对每个CSCI 作正式合格性测试的要求。 • 4.X (CSCI 名称和项目唯一标识号) • 从4.1 节开始编号。用名称和项目的唯一标识号标 识CSCI。 • 4.X.1 总体测试要求 • 从4.1.1 开始编号。描述用于所有正式合格性测试 或用于一组正式合格性测试的要求。例如:每个正 式合格性测试都需要满足下列一般要求:
4 规划测试环境
• 测试环境:支持测试工作的所有物质元素
– 测试数据、硬件、软件、网络和设备 – 测试环境必须反映软件最终运行环境的基线配置
• 设计测试环境
– – – – – – – – 获得客户环境的样本(os,支撑软件,硬件) 确定是否需要一个归档机制来存储测试后生成的大文件(日志) 确定网络特性(带宽、网络协议等) 确定服务器os 确定需要的自动测试工具的许可证数量 确定执行某些测试过程需要的其他软件 确定硬件环境时考虑测试数据的需求(规模) 考虑配置测试需要的特殊资源(活动硬盘和图像库)
了解手头的任务和相关的测试目标(续)
– 实现的范围(测试范围) – 测试的期望
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(4) 审查:由受过专门培训的主持人来领导,并定义参 与者(同行)的角色,有正式的入口、出口准则及度量标准, 主要目的是发现Bug。
代码检查应在编译和动态测试之前进行,在检查前,应 准备好需求描述文档、程序设计文档、程序的源代码清单、 代码编码标准和代码Bug检查表等。
2) 代码质量度量 软件的质量是软件属性的各种标准度量的组合。 ISO/IEC9126国际标准所定义的软件质量包括六个方面:功 能性、可靠性、易用性、效率、可维护性和可移植性。针对 软件的可维护性,目前业界主要存在三种度量参数:Line复 杂度、Halstead复杂度和McCabe复杂度。其中: (1) Line复杂度以代码的行数作为计算的基准。 (2) Halstead复杂度以程序中使用到的运算符与运算元 的数量作为计数目标(直接测量指标),然后可以据此计算出 程序容量、工作量等。
7.1 静态测试与动态测试
原则上可以把软件测试方法分为静态测试和动态测试两 大类。静态测试包括代码审查、静态结构分析等;动态测试 包括白盒测试和黑盒测试。
7.1.1 静态测试
静态测试的主要特征是不利用计算机运行被测试的程序, 而是采用其他手段达到检测的目的。但静态测试的特征并不 意味着完全不利用计算机作为分析的工具。它与人工测试有 着根本的区别。
● 不允许的递归; ● 不适当的处理顺序; ● 无终止的死循环; ● 调用并不存在的子程序; ● 遗漏标号或代码; ● 不适当的链接。 找到以下问题的根源: ● 不会执行到的代码; ● 未使用过的变量; ● 可疑的计算;
● 未引用过的标号; ● 潜在的死循环。 提供间接涉及程序欠缺的信息: ● 违背编码规则。 ● 每一类型语句出现的次数; ● 所用变量和常量的交叉引用表; ● 标识符的使用方式; ● 过程的调用层次。
(2) 为进一步查错作准备、选择测试用例、进行符号测 试。
静态测试的结果:生成各种引用表、静态错误分析。
3.静态结构分析
静态结构分析主要是以图形的方式表现程序的内部结构, 如函数调用关系图、函数内部控制流图。其中,
(1) 函数调用关系图以直观的图形方式描述应用程序中 各个函数的调用和被调用
关系; (2) 控制流图显示一个函数的逻辑结构,由许多节点组 成,一个节点代表一条语句或数条语句,连接节点的叫边, 边用来表示节点间的控制流向。
2.静态测试的特点、地位、作用和结果
静态测试特点:适用于文档回顾和代码回顾,静态测试 可以开始的非常早,只有静态测试能够发现文档中的Bug。
对于静态测试在软件测试中究竟占据什么地位,人们的 见解各不相同,原因在于人们已经开发出了一些静态测试系 统作为软件测试工具。静态测试被当做一种自动化的代码检 验方法。对于软件开发人员来说,静态测试只是进行动态测 试的预处理工作。有人认为,静态测试并不是要找出程序中 的Bug,因为编译系统已经能做到这一点。
第七章 实用软件测试技术
7.1 静态测试与动态测试 7.2 兼容性测试 7.3 性能测试 7.4 验收测试 7.5 回归测试 7.6 非增式测试、增式测试、混合增 量式测试
第七章 实用软件测试技术
7.7 模块接口测试技术 7.8 文档测试和脚本测试 7.9 测试件和构件测试 7.10 界面测试 7.11 软件可靠性测试 7.12 面向对象软件测试 本章小结
实际上,这种看法是片面的,尽管编译系统也能发现某些程 序Bug,但这些远非软件中存在的大部分Bug。静态测试的 查错功能是编译程序所不能代替的。为了说明这一点,下面 列出静态测试能够做到的一些工作。
(1) 程序中可能发现的Bug: ● 用错的局部变量和全局变量; ● 未定义的变量; ● 不匹配的参数; ● 不适当的循环嵌套和分支嵌套;
在软件测试的整个流程中,每一个阶段都非常重要,需 要测试者综合用户需求和开发人员的设计做出准确的判断、 进行细致的分析。其中相对较重要、复杂的一个环节就是测 试设计,测试设计中基本的软件测试方法包括静态/动态测试、 黑盒/白盒/灰盒测试、积极/消极测试和不确定性/确定性测试 等。第二章简单介绍了很多软件测试方法和技术,本章在第 二章的基础上着重介绍一些实用的软件测试方法和技术。
1.定义
静态测试:借助工具来检查软件的代码和模型,主要对 程序进行控制流分析、数据流分析、接口分析和表达式分析 等。比如在单元测试期间,开发人员通过预先定义的规则, 使用静态测试工具对代码进行检查;在软件建模期间,设计 人员可以使用静态测试工具对软件模型进行分析。
静态测试是单元测试的第一步,要在进行动态测试前先 完成该项测试。这一阶段的主要工作是保证代码算法的逻辑 正确性、清晰性、规范性、一致性、算法高效性,并尽可能 地发现程序中隐含的Bug。
这些方法本身有各自的目标和步骤,如收集一些程序信息, 以利于查找程序中的各种Bug和可疑的程序构造;从程序中 提出语义或结构要点,供进一步分析;以符号代替数值求得 程序的结果,便于对程序进行运算规律的检验;对程序进行 一些处理,为进一步动态测试做准备;通过程序静态特性分 析,找出Bug和可疑之处,例如不匹配的参数、不适当的循 环嵌套和分支嵌套、不允许的递归、未使用过的变量、空指 针的引用和可疑的计算等。静态测试结果可用于进一步的查 错,为测试用例的选取提供帮助,为软件的质量保证提供依 据,以提高软件的可靠性和易维护性。
(1) 非正式评审:没有正式的过程,多用于对编程或以 技术为评价标准的设计/编码中,其主要目的是以较低成本 发现问题。
(2) 走查:由程序编写者发起,参与者主要为研发同事, 主要目的是学习、理解并发现Bug。
(3) 技术评审:定义流程,并将Bug文档化,参与者包括 同行和技术专家,主要目的是发现Bug,进行讨论并解决技 术问题,检查与规格说明是否符合等。
4.静态测试的步骤
静态测试通过静态分析和代码审查两种形式进行。静态 测试方法是对被测程序进行特性分析的一些方法的总称,包 括代码检查、静态结构分析、代码质量度量等。
1) 代码检查 代码检查是对软件的相关产出物(包括需求、设计、代 码、测试计划、测检查代码和设计的一致性,代码 的可读性,代码逻辑表达的正确性,代码结构的合理性等方 面。检查形式主要有四种类型:
相关文档
最新文档