第三章 某企业开发和测试流程现状分析
3. 1某企业研发项目简介
某企业是通信设备提供商,主要为北美以及世界各地的运营商提供高质量的通信设备。产品采用差异化竞争的策略.,以具有自主知识产权的核心技术为基础,为运营商提供集成度更高,部署更快捷,信号质量更优,而且兼容性更好的通信设备。
某企业的研发项目更多的是采用以我为主的前沿技术以力图引领市场,同时也使项目承担正更大的风险。所以,项目管理的水平对于某企业来说至关重要,只有更强有力的项目管理才能同时保证产品研发项目的进度和质量。
通信设备的研发项目首先进行预研,机械结构开发和硬件开发,当做好的各种硬件单板样品回板以后,才能开展软硬件联调。但由于通信设备的单板规模比较大,电路板层数多,如果某些单板的样品暴露出机械和硬件问题,将会进行改版以及新一轮的生产和发货,与之配合的软件也可能需要进行相应的改变。此时才会得到比较稳定硬件和只具备最基本功能的软件,真正的软件开发和测试流程由此正式拉开帷幕。
通信设备的软件一般分为安装在设备中各种单板的嵌入式软件和安装在服务器端的网络设备管理软件,这里讨论的软件项目特指通信设备的嵌入式软件项目,具有如下特点:嵌入式软件系统是软硬件紧密结合在一起的系统,硬件借助软件对其进行动态管理和优化,而软件借助硬件完成物理上的通信行为。
通信产品的嵌入式系统必须能够快速响应外部事件,有些系统行为甚至是稳定的毫秒级,所以对实时性的要求很高。
某企业通信产品的嵌入式软件代码量巨大,行为逻辑复杂。嵌入式软件不仅要辅助硬件设备能够完成各种复杂的通信功能,还要实现各种大大小小的协议,完成丰富的设备管理功能。
通信产品的嵌入式软件往往采用横向的模块化设计和纵向的分层结构,以保证各功能和各级软件的独立性,以实现代码的稳定性和可维护性。 具备了完整功能的通信设备及其软件在发布给用户之前,还需要进行多个的测试环节,以保证产品的功能性和稳定性。首先开展的系统集成测试(SI丁),致力十验证软硬件的结合,将测试重点放在相对独立和单一的各个软件特性上。而系统验证测试(SVT)拥有更多的硬件资源,更稳定的软件版本,更大规模的测试团队,所以更多地着眼于大规模测试环境下系统的行为表现。纯软件产品的自动化测试比较容易开展,而由于硬件设备的加入,想全面自动化测试的嵌入式通信系统则比较困难,或者说从实际的经验上来看,自动化能够发现的系统问题十分有限,主要还是靠手工测试团队来保证软件可靠性,自动化测试脚本的开发由专门的小规模的测试团队承担,为手工测试团队提供支持,以提高效率和减少大规模回归测试的压力。
另外,由于某企业在中国、美国、印度三个国家都有研发中心,而且各个研发中心都有各自的优势特点,美国总部主要负责项目管理和架构设计,中国研发中心负责硬件和底层软件的开发,印度研发中心负责上层软件和应用软件的开发,多个阶段的测试任务由中国和印度团队共同承担。
3. 2某企业软件研发项目流程
某企业采用的是瀑布式开发模型,把软件产品的生命周期分为产品调研、项目计划、系统设计、系统验证、系统运行和维护、生命终止六个阶段。各阶段有各自的目标即里程碑,如果能够完成项目的里程碑,则可以通过相应的关口(Gate )进入下一阶段。新产品的研发始于产品经理组织的产品调研,其主要输出为产品需求文档,经评审可通过G1进入项目计划阶段。
在项目计划阶段,系统工程师应完成系统需求文档,项目经理要制定出相应的项目计划,包括资金预算、人力安排,以后各阶段完成日期C G3/G4/G5)的预估等。
系统设计阶段实际上包括了硬件设计、软件设计,软件编码和系统集成测试四部分的内容,是整个项目中人力投入的最高峰。经过这一阶段,既定的软硬件功能全部得以实现,无重大遗留问题。并通过对产品故障数和代码改动的收敛趋势的分析,判断是否能够通过G3o进入到系统验证阶段,代码的变更受限,所有改动的代码均需要代码控制团队的批准。测试团队在更具规模的测试环境中,开展最接近用户操作的测试,以验证系统的功能、性能以及稳定性。一旦通过G4,将意味着产品可以出售给用户,在真正的网络上开局使用。也就是说产品己经完成研发过程。系统运行和维护阶段,是通信产品在网运行,并真正产生收益的阶段。研发团队还需要对在此阶段出现的问题进行修复,或者根据用户的新需求增量地开发小型的特性,直至产品生命终止。
3. 3项目的组织运作特点
从项目的组织运作特点上看,在此项目流程中,各角色分工明确,共同参与项目各阶段活动。项目经理制定项目计划,系统工程师负责需求的收集整理和分析,以及软件框架设计,开发工程师主要进行软件的详细设计和编码。测试工程师则是分阶段开展测试工作,以保证代码质量。项目开发的各阶段顺序开展,当一个阶段完成后,才能开展下一阶段的活动。使得整个项目进展清晰,便于各阶段责任人分工协作。而判断各阶段是否完成的标识是各阶段的里程碑,只有通过里程碑的评审,项目才允许进入下一个阶段。
整个研发项目由各种文档驱动。例如,系统工程师完成需求分析,会发布系统需求说明书(SRD, System Requirement Document)。开发人员根据SRD进行设计并编写软件设计文档,进而开始编码和调试。而系统测试人员则是根据SRD编写系统测试用例,当开发人员完成软件设计文档,系统集成测试人员据此开始编写系统集成测试用例,随着项目的进展,测试人员将根据这两个测试用例文档是开展SIT/SVT。