A. 数据库测试的具体测试方法
1. 分别测试记录的新增、修改、删除等操作,以验证前台与后台数据的一致性为主。
2. 测试记录的查找功能,检查返回的数据是否正确,并测试相关功能。
3. 测试数据的不同显示方式。
4. 测试有效和无效数据对数据库的影响。完成标准:???? ??所有的数据库访问方法和进程都按照设计的方式运行,数据没有遭到损坏。
B. 数据库如何做测试
查询输入:
(1)分别对单条件进行精确查询
(2)输入长度的检验,输入允许的最长值进行查询,是否支持
(3)两个查询条件是否为2选1,来回选择是否出现页面错误
(4)输入字符
(5)输入特殊字符
(6)输入数字
(7)输入汉字
(8)输入关系表达式与、或、异或、非、等于
(9)输入空格
(10)条件中含有空格
(11)输入超长字符
(12)输入全角字符
(13)输入单引号
(14)输入单引号引起来的数据
(15)输入双引号
(16)输入双引号引起来的数据
(17)如果支持模糊查询,输入部分查询条件
(18)输入系统中不存在与之匹配的条件
查询结果检查
(1)查询结果按什么顺利排序
(2)查询结果是否根据字段显示排序功能
(3)查询结果是否有分页,如果有,每页最多包含多少记录
(4)查询结果是否匹配
(5)查询结果是否与数据库一致
(6)查询结果是精确查询还是模糊查询
UI验证
(1)文字显示是否正确
(2)页面是否有错别字
(3)输入框大小、文字大小是否合适
(4)页面是否美观
(5)查询结果字段显示是否与需求一致
性能方面
(1)查询处理时间是否能接受
(2)数据库中存在大数据量数据时,查询时间是否能接受
(3)当多个用户同时查询时,输入相同或不同的查询条件系统响应是否及时...
C. 数据库中视图怎么进行软件测试
从测试过程的角度来说我们也可以把数据库测试分为:
系统测试
传统软件系统测试的测试重点是需求覆盖,而对于我们的数据库测试同样也需要对需求覆盖进行保证。那么数据库在初期设计中也需要对这个进行分析,测试。例如存储过程,视图,触发器,约束,规则等我们都需要进行需求的验证确保这些功能设计是符合需求的.另一方面我们需要确认数据库设计文档和最终的数据库相同,当设计文档变化时我们同样要验证改修改是否落实到数据库上。
这个阶段我们的测试主要通过数据库设计评审来实现。
集成测试
集成测试是主要针对接口进行的测试工作,从数据库的角度来说和普通测试稍微有些区别对于数据库测试来说,需要考虑的是数据项的修改操作、数据项的增加操作、数据项的删除操作、数据表增加满、数据表删除空、删除空表中的记录、数据表的并发操作、针对存储过程的接口测试、结合业务逻辑做关联表的接口测试。
同样我们需要对这些接口考虑采用等价类、边界值、错误猜测等方法进行测试。
单元测试
单元测试侧重于逻辑覆盖,相对对于复杂的代码来说,数据库开发的单元测试相对简单些,可以通过语句覆盖和走读的方式完成。
系统测试相对来说比较困难,这要求有很高的数据库设计能力和丰富的数据库测试经验。而集成测试和单元测试就相对简单了。
而我们也可以从测试关注点的角度对数据库进行分类:
功能测试
对数据库功能的测试我们可以依赖与工具进行:
DBunit:一款开源的数据库功能测试框架,可以使用类似与Junit的方式对数据库的基本操作进行白盒的单元测试,对输入输出进行校验。
QTP:大名鼎鼎的自动测试工具,通过对对象的捕捉识别,我们可以通过QTP来模拟用户的操作流程,通过其中的校验方法或者结合数据库后台的监控对整个数据库中的数据进行测试。个人觉得比较偏向灰盒。
DataFactory:一款优秀的数据库数据自动生成工具,通过它你可以轻松的生成任意结构数据库,对数据库进行填充,帮助你生成所需要的大量数据从而验证我们数据库中的功能是否正确。这是属于黑盒测试。
数据库性能虽然我们的硬件最近几年进步很快,但是我们需要处理的数据以更快的速度在增加。几亿条记录的表格在现在是司空见惯的,如此庞大的数据量在大量并发连接操作时,我们不能像以前一样随意的使用查询,连接查询,嵌套查询,视图,这些操作如果不当会给系统带来非常巨大的压力,严重影响系统性能。
性能优化分4部分:
1、物理存储方面
2、逻辑设计方面
3、数据库的参数调整
4、SQL语句优化
性能测试:
我们如何对性能方面进行测试呢,业界也提供了很多工具通过数据库系统的SQL语句分析工具,我们可以分析得到数据库语句执行的瓶颈,从而优化SQL语句。
Loadrunner:这个不用多说,我们可以通过对协议的编程来对数据库做压力测试。
Swingbench:(这是一个重量级别的feature,类似LR,而且非常强大,只不过专门针对oracle而已)数据库厂商也意识到这点,例如oracle11g已经提供了real applicationtest,提供数据库性能测试,分析系统的应用瓶颈。
还有很多第三方公司开发了SQL语句优化工具来帮助你自动的进行语句优化工作从而提高执行效率。
安全测试:
软件日益复杂,而数据又成为了系统中重中之重的核心,从以往对系统的破坏现在更倾向于对数据的获取和破坏。而数据库的安全被提到了最前端自从SQL 注入攻击被发现,冒失万无一失的数据库一下从后台变为了前台,而一旦数据库被攻破,整个系统也会暴露在黑客的手下,通过数据库强大的存储过程,黑客可以轻松的获得整个系统的权限。而SQL的注入看似简单缺很难防范,对于安全测试来说,如何防范系统被注入是测试的难点。
业界也有相关的数据库注入检测工具,来帮助用户对自身系统进行安全检测。
对于这点来说业界也有标准,例如ISO IEC 21827,也叫做SSE CMM 3.0,是CMM和ISO的集成的产物,专门针对系统安全领域的另外一方面,数据库的健壮性,容错性和恢复能力也是我们测试的要点
我们也可以发现功能测试,性能测试,安全测试,是一个由简到繁的过程,也是数据库测试人员需要逐步掌握的技能,这也是以后公司对数据库测试人员的要求。
D. 数据库测试主要测试什么内容
1、数据库的基本概念,数据库系统的构成。
2、数据模型概念和主要的数据模型5.软件调试,测试方法、技术和用例。
6.软件质量控制,软件文档。
7.软件
E. 数据库知识在软件测试过程中有哪些方面作用
回答这个问题我想可能得考虑多个方面
数据库本身作用是什么?我想,简单的说就是:存储、管理数据,为前台程序提供支持。
测试掌握数据库可以:
1、方便使用测试管理软件,因为管理软件是要以数据做支撑的,必然有自己的数据库,你要懂基本的维护、简单的备份还原操作,同时,最好能简单了解数据调用。
2、软件测试工作本身,是做什么?测试软件对吧?那在你测试软件的时候,绝大多数的软件都是有其数据库的,光是在前台点点、操作一下,那是最最基础的软件测试;深入点测试,你必须把前台操作和后台数据库数据变动关联起来考虑,这样才能做到功能测试的全面性要求。
3、软件测试种类有哪些?
功能、性能、压力、验收等等
在做性能、压力测试时,必须对数据库性能分析等有较为深入的了解;
在做验收测试时,必须会搭建用户环境、恢复备份数据库。
白盒、灰盒、黑盒测试
白盒即知晓所有代码路径,这时,对数据库相关语句必须非常了解,才能写出有效测试用例并执行。当然,一般公司白盒测试都是程序员自己完成了。
自动化测试、手工测试
自动化测试时,你必须编写测试脚本,使用测试工具,而脚本、工具都和数据库息息相关
4、测试支撑,测试工程师必须要学会测试环境的搭建,而环境中一般都包含数据库;
5、其他,为了自己的职业发展,更要多了解、深入学习数据库知识!!!
总之,数据库对测试,很重要!
F. 软件开发数据库如何进行测试
比如:数据冗余,功能和性能方面存在的问题已经严重影响应用软件的使用。软件测试人员往往重视对软件功能和编码的测试,而忽略对软件性能,特别是数据库访问并发测试。因为,他们固有的思想中认为数据库设计存在问题对系统性能影响不大,或从根本上忽略了数据库在软件开发中的地位,直到出现了问题,才想到对数据库的测试,但往往也是仅仅通过对编码的测试工作中捎带对数据库进行一定的测试,这远远是不够的。目前,中铁网上订票系统在大用户同时在线订票中系统频频瘫痪,就是最好的佐证。 所以,在应用软件的测试工作中,应该将数据库作为一个独立的部分进行充分的测试,这样才可以得到应用软件所需要的性能优化的数据库。那么,应该对哪些内容进行测试,如何进行测试呢? 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、结束语 总之,在应用系统的测试中,把数据库应当作为独立的系统来测试,这无疑会为应用软件的质量增加可靠的保障,同时还必须结合应用软件进行集成测试,只有二者有机结合起来,才能最大限度的发挥数据库和应用软件的功能。
G. 在测试验证数据库加固检查中,哪个内容是所有数据库检查中包含的
1. 修改sys, system的口令。
2. Lock,修改,删除默认用户: dbsnmp,ctxsys等。
3. 把REMOTE_OS_AUTHENT改成False,防止远程机器直接登陆。
4. 把O7_DICTIONARY_ACCESSIBILITY改成False。
5. 把一些权限从PUBLIC Role取消掉。
6. 检查数据库的数据文件的安全性。不要设置成666之类的。检查其他dba 用户。
7. 把一些不需要的服务(比如ftp, nfs等关闭掉)
8. 限制数据库主机上面的用户数量。
9. 定期检查Metalink/OTN上面的security Alert。比如:http://otn.oracle.com/deploy/security/alerts.htm
10. 把你的数据库与应用放在一个单独的子网中,要不然你的用户密码很容易被sniffer去。或者采用advance security,对用户登录加密。
11. 限止只有某些ip才能访问你的数据库。
12. lsnrctl 要加密码,要不然别人很容易从外面关掉你的listener。
13. 如果可能,不要使用默认1521端口
H. 如何测试数据库的安全
什么意思?
是什么数据库,SQL ACCESS 或其他 什么的 ,虽然数据库本身可设置密码。但现在都有破解软件能破解的。
所以,最好的方法就是,在对数据库进行写入时,把原数据加密后的数据写到数据库。调用时,先读取出来,然后解密读取的数据,在调用。
比如,我往数据库存放数据“abc”,我自己定义了,用 y代表a h代表b n代表c 那么加密“abc”后就是“yhn”,把“yhn”存入数据库中。这样别人就算查看了 数据库的内容 看到是“yhn”,不能知道原来的数据是什么。你调用数据时,取出数据库的进行解密为“abc”就行了。
------------------------------------------------------------------------------------------------------------------
详细,可追问
I. 数据库安全的防护手段
Xsecure产品系列实现对数据库的全方位防护 ,需要覆盖数据库的事前、事中、事后安全;覆盖数据库应用安全、维护安全、使用安全和存储安全;是最全面的数据库防泄露产品。 数据库漏洞扫描系统Xsecure-DBScan ,是一款帮助用户对当前的数据库系统进行自动化安全评估的专业软件,能有效暴露当前数据库系统的安全问题,提供对数据库的安全状况进行持续化监控,帮助用户保持数据库的安全健康状态。
发现外部黑客攻击漏洞,防止外部攻击:实现非授权的从外到内的检测;模拟黑客使用的漏洞发现技术,在没有授权的情况下,对目标数据库的安全性作深入的探测分析;收集外部人员可以利用的数据库漏洞的详细信息。分析内部不安全配置,防止越权访问:通过只读账户,实现由内到外的检测;提供现有数据的漏洞透视图和数据库配置安全评估;避免内外部的非授权访问。
监控数据库安全状况,防止数据库安全状况恶化:对于数据库建立安全基线,对数据库进行定期扫描,对所有安全状况发生的变化进行报告和分析。 操作系统中的对象一般情况下是文件,而数据库支持的应用要求更为精细。通常比较完整的数据库对数据安全性采取以下措施:
(1)将数据库中需要保护的部分与其他部分相隔。
(2)采用授权规则,如账户、口令和权限控制等访问控制方法。
(3)对数据进行加密后存储于数据库。 由数据库管理系统提供一套方法,可及时发现故障和修复故障,从而防止数据被破坏。数据库系统能尽快恢复数据库系统运行时出现的故障,可能是物理上或是逻辑上的错误。比如对系统的误操作造成的数据错误等。
J. 数据库安全加固的产品
应用背景及存在问题
我国已有的安全建设重要围绕着网络防护、主机访问和应用层安全防护以及服务器层安全防护进行,但对真正核心的数据存储管理的核心数据库并没有采取有效的防护措施。网络层安全防护的主要产品有:防火墙、网路隔离设备、入侵检测、防病毒等;应用层安全防护的主要产品有:安全认证、统一授权等;服务器层安全防护的主要产品有:服务器防护、防病毒、入侵检测、主机审计等;数据层安全防护的主要产品有:数据库安全增强、数据库审计、文档防护等,数据层安全防护是存放于服务器内的数据本身的最后一道安全防护屏障,如果网络层、应用层和服务器层的安全防护被攻破,只要数据层安全防护有效,就不致予泄露敏感数据。可见数据层安全防护的重要性。
世界最大职业中介网站Monster遭到黑客大规模攻击,黑客窃取在网站注册的数百万求职者个人信息,并进行勒索;程序员程稚瀚四次侵入北京移动充值中心数据库,盗取充值卡密码,获利300 多万元。2003 年广东联通7 名人员,利用内部工号和密码,对欠费停机手机进行充值,使联通损失260 万元。2005 年12 月25 日,美国银行披露,2004 年12 月下旬,丢失了包括1200 万信用卡信息的磁带备份. ---Gartner Research;CSI/FBI 2005 年计算机犯罪和和安全会的相关报告中提到70%的信息系统数据丢失和遭受攻击,都来自于内部。
当前主流Oracle安全增强方案包括前置代理、应用加密和Oracle自带加密选件DTE等。前置代理需要应用大幅改造、大量Oracle核心特性无法使用;应用加密必须由应用实现数据加密,加密数据无法检索,已有系统无法透明移植;DTE不能集成国产加密算法,不符合国家密码政策。因此这几种方案一直未能得到有效推广。