11一.引言1.1编写目的在过去的几十年中,许多公司已经将软件作为了自动化工作的工具。软件应用程序已经极大地提高了人们的工作效率和社会生产力,并成为促进全球经济协作与信息共享的一种新媒介。事实上,软件应用程序已经成为各类业务关键信息共享和事务处理的主要途径。如今,软件应用程序包含了从电子邮件到用于事务处理的CRM等业务。随着软件开发技术不断发展和日益成熟,现代应用程序也越来越复杂。应用程序可以利用数十个甚至数百个组件完成以前用纸或人工完成的工作。在业务处理过程中,应用程序复杂度与潜在故障点数目之间有直接的关联。这使得找出问题根本原因变得越来越困难。而且,软件应用程序和汽车不同。它们没有仅在损坏后才需要更换的永久部件。无论是要增强竞争优势,还是要响应业务状况中的变化,软件应用程序每周、每月、每年都在变化。不断的变化又会产生其他风险,而这些风险需要由公司来管理。软件惊人的变化速度和激增的复杂性为软件开发过程带来了巨大的风险。严格的性能测试是量化和减少这种风险最常见的策略。1.2背景说明:(1)新浪微博是一个由新浪网推出,提供微型博客服务类的社交网站。用户可以通过网页、WAP页面、手机客户端、手机短信、彩信发布消息或上传图片。新浪可以把微博理解为微型博客或者一句话博客。用户可以将看到的、听到的、想到的事情写成一句话,或发一张图片,通过电脑或者手机随时随地分享给朋友,一起分享、讨论;还可以关注朋友,即时看到朋友们发布的信息。(2)新浪微博为典型的B/S结构,客户端都是通过浏览器访问应用系统。Web服务器为Apache,浏览器和web服务器之间基于HTTP协议。系统的体系结构如图1所示:图1系统的体系结构图21.3定义内容应用HTTPVU函数HTTP协议Header设置Web_add_headerWeb_clean_header点击链接Web_link函数Web_image函数提交表单Web_submit_dataWeb_submit_formWeb系统设置Cache设置Web_cache_leanupWeb_load_cacheCookie设置Web_add_cookieWeb_cleanup_cookiesProxy设置Web_set_proxyWeb_set_sercure_proxyLoadRunner框架支持检查点Web_findWeb_image_check关联Web_create_html_paramWeb_create_html_param_exWeb_reg_save_paramWeb_set_max_html_param_len控制Lr_start_transactionLr_rendezvousLr_think_time1.4参考资料《软件自动化测试工具实用技术》科学出版社《软件质量保证》DanielGalin机械工业出版社《软件测试技术与教程》人民邮电出版社《软件工程》张海藩人民邮电出版社《软件测试基础教程》AndreasSpiller等著人民邮电出版社《软件工程—理论与实践》白忠建等编著高等教育出版社《实用软件测试指南》WhittakerJ.A.马良荔著电子工业出版二.测试概要2.1制定测试计划本项目的人力资源如表2.1所示:表2.1人力资源表姓名角色职责刘建奇测试人员设计并执行功能测试梁峻强测试人员设计并执行性能测试3在任何类型的测试中,测试汁划都是必要的步骤。测试计划楚进行成功的负载测拭的关键。在任何类型的测试的第一步都是制定比较详细的测试计划。测试汁划中要秉点分祈系统的性能需求,并确定性能测试内容。性能测试主要是对响应时间、事务处理速率和其他与时间有关的需求进行评测和核实监测系统性能是否都以满足。在本次的性能测试中,主要是进行并发性能测试》本次测试的是登录模块、发表微博模块、关注好友模块,测试策略见下表:表2.2登陆模块并发测试测试策略项登陆模块并发测试测试技术采用LoadRunner测试工具自动化测试测试通过/失败标准80%的事务平均响应时间不超过8s,每一事务的响应时间不超过12S特殊考虑(1)可创建“虚拟的”用户负载来模拟多个客户机(2)最好使用多台实际客户机(每台客户机都运行测试脚本)在系统上添加负载(3)多用户不同网络条件下的连接速度是否满足要求表2.3发微博模块并发测试测试策略项发微博模块并发测试测试技术采用LoadRunner测试工具自动化测试测试通过/失败标准80%的事务平均响应时间不超过10s,每一事务的响应时间不超过12S特殊考虑(1)可创建的“虚拟”用户负载来模拟多个客户机(2)对用户提交的表单进行检查表2.4关注好友模块并发测试测试策略项关注好友模块并发测试测试技术采用LoadRunner测试工具自动化测试测试通过/失败标准80%的事务平均响应时间不超过10s,每一事务的响应时间不超过12S特殊考虑(1)可创建的“虚拟”用户负载来模拟多个客户机(2)设置关注时考虑到不同模块2.2开发测试脚本4LoadRunner使用虚拟用户的活动模拟真实用户来操作Web应用程序,而虚拟用户的活动就包含在测试脚本中,所以说测试脚本对于测试来说是非常重要的,开发测试脚本要使用ViiGen组件。测试脚本要完成的内容:(1)创建每一个虚拟用户的活动。(2)定义事务。(3)设定集合点。(4)插入检查点。2.3测试过程(1)启动LoadRunner。选择开始程序HPLoadRunnerLoadRunner。这时将打开HPLoadRunner11.00窗口(2)打开VuGen。在LoadRunnerLauncher窗格中,单击创建/编辑脚本。这时将打开VuGen起始页(3)创建一个空白的Web脚本,如图2.3.1所示在欢迎使用VirtualUserGenerator区域中,单击新建脚本按钮这是将打开“新建虚拟用户”对话框,显示“新建单协议脚本”选项。注:协议是客户端用来与系统后端进行通信的语言。新浪微博是一个基于Web的应用程序。因此讲创建一个WebVuser脚本。确保“类别”是所有协议,VuGen将列出适用与单协议脚本的所有可用协议。2.3.1选择空白的Web脚本图(4)录制参数设置在【Tools】菜单中执行【RecordingOptions】命令进入录制参数设置对话框。选择【Recording】选项卡,这里有两种选择模式【HTML-basedscript】和【URL-basedscript】,如图2.3.2所示5图2.3.2选项设置默认为【HTML-basedscript】,可以为每个用户请求生成单独的函数,该模式录制生成的脚本直观,易于理解和维护。(5)开始录制选择Vuser开始录制或者单击页面顶部工具栏中的开始录制按钮,如图2.3.3所示。图2.3.3录制按钮图打开“开始录制”对话框,选择录制内容地址,及录制存放地址,填写如图2.3.4所示图2.3.3录制内容图(6)创建事务当测试脚本运行到一个事务的开始点时,LoadRunner就会开始计时,直至运行到该事务的结束点,计时结束。这个事务的运行时间在结果中会有所反映。6图2.3.4创建事物(7)查看日志A.回放日志脚本运行时的输出都记在这个Log里。“输出”窗口的“执行日志”显示的消息用于描述Vuser运行时执行的操作。该信息可说明在方案中执行脚本是,该脚本的运行方式。脚本执行完成后,可以检查“执行日志”中的消息,以查看脚本在运行时是否发生错误。“执行日志”中使用不同颜色的文本。如图所示:B.录制日志在VUGen的RecordingLog中,可以找到浏览器与服务器之间的所有对话,包括通信内容,日期,时间,浏览器的请求及服务器的响应内容等如图2.3.7所示:图2.3.7录制日志C.产生日志产生日志记录了脚本录制的设置,网络事件到脚本函数的转化过程。(8)回放与调试脚本编译通过后,单机【运行】按钮即可运行脚本。7三.测试用例设计新浪微博是国内最主流,最具人气,当前最火爆的微博产品。用一句话随意记录生活,用手机随时随地发微博。迅速获取最热最火最快最酷最新的资讯。每天有大量用户登陆使用。3.1登陆测试用例表3.1登陆测试用例用例名称登陆新浪微博测试功能系统支持多个用户并发登陆目的测试多用户登录时系统的处理能力方法模拟多个用户在不同客户端登陆,然后并发进入系统。采用LoadRunner录制登陆过程(由于新浪微博本身不支持不同用户登陆,所以没有使用参数化)新浪微博登陆页面如图3.1.1所示图3.1.1新浪微博登陆页面把登陆的部分放在“vuser_init”部分中,把需要测试的内容放到“Action”部分执行。但是如果模拟多个用户登录系统,则把登陆放到Action部分实现。录制登陆的脚本如图3.2.1所示8图3.1.2录制成功的脚本运行脚本,查看脚本视图图3.1.3产生的脚本代码图查看脚本录制通过运行录制脚本可以确定脚本是否录制成功,录制脚本是否可用。运行情况如图3.1.4,图3.1.5所示:图3.1.4运行指令图成功标志:9图3.1.5运行成功图LoadRunnerController来管理和维护场景,可以在一台工作站控制一个场景中的所有虚拟用户(Vuser)。执行场景时,Controller会将该场景中的每个Vuser分配给一个负载生成器。负载生成器执行Vuser脚本,从而使Vuser可以模拟真实用户操作的计算机。LoadRunnerController通过模拟多个虚拟用户代替真实的用户操作行为,同时支持多机联合测试,充分利用有限的硬件资源,解决了手工操作不同步和人力、物力资源的严重浪费的问题。您还可以在负载执行过程中监控并收集系统资源(如CPU、内存、I/O等)、数据库资源、应用服务器、网络等,为日后您通过分析负载结果,从而定位系统瓶颈提供了坚实基础。通过Controller您可以在场景中设置真实运行系统中的典型业务,如将按照一定比例模拟在线用户数,不同浏览新闻、书写博客、查看邮件、浏览论坛帖子、发表帖子、观看电影等业务的分组作为一个业务场景,考察系统服务器资源、数据库资源、网络资源在系统运行期间的性能。启动Contronller后,将会自动打开图3.1.6所示的新建场景对话框。图3.1.6启动Contronller图场景组以普通手工模式为虚拟用户组中添加10个Vuser,如图3.1.7所示图3.1.7添加虚拟用户图进入【ScheduleBuilder】配置页面。Schedule是场景配置的重要组成部分,主要用于配置用户的行为方式。LordRunner在Controller中提供了非常灵活的Schedule,以适应创建各种复杂的性能测试场景。Schedule的配置主界面如图3.1.8所示:10图3.1.8Schedule的配置主界面【运行】选项卡显示“场景组”窗口、场景状态摘要和在脚本执行期间生成的联机信息的图。场景组:显示每个虚拟用户组及其当前运行状态。如图3.1.9所示;图3.1.9场景组选择Vuser组,然后单击【Vuser】按钮,将打开【Vuser10】对话框,其中显示改组中每个Vuser的ID、状态、脚本、负载生成器和已用时间的列表,如图3.1.10所示:图3.1.10Vuser组运行详情图已经定义了Vuser在测试期间的行为方式,接着就可以设置监视器。在应用程序中生成重负载时,可以实时了解新浪微博登陆的性能以及潜在的瓶颈,LoadRunner有一套集成监控器评测。设置10个Vuser的分析图(1)模拟10个Vuser并发登陆虚拟用户图11正在运行的虚拟用户图显示在场景运行的整个过程内,执行虚拟用户脚本的Vuser数量及其状态。图3.1.11模拟10个Vuser并发登陆虚拟用户图(2)模拟10个Vuser并发登陆事务平均响应时间图图3.1.12是性能下降的事务平均响应时间图,从图中可以很容易看出,随测试时间的变化,系统处理事务的速度将逐渐变慢。图3.1.12模拟10个Vuser并发登陆事务平均响应时间图(3)模拟10个Vuser并发登陆每秒点击次数图图3.1.13模拟10个Vuser并发登陆每秒点击次数图在Controller