文洋 杜晨 王定軍
摘要
軟件測試日益受到重視,大型復(fù)雜系統(tǒng)建立統(tǒng)一軟件測試管理規(guī)范也成為一種趨勢。本文介紹了大型復(fù)雜系統(tǒng)的測試管理,內(nèi)容包括測試組織、測試環(huán)境、測試流程、測試考核、測試工具等方面。
【關(guān)鍵詞】軟件測試 大型復(fù)雜系統(tǒng) 測試環(huán)境管理 測試考核 測試工具
1 概述
隨著我國信息業(yè)的不斷發(fā)展,大型企業(yè)的軟件系統(tǒng)變得規(guī)模巨大、業(yè)務(wù)日漸復(fù)雜,企業(yè)對軟件功能、性能的要求也越來越高。眾多企業(yè)開始逐步認(rèn)識(shí)到軟件開發(fā)質(zhì)量對企業(yè)信息化的重要性,如果軟件本身存在缺陷,將造成企業(yè)人力、物力和財(cái)力的巨大浪費(fèi),甚至造成不可彌補(bǔ)的損失。因此,為保證軟件質(zhì)量,需要在軟件開發(fā)完成以后,針對軟件測試工作進(jìn)行有效管理。
如何對軟件測試進(jìn)行有效管理,主要需要建立一整完善的軟件版本測試體系。首先,要對測試過程進(jìn)行分層管理,測試過程一般包含軟件出廠測試、用戶驗(yàn)收測試、功能回歸測試三個(gè)環(huán)節(jié)。其次,基于分層測試,設(shè)置不同層級(jí)的測試標(biāo)準(zhǔn),模擬生產(chǎn)系統(tǒng)建立預(yù)生產(chǎn)環(huán)境,形成閉環(huán)測試流程管理,有效解決軟件出廠測試不嚴(yán)謹(jǐn)、測試場景不充分、測試數(shù)據(jù)不理想等原因造成的故障和問題。最后,要制定測試管理規(guī)范,對測試組織及職責(zé)、測試環(huán)境管理、測試標(biāo)準(zhǔn)、測試流程、測試考核、測試工具等進(jìn)行規(guī)范管理。
2 測試組織
一般而言,獨(dú)立的測試團(tuán)隊(duì)能夠更專業(yè)、更公正的完成相關(guān)測試。因此,通過引入第三方獨(dú)立測試團(tuán)隊(duì),與包括軟件開發(fā)廠商測試團(tuán)隊(duì)在內(nèi)形成由甲方測試主管統(tǒng)一管理的測試組織(如圖1所示)。甲方測試主管兩人,互為A、B角,軟件開發(fā)廠商測試團(tuán)隊(duì)包括測試經(jīng)理和測試工程師。第三方測試團(tuán)隊(duì)包括自動(dòng)化功能測試團(tuán)隊(duì)、性能測試團(tuán)隊(duì)、安全測試團(tuán)隊(duì)、環(huán)境管理團(tuán)隊(duì)。由甲方測試主管、軟件開發(fā)廠商測試經(jīng)理、第三方測試團(tuán)隊(duì)測試經(jīng)理組成測試管理辦公室。
3 測試環(huán)境管理
高效的測試環(huán)境管理可以提高軟件測試質(zhì)量。完備的測試環(huán)境包括四部分:開發(fā)環(huán)境、測試環(huán)境、預(yù)生產(chǎn)環(huán)境、生產(chǎn)環(huán)境。通過自動(dòng)化部署、自動(dòng)化冒煙測試提高環(huán)境管理的效率。
(1)開發(fā)環(huán)境:提供給系統(tǒng)廠商開發(fā)人員使用,主要用于軟件開發(fā)后單元測試。
(2)測試環(huán)境:提供給系統(tǒng)廠商軟件測試人員使用,主要用于集成測試、系統(tǒng)測試。
(3)預(yù)生產(chǎn)環(huán)境:定期同步生產(chǎn)環(huán)境數(shù)據(jù),并進(jìn)行數(shù)據(jù)清洗。提供給用戶進(jìn)行需求驗(yàn)證,第三方測試團(tuán)隊(duì)進(jìn)行自動(dòng)化功能測試,主要用于用戶接受測試、回歸測試。
(4)生產(chǎn)環(huán)境:提供給第三方測試團(tuán)隊(duì)進(jìn)行性能測試。
開發(fā)環(huán)境、測試環(huán)境、預(yù)生產(chǎn)環(huán)境、生產(chǎn)環(huán)境由甲方統(tǒng)一管理,采用嚴(yán)格的授權(quán)管理。開發(fā)環(huán)境的單元測試通過后的版本,可以通過工單申請發(fā)布到測試環(huán)境。測試環(huán)境的集成測試、系統(tǒng)測試通過后的版本,可以通過工單申請發(fā)布到預(yù)生產(chǎn)環(huán)境。預(yù)生產(chǎn)環(huán)境用戶接受測試、自動(dòng)化化回歸測試通過后,可以通過工單申請發(fā)布到生產(chǎn)環(huán)境。
4 測試分類
根據(jù)測試的階段,將測試分為單元測試、集成測試、系統(tǒng)測試、驗(yàn)收測試、回歸測試(如表1所示)。
(L)單元測試:對軟件中的基本組成單位進(jìn)行測試。例如:一個(gè)模塊、一個(gè)過程等等。由廠商軟件開發(fā)人員完成。
(2)集成測試:在軟件系統(tǒng)集成過程中進(jìn)行測試,其主要目的是檢查軟件單位之間的接口是否正確。由廠商軟件測試人員完成。
(3)系統(tǒng)測試:對已經(jīng)集成好的軟件系統(tǒng)進(jìn)行徹底的測試,以驗(yàn)證軟件的正確性、性能等滿足其規(guī)約要求。
(4)驗(yàn)收測試:驗(yàn)證軟件是否滿足用戶需求。是軟件投入使用之前的最后測試。
(5)回歸測試:軟件維護(hù)階段,對軟件進(jìn)行修改之后進(jìn)行的測試。驗(yàn)證修改達(dá)到預(yù)定目的、修改不影響其他功能的正確性。
5 測試流程
測試流程一般包含測試需求、測試計(jì)劃、測試準(zhǔn)備、測試執(zhí)行、測試報(bào)告五大流程。首先根據(jù)軟件需求和質(zhì)量目標(biāo)明確測試需求,編制軟件測試需求規(guī)格說明書并進(jìn)行評審;其次,制定測試計(jì)劃,包括測試策略、測試準(zhǔn)則、測試資源、責(zé)任人、測試時(shí)間進(jìn)度等;再次,按照測試計(jì)劃開始準(zhǔn)備測試所需要的數(shù)據(jù)、環(huán)境、測試人員及賬號(hào)準(zhǔn)備等;最后,執(zhí)行測試用例,并將期望結(jié)果與實(shí)際測試結(jié)果比較,形成測試報(bào)告。
各軟件開發(fā)廠商項(xiàng)目經(jīng)理負(fù)責(zé)各自系統(tǒng)的單元測試、集成測試、系統(tǒng)測試,測試過程記錄在測試管理系統(tǒng)中。生產(chǎn)系統(tǒng)版本升級(jí)需要經(jīng)過用戶接受測試、第三方回歸測試。在ITSM系統(tǒng)中提交生產(chǎn)系統(tǒng)部署需求申請,需要同時(shí)提交測試用例和廠測試報(bào)告,系統(tǒng)自動(dòng)化在預(yù)生產(chǎn)系統(tǒng)部署待發(fā)布版本。啟動(dòng)用戶測試子流程、自動(dòng)化回歸測試子流程。測試結(jié)果反饋到ITSM系統(tǒng),經(jīng)過審核后,帶發(fā)布版本自動(dòng)化灰度部署到生產(chǎn)系統(tǒng)。
6 測試考核
為保證軟件版本質(zhì)量,同時(shí)對廠商測試團(tuán)隊(duì)、第三方測試團(tuán)隊(duì)進(jìn)行打分考核。軟件版本發(fā)布前需要經(jīng)過用戶測試、回歸測試,測試結(jié)果對開發(fā)廠商測試團(tuán)隊(duì)進(jìn)行考核。系統(tǒng)版本上線后發(fā)現(xiàn)軟件缺陷,對第三方測試團(tuán)隊(duì)、開發(fā)廠商測試團(tuán)隊(duì)同時(shí)進(jìn)行考核。軟件缺陷按照嚴(yán)重程度劃分為五級(jí)致命、嚴(yán)重、一般、輕微、建議。根據(jù)BUG的數(shù)量、嚴(yán)重程度進(jìn)行扣分。
制定統(tǒng)一的測試考核指標(biāo),對人均編制測試用例數(shù)量、人均執(zhí)行測試用例數(shù)量、人均單功能、測試用例覆蓋率(Σ測試用例數(shù)量/Σ系統(tǒng)功能點(diǎn)數(shù)量)、測試用例有效率(Σ缺陷數(shù)量/Σ測試用例數(shù)量)、自動(dòng)化測試代碼量等指標(biāo)進(jìn)行考核。
每月召開測試組織的測試?yán)龝?huì),對上月測試情況進(jìn)行展示、對考核情況進(jìn)行通報(bào),對版本上線后發(fā)現(xiàn)的軟件缺陷進(jìn)行根因分析,并提出改進(jìn)措施。對下月測試內(nèi)容、測試計(jì)劃。
7 測試工具
7.1 測試管理系統(tǒng)
測試管理工具,主要用于對測試需求、測試計(jì)劃、測試用例、測試過程、軟件缺陷進(jìn)行跟蹤管理的工具。通過測試管理工具,可以讓測試人員、開發(fā)人員更好的協(xié)同工作,提高測試效率,提升軟件版本的質(zhì)量。軟件測試管理工具前期使用過BugFree、Readmine和Testlink等工具。目前,主要使用禪道進(jìn)行測試管理,并在此基礎(chǔ)上進(jìn)行增強(qiáng)開發(fā)。滿足對測試的全面管理。包括人員管理、編制測試用例、執(zhí)行測試用例、記錄測試用例對應(yīng)的軟件缺陷、生成測試報(bào)告、自動(dòng)計(jì)算測試考核指標(biāo)等。
7.2 自動(dòng)化測試平臺(tái)
自動(dòng)化測試是把以人為驅(qū)動(dòng)的測試行為轉(zhuǎn)化為機(jī)器執(zhí)行的一種過程,用機(jī)器替代人工執(zhí)行重復(fù)的手動(dòng)測試,是軟件測試的重要組成部分。一般而言,大型系統(tǒng)部署規(guī)模較大、包含海量數(shù)據(jù)且業(yè)務(wù)邏輯復(fù)雜,采用手工測試覆蓋率遠(yuǎn)達(dá)不到要求,因此,我們自主研發(fā)了可動(dòng)態(tài)擴(kuò)展的自動(dòng)化測試平臺(tái),用于對軟件版本的回歸測試。自動(dòng)化測試平臺(tái)主要分為司令機(jī)、士兵機(jī)兩部分。司令機(jī)主要提供了測試組件管理、測試用例管理、自動(dòng)化測試任務(wù)管理、統(tǒng)計(jì)分析等功能;士兵機(jī)主要提供組件編制、自動(dòng)化測試任務(wù)執(zhí)行和執(zhí)行結(jié)果反饋功能(如圖2所示)。
7.3 自動(dòng)化部署平臺(tái)
自動(dòng)化部署管理軟件,可以將大量繁雜的手工部署自動(dòng)化,由人工部署向自動(dòng)化部署進(jìn)行轉(zhuǎn)變,縮短了因系統(tǒng)部署導(dǎo)致的系統(tǒng)中斷時(shí)間。而且,因其全流程均采用自動(dòng)化方式,避免了發(fā)布人員與發(fā)布包的直接接觸,提高了發(fā)布包的準(zhǔn)確率并降低了發(fā)布過程中的誤操作行為。因此,我們自主研發(fā)了自動(dòng)化部署平臺(tái),主要分為兩個(gè)部分,服務(wù)端和客戶端。服務(wù)端用于環(huán)境管理、定義部署流程、執(zhí)行部署流程、生成任務(wù)部署報(bào)告等??蛻舳擞糜趫?zhí)行部署流程步驟中使用到的原子操作命令、反饋命令執(zhí)行結(jié)果、記錄操作日志等。實(shí)現(xiàn)了一鍵式部署簡單易用,發(fā)布過程可實(shí)時(shí)以圖形化方式顯示發(fā)布狀態(tài)以及自動(dòng)處理發(fā)布異常,能持續(xù)將日常發(fā)布經(jīng)驗(yàn)集成到系統(tǒng)中。系統(tǒng)部署后,可自動(dòng)進(jìn)行中間件狀態(tài)校驗(yàn)、系統(tǒng)功能校驗(yàn)。
7.4 其他工具
除了測試管理系統(tǒng)、自動(dòng)化測試平臺(tái)、自動(dòng)化部署平臺(tái)外,性能測試工具M(jìn)eter、白盒源代碼安全掃描工具Fortify SCA、黑盒漏洞掃描工具AppScan等都是日常測試使用較多的工具。
通過以上對測試發(fā)布全過程的優(yōu)化,中國電信在系統(tǒng)維護(hù)過程中做到了測試流程的規(guī)范管理,軟件質(zhì)量的有效管控。同時(shí),我們也看到,在軟件測試這條路上,還需要繼續(xù)摸爬滾打,不斷的自我否定和提升,但作為測試人員,始終相信,測試之路將會(huì)越來越有技術(shù)含量,越來越多繁花相伴。
參考文獻(xiàn)
[1]段念,軟件性能測試過程詳解與案例剖析[M].北京:清華大學(xué)出版社,2016.
[2]Rom Patton,軟件測試[M].北京:機(jī)械工業(yè)出版社,2012.
[3]Tim Riley&Adam Coucher,測試之美[M].北京:機(jī)械工業(yè)出版社,2010.
[4]王峰,陳杰,軟件測試的藝術(shù)[M].北京:機(jī)械工業(yè)出版社,2006.