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