張 成 何少林
1)中國黑龍江 161000 黑龍江省地震局齊齊哈爾地震臺
2)中國蘭州 730000 甘肅省地震局
3)中國廣東 518003 深圳防災減災技術研究院
地震速報是對已發(fā)生地震的時間、地點、震級等的快速測報。隨著測震臺網(wǎng)數(shù)字化和網(wǎng)絡化的實現(xiàn),以及測震臺站密度的增加、計算機處理能力的提高和地震數(shù)據(jù)處理方法的改進,人工地震速報用時大幅度縮短。目前,人工速報地震平均用時:國內(nèi)地震約10 min,國外地震約20 min。自動地震速報也已于2013 年實現(xiàn)向各省地震局和社會提供地震速報信息的服務。在我國,可在2 min 左右給出國內(nèi)東部地區(qū)3.0 級及以上、3 min左右給出國內(nèi)西部地區(qū)4.0 級及以上地震較合理的地震速報結果(楊陳等,2010,2012,2014;吳永權等,2011)。目前我國地震速報過程執(zhí)行自動地震速報、省級地震臺網(wǎng)中心人工初報、國家地震臺網(wǎng)中心人工正式報的三級協(xié)同(或三階段)工作的速報產(chǎn)出體系①中國地震局.地震速報技術管理規(guī)定(2015 年修訂版)(中震測發(fā)〔2018〕51 號).2015.。地震速報時間的縮短,為政府和社會有效應對地震災害提供了強有力的信息支持。
測震臺網(wǎng)建設完成后,其地震速報結果的時效性、合理性和穩(wěn)定性主要取決于地震速報軟件,可以說,地震速報軟件質(zhì)量的好壞,直接影響了地震速報結果。而地震速報軟件的質(zhì)量,不僅取決于軟件開發(fā)者,也取決于軟件的全面測試。我國對地震速報軟件測試工作開展的研究不多,可供使用的工具和平臺較少?!笆濉逼陂g,曾在儀器質(zhì)檢中心建設測震專業(yè)軟件測試與評估平臺(肖武軍等,2011),其提供的測試數(shù)據(jù)是以真實地震為基礎,存在一定不足之處,加之其他原因等,該平臺的實際使用有限。目前,地震速報軟件測試主要指開發(fā)人員進行的單元測試、集成測試和系統(tǒng)測試,軟件質(zhì)量評定往往由開發(fā)人員的保證確定,而由專業(yè)測試人員和用戶/客戶進行的系統(tǒng)測試與驗收測試則相對簡單且不規(guī)范。
筆者曾負責或參與多個地震業(yè)務軟件驗收測試工作,認為地震業(yè)務軟件測試尚存在不足之處②何少林.一種地震自動速報軟件測試平臺研制.2020.:①缺乏行業(yè)軟件的管理體系,難以保證專用軟件測試的規(guī)范性;②測試投入時間較短,一般僅2—3 天,且需保留足夠時間編寫軟件測試報告,軟件驗收測試內(nèi)容往往不完備,測試用例也以用戶提供數(shù)據(jù)為主,難以進行較全面的功能和性能的詳細測試;③缺少必要的支持工具或平臺,主要是以現(xiàn)有數(shù)據(jù)運行被測軟件,難以進行各種典型應用場景的模擬測試;④缺少相應的測試指標體系或評估打分標準,難以與類似軟件進行比較測試。基于此,地震速報軟件測試的相關研究和工作亟待加強和規(guī)范,借以促進地震速報軟件質(zhì)量的提高,為地震速報數(shù)據(jù)處理提供高質(zhì)量軟件支撐。
軟件測試的定義有多種,比較權威的定義由IEEE 于1983 年提出:“軟件測試是使用人工或自動化手段運行或測定某個系統(tǒng)的過程,其目的在于檢驗它是否滿足規(guī)定的某個需求或是發(fā)現(xiàn)預期結果與實際結果之間的差別”。即軟件測試是為了發(fā)現(xiàn)錯誤而執(zhí)行程序的過程,也可以說,軟件測試是根據(jù)軟件開發(fā)各階段的規(guī)格說明和程序的內(nèi)部結構而精心設計一批測試用例,并用它們?nèi)?zhí)行程序,以發(fā)現(xiàn)程序錯誤的過程。軟件測試是在軟件投入使用前,對軟件的需求分析、設計規(guī)格說明和系統(tǒng)編碼的最終復審。
測試的關鍵在于“發(fā)現(xiàn)錯誤”而不是“證明程序正確”,即使用最少的測試用例,盡可能多地發(fā)現(xiàn)錯誤?!队嬎銠C軟件測試規(guī)范》(GB/T 15532—2008)指出,軟件測試的目的是:①驗證軟件是否滿足軟件開發(fā)合同或項目開發(fā)計劃、系統(tǒng)/子系統(tǒng)設計文檔、軟件需求規(guī)格說明、軟件設計說明和軟件產(chǎn)品說明等規(guī)定的軟件質(zhì)量要求;②通過測試,發(fā)現(xiàn)軟件缺陷;③為軟件產(chǎn)品的質(zhì)量測量和評價提供依據(jù)。
據(jù)悉,美國每年因軟件Bug 面臨近600 億美元的經(jīng)濟損失。歷史上典型的、具有毀滅性軟件Bug 的例子較多,如:1987 年華盛頓因程式交易引起股票系統(tǒng)崩盤,1 天就損失5 000 億美元;1991 年海灣戰(zhàn)爭,由于軟件的舍入錯誤,美國愛國者導彈系統(tǒng)未能及時發(fā)現(xiàn)和攔截飛入伊拉克境內(nèi)的飛毛腿導彈,造成28 名士兵死亡;1999 年因千年蟲Bug,損失5 000 億美元;2000 年因愛蟲病毒,損失87.5 億美元③截至2014 年全球最具毀滅性的20 個軟件Bug.http://www.idcps.com/news/20141017/78642.html.。基于如此嚴重的教訓,在軟件業(yè)較發(fā)達的國家,軟件測試不僅成為軟件開發(fā)的一個有機組成部分,而且在軟件開發(fā)的系統(tǒng)工程中占據(jù)著相當大的比重。以美國的軟件開發(fā)和生產(chǎn)的平均資金投入為例,通常是“需求分析”約占3%、“規(guī)劃確定”約占3%,“設計”約占5%,“編程”占約7%,“測試”約占15%,投產(chǎn)和維護占60%—70%,可見測試在軟件開發(fā)中的地位。僅就“編程”和“測試”過程看,“測試”的平均資金投入約為“編程”的2 倍。更廣泛的統(tǒng)計表明,軟件測試工作量一般占軟件開發(fā)總工作量的40%以上,測試經(jīng)費占軟件開發(fā)總經(jīng)費的30%—50%,測試人員和開發(fā)人員的比例約為1.5—2.5(陳春玲等,2002)。例如,在Windows 2000研發(fā)團隊中,測試人員約1 800 人,開發(fā)人員約900 人、測試人員與開發(fā)人員比例為2.0:1.0。
一個軟件的好壞和質(zhì)量的優(yōu)劣不僅取決于軟件開發(fā)者,還取決于軟件測試。軟件測試是提高軟件質(zhì)量的重要環(huán)節(jié),貫穿于軟件項目的整個生命過程。
按照《軟件產(chǎn)品分類》(GB/T 36475—2018)規(guī)定,測震軟件分類號為C.2.13,其中“C”標識“應用軟件”,“2”標識“行業(yè)應用軟件”,“13”標識“其他行業(yè)應用軟件”。根據(jù)測震軟件在應用中的重要性、使用范圍、結果的影響等因素,可將測震軟件分為關鍵性軟件(暫定分類號為C.2.13.1,簡稱“Ⅰ”類)、一般性軟件(暫定分類號為C.2.13.2,簡稱“Ⅱ”類)。Ⅰ類軟件是指大范圍使用的,或產(chǎn)出結果影響范圍較大,或產(chǎn)出結果作為其他地震科學研究基礎資料的軟件或軟件系統(tǒng)。Ⅱ類軟件指其產(chǎn)出結果不會造成重大的,或廣泛的政府、社會和行業(yè)影響,或其結果不會對行業(yè)發(fā)展造成影響,或不會造成后續(xù)處理錯誤的軟件或軟件系統(tǒng)。
在具體劃分時,符合以下條件之一的測震軟件可認為是Ⅰ類軟件:①在5 個或以上省地震局測震臺網(wǎng)正式使用的軟件;②在20 個或以上地震臺站正式使用的軟件;③省地震局測震臺網(wǎng)/中國地震臺網(wǎng)中心在線運行的地震速報(含自動和人機交互)、地震編目、地震烈度速報、地震預警等軟件;④在地震行業(yè)內(nèi)提供觀測數(shù)據(jù)存貯、交換、服務的軟件;⑤對外提供信息公共服務的軟件,如地震應急產(chǎn)品產(chǎn)出軟件、地震信息發(fā)布軟件、地震信息公開展示軟件等。
從測震業(yè)務軟件分類看,地震速報軟件屬于Ⅰ類軟件。對于Ⅰ類軟件,至少應建立軟件產(chǎn)品的供方(含開發(fā)方、維護方)、業(yè)務管理方和用戶方(含質(zhì)量保證管理者、操作方)構成的管理組織,明確各自的責任要求。各方的責任至少包括但不限于以下內(nèi)容。
(1)供方。供方應提供軟件開發(fā)過程形成的有關材料,包括系統(tǒng)需求分析、軟件需求分析、軟件體系結構設計、軟件詳細設計、源程序、可執(zhí)行程序、軟件安裝說明、軟件使用說明、軟件更新(升級)與維護說明、軟件單元測試文檔、軟件集成測試文檔、軟件配置項測試文檔、合同授權的系統(tǒng)測試的文檔、軟件遷移文檔等(GB/T 8566—2007)。相關測試文檔的內(nèi)容應符合《計算機軟件測試規(guī)范》(GB/T 15532)要求。
(2)業(yè)務管理方。需方管理部門管理軟件的系統(tǒng)測試、Ⅱ類軟件的驗收測試、軟件試運行、軟件使用培訓、軟件運行;行業(yè)業(yè)務管理部門管理與Ⅰ類軟件有關的驗收測試組織、認證、在線運行許可、軟件退役。
(3)用戶方。用戶方負責軟件安裝、試運行、正式運行,提供軟件的運行文檔,包括軟件改進建議。Ⅰ類軟件應有3 個及以上用戶試運行文檔。
地震速報軟件供方應提供文檔作為驗收測試時文檔評價的材料。文檔應包括表1 中所列信息,但不限于所列信息。表1 中標“*”為應有內(nèi)容。
表1 地震速報軟件信息表Table 1 Information table of rapid earthquake information report software
軟件測試包含多方面內(nèi)容,文中重點從文檔和軟件功能、性能和易用性方面探討自動地震速報軟件的測試問題。
軟件文檔是軟件使用和維護過程中的必備資料。文檔能提高軟件開發(fā)效率,保證軟件質(zhì)量,而且在軟件使用過程中具有指導、幫助、解惑的作用,尤其在維護工作中,是不可或缺的資料。
文檔檢查主要是檢查文檔的正確性、完備性和可理解性。正確性是指不要將軟件功能和操作寫錯,也不允許文檔內(nèi)容前后矛盾。完備性是指文檔不可以“虎頭蛇尾”,更不許漏掉關鍵內(nèi)容。文檔中諸多內(nèi)容對開發(fā)者可能是“顯然”的,但對用戶而言不見得都是“顯然”的。軟件的可理解性是理解計算機程序、規(guī)程、相關文檔和數(shù)據(jù)的難易程度??蓞⒄毡?所列內(nèi)容進行文檔檢查。
功能測試又稱正確性測試,就是對產(chǎn)品的各功能進行驗證,檢查軟件的功能是否符合規(guī)格說明,是否按照項目任務書的要求,完成任務書要求實現(xiàn)的功能。由于正確性是軟件最重要的質(zhì)量因素,所以其測試也最重要。
功能測試可根據(jù)功能測試用例,逐項測試,檢查產(chǎn)品是否達到用戶要求的功能。功能測試也叫黑盒測試或數(shù)據(jù)驅(qū)動測試,只需考慮需要測試的各個功能,不需要考慮整個軟件的內(nèi)部結構及代碼。一般從軟件產(chǎn)品的界面、架構出發(fā),按照需求編寫測試用例,輸入數(shù)據(jù)在預期結果和實際結果之間進行評測,進而提出使產(chǎn)品達到用戶使用的要求。
在功能測試中要考慮軟件的容錯性。容錯性主要檢查系統(tǒng)的容錯能力,檢查軟件自身在異常條件下是否具有防護性措施或者某種災難性恢復手段,是檢查軟件在異常條件下的行為。容錯性好的軟件能確保系統(tǒng)不發(fā)生無法意料的事故。容錯性測試通常構造一些不合理的輸入來誘發(fā)軟件出錯,例如:①輸入錯誤的數(shù)據(jù)類型;②輸入定義域之外的數(shù)值等。
可按照表2 所列指標對軟件進行功能測試。功能測試的產(chǎn)出有:①功能完成情況:全部完成、部分完成比例、偏離情況;②總體評價:根據(jù)功能整體完成情況、主要功能完成情況給出總體評價。
功能評價主要檢查是否具有以及其適應范圍。自動地震速報系統(tǒng)的功能包括多個方面,這些功能根據(jù)工作的重要性可分為基本功能和擴展功能?;竟δ苁亲詣拥卣鹚賵筌浖仨毦邆涞墓δ?,見表2 中一級功能的第1—5 項。擴展功能是可選擇的功能,見表2 中一級功能的第6—20 項。
表2 軟件功能測試Table 2 Software function test
續(xù)表2
性能測試是為了驗證系統(tǒng)是否達到用戶提出的性能指標,同時發(fā)現(xiàn)系統(tǒng)中存在的性能瓶頸,起到優(yōu)化系統(tǒng)的目的。通常驗證軟件的性能在正常環(huán)境和系統(tǒng)條件下重復使用是否仍能滿足性能指標。系統(tǒng)性能主要體現(xiàn)在處理響應時間的長短上,執(zhí)行同樣任務時新版本不比舊版本慢。性能測試一般還檢查系統(tǒng)記憶容量在運行程序時會不會出現(xiàn)內(nèi)存泄露。
測試要點:①軟件性能測試是在功能測試完成后進行的;②軟件性能測試的計劃、方案,一般與測試用例統(tǒng)一在一個文檔里;③測試環(huán)境應盡量與用戶環(huán)境保持一致;④軟件性能測試一般使用測試工具,由測試人員編制測試腳本來完成,軟件性能測試的環(huán)境應單獨運行,盡量避免與其他軟件同時使用;⑤軟件性能測試的重點在于前期數(shù)據(jù)設計與后期數(shù)據(jù)分析;⑥軟件性能測試用例主要涉及整個系統(tǒng)架構的問題,所以測試用例一旦生成,改動一般不大,但是如果某個功能有較大修改,軟件性能測試也應重新進行測試;⑦軟件性能測試指標的來源:測試依據(jù)是產(chǎn)品需求規(guī)格說明書;如果用戶未提出性能指標,則根據(jù)用戶需求、測試設計人員的經(jīng)驗來設計各項測試指標。
自動地震速報系統(tǒng)軟件的性能測試主要是對自動地震速報涉及的2 個主要環(huán)節(jié)(震相自動識別、自動定位),以及產(chǎn)出結果的時效性、穩(wěn)定性、合理性等進行評價。
通過性能測試,綜合分析給出軟件的適用場景。不是簡單的好與不好,應是同一方法,在不同條件下的好與不好;不同方法,在相同條件下的好與不好。
根據(jù)自動地震速報軟件系統(tǒng)的特點,結合功能要求,提出如下性能評價指標,見表3,其中自動地震速報得分100 分,可參照表4 打分。
表3 軟件性能測試Table 3 Software performance test
表4 自動地震速報得分(100 分)Table 4 Automatic rapid earthquake information report score (100)
關于軟件的易用性問題,可按照一級指標、二級指標進行分級測試,對軟件安裝、維護、升級和遷移進行評價,具體測試內(nèi)容見表5所示。
表5 易用性測試Table 5 Usability test
針對地震速報專用軟件測試的現(xiàn)狀,討論了測震業(yè)務軟件進一步細分類的參考依據(jù),提出了構建地震速報軟件管理組織的建議,給出了地震速報軟件的內(nèi)容信息表。以自動地震速報軟件測試為例,從文檔檢查、功能測試、性能測試、易用性測試等提出了測試的內(nèi)容,并給出了自動地震速報結果評分表。
文中針對地震速報專用軟件測試提出的建議和內(nèi)容具有一定操作性,可在實際工作中參考使用。鑒于地震行業(yè)軟件測試相關研究和規(guī)范性工作的不足之處,文中提出的內(nèi)容尚需在今后實踐中不斷補充和修改,以達到軟件測試促進軟件質(zhì)量提高的最終目的。