刘寿亮9数据库课程分析方案Word下载.docx
- 文档编号:21499311
- 上传时间:2023-01-30
- 格式:DOCX
- 页数:11
- 大小:469.29KB
刘寿亮9数据库课程分析方案Word下载.docx
《刘寿亮9数据库课程分析方案Word下载.docx》由会员分享,可在线阅读,更多相关《刘寿亮9数据库课程分析方案Word下载.docx(11页珍藏版)》请在冰豆网上搜索。
1.2数据库测试的分类:
1.3数据库性能测试工具:
5
2.使用loadrunner测试数据库性能6
2.1数据库选择6
2.2测试内容简介7
2.3测试过程7
2.3.1roadrunner测试软件重要模块介绍7
2.3.2测试详情设计7
2.3.4具体测试步骤7
结论13
参考文献13
1.数据库测试的相关知识介绍
随着软件业的迅猛发展,我们的开发也从以前的单层结构进入了三层架构甚至现在多层架构的设计,而数据库从以前一个默默无闻的后台仓库,逐渐成为了数据库系统,而数据库开发设计人员成为了炙手可热的核心人员。
以前我们往往把数据库操作写在应用层,从而提高各个模块的独立性和易用性,而现在越来越多的数据库操作被作为存储过程直接放在数据库上进行执行来提高执行效率和提高安全性。
随着数据库的重要性增加,我们对与数据库的认识不应局限在只是用来存放数据的工具。
而是应该把它作为系统开发的核心。
对于数据库的安全性和稳定性的重要性要有充分的认识,因而对于数据库的测试就应该成为和程序代码测试一样重要的测试环节。
(1)系统测试:
传统软件系统测试的测试重点是需求覆盖,然而对于我们的数据库测试同样
需要对需求覆盖进行保证。
那么数据库在初期设计中也需要对这个进行分析,测试.例如存储过程,视图,触发器,约束,规则等我们都需要进行需求的验证确保这些功能设计是符合需求的.另一方面我们需要确认数据库设计文档和最终的数据库相同,当设计文档变化时我们同样要验证改修改是否落实到数据库上。
(2)集成测试:
集成测试是主要针对接口进行的测试工作,从数据库的角度来说和普通测试稍微有些区别对于数据库测试来说,需要考虑的是:
数据项的修改操作数据项的增加操作、数据项的删除操作、数据表增加满、数据表删除空、删除空表中的记录、数据表的并发操作、针对存储过程的接口测试、结合业务逻辑做关联表的接口测试,同样我们需要对这些接口考虑采用等价类、边界值、错误猜测等方法进行测试。
(3)单元测试:
单元测试侧重于逻辑覆盖,相对对于复杂的代码来说,数据库开发的单元测试相对简单些,可以通过语句覆盖和走读的方式完成系统测试相对来说比较困难,这要求有很高的数据库设计能力和丰富的数据库测试经验。
而集成测试和单元测试就相对简单了。
而我们也可以从测试关注点的角度对数据库进行分类。
(4)功能测试:
对数据库功能的测试我们可以依赖与工具进行。
DBunit:
一款开源的数据库功能测试框架,可以使用类似与Junit的方式对数据库的基本操作进行白盒的单元测试,对输入输出进行校验。
QTP:
大名鼎鼎的自动测试工具,通过对对象的捕捉识别,我们可以通过QTP来模拟用户的操作流程,通过其中的校验方法或者结合数据库后台的监控对整个数据库中的数据进行测试。
个人觉得比较偏向灰盒。
DataFactory:
一款优秀的数据库数据自动生成工具,通过它你可以轻松的生成任意结构数据库,对数据库进行填充,帮助你生成所需要的大量数据从而验证我们数据库中的功能是否正确。
这是属于黑盒测试数据库性能。
虽然我们的硬件最近几年进步很快,但是我们需要处理的数据以更快的速度在增加。
几亿条记录的表格在现在是司空见惯的,如此庞大的数据量在大量并发连接操作时,我们不能像以前一样随意的使用查询,连接查询,嵌套查询,视图,这些操作如果不当会给系统带来非常巨大的压力,严重影响系统性能。
(5)安全测试:
软件日益复杂,而数据又成为了系统中重中之重的核心,从以往对系统的破坏现在更倾向于对数据的获取和破坏。
而数据库的安全被提到了最前端自从SQL注入攻击被发现,冒失万无一失的数据库一下从后台变为了前台,而一旦数据库被攻破,整个系统也会暴露在黑客的手下,通过数据库强大的存储过程,黑客可以轻松的获得整个系统的权限。
而SQL的注入看似简单缺很难防范,对于安全测试来说,如何防范系统被注入是测试的难点。
业界也有相关的数据库注入检测工具,来帮助用户对自身系统进行安全检测。
对于这点来说业界也有标准,例如ISOIEC21827,也叫做SSECMM3.0,是CMM和ISO的集成的产物,专门针对系统安全领域的另外一方面,数据库的健壮性,容错性和恢复能力也是我们测试的要点我们也可以发现功能测试,性能测试,安全测试,是一个由简到繁的过程,也是数据库测试人员需要逐步掌握的技能,这也是以后公司对数据库测试人员的要求。
<
6)性能测试
几亿条记录的表格在现在是司空见惯的,如此庞大的数据量在大量并发连接操作时,我们不能像以前一样随意的使用查询,连接查询,嵌套查询,视图,这些操作如果不当会给系统带来非常巨大的压力,严重影响系统性能
数据库测试的目的是在测试工作中经常需要对数据库进行性能测试,以对数据库进行调优,保证数据库的稳定和高效。
数据库测试需要特殊的测试软件,目前流行的三种测试软件是loadrunner,java和Benchmark。
他们各有各的优缺点,各有各的适合场合下面就通过介绍这三种软件,让我们对于数据库测试工具有一个具体的了解:
(1)Loadrunner
LoadRunner,是一种预测系统行为和性能的负载测试工具。
通过以模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题,LoadRunner能够对整个企业架构进行测试。
通过使用LoadRunner,企业能最大限度地缩短测试时间,优化性能和加速应用系统的发布周期。
LoadRunner是一种适用于各种体系架构的自动负载测试工具,它能预测系统行为并优化系统性能。
LoadRunner的测试对象是整个企业的系统,它通过模拟实际用户的操作行为和实行实时性能监测,来帮助您更快的查找和发现问题。
此外,LoadRunner能支持广泛的协议和技术,为您的特殊环境提供特殊的解决方案。
(2)BenchmarkFactory
BenchmarkFactory是一种高扩展性的强化测试、容量规划和性能优化工具,可以模拟数千个用户访问应用系统中的数据库、文件、Internet及消息服务器,从而更加方便地确定系统容量,找出系统瓶颈,隔离出用户的分布式计算环境中与系统强度有关的问题。
无论是服务器,还是服务器集群,BenchmarkFactory都是一种成熟、可靠、高扩展性和易于使用的测试工具。
很多产品测试特别是Web服务程序都会使用的测试软件,主要用于测试Web页面性能及稳定性。
BenchmarkFactory通过记录和回放多用户测试中的事务处理过程,使IT专业人员能够更加方便地完成这一任务。
BenchmarkFactory可实现横向(BenchmarkFactory的主用户界面,VisualControlCenter,可支持数百个工作站运行其代理软件>
和纵向(每个代理可以模拟数百或数千个用户>
扩展。
BenchmarkFactory可以测试服务器集群的性能。
硬件厂商以使用BenchmarkFactory及时实现故障恢复。
类似地,软件厂商使用BenchmarkFactory,可以优化其服务器软件,而最终用户可以利用BenchmarkFactory确定其服务器集群的硬件需求。
3)
java
JAVA应用是需要自己对编码和数据库操作都比较熟悉的情况下才选择的方案,当然也可以用c和其他的开发工具,关键是能够按照自己的意愿实施性能测试。
对于初中级测试人员来说,将是个很大的挑战。
所以这里就不多做介绍了。
2.使用loadrunner测试数据库性能
在选择何种测试工具测试数据时,我比较倾向于Benchmarkfactory因为相对应其他两种工具,Benchmarkfactory更为简单易操作,比较适合初学者,然而由于Benchmarkfactory软件需要购买注册,所以实现较为困难。
因而我选用了较为复杂并且开源的roadrunner进行数据库测试。
2.1数据库选择
由于我现在正在进行校园弱电管道系统的开发,这个工程所用的数据库为oracle数据库。
因而我选择oracale数据库进行测试。
下面对其进行基本介绍:
oracle数据库是一种大型数据库系统,一般应用于商业,政府部门,它的功能很强大,能够处理大批量的数据,在网络方面也用的非常多。
不过,一般的中小型企业都比较喜欢用SQL数据库系统,它的操作很简单,功能也非常齐全。
只是比较oracle数据库而言,在处理大量数据方面有些不如。
OracleServer是一个对象一关系数据库管理系统。
它提供开放的、全面的、和集成的信息管理方法。
每个Server由一个OracleDB和一个OracleServer实例组成。
它具有场地自治性<
SiteAutonomy)和提供数据存储透明机制,以此可实现数据存储透明性。
每个Oracle数据库对应唯一的一个实例名SID,Oracle数据库服务器启动后,一般至少有以下几个用户:
Internal,它不是一个真实的用户名,而是具有SYSDBA优先级的Sys用户的别名,它由DBA用户使用来完成数据库的管理任务,包括启动和关闭数据库;
Sys,它是一个DBA用户名,具有最大的数据库操作权限;
System,它也是一个DBA用户名,权限仅次于Sys用户。
2.2测试内容简介
数据库性能的测试分为很多内容如对于数据库的健壮性、容错性和恢复能力等方面性能的测试。
本文主要介绍的是对数据库进行压力测试即:
我们利用roadrunner测试软件中的VirtualUserGenerator的功能模块模拟出大量的虚拟用户并通过事先定义的脚本对数据库进行访问。
由于脚本已经定义好了数据库将要进行的动作我们只需要等待测试结果。
通过这样的过程我们便可以得到数据库在成百上千的用户同时进行访且进行不同动作时的性能即数据库的抗压性。
2.3测试过程
2.3.1roadrunner测试软件重要模块介绍:
LoadRunner包含下列组件:
1)虚拟用户生成器:
用于捕获最终用户业务流程和创建自动性能测试脚本<
也称为虚拟用户脚本)。
2)Controller:
用于组织、驱动、管理和监控负载测试。
3)负载生成器:
用于通过运行虚拟用户生成负载。
4)Analysis:
有助于您查看、分析和比较性能结果。
5)Launcher:
为访问所有LoadRunner组件的统一界面。
在了解roadrunner这几个组件的前提下我们开始讨论如何进行数据库测试。
2.3.2测试详情设计
对于数据库压力测试的详细过程如下图所示:
计划负载测试:
定义性能测试要求,例如并发用户的数量、典型业务流程和所需响应时间。
创建Vuser脚本:
将最终用户活动捕获到自动脚本中。
定义场景:
使用LoadRunnerController设置负载测试环境。
运行场景:
通过LoadRunnerController驱动、管理和监控负载测试。
分析结果:
使用LoadRunnerAnalysis创建图和报告并评估性能。
2.3.4具体测试步骤:
根据上述的测试详细过程我们制订了详细的测试步奏如下:
第一步:
我们首先制定了负载测试的具体实例即:
评估弱电管道管理系统的核心业务逻辑<
数据查询、数据复用、抽取同步整合)在不同压力下的性能表现,判断系统瓶颈,得到最优系统配置参数和建议,并为数据库的试运行工作提供可靠的性能可行性依据;
制定数据查询性能指标为:
900个用户并发,平均响应时间在3秒以内。
第二步:
根据上述的测试计划,我们开始了创建Vuser脚本的过程。
此过程有两种方法,第一种是自己写出测试脚本,第二种是利用roadrunner软件中的VirtualUserGenerator模块录制脚本。
由于我们都为初学者对于脚本的编写没有基础,因而我们选择了第二种方法录制脚本,我们录制的脚本如下:
include"
lrd.h"
Action(>
{
staticLRD_INIT_INFOInitInfo={LRD_INIT_INFO_EYECAT}。
staticLRD_DEFAULT_DB_VERSIONDBTypeVersion[]=
{LRD_DBTYPE_NONE,LRD_DBVERSION_NONE}
}。
staticvoidFAR*
OraEnv1。
OraSvc1。
OraSrv1。
OraSes1。
OraStm1。
unsignedlong
rownum。
lrd_init(&
InitInfo,DBTypeVersion>
。
lrd_initialize_db(LRD_DBTYPE_ORACLE,3,0>
lrd_env_init(LRD_DBTYPE_ORACLE,&
OraEnv1,0,0>
lrd_ora8_handle_alloc(OraEnv1,SVCCTX,&
OraSvc1,0>
lrd_ora8_handle_alloc(OraEnv1,SERVER,&
OraSrv1,0>
lrd_ora8_handle_alloc(OraEnv1,SESSION,&
OraSes1,0>
//连接数据库
lrd_server_attach(OraSrv1,"
vmvare_192.168.1.47"
-1,0,0>
lrd_ora8_attr_set_from_handle(OraSvc1,SERVER,OraSrv1,0,0>
//设定数据库密码
lrd_ora8_attr_set(OraSes1,USERNAME,"
username"
-1,0>
lrd_ora8_attr_set(OraSes1,PASSWORD,"
password"
//初始化连接session
lrd_ora8_attr_set_from_handle(OraSvc1,SESSION,OraSes1,0,0>
//开始连接数据库
lrd_session_begin(OraSvc1,OraSes1,1,0,0>
lrd_ora8_handle_alloc(OraEnv1,STMT,&
OraStm1,0>
//设定查询语句
lrd_ora8_stmt(OraStm1,"
SELECT*FROMT_TASK_ALARM_TYPEWHERETYPE_CODE=7"
1,0,0>
//执行查询语句
lrd_ora8_exec(OraSvc1,OraStm1,0,0,&
rownum,0,0,0,0,1>
//释放连接数据库的各种变量
lrd_handle_free(&
lrd_session_end(OraSvc1,OraSes1,0,0>
lrd_server_detach(OraSrv1,0,0>
OraEnv1,0>
//lrd_end(0>
return0。
}
录制过程如下图所示:
图1
上面的LoadRunner脚本在VirtualUserGenerator调试通过后,即可执行下一步:
第三步:
打开LoadRunner软件中的Controller选项进行场景定义,如下图所示:
图2
选择“手动场景”。
通过手动场景,可以控制正在运行的Vuser数量及其运行的时间,还可以测试应用程序可以同时运行的Vuser数。
您可以使用百分比模式根据业务分析员指定的百分比在脚本间分配全部的Vuser。
面向目标的场景用于确定系统是否可以达到特定的目标。
由您确定基于的目标,例如,指定的事务响应时间或每秒点击次数/事务数,并且LoadRunner将根据这些目标自动为您创建场景。
所以根据我们制定的负载测试的计划设置Vuser数量为900,用900个模拟用户并发测试。
第四步:
Controller窗口中的“运行”选项卡是用来管理和监控测试的控制中心。
如下图3所示,含五个主要部分:
场景组、场景状态、可用图树、图查看区域、图例。
通过以上的几个功能模块即可得到测试的结果。
图3
第五步:
打开LadRunner软件中的Analysis模块进行结果的分析,
下图为Analysis窗口:
Analysis窗口有以下几个组成部分:
图树:
在左窗格中,Analysis将显示可以打开查看的图。
您可以在此处显示打开Analysis时未显示的新图,或删除您不再想查看的图。
图查看区域:
Analysis在此右窗格中显示图。
默认情况下,当打开一个会话时,Analysis概要报告将显示在此区域。
图例:
位于底部窗格中,使您可以查看选定图中的数据。
请在图查看区域查看Analysis概要报告。
通过上述的几个模块即可实现对于测试结果的分析。
最后通过这一系列的步骤,我们就会得到最终的测试结果。
结论
通过本次大作业的准备与撰写,我了解了数据库测试的一些基本原理与知识。
掌握了使用LoadRunner测试软件进行数据库测试的基本流程即:
先做好负载计划接着创建脚本再定义运行环境最后做好结果的分析。
通过对于上述知识的学习我意识到了数据库测试的重要性。
这对于我以后的学习有了一个很大的指导意义,在以后的软件开发过程中,一定会重视数据库的设计与优化。
参考文献
[1]白小波面向海量数据库的Benchmark研究与实现硕士论文国防科技大学2005
[2]巩文化,毕学军,刘娟基于数据库的快速测试数据生成方法研究ComputerKnowledgeandTechnologyvol.6,No4,Febrary2018,pp.775-777
[3]郭改霞,张斌斌数据库开发不同阶段测试技术研究信息技术2018
[4]曾明,洪玫,王卓,尹洪,冷江数据库系统测试中测试用例的自动规范方法计算机工程与设计30<
15)2009
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 刘寿亮 数据库 课程 分析 方案
![提示](https://static.bdocx.com/images/bang_tan.gif)