趙 嚴(yán),宋文愛,張日飛,張紫芫,張 靜
(1.中北大學(xué)軟件學(xué)院山西省軍民融合軟件工程技術(shù)研究中心,太原 038507;2.北方自動控制技術(shù)研究所,太原 030006;3.南京郵電大學(xué)通達(dá)學(xué)院,江蘇 揚州 225127)
軟件測試是軟件工程中一個必不可少的重要組成部分。在軟件工程基本原理指導(dǎo)下的軟件開發(fā)流程包括需求分析、概要設(shè)計、詳細(xì)設(shè)計、編碼、測試、交付、驗收和運行維護(hù)等環(huán)節(jié),其中軟件測試不僅能對軟件的質(zhì)量進(jìn)行評價,而且是軟件質(zhì)量保證的重要手段之一[1]。
遵從《GJB 5000A-2008 軍用軟件研制能力成熟度模型》和《GJBZ 141-2016 軍用軟件測試指南》標(biāo)準(zhǔn)的軍用軟件測試過程,包括測試工程過程、測試項目管理過程、測試支持過程和測試組織過程,構(gòu)成了完整的軟件測試生命周期。對于軍用軟件來說,軟件質(zhì)量直接影響武器的質(zhì)量和軍事行動的成?。?],所以軟件測試的質(zhì)量顯得尤為關(guān)鍵,而測試過程的質(zhì)量又直接決定了測試結(jié)果的質(zhì)量[3]。目前,我國軟件測評實驗室獲取到國家和軍方認(rèn)證的已經(jīng)達(dá)到300 多家[4],軟件測試工作實施過程中各項活動的生命周期,目前主要還是由測評實驗室的測評人員進(jìn)行人工驅(qū)動。如何對軟件測試的生命周期進(jìn)行更高效的管控,以提高測試效率和測試質(zhì)量,是目前國內(nèi)外學(xué)者研究的重要課題。為此,參考項目管理和控制論的相關(guān)思想、軍用軟件測試的相關(guān)技術(shù)方法,提出了一種基于平臺支撐流程驅(qū)動的軍用軟件測試過程實施模型。
在《GJB 5000A-2008 軍用軟件研制能力成熟度模型》和《GJBZ 141-2016 軍用軟件測試指南》指導(dǎo)下的完整的軍用軟件測試過程體系,應(yīng)當(dāng)包括測試項目管理過程、測試工程過程、測試支持過程和測試組織過程。
在《GJBZ 141-2016 軍用軟件測試指南》指導(dǎo)下,軍用軟件測試的工程流程可分為測試需求分析、測試策劃、測試設(shè)計與實現(xiàn)、測試執(zhí)行和測試總結(jié)5 個階段,每個階段又包括一系列具體的活動和要素,構(gòu)成了一個完整的工程生命周期,參見表1。
表1 測試工程過程
項目管理是管理學(xué)的一個分支學(xué)科,所謂項目管理,就是項目的管理者,在資源有限的限制條件下,運用相關(guān)的工具、方法、理論等,對項目中所涉及到的全部內(nèi)容進(jìn)行有效的監(jiān)測和管控,最終實現(xiàn)項目的期望和需求的過程[5]。
軟件測試項目具有很多的不確定因素,而項目管理,從本質(zhì)上來講,就是一個不斷整合、不斷平衡的過程,因此,對于軟件測試項目非常適用[6]。軟件測試項目管理的內(nèi)容包括策劃管理、成本管理、進(jìn)度管理、資源管理和風(fēng)險管理[7]。
測試支持過程,是指測試方依據(jù)他們所支持的測試目標(biāo),所從事的一系列相關(guān)活動的集合,最終有利于測試結(jié)果質(zhì)量的提升。主要包括文檔編制過程、配置管理過程、過程和產(chǎn)品質(zhì)量保證過程、審核過程等。
組織過程,主要目的是為了創(chuàng)建與維護(hù)組織可用的測試過程資產(chǎn)和工作環(huán)境標(biāo)準(zhǔn)。通過采集各個項目的有用信息,不斷累積過程資產(chǎn),從而推動組織標(biāo)準(zhǔn)過程得到持續(xù)改進(jìn),最終可以使組織長期受益。該過程主要包含培訓(xùn)、環(huán)境、資源、人員、工具等內(nèi)容。
測試工作中涉及到的工作角色如表2 所示。
表2 工作角色表
傳統(tǒng)的軟件測試過程主要由人工進(jìn)行驅(qū)動,各項工作主要由人來負(fù)責(zé),其特點是主觀性較強(qiáng),同時人為控制的靈活性較強(qiáng),在要求不太嚴(yán)格的小型測試項目上尚且適用。但是在過程規(guī)范、要求嚴(yán)格的大型軍用軟件測試過程項目中,如果依然由人工進(jìn)行驅(qū)動,容易造成進(jìn)度失調(diào)、資源浪費、過程不受控等局面,導(dǎo)致計劃于實際偏差過大,最終導(dǎo)致項目失敗。
控制反轉(zhuǎn)(IOC)不是一種技術(shù),只是一種思想,所謂控制反轉(zhuǎn),就是控制權(quán)的轉(zhuǎn)移[8]。由于人工驅(qū)動的局限性,我們希望將測試過程的控制權(quán)從人轉(zhuǎn)移到流程,從人工驅(qū)動轉(zhuǎn)化為流程驅(qū)動。
通俗地講,流程是具有起點和終點的、有嚴(yán)格先后順序的一系列業(yè)務(wù)活動的組合。它具有明確的輸入資源,通過一系列增值過程,最終轉(zhuǎn)化為有價值的輸出結(jié)果[9]。它主要關(guān)注誰做了什么事,產(chǎn)生了什么結(jié)果,傳遞了什么信息給誰。
流程驅(qū)動,就是以流程為中心,將所需要的業(yè)務(wù)活動進(jìn)行組合,并明確輸入和輸出,從而使得這些業(yè)務(wù)活動以流程的方式有序開展,最終達(dá)到所期望的目標(biāo)[10-11]。
閉環(huán)控制的概念來源于控制論,具體是指系統(tǒng)在運行過程中,將控制信息輸向受控對象,并將受控對象輸出的狀態(tài)信息反饋回輸入中,以調(diào)整修正運行過程,使系統(tǒng)的輸出符合預(yù)期要求[12]。閉環(huán)控制與開環(huán)控制的區(qū)別在于:1)有無反饋;2)是否對當(dāng)前控制起作用。
多閉環(huán)的思想來源于工業(yè)領(lǐng)域?qū)λ欧姍C(jī)的控制,一般為兩個環(huán)控制,所謂雙環(huán)就是兩個閉環(huán)負(fù)反饋PID 調(diào)節(jié)系統(tǒng)。第1 環(huán)是速度環(huán),輸入目標(biāo)速度,反饋實時速度。第2 環(huán)是位置環(huán),輸入目標(biāo)位置,反饋實時位置。
閉環(huán)控制算法眾多,其中應(yīng)用最為廣泛、最成熟的應(yīng)當(dāng)是PID 算法[13]。PID 是比例(P),積分(I),微分(D)的縮寫,分別代表了3 種控制算法。單獨或組合使用這3 種算法,可有效地糾正被控對象的偏差,從而使系統(tǒng)達(dá)到一個穩(wěn)定的狀態(tài)。
1)比例,即成比例地反映控制系統(tǒng)的偏差信號,偏差一旦產(chǎn)生,立即產(chǎn)生控制作用以減小偏差。
2)積分,即積分環(huán)節(jié)的作用,主要用于消除靜差提高系統(tǒng)的無差度。
3)微分,微分環(huán)節(jié)的作用能反映偏差信號的變化趨勢,并能在偏差信號的值變得太大之前,在系統(tǒng)中引入一個有效的早期修正信號,從而加快系統(tǒng)的動作速度,減小調(diào)節(jié)時間。
完善的實施過程離不開信息平臺有力的支撐,信息平臺作為整個體系的一種工具、一種載體,將體系中涉及到的人、機(jī)、料、法、環(huán)進(jìn)行記錄、關(guān)聯(lián)、呈現(xiàn),其重要性不言而喻。
在上節(jié)中提到,閉環(huán)控制的核心在于收集反饋然后對系統(tǒng)進(jìn)行調(diào)控,那么,如何獲得反饋,則需要通過度量來實現(xiàn)。
GQM(Goal-Question-Measurement)即“目標(biāo)-提問-測量”方法,是一種面向目標(biāo)的、自上而下的由目標(biāo)逐步細(xì)化到度量的度量定義方法[14]。GQM的實施過程是自上而下的分析過程和自下而上的執(zhí)行過程,首先確定需要度量的目標(biāo),然后通過回答問題的方式來衡量這些目標(biāo)是否可以實現(xiàn),最終將抽象模糊的目標(biāo),分解成具體的、可量化測量的問題。GQM 模型具有3 層架構(gòu),如圖1 所示。
圖1 GQM 模型
基于GQM 模型的思想,將軍用軟件測試的4個過程作為度量的目標(biāo),然后對每個過程的度量要素進(jìn)行抽取,范圍包含測試設(shè)計、需求、成本、進(jìn)度、質(zhì)量、規(guī)模等,得到對應(yīng)的度量指標(biāo)和度量項,最終提出由10 個度量組成的度量體系,如表3 所示。實際上,軍用軟件測試過程涵蓋的度量指標(biāo)遠(yuǎn)不止10個,此處僅僅列出其中有代表性的指標(biāo)作為參考,在實際項目中可以根據(jù)項目情況進(jìn)行增減以適應(yīng)項目需要。
表3 度量體系表
整個體系分為兩層,上層為流程管控層,下層為平臺支撐層,如圖2 所示。上層為流程的具體情況,下層為平臺的功能細(xì)節(jié),下層為上層提供平臺支撐,使上層的思想得以實現(xiàn),上層則為下層提供實現(xiàn)邏輯上的支持。
圖2 體系結(jié)構(gòu)示意圖
軍用軟件測試過程具有投資大、周期長、風(fēng)險高的特點,在測試過程存在很多的不確定因素,導(dǎo)致了測試結(jié)果的不確定性和不可預(yù)見性,我們希望可以對測試項目進(jìn)行全過程的動態(tài)監(jiān)控,然后對項目進(jìn)行持續(xù)的改進(jìn),以確保項目順利實施。
PDCA 循環(huán)是一個持續(xù)改進(jìn)模型[15],主要包括4 個階段,即計劃(P)- 執(zhí)行(D)- 檢查(C)- 處理(A)。
對于任何一件事情,通常會先制定計劃(P),計劃完成以后去實施(D),在實施的過程中進(jìn)行檢查(C),通過檢查來判斷執(zhí)行結(jié)果是否達(dá)到了預(yù)期,進(jìn)而分析影響的因素、出現(xiàn)問題的原因,并提出解決的措施,最后根據(jù)檢查的結(jié)果進(jìn)行改進(jìn)(A)。PDCA不是一個水平單次執(zhí)行的過程,而是一個循環(huán)執(zhí)行、螺旋上升的過程。
可以看出,PDCA 的核心在于C 和A,也就是檢查和改進(jìn)的過程。結(jié)合上文的論述,檢查過程即可對應(yīng)度量過程,改進(jìn)過程對應(yīng)閉環(huán)控制過程,基于此,設(shè)計出持續(xù)改進(jìn)的管理過程模型,如圖3 所示。
圖3 持續(xù)改進(jìn)的管理過程模型
檢查階段的分析對處理階段起著決定性作用,而檢查的主要方式就是度量,通過度量將我們需要評估的指標(biāo)進(jìn)行量化評估,為下一階段的改進(jìn)提供依據(jù)。通過度量階段收集的數(shù)據(jù),經(jīng)過分析和處理建立組織性能基線,確定基準(zhǔn)值和上下控制區(qū)間。
處理階段主要是根據(jù)檢查結(jié)果,采取相應(yīng)的措施。例如在檢查過程中,發(fā)現(xiàn)某一個度量項的度量結(jié)果偏離基準(zhǔn)值或者超出控制區(qū)間,則會將其判定為不合格狀態(tài)。發(fā)現(xiàn)不合格狀態(tài)后,則需要通過采取相應(yīng)的措施來改進(jìn)。
前饋控制,可以對應(yīng)PID 算法中的微分(D)算法,即根據(jù)當(dāng)前的變化趨勢,在測量值發(fā)生變化但還沒有超出預(yù)期值時,提前實施相應(yīng)的調(diào)控措施進(jìn)行干預(yù)。反饋控制,可以對應(yīng)PID 算法中的比例算法(P)算法,即在測量值出現(xiàn)偏差而且超過預(yù)期值后,再采取相應(yīng)的措施進(jìn)行調(diào)整。
將其應(yīng)用在工程領(lǐng)域,前饋控制在持續(xù)改進(jìn)的質(zhì)量管理過程模型中對應(yīng)速度環(huán),主要進(jìn)行初期的、小范圍的調(diào)節(jié)。反饋控制對應(yīng)模型中的位置環(huán),主要負(fù)責(zé)后期的、里程碑式的調(diào)整。例如假設(shè)當(dāng)前項目的進(jìn)度偏離了基準(zhǔn)值,有延期的趨勢時,應(yīng)當(dāng)先進(jìn)行速度環(huán)的調(diào)節(jié),可以通過增加人員、延長每日工作時長等方式來加快進(jìn)度;如果速度環(huán)的調(diào)節(jié)沒有達(dá)到預(yù)期效果,進(jìn)度依然滯后,且超出了控制區(qū)間,超出可接受的范圍,則應(yīng)當(dāng)進(jìn)行位置環(huán)的調(diào)節(jié),比如修改測試計劃等。這樣通過先速度環(huán)后位置環(huán),前饋加反饋的調(diào)節(jié)方式,可以結(jié)合二者的優(yōu)點,有效地對問題進(jìn)行改進(jìn)。
希望將流程驅(qū)動和閉環(huán)控制的相關(guān)思想運用到工程領(lǐng)域,結(jié)合軍用軟件測試過程進(jìn)行設(shè)計。通過對軍用軟件測試過程的研究,可以發(fā)現(xiàn)軍用軟件測試工程過程具有流程的典型特征,其中,每個階段都有對應(yīng)的輸入、輸出和處理過程,將其業(yè)務(wù)活動組合,然后以流程的方式有序開展,也恰好符合流程驅(qū)動的核心思想。流程驅(qū)動的同時,需要結(jié)合閉環(huán)控制的思想,將軍用軟件測試流程進(jìn)行閉環(huán)控制管理,核心在于收集反饋然后對系統(tǒng)進(jìn)行調(diào)控。進(jìn)一步結(jié)合PDCA 模型,以及具體的度量方式,控制調(diào)節(jié)方法,設(shè)計出軍用軟件測試過程實施模型,如圖4 所示。
圖4 軍用軟件測試過程實施
宏觀上整個體系在平臺的支撐上運行,包含了工程、管理、支持和組織過程,其中我們對整個工程體系進(jìn)行了分層,包含流程層、輸入層、輸出層和評審層共4 層架構(gòu),其中流程層作為整個體系的核心,控制整個流程體系的運轉(zhuǎn)。微觀上每一層都包含若干組成部分,包括流程、文檔、組件和行為等。下面通過具體的運作步驟,來了解整個工作體系的運行原理。
步驟1:整個體系的主體是流程層,整個測試項目流程從開始啟動,在相關(guān)測試文檔的指導(dǎo)下(P 過程),按照測試順序依次進(jìn)行(D 過程),首先進(jìn)行測試需求分析業(yè)務(wù)的處理,進(jìn)行相應(yīng)的活動,輸入層有對應(yīng)的輸入(文檔),評審層在業(yè)務(wù)完成后會進(jìn)行測試需求評審,評審結(jié)束后輸出層會有對應(yīng)輸出(文檔),業(yè)務(wù)處理結(jié)束后到達(dá)反饋點1(反饋點的位置和數(shù)量可以根據(jù)項目實際需要來制定)將本流程產(chǎn)生的文檔等資料提交到流程控制中心。
步驟2:流程控制中心在收到反饋點1 提交的資料后,會根據(jù)度量表的內(nèi)容對當(dāng)前狀態(tài)進(jìn)行逐一度量(C 過程),參見表3,如果度量情況沒有偏離基準(zhǔn)值或超出控制區(qū)間,則返回到反饋點1 繼續(xù)進(jìn)行下一業(yè)務(wù)活動。
步驟3:如果流程控制中心在度量過程中,發(fā)現(xiàn)偏離基準(zhǔn)值或超出控制區(qū)間,則需要在表中找到對應(yīng)的測試工作人員,按照先速度環(huán)后位置環(huán)的原則進(jìn)行調(diào)整(A 過程)。
步驟4:流程控制中心根據(jù)異常狀態(tài)反饋作出相應(yīng)調(diào)整后,流程控制中心繼續(xù)審查剩余資料,如果依然有異常狀態(tài)反饋的話,則繼續(xù)提交給對應(yīng)的角色進(jìn)行處理,如果沒有異常則繼續(xù)逐項度量,直到度量結(jié)束,流程返回反饋點位置,流程繼續(xù)向后進(jìn)行。
步驟5:正常情況下流程重復(fù)執(zhí)行步驟1、步驟2,出現(xiàn)異常則執(zhí)行步驟3、步驟4(PDCA 循環(huán)),直到執(zhí)行完最后一個業(yè)務(wù)活動,后續(xù)無未處理業(yè)務(wù),流程結(jié)束。
綜上所述,可以得出基于平臺支撐流程驅(qū)動的軍用軟件測試過程成功實施需要具備4 個要素:①全程策劃,②嚴(yán)格執(zhí)行,③精準(zhǔn)監(jiān)督,④及時整改回歸。全程策劃的基礎(chǔ)在于嚴(yán)格遵守各類國/軍標(biāo)體系文件來進(jìn)行策劃和設(shè)計;嚴(yán)格執(zhí)行的核心在于嚴(yán)格的過程管理;精準(zhǔn)監(jiān)督的實施取決于精準(zhǔn)的度量;及時整改回歸則依賴于科學(xué)有效的整改方式。
與傳統(tǒng)的軟件測試實施過程相比,基于平臺支撐流程驅(qū)動的軍用軟件測試過程具有如下優(yōu)勢:
第一,相比于傳統(tǒng)的人工業(yè)務(wù)推進(jìn)模式,基于流程驅(qū)動的軍用軟件測試過程,通過建立流程驅(qū)動機(jī)制,在平臺的支撐下,整個體系在流程的推進(jìn)下自動運轉(zhuǎn),有效減少了人工的干預(yù)。
第二,區(qū)別于傳統(tǒng)獨立的、松散的管理模式,整個項目從業(yè)務(wù)到人員都通過流程有機(jī)地結(jié)合起來,無論是組織還是管理都與流程緊密結(jié)合,有利于整個項目的良好運轉(zhuǎn)。
第三,將關(guān)注點更多的放在項目實施過程上,而不是實施結(jié)果,以往通過結(jié)果發(fā)現(xiàn)問題時再進(jìn)行糾正,往往需要付出較大的代價來彌補,強(qiáng)化過程管理,有利于項目實施質(zhì)量的保證。
本文基于軍用軟件測試過程要求和特點,提出一種基于平臺支撐流程驅(qū)動的軍用軟件測試過程實施模型,該模型旨在推動測試過程的自動化實施,在減少人工驅(qū)動干預(yù)的同時,將過程所涉及到的人、機(jī)、料、法、環(huán)等有機(jī)地結(jié)合起來,有助于提升軍用軟件測評實驗室對測試項目的管理能力,提高測試效率,降低測試成本,可為今后軍用軟件測試過程的研究提供一定的參考。