软件测试方法和技术第2版第9章基于应用服务器的测试谢红薇Mobil:13015370663QQ:740393608xiehongwei@tyut.edu.cn第9章基于应用服务器的测试9.1基于Web服务器应用的测试9.2基于数据库应用服务器的测试9.3基于JavaEE应用服务器的测试xiehongwei@tyut.edu.cn9.1基于Web服务器应用的测试9.1.1Web服务器功能测试9.1.2Web安全性测试9.1.3Web性能测试9.1.4性能测试工具Floodxiehongwei@tyut.edu.cn9.1.1Web服务器的功能测试GETOPTIONSHEADPOSTPUTDELETETRACECONNECTxiehongwei@tyut.edu.cn正则表达式xiehongwei@tyut.edu.cn常用的Web元素功能测试页面链接页面是否存在页面是否正确设计脚本不同的脚本语言相同的脚本语言在不同浏览器中的表现Web图形表单xiehongwei@tyut.edu.cn9.1.2Web服务器的安全测试登录、身份验证超时、Cookie和Session输入验证(防止脚本语言)数据加密、SSL(安全套接字)SQL注入XSS日志文件目录xiehongwei@tyut.edu.cn跨站点攻击(XSS)ReflectedXSSStoredXSSDOM-basedXSS(XSS)xiehongwei@tyut.edu.cn9.1.3Web服务器的性能测试基于Web应用系统的在线用户和响应时间来度量系统性能,基于Web应用系统的吞吐量和响应时间来度量系统性能@tyut.edu.cnApache性能测试工具abxiehongwei@tyut.edu.cnWeb服务器性能测试要点如何确定在线用户数量呢?由于时间和资源限制,不可能对Web应用系统的所有功能进行性能测试,而是根据业务的实际操作情况和技术的角度来分析,选择关键业务如果是基于在线用户的性能测试需求,可以将录制脚本时记录的思考时间作为基准,以此将思考时间设置成一定范围内的随机值。基于吞吐量的性能测试需求,可以把思考时间设置为零xiehongwei@tyut.edu.cnWeb站点经验点滴1.在执行客户端并发性能测试的过程中,需要同时监控数据库服务器、Web服务器以及网络资源等使用情况,以便对系统的性能做全面评估2.录制脚本和手工编写脚本相结合3.设置数据池,实现变量加载4.业务批量执行xiehongwei@tyut.edu.cnWeb站点经验点滴5.模拟用户数的递增6.合理设置交易之间时间间隔7.模拟IP地址变量的技术8.超时(timeout)的设置9.并发用户连续执行交易数的设置10.错误处理xiehongwei@tyut.edu.cnWeb站点经验点滴11.利用QALoad的ActiveData技术12.采用复合交易测试方案13.尽量将执行负载测试的机器合理分布14.并发用户数量极限点15.加压机器的CPU使用率也有必要监控16.设置并发点17.HTML与URL录制方式xiehongwei@tyut.edu.cn9.1.4性能测试工具FloodApacheHTTP工程包含了一个名为HTTPD-Test的子工程——Apache的通用测试工具包,它包含了不少测试工具而其中Flood()是人们经常使用的一个Web性能测试工具xiehongwei@tyut.edu.cn具体操作安装设置Flood实例扩展xiehongwei@tyut.edu.cn9.2基于Web服务器应用的测试9.2.1数据库服务器性能测试9.2.2数据库并发控制测试xiehongwei@tyut.edu.cn了解数据库服务器xiehongwei@tyut.edu.cn9.2.1数据库服务器性能测试大数据量测试:10万、100万、千万条记录大容量测试:某些字段存储10M、100M、1G等大体积数据。xiehongwei@tyut.edu.cn数据库性能测试过程和策略(1)理解测试需求:是校验测试还是基准测试?是单个用户大数据量测试还是多个用户并发测试?什么地方是可能的性能瓶颈?可能是哪个方面的性能测试?(应用程序or系统参数orSchema对象)选择测试工具页面级的辅助测试工具:JMeter,Webloadetc第三方监控程序:如DBFlash,或者有些通过log文件,来监控动态的访问路径,高占用的进程,会话和SQL语句xiehongwei@tyut.edu.cn自定义或者常用的命令,来动态监控和获取执行SQL,PL-SQL所需要的时间,占用的CPU和内存资源.数据库系统本身的性能工具包,如在Oracle中使用的ExplainPlan,AutoTrace,PKPROF以及Statspack.设计测试场景以及测试脚本数据量设计或加载.测试环境建立和测试过程分析测试脚本设计收集数据和分析结果性能瓶颈参数优化和对比数据库性能测试过程和策略(2)xiehongwei@tyut.edu.cnOracle数据库性能测试Oracle系统性能测试的目标:模拟数据库系统的数据负载,操作,侦测和获取性能测试数据,帮助开发和DBA来优化和调整数据库或者应用程序.最终的结果是获取更快的数据库响应速度或者更高吞度能力.Oracle系统性能测试的本质硬件(CPU,Memory,I/O竞争等)系统配置(SGA/PGA)应用程序(SQL,PL-SQL)网络连接xiehongwei@tyut.edu.cnOralce系统性能测试的范围应用程序调优-ForApplicationdeveloperSQL语句测试调优Thin,OCI测试Schema对象调优-ForDatabasedeveloperSchema(表,索引,存储过程)设计PL-SQL语句和调用数据复制系统参数调优-ForDBA内存/CPU/I/O竞争/网络SGA配置动态表空间估计分区表,索引设计xiehongwei@tyut.edu.cn数据库测试工具-AUTOTRACEcommand:setautotrace[on][traceonly][off]…;SQLselect*fromwbxsite;3091rowsselected.ExecutionPlan----------------------------------------------------------0SELECTSTATEMENTOptimizer=CHOOSE(Cost=4Card=2489Bytes=174230)10TABLEACCESS(FULL)OF'WBXSITE'(Cost=4Card=2489Bytes=174230)Statistics----------------------------------------------------------680recursivecalls0dbblockgets375consistentgets0physicalreads0redosize196696bytessentviaSQL*Nettoclient2765bytesreceivedviaSQL*Netfromclient208SQL*Netroundtripsto/fromclient6sorts(memory)0sorts(disk)3091rowsprocessedxiehongwei@tyut.edu.cnSQL/--thedatawasfrombuffercache,butnothardparse.3091rowsselected.ExecutionPlan----------------------------------------------------------0SELECTSTATEMENTOptimizer=CHOOSE(Cost=4Card=2489Bytes=174230)10TABLEACCESS(FULL)OF'WBXSITE'(Cost=4Card=2489Bytes=174230)Statistics----------------------------------------------------------0recursivecalls0dbblockgets245consistentgets0physicalreads0redosize196696bytessentviaSQL*Nettoclient2765bytesreceivedviaSQL*Netfromclient208SQL*Netroundtripsto/fromclient0sorts(memory)0sorts(disk)3091rowsprocessedSQL数据库测试工具-AUTOTRACExiehongwei@tyut.edu.cnEXPLAINPLANRunningexplainplanandshowoutput:ExplainplanforStatement;@?/rdbms/admin/utlxpls.sql-Showsplantableoutputforserialprocessing@?/rdbms/admin/utlxplp.sql-ShowsplantableoutputwithparallelexecutioncolumnsAnalyzeplanOptimizermodeScanmodeRecursivecallsRedosizes数据库测试工具(Cont’d)xiehongwei@tyut.edu.cn数据库测试工具(Cont’d)Statspack1.InstallpackageConnectassysdbaRun@?/rdbms/admin/spcreatesql,tocreateallrequiredtables,packages,userandgrantprivilege.Specify3requiredparameters:userpassword,tablespaceandtemptablespace,itisbettertocreateindependenttablespaceandtemptablespaceforthisschema.2.Usingstatspackconnectasperfstats.EXECUTEstatspack.snap;(afterthisprocessfinished,wecanseeasetofdatahadbeengeneratedtoperfstats.STATS$SYSSTAT,bySNAP_IDmthismeans,systemsnapshothadbeengeneratedbyexecutingthispackage.Anintegersnap_idwillbereturned,wecangetitbySMARTcalling,orfromlatestSNAP_IDfromtableSTATS$SYSSTAT.3.RunningtheStatspackReportconnectasperfstats.Executesql:@?/rdbms/admin/spreportSpecify3parameters:startsnapshotID,endsnapshotIDandreportname(defaultissp_xx_yy.lisincurrentpath).Orbatchdefineandrunbydefinebeg