何少林 林健富
1)深圳防灾减灾技术研究院,广东深圳 518003 2)甘肃省地震局,兰州 730000
地震速报是对已发生地震基本参数(时间、地点、震级等)的快速测报(中华人民共和国国家质量监督检验检疫总局等,2008)。中国地震局于2013年4月开始正式向各省地震局和社会提供自动地震速报信息服务,其在线运行的自动地震速报软件系统包括了福建省地震局研制的大区域自动地震速报软件、广东省地震局研制的国家备份自动地震速报软件和中国地震台网中心研制的中国/全球地震台网自动地震速报软件。
目前,我国自动地震速报系统可在2min左右给出国内东部地区3.0级及以上地震、3min左右给出国内西部地区4.0级及以上地震较合理的地震基本参数,在10min左右给出全球大多数地区6.0级及以上地震较合理的地震基本参数(1)何少林,2015.“自动速报震级测定方法研究与实时运行监控软件研制”地震行业专项项目任务书. 内部资料.。同时该系统也存在一些不足之处,为了进一步提高自动地震速报系统的产出及时性、运行稳定性和结果合理性,福建省地震局、广东省地震局和中国地震台网中心对各自研制的自动地震速报软件进行了功能的扩充、计算方法的改进、计算流程的优化等完善工作,这些新的业务处理软件系统在正式上线使用前,均需要进行充分的测试,以保证处理软件系统的运行质量。
针对测震业务软件系统,国内开展的针对性测试工作较少。“十五”期间,在仪器质检中心曾经建设了测震专业软件测试与评估平台,其提供的测试方法是以真实地震波形的全数据回放,或计算真实地震的走时,测试评估被测软件(肖武军等,2011)。此方法的不足之处为: ①真实地震的震源位置很难准确确定,即使对同一地震进行编目分析,得到的震源位置也不是唯一的,因此采用其作为评测依据(期望结果)也难保证结论的客观准确;②不易对期望的震源位置,如对震源深度逐次仅相差1km的地震进行测试;③不能得到期望的台站分布方位均匀度,很难做到对软件全面测试;④不易对软件的自动震相识别和定位功能单独测试与分别评测;⑤无法很快构造期望的测试数据,无法实现快速测试。国外曾有学者也开展过类似工作,如针对地震预警系统ShakeAlert的测试和认证平台(TCP),其包括2种方式测试,即实时运行系统的实时原位测试和回放测试数据的离线回放测试。实时原位测试评估代码的优化和稳定性,离线回放测试进行代码的压力测试,以评估代码是否已做好生产准备(Cochran et al,2018;王红蕾等,2019)。
为了满足对新的自动速报软件功能和性能测试的需求,解决目前在测试工作中的不足,在地震行业专项“自动速报震级测定方法研究与实时运行监控软件研制”的任务中,研制了一种自动地震速报软件测试平台,尽可能多、尽可能早地发现自动地震速报软件存在的缺陷,协助其提升自动地震速报结果的合理性(何少林等,2019)。该测试平台于2018年2月22日通过中国地震局验收(2)中国地震局,2018. 关于公布2017年地震行业科研专项项目验收结果的通知(中震函〔2018〕28号). 内部资料.,其对地震预警软件的测试也有一定的借鉴意义。
一套软件的好坏、质量的优劣不仅取决于软件开发者,也取决于软件的合理测试。根据电气与电子工程师协会(IEEE)在1983年提出的定义,软件测试是使用人工或自动化手段运行或测定某个系统的过程,目的在于检验其是否满足规定的某个需求或是发现预期结果与实际结果之间的差别。软件测试的目的在于“发现错误”而不是“证明程序正确”,即使用最少的测试用例,尽可能多地发现错误。
依据IEEE对软件测试的定义,设计和实现了一套对自动地震速报软件的功能和性能进行测试、评价的软硬件平台——“自动地震速报软件系统功能和性能测试平台(Test_AERS)v1.0”(何少林等,2017),其架构框图如图1 所示。
图1 自动地震速报软件测试评价平台架构框图
测试平台包括基础信息维护、测试数据构建、数据信息交换、测试结果分析、系统管理等5个模块。其中,“基础信息维护”实现台站信息、地壳速度模型、地震事件波形数据等资源信息的维护,供系统创建测试案例时使用。“测试数据构建”实现在系统中根据需要对震相数据构建、对波形数据重构,形成测试案例数据,供各速报系统测试时使用。“数据信息交换”实现将构建好的案例数据推送至各被测速报系统,以供测试;并将被测速报系统产出的结果接收到测试平台。“测试结果分析”实现各被测系统产出结果的展示和比较分析。“系统管理”实现用户管理、单位管理、角色管理、字典管理、日志信息等模块,管理员可通过该模块添加用户、分配权限、维护字典信息、查看系统操作日志等。
测试平台与被测软件系统间的数据信息交换采用“消息总线”机制实现跨进程、异步、高可靠的通信,具体采用RabbitMQ方式,基于AMQP协议实现在不同的应用之间(跨平台、跨语言)共享数据。测试平台最主要的功能为:
(1)测试用例数据构建。构建期望的理论震相数据集、重构期望的实际地震波形数据集,将其提供给被测软件系统进行测试运行。
(2)功能和性能评价。对被测软件产出的结果进行分析,评估自动地震速报软件是否满足规定的需求,或是发现预期结果与实际结果之间的差别。
该平台的特点是可按需求快速构建测试用例,独立测试被测软件的震相识别功能、定位功能,提供相互的消息队列和流数据交换。
软件测试的目的是分析、给出软件的适用场景,不只是简单地评价好或不好,而要给出同一方法在不同条件下的优或劣,或不同方法在不同条件下的优或劣,为软件使用者提供使用条件建议。
本平台开发和使用的资源如下:
操作系统:Windows 2007及以上;
支持环境:NET Framework 4.0、ArcGis 10.2、Adobe Reader XI;
框架平台:Spring、Spring MVC、Hibernate+JPA;
开发工具软件:Eclipse2013、Microsoft Visual Studio 2010;
建模工具软件:Microsoft Visio 2010、PowerDesigner 16。
平台基于B/S架构,使用时通过浏览器的方式进行访问。本系统支持使用搜狐浏览器、谷歌浏览器、IE8及以上的浏览器等。为了得到更好的用户体验,推荐使用搜狐浏览器。
(1)按测试目的构建期望的测试用例数据。
(2)既包括输入的测试数据,也包括预期的输出结果。
(3)既包括合理的输入数据,也包括不合理的输入数据。
(4)构建尽可能少的测试用例,发现尽可能多的程序错误。注重测试用例的代表性或类型,而不仅仅是用例的数量。
(5)针对自动地震速报软件的自动震相识别、自动定位两大主要功能,构建两类测试用例数据,分别测试两大功能。
针对自动地震速报软件的测试,在具体的用例数据构建时,采用了以下构建方法:
(1)等价类划分法,包括有效等价类、无效等价类。
(2)边界值分析法,作为对等价类划分法的补充,不仅包括输入条件边界,也考虑输出域边界。
(3)错误推测法,基于地震速报经验推测程序中可能存在的各种错误,有针对性地设计测试用例。
理论震相数据构建的目的是构建期望的震相数据,以测试被测软件的定位功能和性能。
在平台的“自动速报系统功能和性能测试评价平台”界面,选择“理论震相数据构建”,可在GIS界面中完成以下构建过程:
(1)设定1个震源位置。在GIS界面下,在期望的震中空间位置点击,通过GIS功能支持,自动得到设定震中的经纬度以及缺省震源深度(10km),其中震源深度值可人工修改。此震源位置作为被测程序定位结果的期望输出。
(2)设定多个台站位置。在GIS界面下,在期望的台站空间位置点击,通过GIS功能支持,自动生成台站的经纬度、缺省高程(500m),其中台站高程值可人工修改。同时实时自动计算和显示设定的单个台站与震源间的震中距和方位角,以及全部设定台站的6个台站分布参数,即总台站数量、最小震中距、最大震中距、最大空隙角、最大次空隙角、台站分布方位均匀度(中国地震局,2016)。
(3)设定地球分层均匀速度模型或选择走时表。可选择平台内部提供的J-B走时表,或设定地球分层均匀速度模型,同时还可对每个台站震相设定走时随机扰动值。
(4)设定地震发震时刻。完成上述设定后,系统可自动生成符合地震编目规范要求的以下文件:①地震台站参数文件;②地震震相数据文件;③地球分层均匀速度模型或走时表;④震源位置参数;⑤台站分布参数(图2)。5个文件或记录之间通过唯一的震源代码内部关联。
图2 理论震相数据构建
图3 理论震中和测试程序反馈震中▲为地震台站;⊙为设定的震中;•为被测软件定位的震中
可对已设定的震源位置以及相关的多个台站数据(即测试历史数据)进行管理,包括删除设定震源位置、删除设定地震的每一个台站。
构建的数据文件①、②和③可通过平台“数据信息交换”功能,以MQ消息方式发送给测试软件,被测试软件接收到数据文件后进行定位处理,并将定位结果文件以MQ消息方式反馈给测试平台,供用户对被测软件性能进行分析。设定(期望)的地震震源位置和被测试软件反馈的震源位置可同时显示在GIS界面中,如图3 所示。
通过构建期望的理论震相测试数据,对设定(期望)的震源位置和被测软件反馈的震源位置进行比较,可对被测软件的定位功能进行以下方面的测试:
(1)对台站分布的适应性。可构建网内、网缘和网外3种类型地震,对每种类型地震又可构造多种不同分布方位均匀度的台站,如设置台站分布方位均匀度为0(均匀分布)、0.2、0.4、0.6、0.8和1.0(台站分布在同一方位上)等,实现尽可能全面地了解定位程序在多种情况下的适应性。
图4 波形数据重构
(2)对震相偏差的容错性。通过设定震相随机扰动值,如设置震相偏差为0.01s、0.02s、0.05s、0.10s、0.20s、0.50s、1.0s、1.5s、2.0s等,模拟震相识别偏差,可测试震相偏差对定位结果的影响程度,指导人工识别震相时允许的震相判别误差范围。
(3)台站高程差异对震源深度测定的影响。通过设定不同台站高程值,如台站高程为1000m、500m、200m、-50m、-100m、-150m、-200m、-250m、-300m等,可模拟不同高程的台站分布以及井下观测,分析台站高程差别、或若干个井下观测对定位震源深度的影响,指导井下台站建设时对台站数量和井深的选择。
(4)对震源深度的敏感性。通过多次设定同一震中、不同震源深度的地震,如10m、11m、12m、13m、14m、15m、16m、17m、18m、19m、20m等,对设定的震源深度和定位反馈的震源深度进行比较,可测试定位方法对震源深度的敏感性或分辨力。
地震波形数据重构是通过实际记录的地震波形文件删除部分台站,重构期望的台站分布,并重构地震波形数据,形成新的测试波形数据集,基于上述对被测软件定位性能的了解,进一步测试被测软件的震相识别性能以及震级计算性能。
地震波形数据重构以地震案例库(包括台站参数文件、地震目录数据、编目震相数据和地震波形数据)为支撑基础,提供以下波形重构功能:
(1)地震目录数据管理,包括各台站记录波形浏览、地震目录删除。
(2)波形数据重构,在浏览台站波形的基础上,考虑波形质量和信噪比,可标记不希望参加测试的台站,以构建符合期望台站分布参数的地震波形文件,见图4。
通过平台“数据信息交换”功能,将重构的台站参数文件和地震波形数据以文件和流方式发送给测试软件,被测试软件接收到数据文件后,再进行自动震相识别、定位处理、震级计算,并将产出的震相文件和定位结果文件以MQ消息方式反馈给测试平台,以对被测软件性能进行分析。
通过重构期望的地震波形测试数据集,可对被测软件进行以下方面的测试:
(1)自动震相识别能力,通过比较原有编目震相数据和被测软件反馈的震相数据,可测试其在不同信噪比情况下的自动震相识别能力以及具体的偏差值。
(2)震级计算能力,通过比较编目地震目录和被测软件反馈的结果文件,可测试其震级计算的合理性以及具体偏差值。
本平台基于B/S架构,使用时通过浏览器的方式进行访问。被测软件与平台之间通过RabbitMQ方式交换数据信息,无需安装其他软件。
本平台在试运行期间,对福建省地震局研发的大区域自动地震速报软件、中国地震台网中心研发的全国自动地震速报软件进行了多次测试。使用情况表明:系统自身运行稳定、正常,与被测软件之间信息交换通畅、信息解译正确。
以下为针对几个被测软件产出结果给出的示例。在示例中,被测程序包括福建省地震局研发的大区域自动地震速报软件(结果标记为“FJ”)、广东省地震局研发的国家备份中心自动地震速报软件(结果标记为“GD”)、中国地震台网中心研发的全国自动地震速报软件(结果标记为“CB”)。中国地震台网中心发布的自动速报结果标记为“AU”,人工正式速报结果标记为“CC”。
需要特别说明的是,示例结果仅仅是为了说明本测试平台具备的功能,其图中的结果不作为评价各被测软件功能或性能的依据,正式的被测软件测试结果需在相关部门的指定下才能得出。
可以分别对发震时刻、震中经度、震中纬度、震中偏差、震级和震源深度等6项结果进行比较。
由于自动地震速报软件允许同一个地震随接收台站数的增加可产出多个结果,因此,可对单个地震、多个程序的多个结果进行比较,见图5;也可对多个地震、多个程序的最终结果进行比较,见图6。
图5 单个地震、多个程序的多次震源深度结果
图6 多个地震、多个程序的最终结果
单个地震、多个程序的多个震级结果见图7;20个地震、多个程序的最终结果比较见图8。
图7 单个地震、多个程序的多个震级结果
图8 20个地震、多个程序的最终震级结果
表1 自动地震速报结果评分标准
本平台可对被测自动地震速报软件产出的结果进行打分,根据打分结果可比较不同的软件在不同的条件下的相对优劣,并将测试结果反馈给软件使用者,以便帮助其全面了解软件特点、关注软件使用场景,同时将测试结果反馈给软件研制者,以便使其有针对性地完善软件系统,提高软件质量。
本平台可对被测自动地震速报软件产出的发震时刻、震中偏差(体现震中经纬度偏差)、震级和震源深度等结果打分。对于自动地震速报,由于没有正式的评分标准,本平台编制了暂行的评分标准,并采用60分值,见表1。对于偏差太大的结果,最终得分也可能出现负分,仅表明不同被测软件之间的差异大小。
地震行业对自动地震速报软件的基本要求是少漏报、不误报、时效性快且结果合理,而自动地震速报软件质量的好坏不仅仅取决于软件开发者,也取决于软件的测试和合理使用。针对新研制或完善后的自动地震速报软件的功能和性能需要进行专门测试的必要需求,以及目前行业内相关测试方法或过程的不足,研制了一种自动地震速报软件测试平台。
该平台支持构建期望的震相数据,并同时给出期望的震源位置,可重构期望的地震波形数据等,能快速测试自动地震速报软件的以下特性:①定位方法对台站分布的适应性;②定位方法对震相偏差的容错性;③台站高程差异对震源深度测定的影响;④定位方法对震源深度的敏感性;⑤自动识别震相的能力;⑥震级计算的能力。
通过本平台的测试与评估,为用户客观了解自动地震速报软件的功能和性能特性给出具体依据,可给出自动地震速报软件“放心使用”、“慎重使用”和“不宜使用”的场景条件,也可为研制者完善软件给出参考方向,进而逐步提高软件质量。该平台的建设思路、测试数据构建原则和方法对人工交互地震速报软件、地震预警中相关软件的测试也有一定的借鉴意义。