董 曦,張 鵬,李 磊
(1.中國船舶重工集團(tuán)公司第723研究所,江蘇揚(yáng)州 225001;2.中國航空無線電電子研究所,上海 200233)
隨著對GJB5000A二級認(rèn)證的推進(jìn)要求,各單位對軟件研制過程的能力要求越來越重視。但是,GJB5000A二級并沒有涉及合格性測試的過程域。因此,軟件合格性測試雖然是軟件生命周期中的一個重要環(huán)節(jié),但是各單位的重視程度并不高。如何有效地在GJB5000A二級過程改進(jìn)的活動中對軟件合格性測試的工作進(jìn)行工程化改進(jìn)是個值得探究的問題。
GJB5000A,即軍用軟件研制能力成熟度模型,可以為軟件組織在其開發(fā)和維護(hù)過程中獲得控制,并向軟件工程和優(yōu)秀管理文化進(jìn)化提供指南[1]。GJB5000A的體系結(jié)構(gòu)由成熟度等級、關(guān)鍵過程域、過程能力和關(guān)鍵實踐等內(nèi)容構(gòu)成。
圖1描述了構(gòu)成GJB5000A的5個成熟度等級。其中,一級相對混亂,研發(fā)過程不可控,軟件產(chǎn)品的研發(fā)成功主要依靠技術(shù)出眾的個人來完成;二級階段對軟件研制能力提出了7個過程域的要求,這7個過程域又分別有著自己的目標(biāo)和實踐。如果一個組織的軟件研制過程滿足了所有的目標(biāo)和實踐,則組織的軟件研制能力處于可管理的階段,成熟度等級更高,生產(chǎn)出來的軟件產(chǎn)品也更加可靠。

圖1 GJB5000A的5個成熟度等級
軟件合格性測試是在軟件配置項的真實或仿真運(yùn)行環(huán)境下,主要考核軟件功能之間能否協(xié)調(diào)正確地工作,是否滿足軟件研制任務(wù)書和軟件需求規(guī)格說明的要求。GJB5000A要求,在軟件研制過程中,應(yīng)當(dāng)嚴(yán)格按階段劃分研發(fā)過程。同樣,軟件合格性測試也應(yīng)該遵循測試策劃、測試設(shè)計與實現(xiàn)、測試執(zhí)行、測試總結(jié)的過程[2],執(zhí)行項目的過程中要有與之適應(yīng)的項目管理活動作為支持,如圖2所示。

圖2 典型合格性測試過程
測試策劃處于合格性測試過程的前期階段。測試策劃工作主要確定需要測試的內(nèi)容或質(zhì)量特性、指標(biāo)要求,確定測試的充分性要求。然后根據(jù)項目實際情況提出不同的基本方法,確定測試項目所需要的人力和物力資源、技術(shù)要求。最后制定出測試資源計劃和測試進(jìn)度計劃作為測試策劃階段的產(chǎn)品。
此外,還要進(jìn)行配套的策劃管理工作。策劃管理是要安排好測試流程,主要包括測試技術(shù)剪裁、測試進(jìn)度管理等。首先,根據(jù)測試策劃出來的目標(biāo)分析時間進(jìn)度的安排、人員的組成是否可行及是否合理等。對不可行、不合理的地方進(jìn)行調(diào)整,形成最終的項目測試計劃。最后,根據(jù)該計劃建立 WBS,詳細(xì)地安排人員和時間,做出具體說明。
測試設(shè)計與實現(xiàn)主要是指設(shè)計測試用例和建立測試環(huán)境。具體工作包括分析測試用例集的層次結(jié)構(gòu),選取和設(shè)計測試用例,獲取并驗證測試數(shù)據(jù);根據(jù)測試資源、風(fēng)險等約束條件確定測試用例執(zhí)行順序;獲取測試資源,開發(fā)測試軟件;建立并校準(zhǔn)測試環(huán)境;進(jìn)行測試就緒審查,主要審查測試計劃的合理性以及測試用例的正確性、有效性和覆蓋充分性,審查測試組織、環(huán)境和設(shè)備工具是否備齊并且符合要求[3]。需要說明的是,在進(jìn)入測試執(zhí)行階段工作之前,應(yīng)該通過測試計劃與測試說明的評審。
與GJB5000A二級PMC過程域相似,軟件合格性測試的實現(xiàn)也要有跟蹤與控制。跟蹤與控制的主要作用是依據(jù)既定的計劃來檢查當(dāng)前的工作狀態(tài)是否符合。軟件合格性測試負(fù)責(zé)人根據(jù)日報、月報、例會等途徑了解項目的進(jìn)展,并且主要關(guān)注測試的進(jìn)展和測試的質(zhì)量。對于測試過程中的規(guī)模、工作量、時間、風(fēng)險、資源等也要有深入的了解,如果與計劃不一致或者發(fā)生風(fēng)險的可能性比較大,要及時采取措施以避免風(fēng)險或者調(diào)整測試計劃。
測試執(zhí)行是一個執(zhí)行測試用例,獲得測試結(jié)果的過程。該活動還包括對測試結(jié)果的分析與判定,根據(jù)不同的判定結(jié)果采取相應(yīng)的措施。如果在測試用例的執(zhí)行過程中有異常終止情況,需要對情況進(jìn)行核對,并根據(jù)核對結(jié)果,對未達(dá)到測試終止條件的測試用例做出停止測試或修改測試用例集并進(jìn)一步測試[4]的決定。測試執(zhí)行過程還包括回歸測試,即對于未通過測試的軟件配置項,在更改之后對其和受更改影響的軟部件、配置項、系統(tǒng)進(jìn)行測試。
對于測試執(zhí)行的過程,要由質(zhì)量保證(QA)實施監(jiān)督。測試QA通過不斷的查找不符合項,發(fā)現(xiàn)不符合項,改正不符合項,以此循環(huán)來不斷推進(jìn)測試執(zhí)行的質(zhì)量。測試項目QA要做到獨(dú)立和客觀。并且有獨(dú)立的上報途徑,對于測試人員和QA雙方不能達(dá)成一致的不符合項,QA可以向上一級報告,請求裁決。
測試總結(jié)過程是為了評估測試效果和被測軟件項,描述測試狀態(tài)。例如,實際測試與測試計劃和測試說明的差異、測試充分性分析、未能解決的測試事件等。測試總結(jié)還應(yīng)該描述被測軟件的狀態(tài),如被測軟件與需求的差異、發(fā)現(xiàn)的軟件錯誤等。測試總結(jié)階段的產(chǎn)品為通過評審后的軟件測試報告。
軟件配置管理活動是一項保障性、支持性的工作。及時制定配置管理計劃是項目成功的重要保證,因此,配置管理計劃應(yīng)該在測試項目的開始之初制定。在測試過程中,必須依據(jù)配置管理計劃,將測試過程中涉及的工程文檔、管理文檔、測試工具等全部納入配置管理的范疇。
軟件合格性測試過程改進(jìn)工作并非易事,這并不僅僅是測試部門的工作,還牽涉到各部門之間的協(xié)調(diào)。
任何軟件過程改進(jìn)活動的成功都離不開領(lǐng)導(dǎo)的重視,尤其是單位最高層領(lǐng)導(dǎo)的支持。領(lǐng)導(dǎo)越重視,投入精力越大,過程改進(jìn)越容易成功。所以,在軟件合格性測試過程改進(jìn)中,領(lǐng)導(dǎo)應(yīng)該扮演著決策者和最大支持者的角色。
在軟件合格性測試過程中,中層或項目領(lǐng)導(dǎo)也要給予充分的關(guān)心和重視。不應(yīng)該強(qiáng)制要求測試項目的完成時間節(jié)點,而是應(yīng)該根據(jù)合格性測試項目的工程和管理實際需要,合理的按階段劃分時間,以免因時間不足而產(chǎn)生過程改進(jìn)不力。此外,各層領(lǐng)導(dǎo)的關(guān)注點也要從工程活動向管理活動轉(zhuǎn)移,不應(yīng)該僅僅關(guān)注結(jié)果,更應(yīng)該關(guān)注過程的改善。
測試項目進(jìn)行過程中,各方面活動都有經(jīng)費(fèi)開支要求。沒有適量經(jīng)費(fèi)支持,測試項目會出現(xiàn)停滯不前、動力不足等問題。此外,在過程改進(jìn)之初,項目參與人員從事的是一項工程與管理兼?zhèn)涞拈_創(chuàng)性工作,專門的獎金和績效是對他們工作的回報,更是對他們開創(chuàng)性工作的一種肯定。
單位可以成立專項基金用以合格性測試過程改進(jìn),這樣就保證了參與過程改進(jìn)的人員收入不減少,極大的增加了過程改進(jìn)的信心。
在成熟的軟件企業(yè)中,通常測試工作量和開發(fā)工作量的比例為 1:1,或更多。如此大的工作量必然要求在人員方面的更多投入。而且,不僅僅是測試過程需要人員參與,項目管理也需要大量的人力資源投入。通常,一個軟件合格性測試項目需要的角色有測試負(fù)責(zé)人、測試工程師、項目QA、項目配置管理員等。可以由一人承擔(dān)多個角色,但是項目QA要相對獨(dú)立、客觀[5]。
目前,有些單位參與軟件合格性測試的人員還不充足,還存在著參與測試任務(wù)過分飽滿,測試時間過分緊張,與其他項目人員爭用的現(xiàn)象,這都不利于過程改進(jìn)的實施。
一個好的組織資產(chǎn)庫有利于軟件合格性測試部門經(jīng)驗的積累和知識的沉淀,也使得后續(xù)的軟件合格性測試項目便于上手,組織方便。例如,好的模板可以使新項目在文檔編制方面節(jié)約大量的時間;前期項目的工作成果、關(guān)鍵資源、風(fēng)險等可以更準(zhǔn)確地估算新項目需要的時間、金錢、人員的投入,以便部門統(tǒng)籌規(guī)劃,資源調(diào)配。
軟件合格性測試的組織資產(chǎn)庫在實際運(yùn)行中可以與研發(fā)過程的資產(chǎn)庫合并,不用在物理上
在軟件過程改進(jìn)的大環(huán)境下,軟件合格性測試過程的改進(jìn)和標(biāo)準(zhǔn)化工作也應(yīng)盡快展開。在實際軟件合格性測試項目中,可以參考本文討論的符合GJB5000A標(biāo)準(zhǔn)的軟件合格性測試過程來實施測試項目。如何更加規(guī)范軟件合格性測試工作的規(guī)定、標(biāo)準(zhǔn)和程序,仍然是個值得探究的問題,今后本人將在此領(lǐng)域進(jìn)行更深入的研究。
[1] GJB5000A-2008, 軍用軟件研制能力成熟度模型[S]. 2008.
[2] 周濤. 航天型號軟件測試[M]. 北京: 宇航出版社,1999.
[3] 杜子妮. 機(jī)載火控雷達(dá)軟件系統(tǒng)測試技術(shù)研究[D].南京: 南京理工大學(xué), 2009.
[4] GB/T15532-2008, 計算機(jī)軟件測試規(guī)范[S]. 2008.
[5] 鄭人杰, 馬素霞, 殷人昆. 軟件工程概論[M]. 北京:機(jī)械工業(yè)出版社, 2009.形成隔離,只在邏輯上加以區(qū)分即可。根據(jù)實際需要,給予軟件合格性測試的參與人員一定的查看權(quán)限去調(diào)閱過往項目的數(shù)據(jù)和文檔,這樣也在一定程度上促成了新人的培養(yǎng)。