您的位置:首页 > 数据库

软件工程基础与数据库基础(基本的概念)

2014-09-14 10:50 471 查看
一、软件工程基础

A、基本概念

1.软件的分类

根据应用目标不同分为:应用软件、系统软件和支撑软件。

2.软件的生命周期

软件定义、软件开发、软件运行维护三个阶段。

3.软件工程

就是试图用工程、科学和数学的原理与方法研制、维护计算机软件相关技术及管理方法。

4.结构化分析方法

常用工具:数据流图、数据字典、结构化语句、判定表和判定树等工具。

5.结构化设计方法

模块的独立性评判标准有内聚性和耦合性两个。其中内聚性(模块内部各个元素彼此结合的紧密程度)由弱到强排列顺序为:偶然内聚--逻辑内聚--时间内聚--过程内聚--通信内聚--顺序内聚--功能内聚;耦合性(模块间互相连接的紧密程序)的耦合度有高到低的排列顺序为:内容耦合--公共耦合--外部耦合--控制耦合--标记耦合--数据耦合--非直接耦合。

6.结构化设计原则

包括模块化、自定向下分解、逐步求精。

B.软件测试

利用测试工具按照测试方案和流程对产品进行功能测试和性能测试,甚至根据需求编写不同的测试工具,设计和维护测试系统,对测试方案可能出现的问题进行分析和评估。

1.软件测试的原则

(1)软件开发人员应避免测试自己的程序;

(2)应尽早、不断地进行软件测试;

(3)对测试用例要持正确态度;

(4)严格执行测试计划,排除测试的随意性,以免发生漏测和重复无效的工作;

(5)应对每一个测试结果进行全面检查;

(6)妥善保存测试用例、测试计划、测试报告、最终分析报告,以备回归测试和维护。

2.软件测试分类

(1)从软件内部结构和具体实现角度划分为:白盒测试和黑盒测试。

白盒测试这一方法是把测试对象看作一个打开的盒子,测试人员依据程序内部逻辑结构相关信息,设计或选择测试用例,对程序所有逻辑路径进行测试,通过在不同点检查程序的状态,确定实际的状态是否与预期的状态一致。

黑盒测试着眼于程序外部结构,不考虑内部逻辑结构,主要针对软件界面和软件功能进行测试、输入输出是否正常等的测试。

(2)从执行程度角度划分为:静态测试和动态测试。

静态测试是指不运行被测程序本身,发挥人的逻辑思维优势,进行代码检查、静态结构等的分析。

动态测试是基于计算机的测试,是为了发现错误而执行程序的过程。

(3)从软件开发进程角度分为:单元测试、集成测试、确认测试、验收测试、系统测试。

单元测试:测试各个小模块。

集成测试:各个小模块组装起来测试。

确认测试:验证软件性能和其他性能是否符合用户要求。

系统测试:实际运行环境下的测试。

验收测试:让用户将其用于软件既定功能和任务进行的测试。

3.测试相关方法

黑盒测试用例设计方法包括(1)等价类划分法、(2)边界值分析法、(3)错误推测法、(4)因果图法、(5)判定表驱动法、(6)正交试验设计法、(7)功能图法、(8)场景法等。

白盒测试用例设计方法包括(1)代码检查法、(2)静态结构分析法、(3)静态质量度量法、(4)逻辑覆盖法、(5)基本路径测试法、(6)域测试、(7)符号测试、(8)路径覆盖和(9)程序变异。

4.测试用例设计

A.对黑盒而言主要运用等价类划分边界值分析进行测试用例的设计。

等价类划分

a. 概念:等价类是指某个输入域的子集合。在该子集合中,各个输入数据对于揭露程序中的错误都是等效的,并合理地假定:测试某等价类的代表值就等于对这一类其它值的测试.因此,可以把全部输入数据合理划分为若干等价类,在每一个等价类中取一个数据作为测试的输入条件,就可以用少量代表性的测试数据取得较好的测试结果。

等价类分为有效和无效之分:有效等价类是指对于程序的规格说明来说是合理的,有意义的输入数据构成的集合。利用有效等价类可检验程序是否实现了规格说明中所规定的功能和性能。无效等价类与有效等价类的定义恰巧相反。

b.等价类划分准则

(1)在输入条件规定了取值范围或值的个数的情况下,则可以确立一个有效等价类和两个无效等价类;

(2)在输入条件规定输入值的集合或者规定了“必须如何”的条件的情况下,可确立一个有效等价类和一个无效等价类

(3)在输入条件是一个布尔量的情况下,可确定一个有效等价类和一个无效等价类;

(4)在规定了输入数据的一组值(假定n个),并且程序要对每一个输入值分别处理的情况下,可确立n个有效等价类和
一个无效等价类;

(5)在规定了输入数据必须遵守的规则的情况下,可确立一个有效等价类(符合规则)和若干个无效等价类(从不同角
度违反规则)。

(6)在确知已划分的等价类中各元素在程序处理中的方式不同的情况下,则应再将该等价类进一步的划分为更小的等价类。

在确定了等价类之后建立等价类表,列出所有划分出的等价类,然后为每一个等价类编号,设计测试用例尽可能多的覆盖尚未被覆盖的有效测试用例,设计另一个新的测试用例覆盖尚未被覆盖的一个无效等价类,重复上述步骤直到有效和无效等价类全部被覆盖为止。

边界值分析

a.概念:边界值分析是通过选择等价类边界的测试用例。边界值分析法不仅重视输入条件边界,而且也必须考虑输出域边界。它是对等价类划分方法的补充。

另外,长期的测试工作经验告诉我们,大量的错误是发生在输入或输出范围的边界上,而不是发生在输入输出范围的内部.因此针对各种边界情况设计测试用例,可以查出更多的错误。

b.测试用例选择原则

(1)如果输入条件规定了值的范围,则应取刚达到这个范围的边界的值,以及刚刚超越这个范围边界的值作为测试输入数据。

(2)如果输入条件规定了值的个数,则用最大个数,最小个数,比最小个数少一,比最大个数多一的数作为测试数据。(3)根据规格说明的每个输出条件范围,使用前面的原则(1)。

(4)根据规格说明的每个输出条件个数,应用前面的原则2)。

(5)如果程序规格说明给出的输入域或输出域是有序集合,则应选取集合的第一个元素和最后一个元素作为测试用例。

(6)如果程序中使用了一个内部数据结构,则应当选择这个内部数据结构的边界上的值作为测试用例。

(7)分析规格说明,找出其它可能的边界条件。

错误推测

错误推测法是基于经验和直觉推测程序中所有可能存在的各种错误,从而有针对性的设计测试用例的方法。

因果图法

因果图方法最终生成的就是判定表。它适合于检查程序输入条件的各种组合情况。

判定表组成法

条件桩(Condition Stub):列出了问题的所有条件.通常认为列出的条件的次序无关紧要。

动作桩(Action Stub):列出了问题规定可能采取的操作.这些操作的排列顺序没有约束。

条件项(Condition Entry):列出针对它左列条件的取值.在所有可能情况下的真假值。

动作项(Action Entry):列出在条件项的各种取值情况下应该采取的动作。

正交试验设计法

就是使用已经造好了的正交表格来安排试验并进行数据分析的一种方法,目的是用最少的测试用例达到最高的测试覆盖率。

B.白盒测试主要用到条件覆盖、路径覆盖、语句覆盖、分支覆盖。运用较为广泛的是基本路径覆盖。下面就以此为例,说说设计测试用例的过程。

基本路径覆盖

a.概念:是在程序控制流图的基础上,通过分析控制结构的环路复杂性,导出基本可执行路径集合,从而设计测试用例的方法。测试用例要保证测试中程序的每个可执行语句至少执行一次。

b.步骤:

(1)画出控制流图,流程图有节点和边,每个节点代表一个或多个语句,箭头为边,一条边必须终止于节点,由边和节点限定的范围成为区域。计算区域时应包含图外部的范围;

(2)计算圈复杂度,等于判定节点的数目加1;

(3)导出测试用例,复杂度的值就是独立路径的数目,根据独立路径就可写出测试用例;

二、数据库基本概念

1.数据与信息

数据是客观事物的属性值,反映客观事物的特征;信息可以数据化,数据代表信息,但二者有区别。

2.数据库系统

数据库系统(DBS)由数据库、数据库管理系统、数据库管理员、硬件平台、软件平台5部分组成。其中数据库管理系统数据库系统核心

3.数据库内部结构体系

数据库系统的三级模式:概念模式外模式内模式;内模式处于底层,它反映数据在计算机物理结构中的实际存储形式、概念模式处于中层,它反映设计者的数据全局逻辑要求、外模式处于最外层,它反映了用户对数据的要求。

4.数据模型(是数据库系统的核心与基础)

a.三方面:数据结构、数据操作、数据约束。

b.分类为:概念模型、数据模型、物理模型。

c.最常用的四中数据模型:(1)层次模型[一对多](2)网状模型[多对多](3)关系模型[用二维表表示实体与实体间的联系](4)面向对象模型[采用面向对象方法来设计数据库,存储单元式对象]。

d.典型的模型:E-R模型和关系模型

E-R模型将现实世界的要求转化成实体、联系、属性等几个概念,以及它们间的两种基本连接关系,并且可以用图直观地表示出来。实体、属性、联系分别用矩形、椭圆、菱形表示。

关系模型采用二维表来表示。

[1]几个重要概念

候选码:候选码—关系模式中的属性或属性组能唯一区分一条记录;

主码(主键)---从候选码中选一个作为主码

主属性---包含在候选码中的任何属性

非主属性---不包含在任何候选码中的属性

规范化---在关系数据库中每一个关系满足一定的要求,满足不同要求的为不同范式,范式缩写为NF

[2]几个重要范式

1NF---每个分量必须是不可再分的

2NF---每一个非主属性都完全依赖候选码

3NF---每一个非主属性都不依赖候选码传递

BCNF---每一个确定的属性集都包含候选码

以上便是软件工程和数据库的最基本的相关概念,可能有纰漏之处,但是作为对这两方面知识的一个了解性资料已经足够全面了,要深入了解,得翻看相应的专门讲软件工程和数据库的书籍。谢谢!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: