APP下载

数据静态分析技术及其在安全软件测试中的应用

2021-05-27孙志科

铁路通信信号工程技术 2021年5期
关键词:静态代码软件

孙志科

(北京全路通信信号研究设计院集团有限公司,北京 100070)

1 概述

对于应用在列车运行控制系统中的铁路信号安全软件(以下简称安全软件)来说,除了软件逻辑以外,工程数据的质量同样直接影响着系统的安全性和可用性。特别是在高密度、高速度的干线铁路及大型枢纽中,即使是单个信号系统的某一个数据错误,其影响范围也会随着时间的推移而迅速扩大,给铁路运输秩序带来严重的影响。

2 常见的数据错误模式

在构成列车运行控制系统的各类安全软件制作过程中,常见的数据错误模式及其典型特征如表1所示。

表1 安全软件常见数据错误模式及其典型特征Tab.1 Common data error patterns and their typical characteristics of safety software

为保证交付给用户的列车运行控制系统的功能、性能及安全性符合要求,必须采用适当的方法,在安全软件发布前将各类错误数据全部检出并修正。特别是各类多余数据,一旦在安全关键数据中出现,有可能对铁路运输安全造成极大威胁。

3 常用软件测试技术

根据测试对象是否包含软件内部的逻辑结构和工作机制,软件测试技术可以分为两大类:白盒测试(White-box Testing)、黑盒测试(Black-box Testing)。

白盒测试是侧重于系统或部件内部工作机制的测试。

黑盒测试是忽略系统或部件的内部工作机制,只集中于响应所选择的输入和执行条件后所产生的输出,用于评价系统或部件与规定的功能需求遵循性的一种测试。

根据在测试过程中是否运行被测软件,白盒测试技术又可以分为两大类:

静态分析技术:不运行被测软件;

动态测试技术:运行被测软件。

白盒测试技术的适用对象,及其在被测对象定位方面的能力如表2所示。

表2 白盒测试技术的适用对象及定位能力Tab.2 Applicable objects and positioning ability of white box testing technology

为了使软件的安全完整度达到SIL4级,对于涉及安全的配置数据,其测试覆盖率应当达到100%。

因此,在进行安全软件的数据测试时,应当选择能够准确定位被测数据所在位置的测试技术,才能在此基础上实现数据测试覆盖率的统计。

黑盒测试技术的适用对象,及其在被测对象定位方面的能力如表3所示。

表3 黑盒测试技术的适用对象及定位能力Tab.3 Applicable objects and positioning ability of black box testing technology

从表2及表3的对比可以看出,只有采用白盒测试技术中的静态分析技术进行工程数据测试,才能在数据测试过程中得到测试覆盖率统计结果。

4 安全软件测试技术应用现状

4.1 现状及原因

目前,在列车运行控制系统的集成过程中,对安全软件的功能及数据测试以黑盒测试技术为主,很少应用白盒测试技术,原因主要有以下几点:

1)白盒测试技术只适用于基本的软件单元或小型的功能模块,无法对软件的整体功能进行测试,不能满足列车运行控制系统集成测试的需求;

2)白盒测试(主要是动态白盒测试)需要耗费大量的时间和人力。在列车运行控制系统的集成过程中,受工期和人力资源的限制,很难开展白盒测试工作;

3)当安全软件定型后,在列车运行控制系统的集成过程中,通过版本管理、配置管理等管理过程,并借助适当的工具软件支持(例如:配置管理工具软件),可以保证在集成过程中使用正确版本的安全软件,不需要对每个项目的软件进行白盒测试;

4)现有的所有商业化软件静态分析工具(例如:Testbed、Cantata等)都只能用于软件代码的静态分析,无法对配置数据进行分析。由于安全软件的配置数据的数量通常十分巨大,没有工具软件的支持无法实现完整的分析。

4.2 黑盒测试技术的优点

黑盒测试技术是软件测试领域中应用最广泛的技术,其原因主要包括:

1)技术门槛低,测试方法和步骤易于测试工程师学习和掌握;

2)测试环境、操作步骤及使用场景与被测对象的实际运行环境比较接近,测试结果的可视性及可信度比较高。

在列车运行控制系统的集成过程中,采用黑盒测试技术进行安全软件的功能和数据测试时,整个测试过程与被测系统的实际运行过程比较接近,测试过程的可视性及可信度较高。

4.3 黑盒测试技术的不足

随着国内高速铁路建设规模的迅速扩大,用户和市场对铁路信号安全产品的安全性、可用性要求不断提高的同时,对产品的集成、测试、交付的速度和成本也提出了越来越高的要求。在这种情况下,黑盒测试技术的不足之处越发凸显出来。

1) 测试周期长,时间成本高

为保证铁路信号安全产品的安全性及可用性,对每个产品的工程数据都应当进行完整的测试,即涉及安全的数据的测试覆盖率应达到100%。

例如:在计算机联锁产品的工程数据测试过程中,联锁表中的每一条进路都需要进行测试,不允许有遗漏。而随着车站的道岔数量、接发车口数量的增加,站内进路的数量会呈几何级数增长,因而测试工作量的增长也非常迅速,这还不包括执行其他测试项所需的时间。要完成一个车站的全部进路数据测试,无论是采用人工测试还是自动化测试,所需的时间都要以小时、甚至以天为单位计算。

2) 测试针对性不强

任何一个软件功能的实现都需要多个功能模块和若干配置数据的共同作用才能完成。因此,任何一个黑盒测试案例都能够同时覆盖多个软件功能模块和配置数据。虽然从单个测试案例的角度看,其测试效率比较高,但从整体来看,各个测试案例的作用范围存在不同程度的重叠,很难对某一个数据进行针对性的测试,导致在整个测试过程中,很多数据会被重复测试,反而降低了整体的测试效率。

如果确切的知道某个功能点所对应的数据,则只需要打开数据文件,直接核对数据配置的正确性,几分钟的时间就足够。而这种直接检查数据配置的测试方法就是典型的白盒测试技术中的静态分析技术。

3) 对于某些类型的错误数据的检出效率很低,甚至无法检出

黑盒测试技术在测试过程中无法跟踪和监视被测软件的内部执行路径,也无法确认被测对象的所有静态数据中,哪些已经被测试覆盖,哪些还未被覆盖。

例如:在北京全路通信信号研究设计院集团有限公司的计算机联锁产品的工程数据测试过程中,对于联锁表中列出的进路,测试工程师会100%测试。但是,对于联锁软件中配置的超出联锁表范围的进路数据,测试工程师则无法进行测试。这是因为,仅仅通过黑盒测试技术,测试工程师无法确切知道联锁软件中配置了多少条进路的数据,也无法知道究竟有哪些进路的数据已被测试,哪些还未被测试。

即使采用白盒测试技术,也无法检出多余数据。因为目前所有的白盒测试工具软件都只能实现对软件代码执行路径的跟踪和记录,无法实现对静态配置数据使用情况的跟踪和记录,因而无法统计静态数据的测试覆盖率。

再比如,对于以某一架进站信号机为始端的所有进路中,最多只有一条进路能够开放U灯显示,其他进路的信号显示应均为UU或USU。否则必然存在信号显示升级的进路数据。

要想确认这一点,如果采用黑盒测试技术,则必须把所有以这架信号机为始端的进路全部办理一遍。对于大型枢纽车站,特别是变更进路较多的车站,这个过程显然需要耗费大量的时间。因此,黑盒测试技术对于某些类型的数据错误,其检出效率是比较低的。

4) 依赖于特定的测试环境,测试成本高

对安全软件进行测试时,往往需要配置专用的软件环境。如果需要在半实物仿真环境中进行测试,还需要专用的硬件环境,例如:二取二架构的安全计算机,各类专用的硬件板卡等。对于一些开通年限较长的车站,往往面临现有的测试环境与早期软件不兼容的困难,需要花费大量的人力、时间和费用才能恢复早期的测试环境。

5 在安全软件数据测试中引入静态分析技术

5.1 软件静态分析技术的概念

软件静态分析(Software Static Analysis)是指在不运行软件的情况下,通过词法分析、语法分析、控制流分析、数据流分析等技术对软件代码进行扫描,验证代码是否满足规范性、安全性、可靠性、可维护性等指标的一种代码分析技术。

软件静态分析工作既可以由程序员人工完成,即传统意义上的软件代码审核,也可以使用专用的工具软件完成,例如:Klocwork、LDRA Testbed等。软件代码规模较大,或结构比较复杂时,仅靠人工审核无法充分的分析全部代码,必须借助专业的工具软件。

5.2 软件静态分析技术的优势

借助专业工具软件对软件代码进行静态分析,与采用白盒动态测试及黑盒测试技术相比,有以下几方面的突出优势。

1)执行速度快、缺陷检出效率高

使用静态分析工具软件可以快速的发现一些导致功能异常或失效的软件代码缺陷,例如:内存泄漏、指针越界等。

而如果想在动态测试过程中发现这些缺陷,往往需要经过复杂、长时间的连续测试,甚至要靠运气。

2)可以检出潜在的缺陷或隐患

专业的静态分析工具软件都具备软件编码的质量度量功能,可以发现软件代码中潜在的质量缺陷或隐患,例如不可达分支、圈复杂度过高等。

3)可以灵活选择分析范围,针对性强

使用静态分析工具软件既可以对完整的软件代码进行分析,也可以对某一个源代码文件,甚至某一个最小的软件单元进行分析,针对性很强,从而可以在必要的时候节省大量的时间。

4)不依赖特定的测试环境,使用成本低

商品化的软件代码静态分析工具软件都可以运行在普通的桌面计算机中,不需要依赖特定的运行环境,使用成本很低。通过以上分析可以看出,静态分析技术的优势恰恰是黑盒测试技术的不足之处。如果将静态分析技术应用到安全软件的数据测试过程中,既可以解决多余数据难以检出的难题,又可以提高数据测试的工作效率。

但是,现有的商业化静态分析工具软件针对的目标都是软件代码,而不是配置数据,无法直接用于安全软件的配置数据。

此外,安全软件的配置数据数量通常非常庞大。以一个30组道岔的车站为例,其联锁软件中的数据就超过3万个。如此庞大的数据量,依靠人工审核的方式根本无法满足列车运行控制系统集成项目的工期和成本要求。在以往的工程实践中,通过黑盒测试的方式完成安全软件的数据测试工作后,会对个别的关键数据进行人工审核,以确认其配置数值与实测结果一致,但是数量非常有限。

因此,要想在安全软件的数据测试过程中应用静态分析技术,必须根据特定产品的数据结构定义,开发专用的数据静态分析工具软件。

5.3 数据静态分析技术的典型应用场景

在安全软件的数据测试过程中,有必要在以下场景中借助专用工具软件的支持,应用数据静态分析技术。

1)检出多余数据

有可机读的电子化输入文件(例如:Excel格式的电子联锁表及接口数据表)作为比对依据时,可以将配置数据与电子化输入文件进行直接比对,就能够快速、准确的发现超出输入文件规定范围以外的多余数据。

目前,各设计单位发布的列控工程数据表已经实现电子化和标准化,但是联锁表仍然维持着发布纸质工程图的方式,导致计算机联锁产品在应用数据静态分析技术和自动化测试技术方面存在着根本性的障碍。要解决这个问题,需要行业主管部门和各设计单位共同努力推动。

没有可机读的电子化输入文件作为比对依据时,可以通过数据静态分析工具软件将这些数据转换为便于人工阅读的按钮名称或继电器名称,在完成黑盒测试后,人工比对测试范围和配置数据的一致性。通过这种方式,也可以实现对多余数据的有效、快速检出。

例如:对于存在信号显示关系的列车进路,使用数据静态分析工具软件将相关的进路数据转换为办理进路的按钮名称及信号机名称。完成信号显示关系测试后,由测试工程师检查显示关系数据的配置是否与信号显示关系图或联锁表的要求一致。如果发现有超出设计范围的显示关系数据,则可以肯定为多余数据。

2)检出与输入文件不一致的数据

有可机读的电子化输入文件作为比对依据时,应用数据静态分析技术检出多余数据的同时,还可以检出缺失、错误、重复的数据。虽然这些类型的错误数据在进行黑盒测试时通常也能够发现,但使用数据静态分析工具软件可以大幅度的提高错误数据的检出效率。

3)相关数据的逻辑一致性检查

安全软件中的各个数据结构中配置的数据,相互之间是存在逻辑关系的。

例如:始端信号机相同的接车进路,其进路始端按钮的代码必然是相同的;构成长调车进路的各条基本调车进路必然是首尾相接的;TCC需要向TSRS发送状态的区段,其代码应当在TCC区段代码列表中存在。类似的例子还可以举出很多。

如果某些相关的配置数据存在逻辑不一致的情况,采用静态分析技术虽然不一定能直接检出错误数据,但是可以将错误数据存在的范围缩小到最低限度,再通过人工分析或测试就可以快速检出错误的数据。

4)配置数据的规范性检查

无论是从计算机编程语言的语法层面,还是安全软件的故障-安全防护措施层面,配置数据都需要遵循一些固有的、强制性的规则。

例如:配置数据的数量超出数据结构的定义长度时,在编译的过程中会报错,无法生成可执行文件。但是,当配置数据的数量小于数据结构的定义长度,即存在空位时,编译软件并不会报错,并且会将不足的数据自动补“0”。

但是,根据故障-安全防护措施的要求,“0”是不能作为占位数据的。因为在很多场景下,“0”本身是有效数据。为保证软件流程的正确性和功能的安全性,在数据配置规则中往往要求使用特定的数据作为占位数据,例如:0xff或0xffff。

但是,面对海量的数据,检查每个占位数据是否都配置为规定的数值,依靠人工是无法完成的,必须借助数据静态分析工具软件。

6 数据静态分析技术的特点及不足

6.1 应与黑盒测试技术配合使用

虽然数据静态分析技术有上述的诸多优点,但它也不是万能的。数据静态分析和软件黑盒测试是互补的关系,而不是替代关系。

这是因为,数据静态分析技术只能证明配置数据本身的完整性、正确性,以及与输入文件的一致性,并不能证明配置数据与软件代码之间接口的正确性。即使配置数据本身是正确的,如果使用这些数据的软件代码的逻辑是错误的,甚至根本没有使用这些正确的数据,那么最终实现的功能也不可能是正确的。

6.2 工具软件开发及维护工作量较大

要在安全软件的数据测试过程中应用静态分析技术,必须针对被测对象的数据结构定义以及数据配置规则,开发专用的工具软件。

而要开发这样的工具软件,需要解决以下几个难点。

1) 需要详细的数据配置手册作为开发工程师实现数据检查规则的依据。如果没有详细的数据配置手册,就需要开发工程师能够读懂安全软件使用这些数据结构的代码逻辑,或者在安全软件开发工程师的支持下进行开发。

2) 需要针对不同的数据结构编制有针对性的数据分析和检查需求,需求分析的难度和工作量较大。

3) 在发现错误数据后,工具软件需要给出准确、详细的错误描述,帮助相关人员快速分析或定位错误数据。

4) 需要根据集成项目的数据缺陷信息,不断扩充工具软件能够检查的数据错误模式,以持续满足集成项目的测试需求。

5) 安全软件升级后,可能增加新的数据结构,原有数据结构的定义或使用方式也可能发生变化,需要同时升级数据静态分析工具,软件的维护工作量比较大。

6.3 对测试人员素质要求较高

测试工程师需要熟悉每个数据结构中的每个数据项的定义和功能,熟悉数据的编制规则,才能对数据静态分析工具软件发现的数据错误进行准确的分析和定性。

与传统的黑盒测试技术只关注被测软件的输入和输出相比,对配置数据直接进行分析和审核,显然对测试工程师提出了更高的要求。

7 结束语

笔者所在的部门针对CBI、TCC产品的工程配置数据,应用数据静态分析技术,分别开发了专用的数据分析工具软件,并已在系统集成项目中推广使用,取得了良好效果。不仅显著提高了典型数据缺陷的检出效率,而且发现了很多采用黑盒测试技术难以发现的数据缺陷,有力保证了铁路信号安全产品的软件质量和安全性。

猜你喜欢

静态代码软件
禅宗软件
最新进展!中老铁路开始静态验收
静态随机存储器在轨自检算法
动得多,还要坐得少——评WHO《身体活动与静态行为指南》
工业软件 自主创新
猜猜他是谁
神秘的代码
一周机构净增(减)仓股前20名
一行代码玩完19亿元卫星
即时通讯软件WhatsApp