欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    《数据库测试》PPT课件.ppt

    • 资源ID:5519530       资源大小:316.50KB        全文页数:93页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    《数据库测试》PPT课件.ppt

    第6章 数据库测试,内容提要,在数据库系统开发过程中,需求分析不充分、设计考虑不周、代码编写错误等都可能造成数据库错误和缺陷。如果这些隐藏在数据库内的错误和缺陷不排除,将导致数据库运行不正常、用户蒙受损失,甚至造成灾难性后果。为了保证数据库的质量,找出数据库中存在的可能错误和缺陷,有必要对数据库进行测试。本章首先介绍数据库测试的概念、方法和步骤,然后介绍测试用例设计的原理与方法,最后介绍数据库模式测试、功能测试、性能测试及调试的基本概念和方法。,6.1 概述,数据库测试的定义数据库测试一般与其数据库系统测试同时进行。数据库测试方法和手段与计算机软件测试大体相同,只是测试范围和重点有些不同。数据库测试可以简单地定义为:数据库测试是为了发现错误和缺陷而运行数据库的过程。实际上,为了保证数据库的质量,数据库测试贯穿数据库开发的全过程,即数据库需求分析、设计、实现等阶段的工作成果均需要测试。因此,数据库测试是根据数据库的需求规格说明书和源代码的内部结构而精心设计一批测试用例(即输入数据及其预期的输出结果),并利用这些测试用例去运行数据库,以发现数据库错误和缺陷的过程。,6.1 概述,数据库测试的目的在于发现错误和缺陷,而不是证明数据库没有错误和缺陷。一个成功的测试是发现至今没有发现的错误和缺陷的测试,一个好的测试用例是发现至今没有发现的错误和缺陷的测试用例。数据库测试的主要内容是数据库模式测试、功能测试和性能测试。数据库测试的任务是编制测试计划、运行测试用例、形成测试结论、撰写测试分析报告。数据库分析、设计和实现人员根据测试分析报告,分析引起错误和缺陷的原因、寻求排除错误和弥补缺陷的方法,最终排除错误和缺陷。,6.1.2 数据库测试的原则,6.1.2 数据库测试的原则(1)数据库测试是一个测试排错(排除错误和缺陷)再测试再排错、循环往复、数据库质量不断改进的过程。(2)尽早地和不断地进行数据库测试。数据库测试不只是在数据库实现后才进行测试,而在数据库需求分析、设计等阶段也需要测试。(3)测试用例应由测试输入数据和与之对应的预期输出结果两部分组成。预期输出结果用于与实际输出结果比较。,6.1.2 数据库测试的原则,(4)系统开发人员要避免测试自己所作的数据库需求分析文档、设计文档和实现代码。经验表明,别人测试使得测试工作更客观、更有效。自己测试的不利之处在于:一是心理问题,一般的人不愿否认自己的工作。二是思维惯性,自己在分析、设计和实现时的疏忽在测试时可能仍然不能发现。(5)在设计测试用例时,应当包含合理的输入数据和不合理的输入数据。合理的输入数据是能验证数据库正确的数据。不合理的输入数据是指数据库中不可能存储或处理的数据,用于测试数据库在输入异常(如用户在键盘上按错键)时能否正确处理。,6.1.2 数据库测试的原则,(6)充分注意测试中的错误群集现象。经验表明,测试排错后的文档或源代码中残存的错误数量与排错前的错误数量成正相关关系,形成错误群集现象。例如,某个存储过程被检出错误,该存储过程排错后增加了一个入口参数,因此所有调用该存储过程的程序均需修改。这就是一个错误引发一群错误。(7)严格执行测试计划,杜绝测试的随意性。测试计划包括测试目标、测试环境、测试准备、测试方法、测试人员及分工,逐个列出测试项目(包括项目名称、测试目的、测试内容、测试进度、测试步骤、测试结果评价标准、测试用例)。,6.1.2 数据库测试的原则,(8)对每一个测试结果做全面复查,避免疏漏和失误。(9)进行出错统计、撰写测试分析报告。测试分析报告包括实际测试环境、测试方法、测试人员、总体结论与评价,按项目逐个列出测试结果(包括实际输入与输出结果、发现的问题、说明是否通过测试、排错建议)。,6.1.3 数据库测试的方法,6.1.3 数据库测试的方法按照对数据库的内部结构和工作过程了解的程度,数据库测试的方法分为白盒测试和黑盒测试。1.白盒测试白盒测试是已知数据库的内部结构和工作过程,通过测试来检验数据库是否按照需求规格说明书的要求正常运行。在测试时,把测试对象看作一个打开的盒子,它允许测试人员利用数据库的内部结构等信息,设计或选择测试用例,对数据结构、存储过程及触发器的逻辑路径等进行测试,确定实际的状态是否与预期的状态一致。,6.1.3 数据库测试的方法,数据库测试人员使用白盒测试方法,除可以对数据结构进行测试外,还可以对存储过程和触发器的模块进行如下的检查:(1)对模块的所有独立的执行路径至少测试一次。(2)对所有的逻辑判断的取“真”与取“假”的两种情况都至少测试一次。(3)在循环的边界和运行的边界内执行循环体。(4)测试内部数据结构的有效性等。常用的白盒测试方法包括代码检查法、静态结构分析法、静态质量度量法、逻辑覆盖法、基本路径测试法。测试方法不同,测试用例的设计方法也存在差异。,黑盒测试,2.黑盒测试黑盒测试是在已知数据库所具有的功能的基础上,通过测试来检验每个功能是否都能正常运行并达到预期结果。在测试时,把数据库看作一个不能打开的黑盒子,在完全不考虑数据库内部结构和内部特性的情况下,测试人员根据经验,通过相应的数据库系统或数据库访问工具进行测试。这种测试主要是为了测试如下问题是否正确处理:,黑盒测试,(1)数据结构(例如,数据类型、宽度)是否正确定义?(2)输入能否正确地接受?能否输出正确的结果?(3)能否能够正确插入(增加)、更新、删除数据?(4)主码、外码是否正确定义?(5)数据库操作权限定义是否正确?(6)是否正确处理并发操作?(7)表级、列级完整性约束条件是否满足?(8)数据库的处理能力是否满足要求?,黑盒测试,(9)数据库的可靠性、可维护性是否满足要求?黑盒测试着眼于数据库的功能和性能,不考虑其内部逻辑结构进行测试,主要用于数据库确认测试。常用的黑盒测试方法包括等价类划分法、边界值分析法、错误推测法、因果图法、判定表驱动法、正交试验设计法、功能图法、场景法。黑盒测试的关键是设计测试用例。,6.1.4 数据库测试的步骤,6.1.4 数据库测试的步骤,1单元测试单元测试集中检查数据库设计的单个表、视图、索引、存储过程、触发器、数据库系统模块,通过测试发现其中分析、设计与编码的可能错误。2集成测试集成测试是将数据库系统模块按照设计要求组装起来,在组装的同时进行测试。主要目的是发现与接口有关的问题。如数据通过接口可能丢失,一个模块与另一个模块可能有由于疏忽而造成有害影响,把子功能组合起来可能不产生预期的主功能等。,6.1.4 数据库测试的步骤,3确认测试确认测试的任务是验证数据库系统的功能和性能及其他特性是否与用户的要求一致。对数据库系统的功能和性能要求在需求规格说明书中已经明确规定。确认测试应交付的文档有:确认测试分析报告、最终的用户手册和操作手册、项目开发总结报告等。4系统测试系统测试是将通过确认测试的数据库系统的软件、硬件、外设、某些支持软件和人员等其他系统元素结合在一起,在实际运行(使用)环境下,对数据库系统进行一系列的集成测试和确认测试。系统测试的目的在于通过与系统需求作比较,发现与系统需求不符合或矛盾的地方。按照上述步骤对数据库进行测试并通过后,数据库应该满足需求规格说明书的要求。,6.1.5 数据库测试输出结果的展现,6.1.5 数据库测试输出结果的展现数据库测试的输出结果主要有三个去向:存储到数据库、存储到特殊格式的数据文件、输出到屏幕或打印机等外围设备。如果测试输出结果存储到数据库,可以用数据库系统或专门的数据库访问工具查看它们。例如,在成绩管理系统中,成绩输入模块插入的成绩记录既可以用成绩查询模块查看,也可以用专门的数据库访问工具查看,如Delphi 的SQL Explorer。当然,一些数据库产品还带有自己专门的访问工具,如Microsoft SQL Server数据库可以用SQL查询分析器(SQL Query Analyzer)、SQL Server企业管理器(SQL Server Enterprise Manager)这两个工具查看。,6.1.5 数据库测试输出结果的展现,如果测试输出结果存储到特殊格式的数据文件,数据库系统有查询这个数据文件内容的功能时就用被测试的数据库系统查看它们,否则只能用专门的工具查看了。如果测试输出结果输出到屏幕或打印机等外围设备,测试人员应该按测试计划检查测试输出结果是否与预期结果一致。,6.2 测试用例设计,设计数据库测试用例就是针对数据库的功能和性能而设计的测试方案,并编入测试计划中。测试用例的设计既要考虑正常情况,也应考虑极限情况以及字段取最大值和最小值等边界情况。因为测试的目的是暴露数据库中隐藏的错误和缺陷,所以在设计测试用例时要充分考虑那些易于发现错误和缺陷的测试用例。好的测试用例应该有较高的发现错误和缺陷的概率。,6.2.1 白盒测试的测试用例设计,6.2.1 白盒测试的测试用例设计逻辑覆盖法和基本路径测试法是计算机软件白盒测试用例设计的两个重要方法。这两个方法也适合存储过程、触发器、嵌入式SQL等数据库程序的测试。为了举例方便,下面给出一个程序流程图(见图6-2)。图中字母A、B、C、D、E、F、G代表其旁边语句的编号。,6.2.1 白盒测试的测试用例设计,语句覆盖,(1)语句覆盖 语句覆盖是设计足够多的测试用例,运行所测程序,使得程序中每条可执行语句至少被执行一次。不过,每条可执行语句至少执行一次是最基本的要求,但是它不能保证发现逻辑运算和程序逻辑错误,且并不是所有的分支被执行过。例6-1 考虑图6-2,语句覆盖的测试用例如表6-1所示。注意,该组测试用例不能覆盖判断E为假的分支。而且,如果判断C误写为X2 or Y3,该组测试用例仍能够实现语句覆盖,因此该组测试用例发现不了这个错误。测试用例一般不是唯一的。例如,表6-2的测试用例也可以实现语句覆盖。,语句覆盖,表6-1 语句覆盖测试用例(组1),语句覆盖,表6-2 语句覆盖测试用例(组2),判定覆盖,(2)判定覆盖 判定覆盖又称分支覆盖,是设计足够多的测试用例,运行所测程序,使得程序中每个判断的取真分支和取假分支分别至少执行一次。例6-2 考虑图6-2,其中C、E为判断。判定覆盖的测试用例如表6-3所示。虽然判定覆盖能够保证所有判断的取真分支和取假分支执行至少一次,但判定覆盖不能保证发现条件表达式错误。例如,如果语句C误写为X2 or Y3,表6-3给出的测试用例仍能够实现判定覆盖,因此该组测试用例发现不了这个错误。,判定覆盖,表6-3 判定覆盖测试用例,条件覆盖,(3)条件覆盖 条件覆盖是设计足够多的测试用例,运行所测程序,使得每个判断的每个条件成分取真值和假值分别至少执行一次。例6-3 考虑图6-2。首先对所有判断的条件成分取值进行标记:条件覆盖的测试用例如表6-4所示。,条件覆盖,表6-4 条件覆盖测试用例,易见,表6-4的测试用例同表6-3是一样的。因此条件覆盖的测试用例并不能保证条件表达式错误被检出。,判定-条件覆盖,(4)判定-条件覆盖 判定-条件覆盖是设计足够多的测试用例,同时满足判定覆盖和条件覆盖。例6-4 考虑图6-2,并沿用例6-3的记号。判定-条件覆盖的测试用例如表6-5所示。表6-5的测试用例同表6-3、表6-4是一样的。可见,判定-条件覆盖的测试用例仍不能保证条件表达式错误被检出。,判定-条件覆盖,表6-5 条件覆盖测试用例,条件组合覆盖,(5)条件组合覆盖 条件组合覆盖是设计足够多的测试用例,运行所测程序,使得每个判断中的所有条件成分取值组合至少执行一次。例6-5 考虑图6-2,并沿用例6-3的记号。判断C的条件成分组合有4个:,条件组合覆盖,表6-6 条件组合覆盖测试用例,条件组合覆盖,组合覆盖的测试用例可同时实现判定覆盖、条件覆盖和判定-条件覆盖,但当判断的条件成分过多时,测试用例的数量可能成几何级数增长。例如,如果某个判断有5个条件成分,因为每个条件成分有取真值、取假值两种可能,则有25=32种组合方案。另外,组合覆盖的测试用例不一定能覆盖全部程序路径。这里,程序路径(简称路径)是指从程序入口(开始)到出口(结束)的任何路径。,路径覆盖,(6)路径覆盖 路径覆盖是设计足够多的测试用例,覆盖程序中所有可能的路径。例6-6 考虑图6-2。全部路径为ACDEFG、ACDEG、ACBG。路径覆盖的测试用例如表6-7所示。表6-7的测试用例同表6-3是一样的。,路径覆盖,表6-7 路径覆盖测试用例,基本路径测试法,2.基本路径测试法基本路径测试法是在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例的方法。限于篇幅,本书对基本路径测试法不作深入讨论。有兴趣的读者可以参考软件测试等方面的专著或教科书。,6.2.2 黑盒测试的测试用例设计,6.2.2 黑盒测试的测试用例设计1.等价类划分法一个数据的集合称为关于程序输入数据的等价类(简称为等价类),如果集合中的一个数据作为测试输入数据不能发现该程序的错误,那么使用集合中的其他数据作为测试输入数据也不能发现错误。所谓等价类划分法是把全部可能的输入数据划分为若干等价类,从每个类中选取一个数据作为输入数据来测试程序。等价类划分法设计测试用例分为两步:划分等价类、确定测试用例。,6.2.2 黑盒测试的测试用例设计,(1)划分等价类和列出等价类表 等价类分为有效等价类和无效等价类。所谓有效等价类,指对于程序的需求规格说明而言是合理的、有意义的输入数据构成的集合。利用有效等价类可检验程序是否实现了需求规格说明中所规定的功能和性能。不是有效等价类的数据的集合称为无效等价类。设计测试用例时,要同时考虑这两种等价类。因为软件不仅要能接受合理的数据,也要能经受意外的考验。这样的测试才能确保软件具有更高的可靠性。,6.2.2 黑盒测试的测试用例设计,划分等价类需要经验,下述列出划分等价类的几个原则:1)如果输入条件规定了取值范围,则可以定义一个有效等价类和两个无效等价类。例6-7 设在程序的需求规格说明中对输入条件有一句话:“班级的人数从199”。有效等价类有一个:“1人数99”,无效等价类有两个:“人数1”、“人数99”。,6.2.2 黑盒测试的测试用例设计,2)如果输入条件规定了输入值的集合,或者规定了“必须如何”的条件,则可以定义一个有效等价类和一个无效等价类。例6-8 设学生(学号,姓名,性别,所在系,班号,出生日期)关系规定性别属性取值于集合“男”,“女”。有效等价类有一个:“男”,“女”,无效等价类有一个:除“男”、“女”外的所有字符串。,6.2.2 黑盒测试的测试用例设计,3)如果输入条件是一个布尔量,则可以定义一个有效等价类和一个无效等价类。4)如果规定了输入数据的一组值,而且程序要对每个输入值分别进行处理。这时可为每一个输入值定义一个有效等价类,把这组输入值之外的数据定义为一个无效等价类。例6-9 设大学教师的职称取值“教授”、“副教授”、“讲师”和“助教”,职称不同考核的标准不同,因而处理方式也不同。有效等价类有4个:“教授”、“副教授”、“讲师”和“助教”,无效等价类有一个:除这4种职称外的所有其他职称。,6.2.2 黑盒测试的测试用例设计,5)如果规定了输入数据必须遵守的规则,则可以定义一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)。例6-10 设学生选课关系“选修(学号,课程号,成绩)”中的成绩属性满足:0成绩100且成绩为整数。有效等价类有一个:“0成绩100且成绩为整数”,无效等价类有4个:“0成绩100且成绩为小数”、“成绩100且成绩为数值”、“成绩取字符串”。,6.2.2 黑盒测试的测试用例设计,6)在已划分的等价类中,如果程序对某些数据的处理方式不同,则应考虑将该等价类进一步划分为更小的等价类。(2)确定测试用例 在确立了等价类之后,建立等价类表,列出所有划分出的等价类,如表6-8所示。表6-8 等价类表,6.2.2 黑盒测试的测试用例设计,根据等价类表,按以下原则确定测试用例:1)为每个等价类分配一个唯一的编号。2)设计一个新的测试用例,使其尽可能多地覆盖尚未被覆盖的有效等价类,重复这一步,直到所有的有效等价类都被覆盖为止。3)设计一个新的测试用例,使其仅覆盖一个尚未被覆盖的无效等价类,重复这一步,直到所有的无效等价类都被覆盖为止。这就是说,对每个无效等价类分别设计测试用例。之所以这样做,是因为某些程序对某一输入错误的检查往往会屏蔽对其他输入错误的检查。,6.2.2 黑盒测试的测试用例设计,例6-11 设“参加工作年月”满足:年份为19502008,月份为112。输入格式是连续输入年、月,其中年占4位、月占两位,如2008年1月输入格式为:200801。第一步:划分等价类,等价类表如表6-9所示。,6.2.2 黑盒测试的测试用例设计,表6-9 等价类表,第二步:确定测试用例。1)编号为1、2、3的三个有效等价类用一个测试用例覆盖,如表6-10所示。,6.2.2 黑盒测试的测试用例设计,表6-10 覆盖有效等价类的测试用例,2)为每一个无效等价类至少设计一个测试用例,如表6-11所示。,6.2.2 黑盒测试的测试用例设计,表6-11 覆盖无效等价类的测试用例,边界值分析法,2.边界值分析法边界是指程序输入、输出范围的边缘,边界值是指程序输入、输出范围的边缘值。在数据库测试中,常见的边界值有月份中的空值、1月、12月,发票中的空值、最低金额、最高金额,年龄中的空值、最小年龄、最大年龄,姓名中的空值、最短姓名、最长姓名,编号中的空值、最小编号、最大编号。边界值既可以是一元组,也可以是多元组。例如,设三角形的三条边的长度分别为A、B和C。当A、B、C满足:A0,B0,C0,A+BC,A+CB,B+CA,才能构成三角形。但如果把6个不等式中的任何一个大于号“”错写成大于等于号“”,那就不能构成三角形。满足上述6个不等式等号要求的A、B、C任何取值三元组均是构成三角形这一问题的边界值。,边界值分析法,测试实践表明,大量的错误一般发生在输入或输出范围的边界上,而不是发生在输入输出范围的内部。因此针对输入、输出的边界设计测试用例显得尤其重要。事实上,为检验程序在边界附近的运行情况专门设计测试用例进行测试,常常取得良好的测试效果。边界值分析法是一种黑盒测试方法,是对等价类划分法的补充,其测试用例来自等价类的边界。边界值分析法与等价类划分法存在一定的差异。一是边界值分析法不是选择等价类的任意数据,而是选择正好等于、刚刚大于或刚刚小于边界值的数据。二是边界值分析法不仅重视针对输入边界的测试用例设计,而且重视针对输出边界的测试用例设计。,边界值分析法,应用边界值分析法设计测试用例,需遵循以下几条原则:(1)如果输入条件规定了值的范围,则应取刚达到这个范围的边界的值,以及刚刚超越这个范围边界的值作为测试输入数据。(2)如果输入条件规定了值的个数,则用最大个数、最小个数、比最小个数少1、比最大个数多1的数作为测试数据。(3)根据需求规格说明书中的每个输出条件,使用前面的原则(1)。,边界值分析法,(4)根据需求规格说明书中的每个输出条件,使用前面的原则(2)(5)如果需求规格说明书给出的输入域或输出域是有序集合,则应选取集合的第一个元素和最后一个元素作为测试用例。(6)如果程序中使用了一个内部数据结构,则应当选择这个内部数据结构边界上的值作为测试用例。(7)分析需求规格说明,找出其他可能的边界条件。,边界值分析法,例6-12 函数(x取实数)的边界值分析法测试用例设计。输入数据可以划分为两个等价类:有效等价类x0;无效等价类x0。等价类的边界为0和最大实数,等价类的边界为0和最小实数。应用边界值分析法,各测试用例的输入部分可设计为:最大实数、绝对值很小的正实数、0、绝对值很小的负实数、最小实数。,错误推测法,3.错误推测法错误推测法就是根据测试人员的直觉与经验,推测被测数据库哪些地方容易出错,并据此设计测试用例。它通常作为其他方法的一种辅助手段。即用其他方法设计测试用例,然后再根据错误推测法补充一些测试用例。,错误推测法,例如,设计一些非法、错误的输入进行数据库测试是很有意义的。如果需求分析中要求两个学生的学号不相同,就输入两个相同的学号。如果需求分析中要求公司名称不超过30个字符,就输入31个字符。如果需求分析中要求职工号不为空,就输入一个空职工号。如果需求分析中要求成绩为数字,就输入字母。如果需求分析中要求成绩为整数,就输入小数。如果需求分析中要求出生日期是时间敏感的,就看它在公元3000年是否还能正常工作。在一个表的外码属性中输入了一个被参照表中不存在的数据。向一个表的数值型属性中输入多行很大的数字,当这些数字求和后再存储到别的表时看是不是会出现错误。,6.3 数据库模式测试,数据库模式测试主要是测试数据库逻辑模式、外模式、内模式的定义是否满足用户需求。本书主要关心数据库逻辑模式和外模式测试,即基本表测试和视图测试。基本表测试涉及到基本表数据结构测试、数据库完整性测试。,6.3.1 基本表数据结构测试,6.3.1 基本表数据结构测试基本表数据结构测试是测试数据库基本表的数据结构是否合理,如字段的数据类型、宽度是否合理。例如,图书管理系统有基本表:图书(书号,书名,作者,出版社,出版日期,定价)。如果规定书名是40B的字符型数据,则书名长度超过40B的图书的信息就不能完整地保存在图书管理系统数据库中。通过运行测试用例,数据库测试人员可以比较方便地进行基本表数据结构测试。然而,数据库测试人员也可以通过专门的数据库访问工具查看基本表属性来检查其数据结构。,6.3.2 数据库完整性测试,6.3.2 数据库完整性测试数据库完整性测试包括实体完整性、参照完整性、用户定义的完整性等测试。从基本表的角度来看,即测试基本表的表级、列级完整性约束是否满足用户需求。例如,图书管理系统有两张表:图书(书号,书名,作者,出版社,出版日期,定价)、借书(读者号,书号,借出日期,应还日期)。其中图书表的主码为书号、用户定义的完整性为定价0,借书表的外码有书号(对应图书表的书号)。如果在图书表中某个记录的书号为空,则违反了实体完整性规则。如果在图书表中某个记录的定价为-1,则违反了用户定义的完整性规定。如果借书表中某个记录的书号为“AB121314”,但是在图书表中找不到“AB121314”号,则违反了参照完整性规则。数据库完整性测试一般还包含了触发器的测试。,6.3.3 视图测试,6.3.3 视图测试数据库视图测试主要是测试数据库视图定义是否反映了用户的需求。例如,视图的列定义是否正确(视图的列可能是在相关基本表的列中选择的,也可能由相关基本表的某些列通过某种运算得到的)、视图数据的来源表名是否正确、视图数据过滤条件是否正确、视图的分组是否正确、视图的统计与排序是否正确。,6.4 数据库功能测试,数据库功能测试是通过测试用例运行数据库,以验证该数据库功能的正确和无遗漏。数据库功能测试的内容包括数据定义、数据操纵、数据库安全性、并发处理等的测试。6.4.1 数据定义功能测试数据库的数据定义功能是指对基本表、视图、索引、角色等对象的定义、修改与删除。这些对象一般通过可视化数据库设计工具或者SQL语句在数据库系统开发阶段进行创建、修改和删除。,6.4 数据库功能测试,但是,一些通用性较强的数据库系统的基本表、视图、索引、角色等对象相当一部分是在系统安装或者正常运行时自动产生的。此时,应该通过运行相应的模块,测试数据定义功能是否正确执行。数据定义功能测试的主要任务是测试数据库系统动态创建、修改和删除基本表、视图、索引、角色等是否符合用户需求。数据定义功能的测试输出结果一般通过专门的数据库访问工具查看它们,当然也可以通过在数据库系统中设置基本表、视图、索引、角色等对象查询模块来确定它们的存在性及属性。,6.4 数据库功能测试,例如,某B2C(Business to Customer,企业到用户的电子商务模式)网站销售管理系统的商品交易记录是按年存储的。2008年的数据库名为DB2008,2009年的数据库名为DB2009。销售管理系统发现相应年份数据库不存在时,就自动创建之。因此,应该设计合适的测试用例实现年份变换,测试销售管理系统能不能自动创建数据库。另一方面,还要测试数据库系统是否错误地重复定义数据。上例中,销售管理系统在同一年份重复创建数据库是不允许的。,6.4.2 数据操纵功能测试,6.4.2 数据操纵功能测试数据库的数据操纵功能测试是指对数据库数据插入、修改、删除、查询、统计和排序等进行测试。,数据更新功能测试,1.数据更新功能测试为了保证数据更新功能的正确执行,必须设计测试用例进行测试。数据更新功能的测试输出结果一般可以用数据库系统有关模块查看它们,也可以通过专门的数据库访问工具查看它们。在测试时务必注意,一个数据更新操作可能引发一系列的数据更新操作。例如,某些数据库系统要求插入数据时,同时要执行修改与删除数据的操作。因此测试输出结果可能涉及到多个基本表或视图,测试人员需要到多处查看测试输出结果。例如,销售管理系统每销售一件商品,需要插入销售记录、修改库存量,当该商品无库存并不再进货时还要删除该商品目录。此时,测试人员需要在销售记录表、库存表、商品目录表等处查看测试输出结果。,数据查询功能测试,2.数据查询功能测试数据查询是对数据库中的数据进行检索,筛选出满足特定条件的数据。数据查询功能测试就是测试数据库系统查询功能得到的数据是否符合预定要求。可以用专门的数据库访问工具获取满足相同条件的数据,通过比较来判断数据库系统处理是否正确。,数据统计和排序功能测试,3.数据统计和排序功能测试数据查询时往往伴随着数据的统计和排序。因此,数据统计和排序功能测试一般和数据查询功能测试一同进行。例如,图书管理系统有基本表:图书(书号,书名,作者,出版社,出版日期,定价)。在此基本表上按出版社统计图书种数,然后按出版社增序排序输出统计结果就需要数据查询和统计、排序功能同时测试。,6.4.3 数据库安全性测试,6.4.3 数据库安全性测试数据库安全性测试就是测试数据库的安全措施是否发挥作用并达到预期效果,有无漏洞。为此要充分了解破坏数据库安全性的方法和工具,有针对性地设计一些测试用例对系统进行测试。成功的数据库安全性测试最终应能突破各种保护,控制数据库。目前,已知的破坏数据库安全性的方法有:(1)攻击数据库系统数据输入部分,篡改或窃取输入的数据、阻止输入数据、擅自向数据库输入数据等。,6.4.3 数据库安全性测试,(2)攻击数据库系统数据修改部分,篡改修改的数据、阻止修改数据、擅自修改数据库中的数据等。(3)攻击数据库系统数据检查部分,篡改检查方法、阻止检查、擅自对数据库中的数据进行检查等。(4)攻击数据库系统数据运算部分,篡改运算公式、阻止运算、擅自对数据库中的数据进行运算等。,6.4.3 数据库安全性测试,(5)攻击数据库系统数据删除部分,篡改删除的内容、阻止删除数据、擅自删除数据库中的数据等。(6)攻击数据库系统数据传输部分,篡改或窃取数据、阻止数据传输、自行向数据库中发送数据等。(7)通过操作系统的漏洞,篡改或窃取数据库的数据,窃取用户口令及其他有用的信息以进入系统。,6.4.3 数据库安全性测试,(8)申请和占用过多的资源瘫痪系统,以破坏安全措施,从而进入系统。(9)故意使系统出错,利用系统恢复的过程,窃取用户口令及其他有用的信息。(10)通过浏览残留在计算机各种资源中的垃圾(无用信息),以获取如口令、安全码、译码关键字等重要信息。(11)浏览全局数据(如注册表中的数据),期望从中找到进入系统的关键字。(12)浏览那些逻辑上不存在,但物理上还存在的各种记录和资料。,6.4.4 并发处理测试,6.4.4 并发处理测试数据库系统一般能同时处理多个事务。例如,在网上销售管理系统中,往往有多个用户同时在线,有客户、也有业务管理人员。因此,如果数据库系统的并发处理机制存在缺陷,就会发生诸如两个客户购买同一物品、两个业务管理人员同时更新某种商品的库存等冲突事件。为了找出数据库系统并发处理机制的可能缺陷,就必须进行并发处理测试。数据库系统并发处理机制的缺陷可能难于发现。如只有一个用户使用时缺陷不会曝露、多个用户使用时才会曝露,正常情况下不会曝露、仅在特殊的软硬件环境下才会曝露。,6.4.4 并发处理测试,数据库系统并发处理机制的可能缺陷包括:(1)一个用户的不同模块同时更新同一数据。(2)多个用户同时更新同一数据。(3)一个用户的一个模块更新数据,而另一个模块同时读取数据。(4)一个用户更新数据,而另一个用户同时读取数据。(5)一个用户的一个模块更新基本表、视图、索引、角色等对象,而另一个模块正在使用这些对象。,6.4.4 并发处理测试,(6)一个用户更新基本表、视图、索引、角色等对象,而另一个用户正在使用这些对象。(7)两个基本表互为被参照表。(8)一个用户的多个模块对数据库操作时形成死锁。(9)多个用户的事务形成死锁。,6.5 数据库性能测试,数据库系统只满足要求的功能而达不到要求的性能是不行的。所以还需要进行性能测试。6.5.1 数据库性能测试的概念数据库性能测试是通过测试用例运行数据库,以验证该数据库是否满足需求规格说明书中规定的性能。数据库性能测试包括响应时间、吞吐量、可靠性、可扩展性、可维护性等性能指标测试。,6.5 数据库性能测试,数据库性能测试分为平均性能测试、压力测试、负载测试和强度测试4种类型。平均性能测试是指当数据库处于平均负荷条件下(即数据流量、数据存量、用户数、事务数、并发数等处于预测平均值)的性能测试。压力测试用于确定数据库还能运行的数据流量、数据存量、用户数、事务数、并发数等的最大值,即满负荷值。负载测试是当数据库处于满负荷条件下的性能测试。强度测试用于确定数据库在最差工作环境(如网络带宽、系统内存配置较低)时的性能,也可用于验证数据库处于正常工作状态时的各种资源的下限指标。,6.5 数据库性能测试,性能测试可以出现在测试过程的各个阶段,甚至在单元层次上也可以进行性能测试。然而,只有当所有的系统元素全部组装完毕,系统性能才能完全确定。,6.5.2 影响数据库性能的因素,6.5.2 影响数据库性能的因素影响数据库性能的因素很多,可分硬件和软件两个方面。硬件如CPU、内存、硬盘、网络等均会影响到数据库的性能。一般地,CPU越快越好、内存越多越好、硬盘性能越高越好、网络速度越快越好。软件如操作系统、数据库应用系统、DBMS、主语言编译系统、应用系统开发工具等也会对数据库的性能有影响。这里,仅列出数据库应用系统开发方面的因素对数据库性能的影响。主要有:,6.5.2 影响数据库性能的因素,(1)对于大型分布式数据库,没有合理地组织数据库服务器,各服务器负荷不均匀,导致有的服务器满负荷运行、有的服务器很空闲,整个数据库系统性能不高。(2)数据库配置不合理。例如,对数据库数据量的增长估计错误可能导致严重的碎片问题。(3)数据库基本表、视图设计不合理。例如,多个基本表数据重复,造成数据冗余、不一致。该用视图时,不用视图而用基本表,占用存储空间。,6.5.2 影响数据库性能的因素,(4)表的结构不合理。例如,全国居民信息表Citizen存储了公民身份号码(对应列名:CitizenID)。我国公民身份号码是特征组合码,由17位数字本体码和一位校验码组成。排列顺序从左至右依次为:6位数字地址码、8位数字出生日期码、三位数字顺序码和一位数字校验码。地址码表示居民常住户口所在县(市、旗、区)的行政区划代码,按国家标准GB/T2260的规定执行。地址码(对应列名:AreaID)与行政区划名称(对应列名:AreaName)的对应关系存储在表Area中。现需要按行政区划查询居民信息。,6.5.2 影响数据库性能的因素,某程序员写了一条SQL语句:SELECT*FROM Citizen,Area WHERE Left(Citizen.CitizenID,6)=Area.AreaID。该语句在Citizen表的数据量不多时,响应时间尚可接受。但当Citizen的元组数超过1万时,响应时间迅速增加。经过分析,原因是表的结构不合理。于是在Citizen中增加一个AreaID列,表示居民所在的行政区划代码,为外码,对应Area的AreaID列。SQL语句修改为SELECT*FROM Citizen,Area WHERE Citizen.AreaID=Area.AreaID,响应就快得多了。,6.5.2 影响数据库性能的因素,(5)索引不合理。一是该创建索引时不创建索引。如用户经常利用“姓名”列查询,但在“姓名”列上没有创建索引。再如在大表上不创建索引。二是不该创建索引时创建索引,特别是在具有重复数值的列上创建索引。如在“性别”列上创建索引,由于该列只有两个唯一值,所以该索引的效率很低。再如在小表上创建索引。(6)并发用户太多。随着数据库系统并发用户的增多,需要为共享处理过程分配更多的内存。,6.5.2 影响数据库性能的因素,(7)SQL语句不合理,复杂的SQL语句往往导致响应时间增加。,6.6 数据库调试,数据库调试是在进行了成功的数据库测试之后才开始的工作。它与数据库测试不同,测试的目的是尽可能多地发现错误,而调试的目的是进一步诊断和改正数据库中的潜在错误。调试活动由两部分组成:(1)确定数据库中可疑错误的性质和位置。(2)对数据库的设计或编码进行修改,排除这个错误。,6.6.1 数据库调试的原则,6.6.1 数据库调试的原则因为调试活动由两部分组成,所以数据库的调试原则分成两组。1.确定错误的性质和位置的原则(1)认真分析与错误征兆有关的信息。(2)避开死胡同。(3)只把调试工具当作辅助手段来使用。(4)避免用试探法,最多只能把它当作最后手段。,修改错误的原则,2.修改错误的原则(1)在出现错误的地方,很可能还有别的错误。(2)修改错误的一个常见失误就是只修改了错误的征兆或错误的表现,而没有修改错误的本质。(3)当心修正一个错误的同时有可能会引入新的错误。(4)修改错误的时候将迫使人们暂时回到数据库设计阶段。(5)修改源代码,不要改变目标代码。,6.6.2 数据库调试的步骤,6.6.2 数据库调试的步骤1.加载调试数据根据数据库需求分析的结果,确定一些常用事务(或是业务,或是某一具体处理),并且将它们所需要的数据(通常上百个元组)加载到数据库中。2.运行运行数据库系统。,6.6.2 数据库调试的步骤,3.评价(1)检查是否获得预期结果。(2)如果不能获得预期结果,则1)检查数据库系统模块、数据库存储过程和触发器的逻辑、SQL语句语法是否存在问题。若有,则修正后重新调试。2)若没有问题,则检查数据库模式(基本表、视图等的结构),分析加载的数据是否与数据库需求分析的要求相吻合,若不吻合,则修正后调试,直到能获得满意结果为止。,6.6.2 数据库调试的步骤,若数据库模式描述不正确,就要返回到数据库逻辑设计阶段,进行逐级修正。若已加载数据不正确,就要对它们进行必要的修正,然后重新调试。(3)如果获得预期结果,但是时间、空间不符合要求,则1)进行评价后处理:为节省时间,在空间允许的情况下,用合并、缩短存取路径的方法进行数据库逻辑结构的变通。为节省空间,在响应时间允许的情况下,进行数据“分离”,当然也是对数据库逻辑结构的变通。,6.6.2 数据库调试的步骤,2)如果设计者对逻辑模型,无论如何“变通”都不能满足时间、空间的要求,那么这就说明系统选型不当,这意味着数据库需求分析与可行性论证工作开展得不充分。一旦遇到这种情况,只能做最坏的处理:将原来的应用分解成更小的应用,并且使这种小应用所涉及的关系、数据更少。这当然是一项复杂的工作,不仅要修改模式、子模式,并且还要修改应用程序,以此来弥补由于数据库需求分析与可行性论证不足所带来的缺陷。,6.6.3 数据库调试的方法,6.6.3 数据库调试的方法调试的关键在于判断数据库系统内部的错误位置及原因。为此,可以采用以下方法:1.强行排错这是目前使用较多,效率较低的调试方法。它不需要过多的思考,比较省事。例如:(1)通过打印全部内存来

    注意事项

    本文(《数据库测试》PPT课件.ppt)为本站会员(牧羊曲112)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开