徐登科 王 鲲 朱艳军 刘 隽
中国铁道科学研究院通信信号研究所,100081 北京
*研究实习员 **助理研究员
欧洲铁路标准是欧洲电工标准委员会 (CENELEC)根据列车安全控制系统的技术条件制定的一系列安全相关系统开发和评估的参考标准。EN50128标准是相关系列标准的一部分,它对铁路控制和防护设备中使用的可编程电子系统的软件开发和安全保障进行了总体规范,并为开发不同安全完整性等级的系统软件提供了相应的技术和措施,适用于铁路控制和防护系统开发和实现的软件以及软件和系统之间。主要内容包括软件安全完整性等级、软件生命周期各阶段的活动细则和文档规范,以及人员的分配和职责等。各阶段的活动包括软件需求规范、软件结构、软件设计与实现、软件验证与测试、软/硬件集成、软件确认、软件评估、软件质量保障、软件维护和软件配置等。
在 EN50128标准中,为了确保开发各阶段输入条件的合理性与一致性,以及产品输出的正确性与安全性,必须对某一特定阶段的产品进行测试。测试前应先明确软件安全完整性等级,才能采取相应的安全措施。在 EN50128中,将软件安全完整性等级从 0级到 4级划分为 5个等级。软件安全完整性等级越高,软件失效后的危险性影响也就越大,软件开发时所应采取的安全保障技术和措施也就越复杂。因此,软件安全完整性等级的高低,直接影响系统的安全性和资源的合理应用。EN50128中并没有给出哪些风险应选取哪一级别的软件安全完整性等级,这就需要在确定软件安全完整性等级时,应遵循 EN50126中获得安全完整性等级的一般过程,并综合考虑软件应用的特性、安全性功能的范围划分,以及社会经济等诸多因素。
另外,按照 EN50128规定的条件,需对软件开发的每个阶段进行安全控制,要求各阶段都有定义、活动、审查,并形成文档以供交流、备查和维护。因此,需要在软件质量保障计划中明确所选取的软件开发模型,以此来描述软件开发的全部过程、活动和任务。虽然 EN50128中推荐了 2种典型的模型,但是在软件开发时还要根据自身项目和开发的特点,在 EN50128的指导下设计出简单、实用的软件开发模型。
为了说明测试活动,以软件安全完整性等级SIL4为例,根据软件测试在软件开发周期中的活动分布情况,将软件测试的主要活动分为软件模块测试、软件集成、软/硬件集成。其中软件集成测试由验证员完成,其他活动都由设计者完成。验证员除了完成软件集成测试,还要验证从需求、设计、一直到编码的活动过程。
在执行安全相关系统的软件测试活动时,首先应该在软件需求规范和软件质量保障计划中,分别获取软件安全完整性等级和软件开发生命周期模型。在铁路安全相关系统中,铁路信号系统软件通常具有较高的的安全完整性等级。在此,以铁路信号计算机联锁系统的输出控制子系统的软件为例,软件安全完整性等级为 SIL4,软件开发周期模型为 V模型,利用 EN50128指导软件测试活动的执行。标准的制定通常是起总体规范和指导的作用,因此,在引用的时候应结合实际情况进行适当调整,使得整个过程更符合开发和管理流程。
按照软件产品的定义范围和安全功能划分情况,在进行测试时,不仅要关心软件内部的关系和特性,还应考虑软件与系统之间的联系。因此,从软件工程的角度出发,结合 EN50128对软件测试的要求,将软件测试相关的活动划分为软件模块测试、集成测试和系统测试 3个阶段,并以图1所示的流程执行测试。
图1 软件测试活动及流程控制
该应用中将整个软件开发流程分为设计、测试、验证和确认 4个过程。在每个设计阶段,测试员在设计者完成设计和调试后,按照相应的测试要求执行测试,并分析和总结测试结果,形成测试报告。验证员对每个设计阶段和测试阶段的正确性、一致性等进行阶段性验证。确认员对每一阶段的设计、测试和验证活动进行检查,以确认是否可以进入下一阶段的活动。
1.软件模块测试。主要是验证每个模块是否正确、合理地实现了设计规范所预定的功能,并尽可能早地找出软件在设计与实现过程中可能存在的缺陷和不足。为此,需要严格按照测试计划,对每个模块依据设计的测试用例进行测试,以证实各模块都完成了其特定的功能并符合软件编码规则要求。在软件模块测试阶段主要采用了静态分析和动态分析相结合的方法。
静态分析是在软件模块不执行的情况下进行的测试活动,而动态分析是在测试输入的驱动下执行软件模块的测试方法。在 EN50128中按照不同的软件安全完整性等级,提供了许多静态分析和动态分析所采取的技术方法和措施。该应用中根据SIL4推荐的要求,选取数据流分析、控制流分析和代码走读的技术,以边界值分析、等价类划分和错误猜测的方法设计测试用例,并对软件模块及整体的质量进行度量。在执行软件模块测试时,除了检查每个模块是否满足规范需求之外,还以DO178B作为覆盖率的要求标准,采用自动化测试工具,以保证所有源代码以及条件的组合都至少有效执行一次,大大提高了测试的效率和质量。
2.软件集成测试。通过一定的集成策略和方法,将完全通过模块测试的软件组合成一个整体,并根据软件结构设计的要求对软件接口和功能进行的测试活动。其目的是证明各软件模块的接口以及接口之间都满足规定的需求。
执行集成测试时,首先应根据被测系统的特点,指定合适的集成测试策略。常见的集成策略,如自顶向下的集成、自底向上的集成等。该应用中,由于在模块测试中已经对每个模块进行了测试,所以选取自底向上的逐步爆炸式集成策略,并借助测试工具分析的软件调用关系图,完成模块的集成。然后采用黑盒和灰盒测试技术设计测试用例,并将其作为输入,借助自动化测试工具在编译和仿真环境下进行测试。在进行软件集成测试时,一定要遵循软件测试的目标,即找出软件中存在的缺陷和不足,以免和调试混淆。
3.系统测试。在完成了软件的集成测试之后,对于比较复杂的系统,还应该完成软/硬件的集成测试,以证明软、硬件之间的相互作用能正确地完成它们预定的功能,然后再进行系统测试。由于该输出子系统的软件相对比较简单,所以在系统测试时兼做软/硬件集成测试,以确保它们的相容性。
系统测试是在集成测试完成后,在正式的运行环境中,将软件、硬件、数据和人员等结合在一起,进行的一种综合性测试。在测试员完成系统测试并提交测试报告后,验证员对其结果和过程进行检查,并由确认员进行最终的软件确认,产生软件确认报告。
系统测试可以分为功能性和非功能性二大类,其中功能测试是系统测试的基础,通常采用黑盒测试技术,用来验证软件系统是否严格按照需求规范的要求予以实现;非功能性测试包含很多类型的测试,该应用中主要选取性能测试和安全性测试。
为了体现整个评估过程的独立性,EN50128中对于安全完整性等级为 SIL4的人员配置采取了2种结构:一种是验证员和确认员可以是同一个人,而且独立于设计者/实现者,不直接向项目经理报告;另一种是验证员和确认员必须是不同的人,验证员直接向项目经理报告而确认员独立。因为不论采取哪种方式,验证员即承担了验证的角色又完成了测试的任务,所以在此应用中,为了更加体现各阶段活动的独立性,在 EN50128的基础上,根据安全管理和控制要求,增加了集成者/测试员,对独立性方面采取如图2所示的组织结构。
图2 实际应用的独立性组织结构
与 EN50128提供的软件测试独立性组织结构相比,该结构主要有以下特点。
首先,集成者/测试员和验证员独立。在EN50128的软件测试活动中,软件模块测试、软件集成、软/硬件集成阶段的验证环节无法监控,加上在验证员和确认员是同一人的情况下,测试过程的质量更无法得到保障。另外,软件测试属于对软件源代码的验证活动,以找出软件中存在缺陷和不足为主,而验证是检查该阶段输出是否符合前一阶段需求的行为。因此,该配置采取了测试和验证由不同人员完成的方式,充分保证了该阶段活动的独立性。
其次,集成者/测试员和设计者独立。在EN50128中,软件模块测试和软/硬件集成都由设计者完成,在设计者和编程人员是同一人的情况下,设计者测试自身编写的代码,很容易造成测试盲区。对于安全相关系统的软件,设计者通常考虑软件完成了应该完成的功能,而容易忽视软件不应该做的事情,并造成测试和调试混淆,导致在安全问题中埋下隐患。
最后,验证员和确认员独立。避免了验证员和确认员是同一人的情况,验证员对设计和测试的活动进行初步的验证,再由确认员对该阶段的总体活动进行检查,而且确认员可以根据该阶段设计、测试、验证的具体情况,决定是否可以开始下一阶段的执行,这样有利于尽可能早的发现软件错误,并得到及时修正缺陷,大大减少了后期修复缺陷的费用。
结合欧洲铁路标准 EN50128,指导铁路信号安全相关系统的软件测试的执行。在整个测试应用过程中,始终贯彻测试与设计独立、验证与测试独立、确认与验证独立的原则,采用静态和动态相结合、黑盒和白盒相结合、人工检查和自动测试相结合的测试技术,完成了该输出子系统的软件测试,为其满足安全完整性等级起到了重要的作用。通过分析和探讨该应用中测试的流程、组织结构及其独立性,总结出了一套适合铁路信号安全相关系统通用的软件测试方法,为以后测试其他安全相关系统的软件提供了宝贵的技术积累和经验。
[1] EN-50128-2001,Railway applications-Communications,signalling and processing systems-Software for railway control and protection systems[S],2001.
[2] 赵大伟,田小芳,谭永东.EN50129及其在铁路安全相关系统中的应用研究[J].中国安全科学学报,2007,17(10):102-108.
[3] (美)Glenford J.Myers.The Art of Software Testing(Second Edition)[M].John Wiley&Sons,Inc.,2004.