[摘要]軟件測試是軟件工程的一個重要部分,貫穿整個軟件生命周期。測試是一項嚴(yán)謹(jǐn)?shù)墓ぷ?,隨著當(dāng)今軟件的規(guī)模和復(fù)雜性日益增加,進(jìn)行專業(yè)化高效軟件測試的要求越來越迫切,挑戰(zhàn)性極強(qiáng)。這里講述的測試的執(zhí)行者包括開發(fā)人員、測試人員以及參加驗收測試的部分受眾者。
[關(guān)鍵詞]軟件測試 需求分析 測試計劃 集成測試
中圖分類號:TP3文獻(xiàn)標(biāo)識碼:A文章編號:1671-7597(2009)0120078-01
一、測試策略
在執(zhí)行測試之前需要做許多文檔工作。因此,當(dāng)項目提議一經(jīng)被審批,測試工作即開始展開。
(一)需求分析階段
1.需求調(diào)研。在軟件生命周期的需求分析階段,測試人員參與需求調(diào)研。從測試角度分析需求的可測試性,構(gòu)思測試方法和準(zhǔn)則。這也有助于更好的理解系統(tǒng)的需求。測試人員了解哪些部分需要重點測試,哪些部分不需要。這部分的工作有助于設(shè)計測試計劃。
2.審查需求規(guī)格說明書。當(dāng)系統(tǒng)分析員完成了需求分析,他(她)將提交需求規(guī)格說明書。測試人員根據(jù)在需求調(diào)研階段獲取的對需求的理解審查整個文檔。檢查文檔是否覆蓋了所有需求。需求規(guī)格說明書非常重要,是整個開發(fā)過程的基線。
(二)分析設(shè)計階段
1.測試計劃。一個典型的測試計劃要包括對工作產(chǎn)品的最終工作流的詳細(xì)理解。在測試過程中有三種類型的測試計劃:系統(tǒng)測試計劃,集成測試計劃以及單元測試計劃。測試計劃寫明怎樣校驗與保證軟件產(chǎn)品符合設(shè)計文檔和其他需求文檔。一般的計劃包含以下幾點:測試怎樣被實現(xiàn)、誰來做、測試什么、測試要花費多長時間、測試覆蓋率是怎樣的。
2.審查設(shè)計文檔。在系統(tǒng)設(shè)計階段,測試人員要理解系統(tǒng)是怎樣被實現(xiàn)。這個階段的開發(fā)文檔包括概要設(shè)計、數(shù)據(jù)庫設(shè)計、功能說明以及詳細(xì)設(shè)計。測試人員審查這些文檔,檢查這些計劃與設(shè)計是否合理。如果不合理,問題在哪里,怎樣改進(jìn)等等。
(三)開發(fā)階段
當(dāng)我們在計劃測試時,我們需要將整個系統(tǒng)分解。對一個復(fù)雜的系統(tǒng)來說,它可以被分解成一些相對獨立的子系統(tǒng)。正確的劃分子系統(tǒng)可以降低測試的復(fù)雜性,減少重復(fù)與冗余,更加方便設(shè)計測試用例。設(shè)計測試用例是一項非常細(xì)致的工作。通常每個用例需要包括:序號和標(biāo)題、用例說明、測試優(yōu)先級、測試輸入及測試步驟、期望輸出、實際輸出(當(dāng)執(zhí)行測試時,它被用來記錄測試結(jié)果)。測試用例設(shè)計要考慮以下幾點:覆蓋率(要達(dá)到最大覆蓋軟件系統(tǒng)功能的功能點)、數(shù)量(一個多于半年的開發(fā)周期,用例不得低于4000)、使用管理工具軟件。
(四)測試執(zhí)行階段
當(dāng)以上的準(zhǔn)備工作完成,系統(tǒng)開發(fā)也進(jìn)入到了尾期。測試人員可以根據(jù)先前的測試計劃和測試用例逐個實施測試。每一個獨立的軟件部分要接受單元測試。若干個部分組合起來接受集成測試。當(dāng)所有的軟件產(chǎn)品完成,系統(tǒng)測試是保證整個系統(tǒng)符合用戶需求。當(dāng)然,性能測試也是必不可少的,保證軟件的各個部分滿足需求的性能標(biāo)準(zhǔn)。
1.單元測試。單元測試一般都由程序員自己完成,可以這么說,程序員有責(zé)任編寫功能代碼,同時也就有責(zé)任為自己的代碼編寫單元測試。執(zhí)行單元測試,就是為了證明這段代碼的行為和我們期望的一致。經(jīng)常與單元測試聯(lián)系起來的另外一些開發(fā)活動包括代碼走讀(Code review),靜態(tài)分析(Static analysis)和動態(tài)分析(Dynamic analysis)。
2.集成測試。集成測試,也叫組裝測試或聯(lián)合測試。在單元測試的基礎(chǔ)上,將所有模塊按照設(shè)計要求(如根據(jù)結(jié)構(gòu)圖)組裝成為子系統(tǒng)或系統(tǒng),進(jìn)行集成測試。實踐表明,一些模塊雖然能夠單獨地工作,但并不能保證連接起來也能正常的工作。程序在某些局部反映不出來的問題,在全局上很可能暴露出來,影響功能的實現(xiàn)。
集成測試過程:制定集成測試計劃,設(shè)計集成測試,實施集成測試,執(zhí)行集成測試以及評估集成測試。以常用的自底向上方法的集成方案為例:
步驟一:按照概要設(shè)計規(guī)格說明,明確有哪些被測模塊。在熟悉被測模塊性質(zhì)的基礎(chǔ)上對被測模塊進(jìn)行分層,然后排出測試活動的先后關(guān)系,制定測試進(jìn)度計劃。
步驟二:在步驟一的基礎(chǔ)上,按時間線序關(guān)系,將軟件單元集成為模塊,并測試在集成過程中出現(xiàn)的問題。這里,可能需要測試人員開發(fā)一些驅(qū)動模塊來驅(qū)動集成活動中形成的被測模塊。對于比較大的模塊,可以先將其中的某幾個軟件單元集成為子模塊,然后再集成為一個較大的模塊。
步驟三:將各軟件模塊集成為子系統(tǒng)(或分系統(tǒng))。檢測各自子系統(tǒng)是否能正常工作。同樣,可能需要測試人員開發(fā)少量的驅(qū)動模塊來驅(qū)動被測子系統(tǒng)。
步驟四:將各子系統(tǒng)集成為最終用戶系統(tǒng),測試是否存在各分系統(tǒng)能否在最終用戶系統(tǒng)中正常工作。
3.系統(tǒng)測試。系統(tǒng)測試是將已經(jīng)確認(rèn)的軟件產(chǎn)品、計算機(jī)硬件、外設(shè)、網(wǎng)絡(luò)等其他元素結(jié)合在一起,進(jìn)行系統(tǒng)的各種安裝測試、功能測試、確認(rèn)測試等相結(jié)合的綜合測試,其目的是通過與系統(tǒng)的需求相比較,發(fā)現(xiàn)所開發(fā)的系統(tǒng)與用戶需求不符或矛盾的地方,從而提出更加完善的方案。系統(tǒng)測試多用黑盒測試的方法。按照系統(tǒng)測試用例逐個實施,記錄測試結(jié)果。
4.性能測試。性能測試在軟件的質(zhì)量保證中起著重要的作用,它包括的測試內(nèi)容豐富多樣。中國軟件評測中心將性能測試概括為三個方面:應(yīng)用在客戶端性能的測試、應(yīng)用在網(wǎng)絡(luò)上性能的測試和應(yīng)用在服務(wù)器端性能的測試。通常情況下,三方面有效、合理的結(jié)合,可以達(dá)到對系統(tǒng)性能全面的分析和瓶頸的預(yù)測。性能測試根據(jù)性能需求選擇自動化測試工具。
5.驗收測試。驗收測試的目的是要對軟件產(chǎn)品在目標(biāo)用戶的工作環(huán)境中做進(jìn)一步的校對,確保軟件準(zhǔn)備就緒,并且可以讓最終用戶將其用于執(zhí)行軟件的既定功能和任務(wù)。驗收測試是部署軟件之前的最后一個測試操作。事實上,軟件開發(fā)人員不可能完全預(yù)見用戶實際使用程序的情況。一個軟件產(chǎn)品,可能擁有眾多用戶,不可能由每個用戶驗收,此時多采用稱為α、β測試的過程,以期發(fā)現(xiàn)那些似乎只有最終用戶才能發(fā)現(xiàn)的問題。α測試是指開發(fā)組織內(nèi)部人員模擬各類用戶行對即將發(fā)布的軟件產(chǎn)品(稱為α版本)進(jìn)行測試,試圖發(fā)現(xiàn)錯誤并修正。α測試的關(guān)鍵在于盡可能逼真地模擬實際運行環(huán)境和用戶對軟件產(chǎn)品的操作并盡最大努力涵蓋所有可能的用戶操作方式。經(jīng)過α測試調(diào)整的軟件產(chǎn)品稱為β版本。緊隨其后的β測試是指開發(fā)組織各方面的典型用戶在日常工作中實際使用β版本,并要求用戶報告異常情況、提出批評意見。然后開發(fā)再對β版本進(jìn)行改錯和完善。一般包括功能度、安全可靠性、易用性、可擴(kuò)充性、兼容性、效率、資源占用率、用戶文檔八個方面。
二、測試完成
在整個測試過程中,需要有一個提交bug的工具,用來記錄整個測試過程中發(fā)現(xiàn)的bug。測試完成后,還有一項重要的工作,即寫測試報告。報告中的重要信息包括測試發(fā)現(xiàn)了多少問題、仍未被解決的問題、測試都做了哪些工作、花費了多長時間等等。這些都是為了使將來的測試工作能得到更好的改進(jìn),測試人員也應(yīng)將幾個月來的工作進(jìn)行總結(jié)。測試報告也是考慮系統(tǒng)是否發(fā)布的一個重要因素。
作者簡介:
時冬妮,女,山東文登人,研究方向:軟件工程。