李啟翮 董歡歡(北京全路通信信號研究設計院有限公司,北京 100073)

李啟翮,男,博士畢業于清華大學,高級工程師,測試試驗中心質量安全總監。主要研究方向包括鐵道信號、圖像處理與計算機視覺,曾參與武廣高鐵CTCS-3攻關組RBC組工作、國家科技支撐計劃課題無線閉塞中心的關鍵技術及裝備、鐵道部京滬RBC關鍵技術深化研究等項目。
IRIS是國際鐵路行業標準(International Railw ay Industry Standard)的縮寫,這是一套建立在ISO9001標準基礎上,由歐洲鐵路行業協會針對鐵路行業的特殊要求制定的一套質量管理體系標準。隨著我國高鐵事業的發展,為了更好地提高產品和服務質量、參與國內國際競爭,北京全路通信信號研究設計院有限公司于2011年實施了IRIS體系導入工作,并于2012年進行了修訂。
在新版IRIS體系中,為了進一步加強對產品研發流程的控制以提高產品質量,對《應用科研控制程序》做了較大修訂。
1)將產品研發的質量過程與原安全保障體系對安全產品的研發要求徹底融為一體,不再區分安全與非安全產品,統一按照相同的過程實施,統一使用原來只在安全產品研發中采用的“驗證”和“確認”概念;
2)將整個產品研發流程分為“項目立項”、“系統定義與項目計劃”、“風險分析”、“需求規范”、“設計與實現”、“系統測試”、“檢驗測試”、“試驗應用”、“系統確認”、“驗收結題”共10個階段(其中“風險分析”在各個階段都需持續進行),劃分更加合理,并且將項目組、技術管理、質量保證、安全確認的工作分別描述,使得整個過程更加清晰;
3)以新產品研發流程為完整過程,通過階段裁減得到既有產品修改、先期技術研究和軟課題3個副過程;
4)引入“質量門”的概念。若前后兩個階段間設置了質量門,則需要由質量保證工程師確認達到了開門條件。否則,禁止進入下一個階段的工作。
此外,由于進一步注意到測試工作在保障產品的質量方面的重要作用,新版程序文件加強了對產品測試的要求:
1)明確了測試工作從計劃階段就必須介入,與早期那種在開發完成之后才開始測試的過程(如瀑布式開發模型)相比,更加有利于節省時間并提高測試質量;
2)要求測試人員全部與開發設計人員獨立(EN 50128:2001允許在安全完善度為SIL0級的產品研發中,開發者與測試者不獨立,但EN 50128:2011提高了獨立性的要求,不再允許開發者與測試者相互兼任);
3)整個研發流程中一共設置了4個質量門,第一個質量門就設置在設計與實現與系統測試之間,并明確了系統測試作為確認測試的地位。
為更好地指導測試人員的工作,有必要對流程中的測試工作過程進行研究,使之與產品研發的主流程能夠緊密結合,進一步確保所交付的產品質量。本文針對“系統測試過程”從人員角色、子過程的劃分、工作任務等方面進行探討,提出一個適應IRIS體系產品研發流程的系統測試過程。
在《應用科研控制程序》中,除用戶驗收測試外,測試活動被分為3類(不包括試驗類活動):模塊測試、集成測試、系統測試。
模塊測試是針對硬件或軟件的最小功能模塊進行的測試,用以驗證該模塊的功能、接口的正確性。
集成測試包括軟件集成測試、硬件集成測試以及軟硬件集成測試等多個級別,其方法均是將各個模塊集成在一起,對模塊之間的接口、交互功能進行測試,以確保能向系統測試階段提交一個可運行的被測系統。
系統測試是針對系統需求的測試,目的是確認系統是否滿足規定的所有需求,是系統確認的重要手段之一。
所謂驗證,指通過檢查和提供客觀依據,證實規定的需求已經得到滿足(即是否正確的構造了產品)。在質量過程中,要求在每個階段均實施驗證活動。驗證分為動態驗證和靜態驗證兩類方法,后者指評審、分析及文檔檢查的方法,前者采用測試與演示的方法。因此,系統測試本身也是系統測試階段的驗證測試。
所謂確認,指通過檢查和提供客觀依據,證實特定預期用途的需求是否得到滿足(即是否構造了正確的產品)。根據IR IS的要求,產品研發后必須對整個系統進行確認。確認過程中需要進行相應的測試作為確認的輸入,以幫助確認系統滿足需求,這類測試稱為系統確認測試,在安全產品研發流程中,若系統測試經過了確認工程師的見證和確認,即可作為系統確認測試,對于非安全產品的研發,通常默認以系統測試作為系統確認測試。
由于系統測試在系統驗證和確認中都承擔著重要的作用,因此必須制定規范化的測試過程,以確保測試質量。
本節通過研究整個系統測試過程所需要做的工作,辨識其與設計開發過程之間的關系,并考慮所必須的輸出,首先對測試任務組內人員的角色進行識別,然后將整個系統測試過程劃分為數個子過程分別描述。
在整個項目組中,設置一個與開發組獨立的測試組,組內人員可以劃分為3類。
3.1.1 測試負責人
對整個測試工作負責,包括測試的計劃、過程以及最后的報告,還負責與項目負責人、開發者、確認者等項目組內其他角色的溝通協調。
3.1.2 測試工程師
在測試負責人的領導下負責實際的測試工作的執行,包括測試設計、測試執行等工作。
3.1.3 測試環境工程師
負責構建、配置特定的測試平臺、工具、設備等測試環境。
在實際實施中,階段與流程并非是同一概念,盡管系統測試是在設計與實現之后才開始,但系統測試過程必須從系統定義與計劃就介入項目工作,以確保測試人員更好的理解系統及其需求,提高測試質量。
根據系統測試全過程在產品研發流程不同階段所執行的工作性質,將整個測試過程劃分為“測試計劃”、“測試規范”、“測試執行”和“測試報告”4個子過程。

由圖1可以看出,系統測試過程開始于系統定義與項目計劃,結束于系統測試(由于風險分析實際上貫穿于整個產品研發流程中,因此未單獨體現),除測試規范子過程中的測試環境規范部分跨越兩個階段外,其余子過程都在一個階段內結束。測試執行子過程由于測試結果會導致產品的修改,因此可能會執行多次,還會導致《測試計劃》及《測試規范》等文檔的更新。模塊測試和集成測試都在設計與實現階段進行,由于不屬于系統測試層級,此處采用了不同的顏色顯示。下面將分別對4個子過程進行描述。
3.2.1 測試計劃子過程
《測試計劃》是在項目計劃階段所需制定的眾多計劃之一,其目的如下。
1)規劃測試過程中的所有行動及明確測試的范圍;
2)指導測試如何開展,規定要使用的測試策略、過程、方法、工具與模板;
本子過程又可分為兩個階段:總體測試計劃和每個測試層級的測試計劃。
《總體測試計劃》涵蓋項目中所有層級的測試,并對這些測試進行協調,以優化測試過程。
各個層級的《測試計劃》則根據該層級具體的測試要求撰寫,若包含的測試層級較少或測試較簡單,也可僅編制一個測試計劃包含多個測試層級,例如,當僅關注系統測試層級時,只需編寫涉及系統測試的《測試計劃》即可。本子過程所包含的主要活動階段如圖2所示。

本子過程的輸入包括:項目計劃、安全計劃、質量計劃、系統定義等。通常,測試計劃應包含如下內容。
1)對被測對象的描述,所用的測試度量;
2)測試活動的進入/退出準則、掛起/恢復準則;
3)所包含的測試層級,該層級所涉及的測試范圍、目標、測試方案、測試環境、工具、配置、地點等;
4)測試人員組織結構、測試活動的時間表;5)整個測試過程所需提交的文檔。
3.2.2 測試規范子過程
此子過程包含兩個部分的內容:測試規范與測試環境規范,其輸入包括所有需求、計劃文檔以及相應標準、規范。
測試規范部分需進行如下活動。
1)對作為測試基礎的需求規范和其他規范進行可測性檢查;
2)編寫測試案例(Test Cases);
3)建立系統需求與測試案例的追溯矩陣,并確保達到所需的測試覆蓋率;
4)確定測試數據;
5)開發測試腳本;
正因為要對需求規范進行可測性檢查,所以測試規范活動必須在“需求規范階段”完成,該活動可能導致需求規范的更新。而測試環境規范活動則可以持續到測試執行活動開始之前,在測試執行開始之后還需要對所搭建的測試環境進行支持與維護。該部分所必須進行活動包括內容如下。
1)設計測試環境構建方案;
2)完成測試環境的構建與驗證確認,并進行支持與維護;
3)描述測試環境的使用方法。
圖3提供了對本子過程的簡要示意。

3.2.3 測試執行子過程
當被測對象完成集成測試,通過第一個質量門后,即可進入“系統測試階段”,根據《測試規范》和《測試環境規范》執行測試。測試執行通常并非一次性過程,往往由多個輪次組成,其中每個輪次所完成的活動基本一致。之所以需要多個輪次,原因主要分為兩類。
1)根據開發計劃,產品的功能采用迭代開發方式,分段實現,測試也相應的需要分輪次完成;
2)測試執行過程中發現了被測對象的缺陷(NCR),導致了代碼實現、設計、甚至是需求的修改變更,當修改完成后需要再次提交測試。
由于測試執行的這個特點,本子過程可能導致一系列文檔的更新,包括以下內容。
1)輪次增加導致測試計劃的變更;
2)測試結果導致的設計甚至需求文檔的變更;
3)案例執行過程中發現案例的錯誤導致的測試規范的變更;
4)測試執行中發現測試環境存在的問題導致的測試環境規范的變更。
圖4是單輪測試執行子過程的簡要描述。執行測試之前應當先對被測對象相關資料進行檢查,包括案例、腳本、數據、環境、文檔的準備情況、所交付過來的被測對象、上一輪測試的遺留項等,并對本輪測試的范圍、時間等進行計劃,然后開始正式執行測試。測試結果,報告當前的狀態,例如一輪測試后的該輪測試報告;

2)測試迭代報告:當項目采用迭代開發時,每次迭代都需要一個測試報告,測試報告更新的次數應與迭代次數相同,每次更新都加入新一次迭代的結果,最后一次迭代的測試報告,就是最終的測試報告;
3)最終測試報告:測試的最后階段完成的報告,包括對所有執行的測試的結果及其統計分析,對產品質量的評價以及對測試過程的評估等。
每個測試案例的結果應真實記錄,如發現缺陷則須提交缺陷報告(NCR)。當本輪測試完成之后,應對測試結果進行評估,分析系統剩余的風險,以確定測試是否達到了預期目標從而可以終止,提交本輪測試報告(若測試目標已經達到,則提交最終測試報告,見3.2.4)。
3.2.4 測試報告子過程
《測試報告》的主要用途是提供項目測試的結果,通常分為3種。
1)階段測試報告:根據測試計劃、系統風險和

如圖5所示,欲編寫《測試報告》,首先應收集所有的測試記錄、各輪測試報告、NCR、測試所用的時間、人力、物力、執行的案例數量等數據;然后分析測試過程中發現的全部NCR、系統剩余風險,以確定是否達到了測試的目標、可以終止測試;在此基礎上,撰寫《測試報告》。完整的報告應包括如下方面。
1)測試的目的、范圍;
2)用到的測試環境、工具;
3 用到的方法、技術,及執行中所遇到的任何問題;
4)結果的記錄,包括測試案例執行結果的真實記錄以及執行的案例數、剩余的案例數、發現的NCR數、測試環境的問題數等;
5)結果分析,包括對案例的統計及對需求的覆蓋分析、NCR的統計分析、遺留項分析以及對不可測需求的說明等;
6)測試結論,包括測試是否按計劃、規范完成,執行是否充分,測試目標是否完成等信息。
在測試結束后,宜對整個測試過程進行評估和總結,為后續項目積累經驗。
隨著產品功能的日益復雜,如何保證所研發的產品質量成為一個嚴峻課題,系統測試作為確保所交付產品質量的重要手段之一,其理論、技術、方法、流程等各方面的研究都受到日益顯著的重視。本文提出了一個適應于IR IS要求的系統測試過程,并進行了詳細描述,為測試工程師的工作提供參考。
需要指出的是,系統測試過程是整個產品研發流程中的一個子流程,需要與開發、驗證、確認等其他子流程相互協調,不能孤立的分隔開來。
此外,本文提出的測試過程也并非只能用于產品研發的系統測試層級,其4個子過程的劃分方式對于其他層級的測試也同樣適用,測試計劃子過程中的總體測試計劃的存在也證明了這一點,實際操作中只需根據具體的測試層級進行適當的裁減或修正即可。