吳文慶,修雅慧
(1.蘇州市職業(yè)大學 計算機工程學院,江蘇 蘇州 215104;2.齊齊哈爾醫(yī)學院,黑龍江 齊齊哈爾 161006)
軟件開發(fā)(Software development)是根據(jù)用戶要求建設(shè)、開發(fā)軟件系統(tǒng)或者部分軟件的過程,涵蓋需求捕捉、分析、設(shè)計、實現(xiàn)和測試等工作。軟件測試(Software Testing)則是促進軟件的正確性、完整性、安全性和質(zhì)量的過程,主要用于比較預(yù)期輸出和實際輸出之間的差異?,F(xiàn)代社會發(fā)展對軟件的需求越來越大、越來越復(fù)雜,這要求相關(guān)單位和工作人員加大軟件開發(fā)力度,同時通過測試等工作保證軟件性能,滿足實際要求。
軟件測試是一系列工作的總稱,是指在規(guī)定的條件下對程序進行操作,發(fā)現(xiàn)錯誤、衡量質(zhì)量,評估它是否能滿足設(shè)計要求的過程,該過程的對照目標是預(yù)期設(shè)計要求。通常軟件測試的目標包括三個方面,即避免開發(fā)風險、降低常見風險、了解軟件性能,測試對象則包括程序、數(shù)據(jù)和文檔。以性能評估為例,一款軟件的交互價值、程序完善度、性價比都會影響其性能。如常見的游戲軟件,若界面清晰簡潔,操作就比較容易,交互體驗良好;如果界面元素過多且復(fù)雜難辨,玩家的興趣就難以保證了。這是在軟件開發(fā)過程中將測試列為五個基本項目的主要原因之一。
軟件測試的流程包括六個基本步驟,即擬定測試計劃、挑選測試用例、啟動測試計劃、提交缺陷問題、設(shè)計優(yōu)化調(diào)整、提交測試成果。軟件測試過程中也應(yīng)進行管理,主要包括軟件測試的過程、評價方法、參數(shù)選取,進行配置管理和測試風險分析、控制測試成本,等等。
測試計劃是軟件測試的第一步,要求針對不同對象目標分別擬定,如測試對象為數(shù)據(jù),要了解數(shù)據(jù)在軟件中是否能夠被讀取、執(zhí)行,是否滿足系統(tǒng)上下限,等等。在軟件測試過程中,尤其是大型軟件,需要了解的項目較多,難以一一測試,因此會選擇較具代表性的軟件作為用例,要求其覆蓋到關(guān)鍵性的測試需求,如主程序、核心參數(shù)等。測試活動開始前,需對選定對象進行分析,判斷其是否滿足“啟動準則”(EntryCriteria),如果分析結(jié)果理想,則啟動測試,反之則繼續(xù)重復(fù)“挑選測試用例”環(huán)節(jié)。測試工作中,要將測試結(jié)果與標準參數(shù)比對,了解其中差異,明確問題以及缺陷,進行提交、設(shè)法消除。完成消除后,還要進行二次測試甚至三次、四次測試,直到選定的目標對象在參數(shù)、性能上達到或高于設(shè)計標準,滿足“完成準則”(ExitCriteria),結(jié)束主體測試工作,撰寫并提交測試報告,記錄核心參數(shù)用于實際工作。軟件測試工作的流程如圖1所示。
圖1 軟件測試工作的流程
在需求分析階段,軟件測試的主要工作內(nèi)容是記錄客戶需求,根據(jù)客戶的要求提煉各類核心信息,并與開發(fā)項目負責人進行溝通,了解各項工作的進度安排,擬定測試計劃。如客戶需求設(shè)計一款智能軟件,用于掃地機器人的性能改善,根據(jù)客戶需求,軟件核心參數(shù)應(yīng)該是設(shè)備對作用力的感知、障礙物的感知、工作目標(垃圾)的處理以及與之對應(yīng)的集成技術(shù)、傳感技術(shù)等。由于集成技術(shù)和傳感技術(shù)屬于通用技術(shù),不必額外進行技術(shù)測試,因此選定“對作用力的感知、障礙物的感知、工作目標(垃圾)的處理”作為測試對象。計劃擬定后,了解整體軟件開發(fā)計劃,假定開發(fā)活動預(yù)期為90天,則將第一輪測試活動定在第51個工作日,以保證調(diào)整優(yōu)化的時間充沛[1]。
進入設(shè)計階段后,軟件開發(fā)已經(jīng)處于實質(zhì)工作中,這一階段的測試工作包括兩項基本內(nèi)容,一是不斷根據(jù)實際工作情況調(diào)整原定測試計劃,二是根據(jù)階段設(shè)計結(jié)果進行必要的分項目測試。通常來說,軟件開發(fā)過程會存在一些未知變數(shù),比如客戶需求的變化,此前客戶需要軟件辨識5種語言,隨著業(yè)務(wù)變更,客戶又要求軟件辨識至少7種語言,這意味著測試時必須在語言相關(guān)環(huán)節(jié)增加兩項內(nèi)容,以滿足客戶的實際需要[2]。分項目測試在大型軟件設(shè)計過程中十分常見,如電子競技類游戲,涉及到很多程序,每完成一個階段工作后,需要進行一次小范圍測試,了解包括參數(shù)設(shè)定、人物動作、游戲背景等軟件的情況。
在對人物動作進行測試時,一般應(yīng)用骨骼動作法或者有限元分析法,以虛擬軟件操作人物的動作,了解動作協(xié)調(diào)性、變形幅度等,再按標準參數(shù)進行微調(diào),直至漸趨完善。
代碼編寫是指技術(shù)人員應(yīng)用各類程序進行軟件設(shè)計、制作,該階段的測試內(nèi)容包括單元測試、測試用例編寫、接受代碼完成報告,等等,核心工作是編寫測試用例。在軟件設(shè)計開發(fā)的過程中,很多環(huán)節(jié)需要單獨進行測試,單元測試可由設(shè)計人員自己負責,而較為復(fù)雜的多參數(shù)測試則需要人員提供測試用例、測試腳本等,供項目小組審閱、共同進行測試[3]。
如一款指紋密碼鎖軟件的開發(fā),在代碼編寫階段,要求重視按壓強度、手指紋理之間的細微差別,這種差別難以通過一個模型完全涵蓋,設(shè)計人員完成小單元的簡單測試后,根據(jù)設(shè)計要求出具測試用例,供項目組進行有效性分析[4]。在編寫用例的過程中,要求嚴格應(yīng)用代碼語言,避免出現(xiàn)代碼輸入錯誤、產(chǎn)生程序BUG等情況。代碼是程序員用開發(fā)工具所支持的語言寫出來的源文件,是一組由字符、符號或信號碼元以離散形式表示信息的明確的規(guī)則體系。在軟件開發(fā)過程中,不同軟件制作所使用的代碼存在差別,編寫過程中,也要求注意書寫的準確性。圖3中,代碼出現(xiàn)錯誤,將其應(yīng)用于測試用例編寫,必然影響測試成果,正確的編寫如圖4所示。
圖3 測試用例編寫中出現(xiàn)的錯誤代碼
圖4 測試用例編寫的正確代碼
軟件測試一般被看做是軟件開發(fā)工作的組成部分之一,相關(guān)工作服從于項目整體安排,大型軟件系統(tǒng)的設(shè)計開發(fā)被分成多個階段,每一個階段都是相對獨立的,軟件測試工作也因此需要在初步完成階段進行,以便及時發(fā)現(xiàn)、處理問題。初步完成階段測試工作的內(nèi)容包括更新測試用例、追蹤處理缺陷、出具階段測試報告三個方面,完成后進入下一輪測試循環(huán)[5]。
在上一輪代碼編寫階段,出具了覆蓋核心技術(shù)的測試用例,初步完成階段需要針對該用例進行測試,包括集成測試、確認測試、性能測試等,一般采用應(yīng)用模擬、應(yīng)用實踐兩種方式進行測試,應(yīng)用模擬主要通過參數(shù)代入法在計算機環(huán)境下直接進行,由于工作狀態(tài)為理想狀態(tài),因此不考慮誤差影響,對所獲數(shù)據(jù)進行記錄,與標準參數(shù)(客戶需求)進行對比,了解誤差值和問題。應(yīng)用實踐是指將設(shè)計完成的測試用例應(yīng)用于具體工作中,根據(jù)工作情況判斷軟件的性能,記錄數(shù)據(jù),與標準參數(shù)(客戶需求)進行對比,了解設(shè)計上的問題和誤差等。
在軟件投入運行后,測試工作并不能立即停止,由于很多軟件問題在測試階段并不會完全暴露,如果投入運行后聽之任之,很可能導(dǎo)致問題集中出現(xiàn),客戶的滿意度、軟件開發(fā)的成效也就無從談起了。較為典型的問題比如軟件漏洞,部分軟件在測試時環(huán)境相對理想,但在應(yīng)用中則面臨來自系統(tǒng)兼容性、木馬攻擊等方面的威脅,一旦出現(xiàn)漏洞、造成木馬侵入,軟件開發(fā)的價值會大大降低。在運行維護階段,要求軟件開發(fā)方積極與客戶進行聯(lián)絡(luò),根據(jù)用戶反映進行運維測試。
通過分析軟件測試在軟件開發(fā)中的應(yīng)用,了解了相關(guān)理論內(nèi)容。軟件測試的目標與流程一般是固定的,主要目的是降低風險、修復(fù)問題、消除軟件缺陷,利用擬好的規(guī)劃、針對固定的目標進行測試和優(yōu)化。從應(yīng)用上看,軟件測試涵蓋需求分析階段、設(shè)計過程、代碼編寫階段、初步完成階段以及運行維護階段,要求工作人員在進行軟件開發(fā)的過程中嚴格遵照標準進行測試,保證軟件功能。