1、接项目背景介绍:论软件软件测试方法和工具选择摘要:本文着重讨论了多媒体内容发布网络平台(CDN)及VOD系统的项目开发中的软件测试环节;该项目是某省电信部门委托我公司开发的为全省14个地市30万宽带用户提供一个高质量的基于流媒体的宽带VOD服务,实现各地用户就近访问流媒体边缘缓存服务器,并提供完善的商业运营管理功能。本文介绍了项目的软件、硬件设计架构,并详细讨论了软件测试中单元测试和性能测试中所采用的测试策略和测试工具。在现在看来,还存在一些方面的不足。在整个项目中,本人作为项目技术主要负责人之一,参与了整个项目的分析设计和测试过程。正文:我公司是专注宽带视频应用技术开发的企业,产品主要应用与
2、电信和广电等领域。2005年7月,受某省电信部门(甲方)委托我公司(乙方),开发一套“多媒体内容分发网络平台(CDN, Context Delivery Network)及VOD系统”,(简称CDN平台),在全省 14 个地市建立 CDN 分节点,为全省14个地市的30万宽带用户提供 11000户视频点播功能;同时为内容提供商(CP)服务提供商(SP)提供完善的商业运营后台管理功能。我作为项目主要负责人之一,参与了该项目的分析、设计以及测试的工作。根据业务需求我们将CDN平台划分为3层次:内容服务集成层、媒体内容频道层、宽带用户层。内容服务集成层为内容提供商(CP)提供商业运营和管理的支撑平台
3、;实现手动/自动方式入库;内容审核;节目源管理;入库的内容综合集成。媒体内容频道层利用我公司在全国电信的CDN平台进行内容分发管理;用户分级授权管理;综合计费管理方式;节目版权保护等;并提供宽带VOD应用门户界面。宽带用户层主要是为宽带用户提供服务;用户可以通过Web方式访问宽带VOD应用门户网站,享受媒体点播、网络电视台、远程教育等服务;用户通过宽带账号绑定、在线支付等方式进行缴费;可以通过Web嵌入式播放器或者独立播放软件、手机/PDA播放器进行媒体点播。该项目架设在J2EE框架基础上,采用B/S+C/S的混合结构;由于宽带用户并发访问量大,在架构上选用了当前主流的StrutsEJB组合;
4、采用Struts+Delegate+SessionBean+CMP+Oracle9i(Struts+Delegate+DAO+Oracle9i)架构;媒体内容频道层的宽带VOD应用门户(包括媒体点播、网络电视台、远程教育等)以及用户支付等模块采用基于Web的方式进行开发;对于内容入库审核模块,由于甲方需要规定要手动/自动进行大批量文件传送、而要求断点续传功能,故我们选择了自己用Swing技术编写客户界面并购买一个商用文件传送组件实现内容注入,采用C/S架构。在硬件配置方面,在该省中心管理节点采用操作系统选用Linux RedHat9.0,Web服务器采用Apach,应用服务器选用BEA公司的W
5、eblogic8.1,数据库采用Oracle9i,全省14个地市共采用了23台视频服务器(Helix和 Windows Media Service),每台服务器上配置5*73GB的节目热播存储空间,同时在省中心节点还配置了2TB的NAS磁盘阵列作为后备存储空间。该项目的业务功能很繁多,与电信业务接口交互多,性能和安全性要求高,项目建设时间紧。整个团队有开发小组(分析设计、编程人员、美工)和测试小组。根据项目的具体特点和应用要求及业务流程和系统的应用环境,我们做了精心的做了系统分析和设计以及测试计划工作。在制定项目需求分析文档的同时制定了项目验收测试计划,在写并出台了详细的需求分析文档(包括业务
6、功能需求,系统架构需求etc.),和系统概要设计文档的同时确定了集成测试计划以及测试要素,、编写系统详细设计文档同时编写单元测试用例,仔细分析了业务流程和系统的应用环境,在此基础上确定了系统的测试要素,据此编制了项目测试计划、测试用例,将测试划分为单元测试。整个测试环节自下而上分为单元测试、组装测试、功能测试、性能测试、验收测试和安全性测试(安全性测试甲方委托第三方测试公司进行)。本文详细介绍我们测试过程中的单元测试、功能测试和性能测试。第一、:单元测试严格把关系统零部件质量关单元测试的用例在详细设计中制定的测试标准,它根据详细设计文档具体编写。单元测试采取要求开发人员自己写测试代码、小组内同
7、级审查和测试组抽查的相组合的测试策略。要求开发人员先写编写好测试用例、测试数据,并保存可查询的测试源码,单元测试应该紧接紧跟在编码完成编译通过之后就进行测试。开发人员采用Eclipse+MyElipse进行开发,故选用JUnit测试框架进行测试,具体方法采用StrutsTestCase进行测试,我们使用其中的Mock Object方法测试Struts中的Action Object、mappings、ActionForm以及forwards declasrations,我们采用StrutsTestCase模拟Web容器进行测试,检查出错误后在有开发人员自己调试排错,修改完后再进行回归测试。开发人
8、员采用Eclipse+MyElipse进行开发,故选用JUnit测试框架进行测试。第二、:功能用例测试严格检查产品是否扫除系统臭虫,堵上用户的嘴巴满足用户需求系统的功能测试根据概要设计文档具体编写,我们主要考虑了页面链接测试、表单提交测试和数据库测试、及系统计费数据正确性测试。系统的宽带VOD应用门户提供了媒体点播、网络电视台、远程教育、网上家园等CP/SP提供的服务。为了保证用户通过应用门户网站查询、定购和使用各项业务,就必须保证站点所有链接的正确性。我们测试小组采用自动测试工具LinkBot,他能自动检查、分析站点所有页面链接,并生产详细的测试清单,报告链接页面是否存在、哪些页面未作链接。
9、对于表单提交测试和数据库测试,我们采用了运行测试手动测试和工具测试结合的方法。测试之前,依据系统需求分析文档,对Struts文档中每一个详细的功能点交换功能的页面设计出来测试用例,重点关注关键页面的测试用例,如用户登陆、在线支付、服务目录等页面。测试针对提交操作的完整性来进行,以校验给服务器信息的正确性,同时检查数据存取时的数据的一致性。例如:在表单不填写的情况下提交默认值,需要测试指定值和默认值的正确性;SP/CP用户登陆要求密码字符数字组合长度不低于8,测试时我们分别采用8位以上、8位以下数字、字符进行测试。第三、:性能测试对系统架构的考验由于本系统要求提供11000并发数目点视频点播功能
10、,因此对系统性能测试要求很高。且VOD节目采用点播方式进行传送,点播用户可以自由控制节目进度,终止节目的播放,但每个点播用户都要占用一定的网络带宽,因此并发用户数受到网络带宽、服务器性能的限制。VOD业务性能的测试指标我们主要测试最大并发流数目、宽带波动、所用的平均带宽、丢包率和平均相应时间。我们采用的策略是在各地市采用自动负载测试,实际工作中采用的是Webstress测试工具对每个地市节点用几十台PC机模拟数千台用户同时视频点播业务情景,同时记录下每一个事务的处理时间、Web服务器峰值数据、流媒体服务器性能和数据库状态,根据分析结果和经验服务器的配置进行了调优、和代码优化、SQL查询优化等措
11、施。对于C/S结构的内容注入模块对于性能要求也比较高,我们采用PureLoad,主要是对多客户并发上传进行性能测试。第四:用户上线试用。通过以上四个以上几个由浅入深,层层递进的测试过程。建立起了对系统运行良好的前提。目前,该项目已经在工期顺利完成,试运营这几个月来,运行情况良好,系统的安全性和并发性均达到了预期目标,整个项目小组受到本公司领导和甲方的一致好评。但我个人认为作为一名优秀系统分析员应该不断的去追求完美,去做到精益求精:1、宽带视频系统大部分任务是提供娱乐性节目,用户在观看娱乐节目的过程中更注重节目的整体性和连贯性,因此,稳定性对于视频系统而言是十分关键的一点,如何在有限带宽的情况下如何更好的提高系统的稳定性是我们还需要做的更好的地方。2、流媒体最大并发流数目是宽带视频应用的瓶颈。我公司在并发业务/服务的研究方面属于国内领先,然而在这个领域如何与世界知名企业同步或者超过他们,这也是我们今后努力的方向。用Juint对Struts进行单元测试部分还没有写。你看到有问题的地方直接用红笔修改。