`
universsky
  • 浏览: 92872 次
文章分类
社区版块
存档分类
最新评论

软件开发中的数据库测试技术

 
阅读更多

摘要:根据以往软件测试经验,对数据库测试的内容和方法,进行了详细的分析,阐明了数据库测试在软件开发中的重要性。

  关键词:数据库测试;性能测试;DataFactory

  1、引言

  数据库系统的开发在应用软件开发中所占的比重越来越大,随之而来的问题也越来越突出。比如:数据冗余,功能和性能方面存在的问题已经严重影响应用软件的使用。软件测试人员往往重视对软件功能和编码的测试,而忽略对软件性能,特别是数据库访问并发测试。因为,他们固有的思想中认为数据库设计存在问题对系统性能影响不大,或从根本上忽略了数据库在软件开发中的地位,直到出现了问题,才想到对数据库的测试,但往往也是仅仅通过对编码的测试工作中捎带对数据库进行一定的测试,这远远是不够的。目前,中铁网上订票系统在大用户同时在线订票中系统频频瘫痪,就是最好的佐证。

  所以,在应用软件的测试工作中,应该将数据库作为一个独立的部分进行充分的测试,这样才可以得到应用软件所需要的性能优化的数据库。那么,应该对哪些内容进行测试,如何进行测试呢?

  2、数据库设计的测试

  数据库是应用的基础,其性能直接影响应用软件的性能。为了使数据库具有较好的性能,需要对数据库中的表进行规范化设计。规范化的范式可分为第一范式、第二范式、第三范式、BCNF范式、第四范式和第五范式。一般来说,逻辑数据库设计应满足第三范式的要求,这是因为满足第三范式的表结构容易维护,且基本满足实际应用的要求。因此,实际应用中一般都按照第三范式的标准进行规范化。但是,规范化也有缺点:由于将一个表拆分成为多个表,在查询时需要多表连接,降低了查询速度。故数据库设计的测试包括前期需求分析产生数据库逻辑模型和后期业务系统开发中的测试两部分(这里指的是后者),我在这里称为实体测试。

  数据库是由若干的实体组成的,包括(表,视图,存储过程等),数据库最基本的测试就是实体测试,通过对这些实体的测试,可以发现数据库实体设计得是否充分,是否有遗漏,每个实体的内容是否全面,扩展性如何。

  实体测试,可以用来发现应用软件在功能上存在的不足,也可以发现数据冗余的问题。经过测试,测试人员对有异议的问题要及时和数据库的设计人员进行沟通解决。

  3、数据一致性测试

  在进行实体测试后,应进一步检查下面的内容以保障数据的一致性:

  3.1 表的主键测试根据应用系统的实际需求,对每个表的主键进行测试,验证是否存在记录不唯一的情况,如果有,则要重新设置主键,使表中记录唯一。

  3.2 表之间主外键关系的测试数据库中主外键字段在名称,数据类型,字段长度上的一致性测试。

  3.3 级联表,删除主表数据后,相应从报表数据应同时删除的问题例如学生表和学生成绩表,学生数据已经删除,成绩表中相应学生的成绩记录应同时删除。

  3.4 存储过程和触发器的测试存储过程可以人工执行,但触发器不能人工处理,所以在对存储过程和触发器执行的过程中针对SQL SERVER2005及以上版本可以使用Microsoft SQL Server Profiler性能测试工具进行测试。

  Microsoft SQL Server Profiler 是 SQL 跟踪的图形用户界面,用于监视数据库引擎或 Analysis Services 的实例。测试人员可以捕获有关每个事件的数据并将其保存到文件或表中供以后分析。例如:可以对生产环境进行监视,了解哪些存储过程由于执行速度太慢影响了性能。

4、数据库的容量测试

  随着数据库系统的使用,数据量在飞速增长,如何在使用前对数据容量的增长情况进行初步估算,为最终用户提供参考,这在数据库使用和维护过程中,是非常重要的。可以通过对数据库设计中基本表的数据大小,和每天数据表的数据产生量进行初步估算。

  记录数据量=各个字段所占字节数的总和

  表的数据量=记录数据量*记录数

  数据库大小=各表数据量的总和

  当然,数据库的大小不仅仅只是基本表的大小,还有系统表,视图,存储过程等其它实体所占的容量,但最基本的数据是表的数据。另外,数据库的容量还包括数据库日志文件的容量,一般应预留数据库文件的2倍左右。

  5、数据库的性能测试

  应用软件除了功能外,很重要的一部分就是软件的性能,而对于数据库系统,数据库性能的好坏会直接影响应用软件的性能,这部分的测试,一般手工测试就显得无能为力了,这时就要借助自动化的测试软件,例如:DataFactory,DataFactory是一种强大的数据产生器,它允许开发人员和测试人员很容易产生百万行有意义的正确的测试数据库,该工具支持DB2、Oracle、Sybase、SQL Server数据库。这样,就可以模拟出应用软件长期使用后,海量数据存储的数据库的性能状况。从而尽早发现问题,进行数据库性能的优化。

  这里要注意,进行性能测试的时候,一定要注意测试环境的一致性,包括:操作系统、应用软件的版本以及硬件的配置等,而且在进行数据库方面的测试的时候一定要注意数据库的记录数、配置等要一致,只有在相同条件下进行测试,才可以对结果进行比较。否则无法和用户对软件的性能的观点达成一致。

  6、数据库的压力测试

  说起测试,我们首先想到的就是软件正确性的测试,即常说的功能测试。软件功能正确仅是软件质量合格指标之一。在实际开发中,还有其它的非功能因素也起着决定性的因素,例如软件的响应速度。影响软件响应速度的因素有很多,有些是因为算法不够高效;还有些可能受用户并发数的影响。

  在众多类型的软件测试中,压力测试正是以软件响应速度为测试目标,尤其是针对在较短时间内大量并发用户的访问时,软件的抗压能力。但压力测试往往是手工难以测试的,必须借助自动化测试工具。常用的压力测试有:Web测试、数据库测试等。

  数据库在大多数软件项目中是不可缺少的,对于它进行压力测试是为了找出数据库对象是否可以有效地承受来自多个用户的并发访问。这些对象主要是:索引、触发器、存储过程和锁。通过对SQL语句和存储过程的测试,自动化的压力测试工具可以间接的反应数据库对象是否需要优化。

  这些自动化的测试工具很多,各有特点,基于Java的项目可以使用JMeter,.Net项目可以采用.Net集成开发环境中提供的测试方案。

  7、结束语

  总之,在应用系统的测试中,把数据库应当作为独立的系统来测试,这无疑会为应用软件的质量增加可靠的保障,同时还必须结合应用软件进行集成测试,只有二者有机结合起来,才能最大限度的发挥数据库和应用软件的功能。

分享到:
评论

相关推荐

    基于CVI_ SQL技术和ODBC数据库访问的测试软件开发.pdf

    基于CVI_ SQL技术和ODBC数据库访问的测试软件开发.pdf

    软件测试方法和技术(朱少民).rar

    1.2 软件开发过程的特性 1.3 软件测试的重要性 2 2 第2章 软件测试的基本概念和方法 2.1 软件质量就是客户的满意度 2.2 软件缺陷(Bug)是什么 2.3 软件测试的基本方法 2.4 软件测试的分类和阶段 2.5 软件测试的工作...

    软件测试技术与实践培训班

    王斌 IBM自动化测试专家、多年的软件开发和测试经验,高级软件开发工程师和高级测试工程师;精通 LoadRunner,QTP等主流测试工具。根据敏捷开发原则,组织基于持续集成原则的软件开发自动化以及性能测试流程。 曹林林...

    国家标准-软件开发规范文档

    国家标准-软件开发规范文档,28个文档 1.任务申请.doc 2.可行性与计划阶段--可行性研究报告.doc 2.可行性与计划阶段--项目开发计划.doc 2.软件质量保证计划编写规范.doc 3.数据要求说明书编写规范.doc 3.软件需求说明...

    一款HTAP数据库基准测试工具,实现Hybench基准测试,集成测试数据集生成,HTAP负载运行、新鲜度度量、测试结果统计分析等

    Hybench是一款由中国软件评测中心、清华大学联合牵头,北京奥星贝斯科技有限公司、武汉达梦数据库股份有限公司、华为技术有限公司、腾讯云计算有限公司、阿里云计算有限公司共同研发的HTAP数据库基准测试工具。...

    软件开发各个环节-需求分析-概要设计-详细设计-数据库设计-软件测试等模板

    软件开发 软件的需求分析 软件的概要设计 软件的详细设计 软件的编码 软件的测试 软件的交付准备 软件的鉴定验收 培训 软件需求分析报告文档模板 软件概要设计报告文档模板 软件详细设计报告文档模板 软件测试(验收)...

    基于虚拟仪器的特性测试参数数据库的设计

    随着被测系统的大型化、复杂化、综合化和网络化,对测试系统的要求也越来越高,不但要有对仪器系统的管理...介绍了基于LabVIEW软件开发平台实现测试数据录入数据库,以及数据库的访问设计,给出了详细的设计方法和步骤。

    国家标准-软件开发规范

    设计的开发文案、说明文稿等编写规范,设计软件管理的开发进度、管理计划、质量保证、项目总结、操作、用户手册等,也包含软件开发过程中涉及的概要设计、详细设计、模块设计、数据库设计、测试计划等编写规范。...

    基于ASP.NET的《数据库原理及应用技术》课程指导平台系统设计与实现毕业设计(源代码+项目报告)

    《数据库原理与应用技术》课程指导平台的开发将Internet网络技术与现代教育观念相融合,为教师与学生在教学环节中的交流提供更便捷的方式,实现了个人信息维护、课件上传与下载、教学信息发布、作业发布、评阅作业等...

    国家标准软件开发文档模版

    国家标准软件开发文档模版 这个文档总体来说对新手还是相当不错的额,模板相当标准,很全面的文档,非常适合教学和实际开发使用 整个文件夹包含 操作手册(GB8567——88) 测试分析报告(GB8567——88) 测试计划...

    知识领域: 软件开发 数据结构与算法 网络编程 数据库管理 技术关键词: 编程语言: Python, Java, C++ Web

    与测试团队合作,确保软件质量和稳定性 项目经历: 在线商城网站开发 技术关键词: Python, Django, HTML/CSS, MySQL 内容关键词: 用户认证、购物车功能、订单管理、商品搜索和推荐 用途: 提供一个完整的电子商务...

    软件开发文档模板全套合集

    操作手册、测试分析报告(GB8567——88)、测试计划(GB8567——88)、概要设计说明书(GB8567——88)、开发进度月报(GB8567——88)、可行性研究报告(GB8567——88)、模块开发卷宗(GB8567——88)、软件需求...

    JSP数据库系统开发完全手册 源码

    本书以使用JSP开发数据库系统用到的实用技术为中心,全面、系统地介绍了JSP开发动态网站所必须掌握的技术、方法和过程。本书分3个部分,第l部分为JSP编程基础篇,主要介绍使用JSP开发数据库系统必须掌握的技术,这些...

    国家标准-软件开发规范体系模板

    操作手册编写规范.doc 测试分析报告编写规范.doc 测试计划文档编写规范....数据库设计说明书编写规范.doc 数据要求说明书编写规范.doc 详细设计说明书编写规范.doc 项目开发总结报告编写规范.doc 用户手册编写规范.doc

    16e数据库演示,用C语言开发数据库代码学习.docx

    此外,用户还可以通过该数据库将16e数据导出到其他应用程序中。导出的方式包括了复制、导出为CSV文件等多种方式,方便用户在其他应用程序中使用16e数据。 综上所述,该数据库的使用非常方便,可以帮助用户更好地...

    软件测试工程师考试大纲及历年真题

     (4)熟悉软件工程知识,理解软件开发方法及过程;  (5)熟悉软件质量及软件质量管理基础知识;  (6)熟悉软件测试标准;  (7)掌握软件测试技术及方法;  (8)掌握软件测试项目管理知识;  (9)...

    软件开发类投标项目全套解决方案模板

    3.4.6最近两年主要开发实施同类型企业相同或类似系统的开发案例 21 3.4.6.1案例合同首尾页 21 3.4.6.2 系统开发主界面截图 22 4 项目解决方案 26 4.1 项目解决方案内容 26 4.1.1 系统总体目标、设计架构、系统...

    软件测试技术课程设计

    1.测试的网站:〈〈ASP数据库系统开发实例〉〉中的〈〈在线图书销售系统〉〉。 2.测试的主要目标:得到此图书在线销售系统能够支持的最大客户端数 3.测试项:事务响应时间、最大/最小并发数、失败的次数、正常...

    计算机软件测试与开发编程实习报告30篇(附周记日志)word版本.rar

    计算机软件开发-实习报告-3000字 计算机软件实践报告-数据库-3000字 计算机网络管理实习报告 软件测试实习报告-2500字 软件测试实习报告-2700字 软件技术实习报告10篇 软件开发实习报告3篇 实习报告-2400字 实习手册...

    数据库课程设计 服装销售系统

    通过该题目的设计、开发,使学生初步得到数据库开发的训练,全面培养软件开发过程中的分析、设计、编码、测试及文档规范书写的能力,得到软件开发的综合训练,提高解决实际问题的能力。 二. 数据库课程设计的任务 1...

Global site tag (gtag.js) - Google Analytics