测试的目的是发现软件中的错误,但是,暴露错误并不是软件测试的最终目的,测试的根本目的是尽可能多地发现并排除软件中隐藏的错误。
2. 软件测试的准则
根据上述软件测试的目的,为了能设计出有效的测试方案,以及好的测试用例,软件测试人员必须深入理解,并正确运用以下软件测试的基本准则:
3.5.2 软件测试的方法和实施 1. 软件测试方法
软件测试具有多种方法,依据软件是否需要被执行,可以分为静态测试和动态测试方法。如果依照功能划分,可以分为白盒测试和黑盒测试方法。
(1)静态测试和动态测试
① 静态测试包括代码检查、静态结构分析、代码质量度量等。其中代码检查分为代码审查、代码走查、桌面检查、静态分析等具体形式;
② 动态测试。静态测试不实际运行软件,主要通过人工进行分析。动态测试就是通常所说的上机测试,是通过运行软件来检验软件中的动态行为和运行结果的正确性。
动态测试的关键是使用设计高效、合理的测试用例。测试用例就是为测试设计的数据,由测试输入数据和预期的输出结果两部份组成。测试用例的设计方法一般分为两类:黑盒测试方法和白盒测试方法。
(2)黑盒测试和白盒测试
① 白盒测试。白盒测试是把程序看成装在一只透明的白盒子里,测试者完全了解程序的结构和处理过程。它根据程序的内部逻辑来设计测试用例,检查程序中的逻辑通路是否都按预定的要求正确地工作;
② 黑盒测试。黑盒测试是把程序看成一只黑盒子,测试者完全不了解,或不考虑程序的结所有测试都应追溯到用户需求;
在测试之前制定测试计划,并严格执行; 充分注意测试中的群集现象;
避免由程序的编写者测试自己的程序; 不可能进行穷举测试;
妥善保存测试计划、测试用例、出错统计和最终分析报告,为维护提供方便。
构和处理过程。它根据规格说明书的功能来设计测试用例,检查程序的功能是否符合规格说明的要求。
2. 软件测试的实施
软件测试过程分4个步骤,即单元测试、集成测试、验收测试和系统测试。
单元测试是对软件设计的最小单位——模块(程序单元)进行正确性检验测试。单元测试的技术可以采用静态分析和动态测试。
集成测试是测试和组装软件的过程,主要目的是发现与接口有关的错误,主要依据是概要设计说明书。集成测试所设计的内容包括:软件单元的接口测试、全局数据结构测试、边界条件和非法输入的测试等。集成测试时将模块组装成程序,通常采用两种方式:非增量方式组装和增量方式组装。
确认测试的任务是验证软件的功能和性能,以及其他特性是否满足了需求规格说明中确定的各种需求,包括软件配置是否完全、正确。确认测试的实施首先运用黑盒测试方法,对软件进行有效性测试,即验证被测软件是否满足需求规格说明确认的标准。
系统测试是通过测试确认的软件,作为整个基于计算机系统的一个元素,与计算机硬件、外设、支撑软件、数据和人员等其他系统元素组合在一起,在实际运行(使用)环境下对计算机系统进行一系列的集成测试和确认测试。
系统测试的具体实施一般包括:功能测试、性能测试、操作测试、配置测试、外部接口测试、安全性测试等。
3.6 程序的调试
在对程序进行了成功的测试之后将进入程序调试(通常称Debug,即排错)。 程序的调试任务是诊断和改正程序中的错误。调试主要在开发阶段进行。
程序调试活动由两部分组成,一是根据错误的迹象确定程序中错误的确切性质、原因和位置;二是对程序进行修改,排除这个错误。
程序调试的基本步骤:
① 错误定位。从错误的外部表现形式入手,研究有关部分的程序,确定程序中出错位置,找出错误的内在原因;
② 修改设计和代码,以排除错误; ③ 进行回归测试,防止引进新的错误。
软件调试可分为静态调试和动态调试。静态调试主要是指通过人的思维来分析源程序代码
和排错,是主要的设计手段,而动态调试是辅助静态调试的。
主要的调试方法有:强行排错法、回溯法和原因排除法3种。
第4章数据库设计基础
4.1 数据库的基本概念
数据是数据库中存储的基本对象,它是描述事物的符号记录。
数据库是长期储存在计算机内、有组织的、可共享的大量数据的集合,它具有统一的结构形式并存放于统一的存储介质内,是多种应用数据的集成,并可被各个应用程序所共享,所以数据库技术的根本目标是解决数据共享问题。
数据库管理系统(DBMS,Database Management System)是数据库的机构,它是一种系统软件,负责数据库中的数据组织、数据操作、数据维护、控制及保护和数据服务等。数据库管理系统是数据系统的核心。
为完成数据库管理系统的功能,数据库管理系统提供相应的数据语言:数据定义语言、数据操纵语言、数据控制语言。
4.2 数据库系统的发展和基本特点
1. 数据库系统的发展
数据管理技术的发展经历了3个阶段:人工管理阶段、文件系统阶段和数据库系统阶段。 关于数据管理三个阶段中的软硬件背景及处理特点,简单概括可见表4-1。 背景 应用目的 硬件背景 软件背景 处理方式 科学计算 无直接存取 设备 无操作系统 批处理 科学计算、管理 磁盘、磁鼓 有文件系统 大规模管理 大容量磁盘 有数据库管理系统 人工管理阶段 文件管理阶段 数据库系统管理阶段 联机实时处理、批处理 分布处理、联机实时处理和批处理 数据管理者 数据面向对象 人 某个应用程序 无共享,冗余度大 文件系统 某个应用程序 数据库管理系统 现实世界 特数据共享程度 共享性差,冗余度大 共享性大,冗余度小 点 数据的独立性 不独立,完全依赖于程序 独立性差 具有高度的物理独立性和一定的逻辑独立性 数据的结构化 无结构 记录内有结构,整体无整体结构化,用数据结构 模型 描述 由DBMS提供数据安全性、完整性、并发控制和恢复 数据控制能力 由应用程序控制 应用程序控制 2. 数据库系统的特点
数据独立性是数据与程序间的互不依赖性,即数据库中的数据独立于应用程序而不依赖于应用程序。
数据的独立性一般分为物理独立性与逻辑独立性两种。
①物理独立性:当数据的物理结构(包括存储结构、存取方式等)改变时,如存储设备的更换、物理存储的更换、存取方式改变等,应用程序都不用改变。
②逻辑独立性:数据的逻辑结构改变了,如修改数据模式、增加新的数据类型、改变数据间联系等,用户程序都可以不变。
4.3 数据库系统的内部体系结构
1. 数据统系统的3级模式
①概念模式,也称逻辑模式,是对数据库系统中全局数据逻辑结构的描述,是全体用户(应用)公共数据视图。一个数据库只有一个概念模式;
②外模式,外模式也称子模式,它是数据库用户能够看见和使用的局部数据的逻辑结构和特征的描述,它是由概念模式推导而出来的,是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示。一个概念模式可以有若干个外模式;
③内模式,内模式又称物理模式,它给出了数据库物理存储结构与物理存取方法。 内模式处于最底层,它反映了数据在计算机物理结构中的实际存储形式,概念模式处于中间层,它反映了设计者的数据全局逻辑要求,而外模式处于最外层,它反映了用户对数据的要求。
2. 数据库系统的两级映射
两级映射保证了数据库系统中数据的独立性。
①概念模式到内模式的映射。该映射给出了概念模式中数据的全局逻辑结构到数据的物理存储结构间的对应关系;
②外模式到概念模式的映射。概念模式是一个全局模式而外模式是用户的局部模式。一个概念模式中可以定义多个外模式,而每个外模式是概念模式的一个基本视图。
4.4 数据模型的基本概念
数据模型从抽象层次上描述了数据库系统的静态特征、动态行为和约束条件,因此数据模型通常由数据结构、数据操作及数据约束三部分组成。
数据库管理系统所支持的数据模型分为3种:层次模型、网状模型和关系模型。数据模型特点见表4-2。
表4-2 各种数据模型的特点
发展阶段 主要特点 层次模型 用树形结构表示实体及其之间联系的模型称为层次模型,上级结点与下级结点之间为一对多的联系 网状模型 用网状结构表示实体及其之间联系的模型称为网状模型,网中的每一个结点代表一个实体类型,允许结点有多于一个的父结点,可以有一个以上的结点没有父结点 关系模型 用二维表结构来表示实体以及实体之间联系的模型称为关系模型,在关系模型中把数据看成是二维表中的元素,一张二维表就是一个关系 4.5 E-R模型
1. E-R模型的基本概念
①实体:现实世界中的事物可以抽象成为实体,实体是概念世界中的基本单位,它们是客观存在的且又能相互区别的事物;
②属性:现实世界中事物均有一些特性,这些特性可以用属性来表示; ③码:唯一标识实体的属性集称为码; ④域:属性的取值范围称为该属性的域; ⑤联系:在现实世界中事物间的关联称为联系。
两个实体集间的联系实际上是实体集间的函数关系,这种函数关系可以有下面几种:一对一的关系、一对多或多对一关系、多对多关系。
2. E-R模型的的图示法 E-R模型用E-R图来表示。