数据库测试开发文档.docx
《数据库测试开发文档.docx》由会员分享,可在线阅读,更多相关《数据库测试开发文档.docx(17页珍藏版)》请在三一办公上搜索。
1、1数据库测试用例分析1.1用例和和测试用数据库配置情况介绍【用例1】模拟遥控和遥测数据同时存入数据库,遥测数据速率0.5KB/40ms、遥测数据速率120KB/40ms.【用例2】大数据插入、选择测试,模拟图片存入数据库的情形,单张图片最大达150M,事件性, 无周期性.【用例3】多客户端并发访问测试,模拟最多10个客户端并发访问测试.【测试用数据库配置情况】10.0.0.15avic6151scottAa111111111.2用例工程分析1.2.1用例工程介绍数据库用例采用asdp开发,基于SOA架构,工程目录结构如下图所示,工程database】、 database2、database3分
2、别实现上文提到的三个用例。工程database?对应为用例1的实现,相关代码在工程目录database?下可以找到,数 据库操作部分采用平台接口实现。设计时将遥控数据和遥测数据表简化为测试数据库中的表 tb4和tb5,表创建脚本如下。-遥控数据表tb4create table tb4(id Integer not null, value varchar(4000), primary key(id);-遥测数据表tb5create table tb5(id Integer not null, value varchar(4000), primary key(id);类的静态关系图如图1所示,Ac
3、tivator类是由SOA框架提供的接口类,WorkThread类 设计为实际完成数据库操作的工作类,dbXmlParse类是为了测试软件在多个数据库环境下测 试提供的配置文件db.xml文件的解析类。SOA框架通过调用Activator类的start函数启动我 们的测试用例app,在Activator类的start函数中通过调用dbXmlParse类的构造函数获得一 个局部实例dbXml,调用dbXml.Parse解析获得数据库配置信息,成功获取数据库配置信息 后,在堆上创建WorkThread类的实例t0和t1,在t0内部的定时器回调函数中向遥控数据 表tb4中插入模拟遥控数据,在t1内部
4、的定时器回调函数中向遥测数据表tb5中插入模拟 遥测数据,SOA框架通过调用Activator类的stop函数停止测试用例app。dbXmlParse+username : QString+password : QString+hostName : QString+dbName : QString+Parse() : boolWorkThread+username : QString +password : QString +hostName : QString +dbName : QString +tablename : QString +begin()t0 : WorkThreaduser
5、name : QString = scottpassword : QString = Aa11111111hostName : QString = 10.0.0.15dbName : QString = avic6151tablename : QString = tb4t1 : WorkThreadusername : QString = scottpassword : QString = Aa11111111hostName : QString = 10.0.0.15dbName : QString = avic6151tablename : QString = tb5图1database2
6、类静态关系图WorkThread类的状态图如图3所示,在Activator类的start类中创建实例instance之后, 设置完需要的属性,调用实例的instance.begin函数,实例开始进入正常的工作状态。每个 WorkThread类的实例内部拥有一个40ms的Q.T定时器,定时器事件触发调用instance.timeout 函数,在instance函数内执行数据插入操作。图2WorkThread类状态图.2.2.1 WorkThread:timeoutvoid WorkThread:timeout()QMutexLocker locker(&m_mutex);safe_flag =
7、false;QString value(per_size,A);for(int i=0;itablename+ values( + QString:number(index) + ,+ value+);if(!conn-Exec(sql)QString error = error: +sql;Log(error);elseQString ok=ok: +QString:number(index);recordCounts+;Log(ok);index+;QString speed=40 ms insert Bytes: +QString:number(per_size*repeat_time+
8、4);Log(speed);conn-Exec(commit);safe_flag =true;工程databasel对应为用例2的实现,相关代码在工程目录databasel下可以找到,数 据库部分采用QT原生接口实现。大数据插入、选择测试数据表tbbig,脚本如下。create table tbbig (id Integer not null, picture_size Integer not null, picture blob, primary key(id) );类的静态关系图如图3所示,BigDataDialog设计与操作人员交互的界面类, BigDataDialog类包含了一个Db
9、Process类实例db,实例db负责操纵数据库表单tbbig. BigDataDialog类对应的交互界面如图4所示。连接数据库操作:鼠标点击connet按钮, 函数调用关系,BigDataDialog:: connet()-db.conncet();向数据库中插入一条记录:设定 插入记录的大小(M),点击trigger insert按钮,函数调用关系,BigDataDialog:: insert()-db.insert_process();从数据库选择一条记录:设定要选择记录的id,点击select 按钮,记录存放在目录SELECT_*.dat(*从1开始增加),函数调用关系,BigDat
10、aDialog:: select()-db.select_process();dbXmlParse+username : QString +password : QString +hostName : QString +dbName : QString 十Parse()BigDataDialog+hostName : QString+dbName : QString+userName : QString+password : QStringDbProcess+connect()+insert_process()+select_process()+picture_size_changed()11
11、+insert()+select()+sizeChanged(in size : int)+IdChanged(in id : QString)+connect()图3 database1类静态关系图图4BigDataDialog对话框和信号槽关系图1.2.3.1 DbProcess:connectbool DbProcess:connect(QString userName,QString passWord,QString hostName,QString dataBaseName,QString type) (QSqlDatabase db = QSqlDatabase:addDataba
12、se(type,connect_name);db.setHostName(hostName);db. setDatabaseName(dataBaseName);db.setUserName(userName);db.setPassword(passWord);if(!db.open()(QMessageBox:critical(0,QObject:tKDatabase Error),db.lastError().text();return false;QSqlQuery query(db);if(!query.exec(delete from tbbig)QString str = quer
13、y. lastError().text().toLocal8Bit().data();qDebug()str;LogNormal()str;elseLogNormal() delete from tbbig success;query.exec(commit);return true;1.2.3.2 DbProcess:insert_processvoid DbProcess:insert_process()(qDebug()insert.n;LogNormal() INSERT EVENT.;QString str;str=INSERT INTO TBBIG VALUES(id,pictur
14、e_size,picture) + id = +QString: number(index+1)+ - picture_size = +QString:number(picture_size)+ - value = 0xaa;LogNormal()str;QSqlDatabase db = QSqlDatabase:database(connect_name);QSqlQuery query(db);query.prepare(insert into tbbig values(?,?,?);query.addBindValue(+index);QByteArray value(picture_
15、size,0xaa);query.addBindValue(value. size();QVariant tmp(value);query.addBindValue(tmp);if(!query.exec() (QString str = query. lastError (). text(). toLocal8Bit(). data();qDebug()str;LogNormal()str;LogNormal() INSERT EVENT FAIL;else (qDebug()Insert success;LogNormal() INSERT EVENT SUCCESS.;query.exe
16、c(commit);1.2.3.2 DbProcess:select_processvoid DbProcess:select_process()(qDebug()select.n;LogNormal() SELECT EVENT.;QString str=SELECT * FROM TBBIG WHERE ID =+QString:number(select_index)+”;LogNormal()str;QSqlDatabase db = QSqlDatabase:database(connect_name);QSqlQuery query(db);QString sql=SELECT *
17、 FROM tbbig where id = +QString:number(select_index);if(!query.exec(sql)(QString str = query. lastError (). text(). toLocal8Bit(). data();qDebug()str;LogNormal()str;LogNormal() SELECT EVENT FAIL;else(while(query.next()(if (query.isNull(0) = false)(qDebug()id:query.value(0).toInt()n;LogNormal()id = q
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 测试 开发 文档
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-5306330.html