www.51testing.com《51测试天地》第九期1《51测试天地》电子杂志第九期:2008年4月专业软件测试刊物软件测试人士的好帮手软件测试爱好者的大舞台主办单位:上海博为峰软件技术有限公司出版单位:《51测试天地》编辑部主编:吴晓红地址:上海市乐山路33号1号楼600室副主编:张晓晓邮编:200030编委:吴晓红、陈文广、周春江电话:021-64471599编辑:杨琴、蒋玉鹂、沈渊传真:021-64471599-8021本期责任编辑:杨琴主页:www.51testing.com投稿:webmaster@51testing.comwww.51testing.com《51测试天地》第九期2目录《51测试天地》电子杂志................................................................................1目录...................................................................................................................2刊首语..................................................................................................................3数据库性能测试方法讨论......................................................................................4用户体验测试的自动化实现..................................................................................25小谈测试人员当代理测试LEADER.........................................................................49电子产品人机交互接口的安全性设计....................................................................53全球化测试中测试排序时需注意的几种语言..........................................................58针对详细设计(DetailDesign)的同行评审...........................................................62我和“测试”的不解之缘.....................................................................................65测试分析的重要性................................................................................................72揭秘QTP的DeviceReplay对象................................................................................74TMM(测试成熟度模型)介绍............................................................................106软件测试.....................................................................................................115www.51testing.com《51测试天地》第九期3刊首语孕育了一冬,终于,春天来了。同是积蓄而发的《51测试天地》,也随着春天的脚步,为大家谱出了本期精彩的篇章。这些精心选择的文章,彼此之间是如此不同,却又如此相似——都倾注了作译者辛勤的汗水,都是他们测试工作经验与思想的结晶,希望它们能带给你技术上的新鲜体验,拨动你心底热爱测试的那根弦。正如春的能量深藏持久,延绵不绝,《51测试天地》希望,每一天,或者每一个“现在”,当大家努力做想做的或是看似不可能完成的事情的时候,赋予大家一些力量与鼓舞,而它们,也就是来自渺小的每一个人身上涌现出的能量。《51测试天地》编辑部上海博为峰软件技术有限公司二○○八年四月二十四日www.51testing.com《51测试天地》第九期4数据库性能测试方法讨论作者:陈嘉祥王治方耀兰海摘要:在LOADRUNNER中使用脚本和JAVA程序进行数据库性能测试。关键词:LOADRUNNER,JAVA,Benchmark一、前言在测试工作中经常需要对数据库进行性能测试,以对数据库进行调优,保证数据库的稳定和高效。本文使用常用的性能测试工具LOADRUNNER,JAVA和专用数据库性能测试工具Benchmark,讨论数据库性能测试的不同方法,希望能抛砖引玉,寻找出更新更好的方法。二、任务引入数据库性能测试的需求,一般来源于下面几个方面:1、数据库调优;2、数据库选型;3、数据库服务器选型;4、其他;下面,就针对于这些常用的需求,列举几个不同的实例,共享一下测试方法。1)LOADRUNNER应用测试任务:评估某项目的核心业务逻辑(数据查询、数据复用、抽取同步整合)在不同压力下的性能表现,判断系统瓶颈,得到昀优系统配置参数和建议,并为数据库的试运行工作提供可靠的性能可行性依据;数据查询性能指标:900个用户并发,平均响应时间在3秒以内;数据库性能测试需求:数据库调优或服务器选型;includelrd.hwww.51testing.com《51测试天地》第九期5Action(){staticLRD_INIT_INFOInitInfo={LRD_INIT_INFO_EYECAT};staticLRD_DEFAULT_DB_VERSIONDBTypeVersion[]={{LRD_DBTYPE_NONE,LRD_DBVERSION_NONE}};staticvoidFAR*OraEnv1;staticvoidFAR*OraSvc1;staticvoidFAR*OraSrv1;staticvoidFAR*OraSes1;staticvoidFAR*OraStm1;unsignedlongrownum;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);www.51testing.com《51测试天地》第九期6lrd_ora8_attr_set(OraSes1,PASSWORD,password,-1,0);//初始化连接sessionlrd_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(&OraStm1,0);lrd_session_end(OraSvc1,OraSes1,0,0);lrd_server_detach(OraSrv1,0,0);lrd_handle_free(&OraEnv1,0);//lrd_end(0);return0;}上面的LoadRunner脚本在VirtualUserGenerator调试通过后,在Controller中打开,用900个模拟用户并发测试,即可得出性能指标(LoadRunner的操作这里就不在赘述,google一下)。从上面的例子看出,此应用比较难懂,是LoadRunner专属的方法,而且可扩展性不强。如果再遇到其他类型的数据库测试,协议将会是一个很大www.51testing.com《51测试天地》第九期7的问题。所以,为了容易理解,可扩展性强,引出了下面的JAVA应用方法。2)JAVA应用测试任务:测试待选的数据库的性能;数据查询性能指标:20个用户并发,每秒执行增删改语句数不少于1000条;数据库性能测试需求:数据库选型;importjava.sql.*;importjava.util.Date;importjava.util.Properties;publicclasstestsybase{StringsDbDriver=com.*.*.*.*;StringsConnStr=jdbc:*:*:ip_adress:port/sid;privateConnectionconn=null;privateStatementstmt=null;ResultSetrs=null;publictestsybase(){try{Class.forName(sDbDriver);}catch(java.lang.ClassNotFoundExceptione){System.err.println(testdb():+e.getMessage());}}publicvoidexecuteUpdate(){stmt=null;rs=null;www.51testing.com《51测试天地》第九期8try{conn=DriverManager.getConnection(sConnStr,*,*);stmt=conn.createStatement();System.out.println(newDate());intj=0;for(inti=0;i10000;i++){j=10001+i;//追加sql=insertintotablename(*,*,*...)+values('test+i+',*,*...);//更新//sql=updatetablenamesetfield_no='testupdate',*,*...wherefiled_no=+j;//删除//sql=deletefromtablenamewheretablename=+j;//查询//sql=select*fromtablenamewheretablename=+j;stmt.executeUpdate(sql);//rs=stmt.executeQuery(sql);//rs.next