從軟件工程的角度來說,軟件開發(fā)主要分為需求分析、概要設(shè)計、詳細設(shè)計、編碼、測試、安裝及維護6個階段。軟件測試項目的過程管理絕不僅限于測試階段,因為軟件測試不能在代碼全部完成后才開始,而應(yīng)在項目需求分析階段就開始審查需求分析文檔、產(chǎn)品規(guī)格說明書,在設(shè)計階段需要審查系統(tǒng)設(shè)計文檔、程序設(shè)計流程圖、數(shù)據(jù)流圖等,在代碼測試階段需要審查代碼,查看是否遵守代碼的變量定義規(guī)則、是否有足夠的注釋內(nèi)容等。從軟件開發(fā)生命周期的角度來說,軟件測試項目的過程管理在各個階段的具體內(nèi)容是不同的;但在每個階段,測試任務(wù)的最終完成都需要經(jīng)過從計劃、設(shè)計、執(zhí)行到結(jié)果分析、總結(jié)等一系列步驟,這構(gòu)成軟件測試的一個基本過程。
軟件測試項目的過程管理主要集中在軟件測試項目的啟動、測試計劃、測試用例設(shè)計、測試執(zhí)行、測試結(jié)果的審查和分析,以及如何開發(fā)或使用測試過程管理工具上。本篇主要是從管理的角度去討論如何組織、跟蹤和控制這些過程,而不是從測試技術(shù)的角度去討論如何設(shè)計和實現(xiàn)。測試過程管理的基本內(nèi)容如下所述。
(1)測試項目啟動階段:首先需要確定項目負責(zé)人,即項目小組組長,項目組長確定以后,才可以組建整個測試小組,配合開發(fā)等部門開展工作;其次要參加有關(guān)項目計劃、分析和設(shè)計的會議,獲得必要的需求分析、系統(tǒng)設(shè)計文檔,以及相關(guān)產(chǎn)品/技術(shù)知識的培訓(xùn)和轉(zhuǎn)移。
(2)測試計劃階段:確定測試范圍、測試策略和方法,對風(fēng)險、日程表、資源等進行分析和估計。
(3)測試設(shè)計階段:制訂測試的技術(shù)方案,設(shè)計測試用例,選擇測試工具,編寫測試腳本等。測試用例設(shè)計需要做好各項準(zhǔn)備再開始進行,最后還需要其他部門幫忙評審測試用例。
(4)測試執(zhí)行階段:搭建相關(guān)的測試環(huán)境,準(zhǔn)備測試數(shù)據(jù),執(zhí)行測試用例,對發(fā)現(xiàn)的軟件缺陷進行報告、分析、跟蹤等。測試執(zhí)行不涉及較高的技術(shù)性,但它是測試的基礎(chǔ),直接關(guān)系到測試的可靠性、客觀性和準(zhǔn)確性。
(5)測試結(jié)果的審查和分析階段:測試執(zhí)行結(jié)束后,需要對測試結(jié)果進行整體或綜合的分析,以確定軟件產(chǎn)品質(zhì)量的當(dāng)前狀態(tài),為產(chǎn)品的改進或發(fā)布提供數(shù)據(jù)和依據(jù)。從管理上講,需要組織好測試結(jié)果的評審和分析會議,做好測試報告或質(zhì)量報告的編寫和評審。
軟件測試的計劃階段
本篇將從測試項目實施和管理的角度,進一步討論軟件測試項目計劃的實施目標(biāo)和標(biāo)準(zhǔn)、計劃階段的細分、測試項目計劃的要點和編制測試計劃的一些技巧等。
1.軟件測試項目計劃的目標(biāo)
測試項目計劃的整體目標(biāo)是確定測試任務(wù)、確定所需的各種資源和投入、預(yù)見可能出現(xiàn)的問題和風(fēng)險,以指導(dǎo)測試的執(zhí)行,最終實現(xiàn)測試目標(biāo),保證軟件產(chǎn)品質(zhì)量。制訂測試計劃需要達到的目標(biāo)如下。
(1)為各項測試活動制訂切實可行的、綜合的計劃,包括每項測試活動的對象、范圍、方法、進度和預(yù)期結(jié)果。
(2)為項目實施建立一個組織模型,并定義測試項目中每個角色的責(zé)任和工作內(nèi)容。
(3)開發(fā)有效的測試模型,可正確地驗證正在開發(fā)的軟件系統(tǒng)。
(4)確定測試所需要的時間和資源,以保證其可獲得性、有效性。
(5)確立每個測試階段測試完成及測試成功的標(biāo)準(zhǔn)、需要實現(xiàn)的目標(biāo)。
(6)識別出測試活動中各種風(fēng)險,并消除可能消除的風(fēng)險,降低那些不可能消除的風(fēng)險所帶來的損失。
2.軟件測試項目的標(biāo)準(zhǔn)
為保證測試可按計劃執(zhí)行,必須確認滿足何種外部條件測試才能開始,即需要在測試計劃中定義軟件測試項目的輸入標(biāo)準(zhǔn),然后定義測試項目的輸出標(biāo)準(zhǔn)。
(1)測試的輸入標(biāo)準(zhǔn)如下。
① 整體項目計劃框架:需要在框架清晰的情況下制訂測試計劃。
② 需求規(guī)格說明書:只有將用戶具體的、實際的需求了解透徹,才能制定準(zhǔn)確的測試需求和測試范圍。
③ 技術(shù)知識或業(yè)務(wù)知識:技術(shù)的變化或新技術(shù)的引入需要事先準(zhǔn)備,包括人員的培訓(xùn)。
④ 標(biāo)準(zhǔn)環(huán)境:符合用戶使用環(huán)境或業(yè)務(wù)運行環(huán)境的需求。
⑤ 設(shè)計文檔:設(shè)計文檔是設(shè)計軟件測試用例的重要參考資料,幫助測試人員了解系統(tǒng)的薄弱環(huán)節(jié)、關(guān)鍵點等。
⑥ 足夠的資源:包括人力資源、時間資源,硬件資源、軟件資源和其他環(huán)境資源。
⑦ 人員組織結(jié)構(gòu):項目經(jīng)理、測試組長、小組成員等的責(zé)任及相互關(guān)系已確定。
(2)測試的輸出標(biāo)準(zhǔn)如下。
① 測試執(zhí)行標(biāo)準(zhǔn)。
② 缺陷描述和處理標(biāo)準(zhǔn)。
③ 文檔標(biāo)準(zhǔn)和模板。
④ 測試分析、質(zhì)量評估標(biāo)準(zhǔn)等。
3.測試實施策略的制定
測試策略描述當(dāng)前測試項目的目標(biāo)和所采用的測試方法。此目標(biāo)不是上述測試計劃的目標(biāo),而是針對某個應(yīng)用軟件系統(tǒng)或程序等具體的測試項目要達到的預(yù)期結(jié)果,包括在規(guī)定的時間內(nèi)需要完成的測試內(nèi)容、軟件產(chǎn)品的特性或質(zhì)量得到確認的方面。
測試策略還需要描述測試不同階段(單元測試、集成測試、系統(tǒng)測試等)的測試對象、范圍和方法以及每個階段內(nèi)所需要進行的測試類型(功能測試、性能測試、壓力測試等)。
在制定測試策略前,需要確定測試策略項。測試策略制定需要考慮的內(nèi)容如下。
(1)需要使用的測試技術(shù)和工具。例如,60%用 Rational Robot自動測試,40%采用手工測試。
(2)測試完成標(biāo)準(zhǔn),用于計劃和實施測試及通報測試結(jié)果。例如,95%以上的測試用例通過并且P1、P2級別的缺陷全部解決。
(3)影響資源分配的特殊考慮。例如,有些測試必須在極冷或極熱的環(huán)境下進行,有些測試必須在周末進行,有些測試必須通過遠程環(huán)境執(zhí)行。
在確認測試方法時,需要根據(jù)實際情況,結(jié)合測試方法的特點來選擇合適的方法。下面介紹兩種常用的劃分方法。
根據(jù)是否需要執(zhí)行被測軟件來劃分,分為靜態(tài)測試和動態(tài)測試。靜態(tài)測試包括產(chǎn)品規(guī)格說明書、程序代碼的審查等,在工作中容易被忽視,在測試策略上應(yīng)說明如何加強這些環(huán)節(jié)。
根據(jù)是否針對系統(tǒng)的內(nèi)部結(jié)構(gòu)和具體實現(xiàn)算法來劃分,分為白盒測試和黑盒測試。如何將白盒測試和黑盒測試有機地結(jié)合起來,也是編寫測試策略時需要處理的問題之一。盡管用戶更傾向于基于產(chǎn)品規(guī)格說明的功能測試,但白盒測試可以發(fā)現(xiàn)潛在的邏輯錯誤,而這種錯誤往往是功能測試無法發(fā)現(xiàn)的。
綜上所述,可能需要在“基于測試技術(shù)的測試策略”和“基于測試方案的綜合測試策略”之間進行選擇。
4.測試項目計劃階段的細分
測試項目的計劃需要經(jīng)過計劃初期、起草、討論、評審等不同階段,才能制訂完成,并不能一氣呵成。并且不同的測試階段(單元測試、集成測試、系統(tǒng)測試、驗收測試等)或不同的測試類型(安全性測試、性能測試、可靠性測試等)都可能需要有具體的測試計劃。
(1)計劃初期要收集整體項目計劃、需求分析、功能設(shè)計、系統(tǒng)原型、用戶用例(User Case)等文檔或信息,理解用戶的真正需求,了解技術(shù)難點和弱點或新的技術(shù),與其他項目相關(guān)人員進行交流,確保在各個主要方面理解一致。
(2)測試計劃最關(guān)鍵的步驟是確定測試需求、測試層次。要將軟件分解成一個個的單元,對各個單元編寫測試需求。測試需求也是測試設(shè)計和開發(fā)測試用例的基礎(chǔ),并且是用來衡量測試覆蓋率的重要指標(biāo)。
(3)計劃起草是根據(jù)計劃初期掌握的各種信息、知識,確定測試策略,設(shè)計測試方法,完成測試計劃的框架。
(4)在將測試計劃提供給其他部門討論之前,要預(yù)先在測試小組/部門內(nèi)部進行審查。
(5)召開有需求分析、設(shè)計、開發(fā)人員參加的計劃討論會議,測試組長對測試計劃的思想、策略做較為詳細的介紹,并聽取在場人員對測試計劃中各個部分的意見,進行討論交流。
(6)項目中的每個人都應(yīng)當(dāng)參與測試計劃的評審,包括市場、開發(fā)、支持、技術(shù)寫作及測試人員。計劃的審查是必不可少的,出自于一個測試工程師的定義不一定是完整或準(zhǔn)確的。此外,測試工程師很難評估自己的測試計劃,就像開發(fā)者很難測試自己的代碼一樣。每一個計劃審查者都可能根據(jù)其經(jīng)驗及專長提出修改建議,有時還能提供測試工程師在組織產(chǎn)品定義時沒有掌握的信息。
(7)在計劃討論、評審的基礎(chǔ)上,綜合各方面的意見,即可完成測試計劃書,然后上報給測試經(jīng)理或項目經(jīng)理。得到批準(zhǔn),方可執(zhí)行。
測試計劃不僅服務(wù)于軟件產(chǎn)品當(dāng)前版本,而且還是下個版本的測試設(shè)計的主要信息來源。在進行新版本測試時,可以在原有的軟件測試計劃書上做修改,但需要經(jīng)過嚴(yán)格審查。
5.測試項目計劃的要點
軟件測試計劃內(nèi)容主要包括產(chǎn)品基本情況、測試需求說明、測試策略和記錄、測試資源配置、計劃表、問題跟蹤報告、測試計劃的評審結(jié)果等。除了產(chǎn)品基本情況、測試需求說明、測試策略等,測試計劃的焦點主要集中在以下幾個方面。
(1)目標(biāo)和范圍:產(chǎn)品特性、質(zhì)量目標(biāo),各階段的測試對象、目標(biāo)、范圍和限制。
(2)項目估算:根據(jù)歷史數(shù)據(jù),采用恰當(dāng)?shù)脑u估技術(shù),對測試工作量、所需資源(人力、時間、軟硬件環(huán)境)做出合理估算。
(3)風(fēng)險計劃:測試可能存在的風(fēng)險分析、識別,以及風(fēng)險的回避、監(jiān)控和管理。
(4)日程:獲取項目工作分解結(jié)構(gòu),并采用時限圖、甘特圖等制定時間/資源表。
(5)項目資源:人員、時間、硬件和軟件等資源的組織和分配,人力資源是重點,且與日程安排聯(lián)系密切。
(6)跟蹤和控制機制:質(zhì)量保證和控制,變化管理和控制等。
測試計劃書的內(nèi)容也可按單元測試、集成測試、系統(tǒng)測試、驗收測試等階段去組織,為每個階段制訂一個計劃書,也可為每個測試類型(安全性測試、性能測試、可靠性測試等)制訂特殊的計劃書。
同時,可為上述測試計劃書的每項內(nèi)容制訂一個具體實施的計劃。例如,對每個階段的測試重點、范圍、所采用的方法、測試用例設(shè)計的思想、提交的內(nèi)容等進行細化,供測試項目組的內(nèi)部成員使用。一些重要的項目中會形成一系列的計劃書,如測試范圍/風(fēng)險分析報告、測試標(biāo)準(zhǔn)工作計劃、資源和培訓(xùn)計劃、風(fēng)險管理計劃、測試實施計劃、質(zhì)量保證計劃等。
6.編制測試項目計劃的技巧
在計劃書中,有些內(nèi)容僅作為項目參考,如測試項目的背景、所采用的技術(shù)方法等;但有些內(nèi)容則可看作一種結(jié)論或承諾,必須要實施或必須達到目標(biāo),如測試小組結(jié)構(gòu)和組成、測試項目的里程碑、面向解決方案的交付內(nèi)容、項目標(biāo)準(zhǔn)、質(zhì)量標(biāo)準(zhǔn)、相關(guān)分析報告等。
若要做好測試計劃,測試設(shè)計人員需要仔細閱讀相關(guān)資料,包括用戶需求規(guī)格說明書、設(shè)計文檔、使用說明書等,全面熟悉系統(tǒng),并對軟件測試方法和項目管理技術(shù)有深刻的理解。此外還有一些技巧,具體如下所述。
(1)確定測試項目的任務(wù),清楚測試范圍和測試目標(biāo),例如,提交什么樣的測試結(jié)果。
(2)讓所有合適的相關(guān)人員參與測試項目的計劃制訂,尤其是在測試計劃早期。
(3)對測試的各階段所需要的時間、人力及其他資源進行預(yù)估,盡量做到客觀、準(zhǔn)確、留有余地。
(4)制定測試項目的輸入、輸出和質(zhì)量標(biāo)準(zhǔn),并和有關(guān)方面達成一致。
(5)建立變化處理的流程規(guī)則,識別出整個測試階段中內(nèi)在的、不可避免的變化因素,并思考如何進行控制。
軟件測試的設(shè)計和開發(fā)階段
測試計劃完成后,測試過程即將進入軟件測試設(shè)計和開發(fā)階段。軟件測試設(shè)計建立在測試計劃書的基礎(chǔ)上,應(yīng)認真理解測試計劃中的測試大綱、測試內(nèi)容及測試的通過準(zhǔn)則,以及通過測試用例來完成測試內(nèi)容的典型的邏輯轉(zhuǎn)換,將其作為測試的實施依據(jù),最終實現(xiàn)所確定的測試目標(biāo)。軟件設(shè)計是將軟件需求轉(zhuǎn)換成軟件表示的過程,主要描繪出系統(tǒng)結(jié)構(gòu)、詳細的處理過程和數(shù)據(jù)庫模式;軟件測試設(shè)計則是將測試需求轉(zhuǎn)換成測試用例,描述測試環(huán)境、測試執(zhí)行的范圍和層次、用戶的使用場景。因此軟件測試設(shè)計和開發(fā)是軟件測試過程中技術(shù)深、要求高的一個關(guān)鍵階段。
1.軟件測試設(shè)計和開發(fā)的主要內(nèi)容
(1)制訂測試的技術(shù)方案。確認各個測試階段需要采用的測試技術(shù)、測試環(huán)境和平臺以及選擇測試工具。有關(guān)系統(tǒng)測試中的安全性、可靠性、穩(wěn)定性、有效性等的技術(shù)方案是這部分工作內(nèi)容的重點。
(2)設(shè)計測試用例。根據(jù)產(chǎn)品需求分析、系統(tǒng)技術(shù)設(shè)計等規(guī)格文檔,在測試的技術(shù)方案基礎(chǔ)上設(shè)計具體的測試用例。
(3)設(shè)計特定的測試用例集合,滿足特定的一些測試目的和任務(wù)。即根據(jù)測試目標(biāo)、測試用例的特性和屬性(優(yōu)先級、層次、模塊等),選擇不同的測試用例,構(gòu)成執(zhí)行某個特定測試任務(wù)的測試用例集合(組),如基本測試用例組、例外測試用例組、性能測試用例組、完全測試用例組等。
(4)測試開發(fā)。根據(jù)所選擇的測試工具,將所有可進行自動化測試的測試用例轉(zhuǎn)換為自動化測試腳本的過程。
(5)測試環(huán)境的設(shè)計。根據(jù)所選擇的測試平臺及測試用例所要求的特定環(huán)境,進行服務(wù)器、網(wǎng)絡(luò)等測試環(huán)境的設(shè)計。
軟件測試設(shè)計中還需要考慮:所設(shè)計的測試技術(shù)方案是否可行、是否有效、是否能達到預(yù)期的測試目標(biāo);所設(shè)計的測試用例是否完整,邊界條件是否考慮,其覆蓋率能達到多高;所設(shè)計的測試環(huán)境是否和用戶的實際使用環(huán)境比較接近。
關(guān)鍵是做好測試設(shè)計前的知識傳遞,將設(shè)計/開發(fā)人員已掌握的技術(shù)、產(chǎn)品、設(shè)計等知識傳遞給測試人員;同時,需要做好測試用例的審查工作,不僅需要通過測試人員的審查,還需要通過設(shè)計/開發(fā)人員的審查。
2.測試用例設(shè)計的方法和管理
(1)測試用例設(shè)計方法
軟件測試用例設(shè)計有白盒測試和黑盒測試相對應(yīng)的設(shè)計方法。黑盒測試的用例設(shè)計采用等價類劃分、因果圖、邊界值分析、用戶界面測試、配置測試、安裝選項驗證等方法,適用于功能測試和驗收測試。而白盒測試的用例設(shè)計有多種方法,具體如下所述。
① 采用邏輯覆蓋(包括程序代碼的語句覆蓋、條件覆蓋、分支覆蓋)的結(jié)構(gòu)測試用例的設(shè)計方法。
② 基于程序結(jié)構(gòu)的域測試用例設(shè)計方法,其中“域”是指程序的輸入空間。域測試是在分析輸入空間的基礎(chǔ)上,完成域的分類、定義和驗證,從而對各種不同的域選擇適當(dāng)?shù)臏y試點(測試用例)進行測試。
③ 數(shù)據(jù)流測試用例設(shè)計方法是通過程序的控制流,從建立的數(shù)據(jù)目標(biāo)狀態(tài)的序列中發(fā)現(xiàn)異常結(jié)構(gòu)的測試方法。
④ 根據(jù)對象狀態(tài)或等待狀態(tài)變化來設(shè)計測試用例,也是比較常見的方法。
⑤ 基于程序錯誤的變異來設(shè)計測試用例,可有效地發(fā)現(xiàn)程序中某些特定的錯誤。
⑥ 基于代數(shù)運算符號的測試用例設(shè)計方法。受分支問題、二義性問題和大程序問題的困擾,此方法使用較少。
(2)測試用例的屬性
測試用例需要經(jīng)過創(chuàng)建、修改和不斷改善的過程,一個測試用例應(yīng)具備的屬性如下。
① 測試用例的優(yōu)先次序。優(yōu)先級越高,被執(zhí)行的時間越早,執(zhí)行的次數(shù)越多。由優(yōu)先級最高的測試用例組構(gòu)成基本驗證測試(Basic Verification Test,BVT),每次構(gòu)建軟件包時,都會被執(zhí)行一遍。
② 測試用例的目標(biāo)性。有的測試用例為主要功能而設(shè)計,有的測試用例為次要功能而設(shè)計,有的測試用例為系統(tǒng)的負載而設(shè)計,有的測試用例則為一些特殊場合而設(shè)計。
③ 測試用例所屬的范圍及其所屬的組件或模塊。這種屬性被用來管理測試用例。
④ 測試用例的關(guān)聯(lián)性。測試用例一般和軟件產(chǎn)品特性相聯(lián)系,多數(shù)情況下用于驗證產(chǎn)品的某個功能。這種屬性可被用于驗證被修改的軟件缺陷,或?qū)浖a(chǎn)品緊急補丁包的測試。
⑤ 測試用例的階段性。測試用例屬于單元測試、集成測試、系統(tǒng)測試、驗收測試中的某一個階段。對每個階段構(gòu)造一個測試用例的集合并執(zhí)行,容易計算出該階段的測試覆蓋率。
⑥ 測試用例的狀態(tài)性。若測試用例當(dāng)前無效,則被置于非激活狀態(tài),不會被運行,只有被激活的測試用例才被運行。
⑦ 測試用例的時效性。針對同樣功能,可能所用的測試用例不同,因為不同的產(chǎn)品版本在產(chǎn)品功能、特性等方面的要求不同。
⑧ 所有者、日期等屬性。測試用例的屬性還包括創(chuàng)建人、創(chuàng)建時間、修改人、修改時間。
根據(jù)上述屬性,再結(jié)合測試用例的編號、標(biāo)題、描述(前置條件、操作步驟、期望結(jié)果)等,即可對測試用例進行基于數(shù)據(jù)庫方式的良好管理。
(3)測試用例的審查
測試用例設(shè)計完成后,需要經(jīng)過非正式和正式的審查,兩種審查方式具體如下所述。
① 非正式的審查:一般在測試小組內(nèi)部進行,同測試組人員互相檢查或讓資深人員、測試組長幫助審查。
② 正式的審查:一般通過正式 E-mail 將已設(shè)計好的測試用例發(fā)送給相應(yīng)的系統(tǒng)分析、設(shè)計人員和程序員,讓其先通讀一遍,將發(fā)現(xiàn)的問題記錄下來。然后由測試組長或項目經(jīng)理召開一個測試用例評審會,由測試設(shè)計人員先對測試用例的設(shè)計思想、方法、思路等進行說明,然后系統(tǒng)分析、設(shè)計人員和程序員提出問題,測試人員做出回答,必要時進行討論。
評審?fù)甑臏y試用例經(jīng)修改后,即可直接用于手工測試或用于測試腳本的開發(fā)。
3.測試開發(fā)
使用所選擇的測試工具腳本語言(如Rational SQABasic)編寫測試腳本,將所有可進行自動化測試的測試用例轉(zhuǎn)化為測試腳本。其輸入是基于測試需求的測試用例,輸出是測試腳本和與之相對應(yīng)的期望結(jié)果,這種期望結(jié)果一般存儲在數(shù)據(jù)庫中或特定格式的文件中。
(1)測試開發(fā)的步驟:首先要搭建測試腳本開發(fā)環(huán)境,安裝測試工具軟件,設(shè)置管理服務(wù)器和具有代理的客戶端池,建立項目的共享路徑、目錄,并能連接到腳本存儲庫和被測軟件等;然后執(zhí)行錄制測試腳本初始化過程、獨立模塊過程、導(dǎo)航過程和其他操作過程,結(jié)合已經(jīng)建立的測試用例,對錄制的測試腳本進行組織、調(diào)試和修改,構(gòu)成一個有效的測試腳本體系,并建立外部數(shù)據(jù)集合。
(2)由于被測系統(tǒng)處在不完善階段,在運行測試腳本的過程中容易中斷,因此在測試腳本開發(fā)時,需要將此類錯誤處理好,并及時記錄當(dāng)時的狀態(tài),而且要求可以繼續(xù)執(zhí)行下去。解決上述問題的辦法有很多,例如,跳轉(zhuǎn)到別的測試過程、調(diào)用一個能夠清除錯誤的過程等。
(3)測試開發(fā)常見的問題:測試開發(fā)很亂,與測試需求或測試策略沒有對應(yīng)性;測試過程不可重用;測試過程被作為一個編程任務(wù)來執(zhí)行,導(dǎo)致腳本可移植性差。應(yīng)在腳本的結(jié)構(gòu)、模塊化、參數(shù)傳遞、基礎(chǔ)函數(shù)(庫)等方面做好設(shè)計,從而避免上述問題。
軟件測試的執(zhí)行階段
1.軟件測試執(zhí)行階段的管理難點
測試用例的設(shè)計和測試腳本的開發(fā)完成后,即開始執(zhí)行測試。測試執(zhí)行階段分為手工測試和自動化測試。
手工測試:在合適的測試環(huán)境下,按照測試用例的條件、步驟要求,準(zhǔn)備測試數(shù)據(jù),對系統(tǒng)進行操作,比較實際結(jié)果和測試用例所描述的預(yù)期結(jié)果,以確定系統(tǒng)是否真正實現(xiàn)了所需功能。
自動化測試:通過自動化測試工具,運行測試腳本,得到測試結(jié)果。
自動化測試的管理相對比較容易,測試工具會百分之百地執(zhí)行測試腳本,并自動記錄測試結(jié)果。而對手工測試的管理相對要復(fù)雜得多,在整個測試執(zhí)行階段中,管理上會碰到一系列問題。
(1)如何確保測試環(huán)境滿足測試用例所描述的要求?
(2)如何保證每個測試人員清楚自己的測試任務(wù)?
(3)如何保證每個測試用例得到百分之百的執(zhí)行?
(4)如何保證所報告的缺陷正確、描述清楚、沒有漏掉信息?
(5)如何在驗證缺陷和對新功能的測試之間尋找平衡?
(6)如何跟蹤缺陷處理的進度,使嚴(yán)重的缺陷及時得到解決?
(7)如何確保正確的測試環(huán)境?需要專人(OA實驗室管理人員、測試組長等)進行檢查。
2.測試階段目標(biāo)的檢查
測試階段目標(biāo)的檢查需要對每個測試階段(單元測試、集成測試、確認測試、系統(tǒng)測試和驗收測試等)的結(jié)果進行分析,保證每個階段的測試任務(wù)得到執(zhí)行,達到階段性的目標(biāo)。
(1)單元測試:目的在于檢查每個程序單元是否正確實現(xiàn)詳細設(shè)計說明中的模塊功能、性能、接口和設(shè)計約束等,發(fā)現(xiàn)各模塊內(nèi)部可能存在的各種錯誤。
(2)集成測試:主要目標(biāo)是發(fā)現(xiàn)與接口有關(guān)的問題。不管是外部接口還是內(nèi)部參數(shù)的傳遞,都需要抓住關(guān)鍵模塊,關(guān)鍵模塊應(yīng)盡早測試,并將自頂向下、自底向上兩種測試策略相結(jié)合,對各個模塊嚴(yán)格執(zhí)行。由于涉及系統(tǒng)不同的模塊、不同的層次或不同的部門,容易造成一些漏洞、疏忽,需要根據(jù)設(shè)計文檔多提問題、集體審查。
(3)確認測試:主要目的是表明軟件是可以正常工作的,并且確保軟件的所有功能和性能以及其他特性與用戶的要求一致。只有通過了確認測試的軟件才具備進入系統(tǒng)測試階段的資格。
(4)系統(tǒng)測試:目標(biāo)是保證系統(tǒng)在實際的環(huán)境中能夠穩(wěn)定、可靠地運行。包括恢復(fù)性測試、安全性測試、強度測試和性能測試等。系統(tǒng)測試技術(shù)要求高,占用資源比較多,因此應(yīng)設(shè)計完備,并準(zhǔn)備充分。
(5)驗收測試:驗收測試既可是非正式的測試,也可是正式的、有計劃的測試。一個軟件產(chǎn)品可能擁有眾多用戶,不可能由每個用戶驗收,此時應(yīng)多采用稱為α、β測試的過程。α測試是指軟件開發(fā)公司組織內(nèi)部人員模擬各類用戶對即將發(fā)布的軟件產(chǎn)品(稱為α版本)進行測試,嘗試發(fā)現(xiàn)錯誤并修正。α 測試的關(guān)鍵在于盡可能逼真地模擬實際運行環(huán)境和用戶可能的操作方式。經(jīng)過α測試調(diào)整的軟件產(chǎn)品,稱為β版本。緊隨其后的β測試是指組織公司外部的典型用戶試用β版本,并要求用戶報告異常情況、提出批評意見,然后再對β版本進行修改和完善。
3.測試用例執(zhí)行的跟蹤
測試用例執(zhí)行直接關(guān)系到測試的效率、結(jié)果,不僅需要做到測試效率高,而且需要保證結(jié)果正確、準(zhǔn)確、完整等。其管理關(guān)鍵是提高測試人員素質(zhì)和責(zé)任心,樹立良好的質(zhì)量文化意識,其次需要通過一定的跟蹤手段從某些方面保證測試執(zhí)行的質(zhì)量。
(1)測試效率的跟蹤比較容易,按照測試任務(wù)和測試周期,可得到期望的曲線,然后每天檢查測試結(jié)果,了解是否按預(yù)期進度進行。
(2)測試結(jié)果的跟蹤比較困難,應(yīng)將每個人的執(zhí)行測試情況記錄好,即清楚每個測試用例的執(zhí)行人員,一旦某個缺陷被遺漏,可以追溯到具體責(zé)任人。
4.缺陷的跟蹤和管理
缺陷的跟蹤和管理一般由數(shù)據(jù)庫系統(tǒng)來執(zhí)行,但數(shù)據(jù)庫系統(tǒng)也是依賴于一定的規(guī)則和流程工作的。管理思路如下所述。
(1)設(shè)計好每個缺陷應(yīng)包含的信息條目、狀態(tài)分類等。
(2)通過系統(tǒng)自動發(fā)送郵件給相應(yīng)的開發(fā)人員和測試人員,使任何缺陷都不被遺漏,并能得到及時處理。
(3)通過日報、周報等各類項目報告來跟蹤目前缺陷狀態(tài)。
(4)在各個大小里程碑之前,召開相關(guān)人員的會議,對缺陷進行會審。
(5)通過歷史曲線、統(tǒng)計曲線等進行分析,預(yù)測未來情況。
5.和項目組外部人員的溝通
為了使測試進展順利,與項目組外部人員保持良好溝通是非常有必要的,這樣,測試碰到的問題比較容易解決,測試中發(fā)現(xiàn)的缺陷處理效率也會提高。
(1)下面列舉一些有利于溝通的技巧。
① 通過一種合適的、可接受的方式指出對方的問題,盡量做到對事不對人。
② 每周召開一次不同部門一起參加的會議。
③ 建立大項目的郵件組,包含各部門主要人員的郵件地址。
④ 在同一個大項目組的開發(fā)、測試人員的日報、周報等需要互相抄送。
⑤ 適當(dāng)開展一些類似于聚餐的活動,改善組員關(guān)系,增進各方面人員的相互了解。
(2)人員間的基本通信方式主要有以下5種。
① 正式非個人方式。例如,正式審查會議。
② 正式個人之間交流。例如,成員之間的正式討論,有電子郵件跟蹤或文字記載,并包含所做出的結(jié)論,方便后期跟蹤、審查。
③ 非正式個人之間交流。例如,個人之間通過電話、即時消息系統(tǒng)的自由交流。
④ 內(nèi)部公共論壇。大家就某個主題發(fā)表自己看法,提相關(guān)問題或回答相關(guān)問題。
⑤ 成員網(wǎng)絡(luò)。例如,成員與小組之外或公司之外有經(jīng)驗的相關(guān)人員進行交流。
6.測試執(zhí)行結(jié)束
測試執(zhí)行全部完成,并不意味著測試項目的結(jié)束。測試項目結(jié)束的階段性標(biāo)志是將測試報告或質(zhì)量報告發(fā)送出去,并得到測試經(jīng)理或項目經(jīng)理的認可。除了測試報告或質(zhì)量報告的寫作之外,還要對測試計劃、設(shè)計和執(zhí)行等進行檢查、分析,完成項目的總結(jié)。
關(guān)于測試報告或質(zhì)量報告的寫作,主要簡單介紹對測試執(zhí)行結(jié)束前后的管理。
(1)審查測試全過程:在原來跟蹤的基礎(chǔ)上,需要對測試項目進行全過程、全方位的審視,檢查測試計劃、測試用例是否得到執(zhí)行,檢查測試是否有漏洞。
(2)對當(dāng)前狀態(tài)的審查:包括產(chǎn)品缺陷和過程中未解決的各類問題。對產(chǎn)品目前存在的缺陷進行逐個分析,了解對產(chǎn)品質(zhì)量的影響程度,從而決定產(chǎn)品的測試能否告一段落。
(3)結(jié)束標(biāo)志:根據(jù)上述兩項的審查進行評估,若所有測試內(nèi)容完成、測試的覆蓋率達到要求以及產(chǎn)品質(zhì)量達到已定義的標(biāo)準(zhǔn),即可定稿測試報告,并發(fā)送出去。
(4)項目總結(jié):通過對項目中的問題進行分析,找出流程、技術(shù)或管理中所存在的問題根源,避免重蹈覆轍,并獲得項目成功經(jīng)驗。
版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請發(fā)送郵件至 舉報,一經(jīng)查實,本站將立刻刪除。