论文: 论软件测试方法和工具的选择
【摘要】
本文着重讨论了多媒体内容发布网络平台(CDN)及 VOD 系统的项目开发中的软件 测试环节;该项目是某省电信部门委托我公司开发的为全省 14 个地市 30 万宽带用户提供一个高质量的基于流媒体的宽带 VOD 服务,实现各地用户就近访问流媒体边缘缓存服务器, 并提供完善的商业运营管理功能。本文介绍了项目的软件、硬件设计架构,并详细讨论了采 用 JUinit 框架进行单元测试,运用 LoadRunner 工具对整个项目平台它通过模拟用户(Virtual User)进行实时性能检测、负荷,来帮助开发人员更快的查找和发现问题。本文详述了在性 能测试、功能测试所采用的测试策略以及方法。在整个项目中,本人作为项目技术主要负责人之一,参与了整个项目的分析设计和测试过程。
【正文】
我公司是专注宽带视频应用技术开发的企业,产品主要应用与电信和广电等领域。2005 年 7 月,受某省电信部门(甲方)委托我公司(乙方),开发一套“多媒体内容分发网络平台 (CDN, Context Delivery Network)及 VOD 系统”,(简称 CDN 平台),在全省 14 个地市建 立 CDN 分节点,为全省 14 个地市的 30 万宽带用户提供 11000 户视频点播功能;同时为 内容提供商(CP)服务提供商(SP)提供完善的商业运营后台管理功能。我作为项目主要负责人之一,负责并参与了该项目的分析、设计以及测试的工作。
根据业务需求我们将 CDN 平台划分为 3 层次:内容服务集成层、媒体内容频道层、宽带用户层。
一、内容服务集成层为内容提供商(CP)提供商业运营和管理的支撑平台;实现手动/ 自动方式入库;内容审核;节目源管理;入库的内容综合集成。
二、媒体内容频道层利用我公司在全国电信的 CDN 平台进行内容分发管理;用户分级 授权管理;综合计费管理方式;节目版权保护等;并提供宽带 VOD 应用门户界面。
三、宽带用户层主要是为宽带用户提供服务;用户可以通过 Web 方式访问宽带 VOD 应用门户网站,享受媒体点播、网络电视台、远程教育等服务;用户通过宽带账号绑定、在 线支付等方式进行缴费;可以通过 Web 嵌入式播放器或者独立播放软件、手机/PDA 播放器 进行媒体点播。
该项目架设在 J2EE 框架基础上,采用 B/S+C/S 的混合结构;宽带 VOD 应用门户(媒 体点播、网络电视台、远程教育等)用户并发访问量大,C/S 的客户端安装与维护都不太方 便故选用B/S浏览器/服务器模拟题,在架构上选用了当时主流的Struts+Spring+Hibernate架 构;Struts 用于制作应用门户的前台界面;Spring 来封装业务逻辑,Hibernate 实现对数据库 访问的操作;对于内容入库审核模块,由于甲方需要规定要手动/自动进行大批量文件传送、 而要求断点续传功能,故我们选择了自己用 Swing 技术编写客户界面并购买一个商用文件 传送组件实现内容注入,采用 C/S 架构。
在服务器配置方面,考虑到平台的稳定性,在该省中心管理节点采用 Linux 操作系统选 用 Linux RedHat9.0,Web 服务器和数据库服务器方面综合考虑到成本和并发点数,分别选 用 Tomcat5.0,Oracle9i 数据库,流媒体服务器才用(WMS9 和 Helix Server9.0)。全省 14 个 地市共采用了 23 台视频服务器,每台流媒体服务器上配置 4G 内存的、5*154GB1.5 万转硬 盘(RAID5 磁盘阵列)的 NAS(网络存储服务器)存储空间,同时在省中心节点还配置了 2TB 的 NAS 磁盘阵列作为后备存储空间。为保证流量服务器选用千兆网卡,地市之间的骨 干网需要使用 4G 带宽。
该项目的业务功能很繁多,与电信业务接口交互多,性能和安全性要求高,项目建设时间紧。整个团队有开发小组(分析设计、编程人员、美工)和测试小组。根据项目的具体特点 和业务流程需求,考虑到系统的应用环境,我们精心的做了系统分析和设计以及测试计划工 作。在制定项目需求分析文档的同时制定了项目验收测试计划,在写系统概要设计文档的同 时确定了集成测试计划以及测试要素,单元测试用例的设计安排在系统详细设计文档中。整 个测试环节自下而上分为单元测试、组装测试、功能测试、性能测试、验收测试和安全性测试(安全性测试甲方委托第三方测试公司进行)。本文详细介绍我们测试过程中的单元测试、 功能测试和性能测试。
第一、单元测试—严把系统零部件质量关
单元测试的用例在详细设计中制定的测试标准,它根据详细设计文档具体编写。单元测 试采取开发人员自测、小组内同级审查和测试组抽查的相组合的测试策略。要求开发人员先 写编写好测试用例、测试数据并保存可查询的测试源码,单元测试紧跟在编码完成之后进行。 开发人员采用 Eclipse+MyElipse 进行开发,故选用 J-Unit 测试框架进行测试,对于 Web 开 发中的 Struts 部分,方法采用 StrutsTestCase 模拟 Web 容器进行测试,我们使用其中的 Mock Object 方法测试 Struts 中的 Action Object、Aappings、ActionForm 以及 Forwards declaration; 对于业务逻辑部分代码,由开发人员按照边界值法或者等价分类法设计好测试用例数据和预 期得到的结果。每个业务类都由 J-Uint 自动生成测试程序,测试程序接收选择好的用例数据, 运行后自动比较执行结果和预测结构。根据检测结果对代码进行检测,检查出错误后在有开 发人员自己调试排错,修改完后再进行回归测试。
第二、功能测试—严格检查产品是否满足用户需求
系统的功能测试根据概要设计文档具体编写,我们主要考虑了页面链接测试、表单提交 测试和数据库测试及系统计费数据正确性测试。系统的宽带VOD应用门户提供了媒体点播、网络电视台、远程教育、网上家园等CP/SP 提供的服务。为了保证用户通过应用门户网站查询、定购和使用各项业务,就必须保证站点 所有链接的正确性。我们测试小组采用 LoadRunner 的自动链接测试工具,它能自动检查、 分析站点所有页面链接,并生产详细的测试清单,报告链接页面是否存在、哪些页面未作链接。
对于表单提交测试测试,我们采用 LoadRunner 测试的 Virtual User Generator 模拟虚拟 用户,以模拟用户的方式模拟真实用户的业务操作行为。测试之前,依据系统需求分析文档, 对文档中每一个详细的功能点设计出来测试用例,重点关注关键页面的测试用例,如用户登 陆、在线支付、服务目录等页面。测试针对提交操作的完整性和操作结果合理性来进行,以 校验给服务器信息的正确性,同时检查数据存取时的数据的一致性。例如:在访问数据库的 页面做表单的空值、长度,精确、格式的验证。系统统计费用功能做人机交互界面的可用性, 易用性,方便性、安全行等全方面的测试。测试过程中利用 LoadRunner 的 Virtual User Generator 录制用户进行测试的脚本,对其进行参数化操作,这样采用利用不同参数控制交 易的数量、交易频率、连接速度等来测试应用程序,验证程序功能。
第三、性能测试—对系统架构的考验
由于本系统要求提供 11000 并发数目点视频点播功能,因此对系统性能测试要求很高。 且 VOD 节目采用点播方式进行传送,点播用户可以自由控制节目进度,终止节目的播放, 但每个点播用户都要占用一定的网络带宽,因此并发用户数受到网络带宽、服务器性能的限 制。VOD 业务性能的测试指标我们主要测试最大并发流数目、宽带波动、所用的平均带宽、 丢包率和平均相应时间。为了保证终端用户得到良好的操作体验和高质量 Media Stream,我 们采用的策略是在各地市用模拟用户的方式模拟记录和重放任何流行的多媒体数据流格式 来诊断应用程序的性能问题。该引擎先记录下了用户 VOD 视频点播的业务流程,并转换为 测试脚本,利用虚拟用户可以在每个地市节点 Linux 和 Windows 模拟数万台用户同时视频 点播业务情景,同时通过Web监测器记录下每一个事务的处理时间、Web服务器峰值数据、 流媒体服务器性能和数据库状态,根据分析结果和经验服务器的配置进行了调优、和代码优 化、SQL 查询优化等措施。对于 C/S 结构的内容注入模块对于性能要求也比较高,我们采 用 LoadRunner,主要是对多客户并发上传进行性能测试,采用 LoadRunner 集成的实时监测 器,在整个负载测试过程中,都可以观察到应用程序的运行性能,性能监测器实时的显示业 务交易、数据库和文件服务器的实时性能,让测试人员在测试过程中从客户和服务器的双方 评估这些组件的运行性能,从而更快发现问题。
测试完毕后,测试人员采用 LoadRunner 收集汇总所有的测试数据,LoadRunner 本身提供高级的分析和报告工具,以便迅速查找到性能问题并追溯原由。使用 LoadRunner 的 Web 交易细节监测器,了解到将所有的图象、框架和文本下载到每一网页上所需的时间。例如, 通过交易细节分析机制能够分析是否因为一个大尺寸的图形文件或是第三方的数据组件造 成应用系统运行速度减慢。另外,还采用 Web 交易细节监测器分解用于客户端、网络和服 务器上端到端的反应时间,便于确认问题,定位查找真正出错的组件。
以上几个由浅入深,层层递进的测试过程。建立起了对系统运行良好的前提。目前,该项目已经在工期顺利完成,试运营这半年月来,用户点击日志达到 1300 万条,运行情况良 好,系统的安全性和并发性均达到了预期目标,整个项目小组受到本公司领导和甲方的一致 好评。但我个人认为作为一名优秀系统分析员应该不断的去追求完美,去做到精益求精:
1、宽带视频系统大部分任务是提供娱乐性节目,用户在观看娱乐节目的过程中更注重 节目的整体性和连贯性,因此,稳定性对于视频系统而言是十分关键的一点,如何在有限带宽的情况下如何更好的提高系统的稳定性是我们还需要做的更好的地方。
2、流媒体最大并发流数目是宽带视频应用的瓶颈。我公司在并发业务/服务的研究方面 属于国内领先,然而在这个领域如何与世界知名企业同步或者超过他们,这也是我们今后努 力的方向。