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

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

 
阅读更多

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

  关键词:数据库测试;性能测试;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、结束语

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

分享到:
评论

相关推荐

    数据库测试程序测试数据库

    数据库测试是软件开发过程中的重要环节,主要目的是确保数据库系统的正确性、稳定性和性能。数据库测试程序是为了验证数据库管理系统(DBMS)的功能、性能、安全性和兼容性而设计的。在本场景中,我们将深入探讨...

    WEB测试之数据库测试

    综上所述,数据库测试是一项非常细致且重要的工作,它不仅需要测试人员具备一定的专业知识和技术能力,还需要借助各种工具来提高测试效率和准确性。通过上述几个方面的测试,可以有效地确保数据库在软件系统中的稳定...

    数据库性能测试报告.doc

    在软件开发中,数据库性能测试是一项至关重要的环节,它旨在评估数据库系统的性能、稳定性和效率。数据库性能测试报告是这一过程的总结,提供了详细的测试过程、结果和结论,以便于团队理解系统的性能瓶颈并进行优化...

    测试项目在数据库单元测试中的应用

    在数据库测试中,单元测试的方法同样适用,它要求对数据库的需求覆盖进行保证,并通过特定的测试用例来验证数据库的设计和功能。 数据库单元测试涉及对存储过程、视图、触发器、约束和规则等数据库对象的需求验证,...

    数据库测试PPT教案.pptx

    数据库测试是软件开发过程中的重要环节,特别是在当前数据库在软件系统中的作用日益增强的情况下,确保数据库的正确性、稳定性和效率至关重要。本教程主要涵盖了数据库测试的分类、数据库完整性测试、功能测试以及...

    软件测试_银行软件测试职位简历参考.pdf

    银行软件测试职位需求软件测试工程师具备软件测试技术、编程语言、数据库管理、操作系统、软件测试工具、软件开发技术等技能和经验。同时,软件测试工程师需要具备软件测试项目管理、软件开发项目管理、软件测试工具...

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

    总体来说,该文档是一个专业的技术指导,对于从事测试软件开发的工程师而言,具有一定的参考价值,不仅涉及到了软件开发的基础知识,还涵盖了在LabWindows/CVI环境中利用ODBC和SQL技术进行数据库操作的高级应用。...

    数据库连接测试工具

    数据库连接测试工具是一种重要的软件应用,它主要用于验证和调试数据库系统的连接性。在开发或维护数据库驱动的应用程序时,确保数据库连接的稳定性和可靠性至关重要。本文将深入探讨这个工具的功能、工作原理以及...

    数据库设计--软件工程与数据库设计

    CASE(计算机辅助软件工程)工具和环境支持软件开发过程,包括数据库设计,通过自动化工具提高效率和质量,例如使用数据库建模工具帮助可视化和规范化数据关系,或使用版本控制工具管理数据库结构的变更。...

    数据库单元测试总结~~单元测试

    这种测试方法是软件开发中的重要环节,它可以帮助开发者确保数据库逻辑的正确性,减少集成测试阶段的问题,提高代码质量。 ### 什么是单元测试? 单元测试是一种软件开发中的测试方法,其目标是对程序中的最小可...

    分布式数据库性能测试过程中IOCP技术的应用实践探讨.pdf

    IOCP技术的引入为大规模通信系统中的数据库性能测试提供了强有力的技术支持。IOCP通过其线程池调度模型,可以有效地分配系统资源,提高数据库处理并发请求的能力。利用IOCP技术进行性能测试,能够在测试终端上展现出...

    全国计算机等级考试三级数据库技术.pdf

    * 软件工程与软件开发方法:瀑布模型、快速原型模型、螺旋模型等 * DBAS生命周期模型:项目规划、需求分析、系统设计、实现与部署、运行与维护 2. 规划与分析 规划与分析是三级数据库技术考试的重要知识点之一。该...

    软件开发课件(包括软件工程和数据库的一些考试题目)

    压缩包中的“软件开发技术基础”可能包含了这些基础知识的讲解,包括软件工程的基本原理和实践方法,以及数据库设计、SQL查询等技能的教程。对于初学者来说,这是一份非常有价值的资料,可以帮助他们系统地学习和...

    数据库技术在Web中的应用论文.docx

    网站的建设需要选择合适的开发平台、操作系统和数据库平台,并需要进行网站的测试和优化。 数据库技术在 Web 中的应用 数据库技术在 Web 中的应用非常广泛,例如在线购物网站、社交媒体网站、博客网站等。数据库...

    数据库开发教程 软件调试

    另一方面,《软件调试》PDF文件则会带你进入软件开发的另一重要方面: 1. **调试基础**:理解调试的必要性,学习基本的调试工具和技巧,如断点、单步执行、查看变量值等。 2. **错误类型**:区分运行时错误、编译...

    使用Loadrunner测试数据库性能

    ### 使用Loadrunner测试数据库性能详解 #### 一、概述 在IT行业中,数据库性能测试是一项重要的任务...随着技术的发展,未来可能会出现更多先进的性能测试技术和工具,但掌握基本原理和实践方法始终是解决问题的关键。

    软件工程国家标准之数据库设计说明书(GB8567-1988)

    《软件工程国家标准之数据库设计说明书(GB8567-1988)》是针对软件开发过程中的一个重要环节——数据库设计所制定的规范性文件。这份国家标准详细规定了在软件开发过程中,如何进行有效的数据库设计,以确保系统的...

    软件测试的技术学习路线图

    软件测试是软件开发过程中的一个重要环节,旨在确保软件产品的质量和可靠性。本文将从测试基础理论、数据库学习、Linux使用、接口测试和性能测试五个方面,对软件测试的技术学习路线图进行详细的介绍和分析。 测试...

Global site tag (gtag.js) - Google Analytics