一、研究背景
某电网公司信息系统的业务范围主要包括财务、人力、办公、生产、营销、物资等系统。这些业务系统正逐步通过数据接口从分布式向集中式过渡,并将逐步建立设备的一体化。目前,第一批试点系统已开发完毕,正着手于第二批试点系统的建设。
公司信息系统的开发为软件外包形式,在需求设计、开发、运维等阶段划分基本清晰,且具备较为明确的阶段评审标准。但在对信息系统建设的质量管控过程中,仍存在着信息系统测试制度不完善、系统功能不满足使用要求、系统安全隐患较多等问题;同时业务部门对测试业务不熟悉,仅在系统验收阶段进行测试,无法精细化管控开发过程中的质量,从而增加了系统投产的风险和不确定性。因此,公司急需开展具有电网特色的软件全生命周期测试服务,将测试工作融入项目建设及运行维护各阶段,逐步实现对软件全生命周期的质量控制和过程管理,为全面支撑公司信息化创先工作提供基础保障。
二、软件全生命周期测试的意义
信息系统全生命周期是以信息系统为主线,从信息系统的产生直到报废的过程,包括系统规划、需求分析、软件设计、程序编码、运行维护等阶段。目前该电网公司的测试工作只在系统验收阶段进行,仅把测试过程作为在需求分析、概要设计、详细设计及编码之后的一个阶段,具有一定的局限性。因为此时的测试只是针对程序寻找错误,许多设计开发阶段隐藏的问题直到最后才被发现。
事实上,软件生命周期的各个阶段都会涉及质量问题。软件开发过程中的缺陷发现得越晚,所需付出的代价就越高。因此,为了体现“尽早地和不断地进行软件测试”的原则,必须提前对软件生命周期的每个阶段进行质量管理,通过测试手段实现各个阶段的质量保证。
软件测试应伴随整个软件开发周期,而且测试的对象不仅仅是程序,需求、功能和设计同样要测试。如在项目需求分析阶段就要开始参与,审查需求分析文档、产品规格说明书;在设计阶段,要审查系统设计文档、程序设计流程图、数据流图等;在代码编写阶段,需要审查代码,看是否遵守代码的变量定义规则、是否有足够的注释行等。测试与开发同步进行,有利于尽早地发现问题,同时缩短项目的开发建设周期。
三、测试介入阶段
根据公司信息系统建设过程和质量保障重要节点,结合软件生命周期理论和传统软件测试理论,公司软件测试业务主要在以下阶段开展:需求分析阶段、方案设计阶段、编码开发阶段、系统集成阶段、安装部署阶段、试运行阶段、上线运行阶段。
对应系统建设不同阶段,需要开展的测试业务包括:需求测试、选型测试、单元测试、集成测试、确认测试、入网安全测试、验收测试、定期检测、性能调优和补丁测试(见图1)。
图1 测试介入阶段及测试业务分类
四、测试业务类型
1)需求测试
需求测试通过建立基线化跟踪矩阵,分析系统需求说明书中的各项系统需求是否具有可测性,跟踪系统需求变更和测试需求变更,从而明确测试需求文档中需要手工测试的需求,验证系统需求是否符合用户要求。
测试需求验证的测试对象包括信息系统需求分析阶段形成的业务规范、技术规范、需求规格说明书等文档。
通过需求测试,能及时发现需求定义中存在的问题,使相关单位在认知上达成一致,采取有效的预防措施,降低变更的成本;更好地理解产品的功能性和非功能性需求,为制定测试计划和用例打下基础。
2)选型测试
选型测试是在方案设计阶段进行方案评审时,依据国家、行业和企业的相关标准或用户招标文件的技术要求,从全方位角度对选型中涉及的产品进行测试,为用户提供科学的可量化的产品技术指标和选型测试结果。
开展选型测试必须确定统一的测试指标,从委托方的实际选型需求出发,尽量选择参测产品具有可比性的属性进行测试,以减少因产品差异性而带来的争议。同时要制定统一的评价准则,搭建统一的测试环境,保证测试的公平性。选型测试应从功能实现符合性、业务流程符合性、系统性能符合性、操作规范符合性、数据标准符合性等质量特性对软件产品进行测试。
3)单元测试
单元测试是在编码开发阶段,通过白盒测试方法,从程序的内部结构出发设计测试用例,把已实现的模块或组件作为个体单元进行的测试。单元测试检查程序模块或组件的已实现的功能与定义的功能是否一致、以及编码中是否存在错误。多个模块可以平行地、对立地测试,通常要编写驱动模块和桩模块。单元测试由编程人员和测试人员共同完成。
单元测试的方法分为静态分析和动态测试。采用静态分析方法时,通常要对软件单元的控制流、数据流、接口、表达式等内容进行分析;当动态测试时,通常对软件单元的功能、性能、接口、局部数据结构、独立路径、出错处理、边界条件和内存使用情况进行测试。
4)集成测试
集成测试是在单元测试之后,检验软件单元之间、软件单元和已集成的软件系统之间的接口关系,并验证已集成软件系统是否符合设计要求。集成测试的对象包括任意一个软件单元集成到计算机软件系统的组装过程以及任意一个组装得到的软件系统。
集成测试主要完成:
● 对模块和子系统的连接进行测试,确保各程序模块之间无错误连接;
● 验证整个软件系统或子系统的输入/输出处理是否达到设计要求;
● 验证软件系统或子系统正常处理能力和异常处理能力;
● 验证是否达到产品需求,是否遵循系统设计。
5)确认测试
确认测试在系统建设的安装部署阶段开展,通过检验和提供客观证据,证实软件是否满足特定预期用途的需求。确认测试是检测与证实软件是否满足软件需求说明书中规定的要求。
确认测试包括有效性测试和软件配置复查。有效性测试是在模拟的环境下,运用黑盒测试的方法,验证所测软件在功能、性能、文档以及可移植性、可靠性、易用性、兼容性、可维护性等方面是否满足需求规格说明书列出的需求。软件配置复查的目的是保证软件配置的所有成分都齐全,各方面的质量都符合要求,具有维护阶段所必须的细节,而且已经编排好分类的目录。