付帥 孫云杰
摘 要:隨著IT產(chǎn)業(yè)的快速發(fā)展,軟件測試的質(zhì)量得到了企業(yè)和客戶的高度重視,軟件測試行業(yè)的前景也很光明。本文從軟件測試的基本概念開始,重點介紹軟件測試過程中涉及的幾個關(guān)鍵階段。
軟件測試過程包括測試要求分析,測試計劃準(zhǔn)備,測試計劃開發(fā),測試用例設(shè)計和測試環(huán)境。準(zhǔn)備,測試數(shù)據(jù)準(zhǔn)備,測試用例執(zhí)行,錯誤跟進,回歸測試以及測試報告編寫和摘要。測試的每個階段基本上是PDCA循環(huán)體,也稱為Deming循環(huán),它是質(zhì)量改進模型。P(Plan)代表計劃,D(Do)代表執(zhí)行,C(Check)代表檢查,A(Action)代表處理。通過PDCA循環(huán)來達到提高軟件測試質(zhì)量的目的。
關(guān)鍵詞:基本概念 軟件測試過程 PDCA循環(huán) 軟件測試質(zhì)量
1 軟件測試的基本概念
測試軟件是軟件生命周期中的重要階段,也是軟件質(zhì)量保證的關(guān)鍵步驟。軟件測試是執(zhí)行程序以發(fā)現(xiàn)軟件錯誤和缺陷,記錄問題并修復(fù)它們以確保軟件質(zhì)量的過程。軟件測試可用于檢查系統(tǒng)是否滿足預(yù)期要求。
2 軟件測試的過程概述
測試人員應(yīng)盡早參加軟件測試活動。軟件測試過程包括以下階段:
a)測試需求分析;b)測試計劃的編寫;c)測試方案的制定;d)測試用例的設(shè)計;e)測試環(huán)境的搭建;f)測試數(shù)據(jù)的準(zhǔn)備;g)測試用例的執(zhí)行;h)Bug的跟進及回歸;i)測試報告的總結(jié)及編寫。
以上幾個階段實質(zhì)上就是一個PDCA循環(huán)體。首先,在分析軟件需求的前提下規(guī)劃和設(shè)計測試活動,然后根據(jù)既定計劃測試和記錄測試。檢查并分析測試結(jié)果以形成測試報告。因此形成了一個質(zhì)量改進的閉環(huán)。從而達到提高軟件測試質(zhì)量的目的。通過完整的軟件測試過程,您不僅可以發(fā)現(xiàn)軟件缺陷,還可以發(fā)現(xiàn)錯誤,分析錯誤,查找錯誤分布特征和規(guī)則。這反過來又幫助項目經(jīng)理識別當(dāng)前用于改進的軟件開發(fā)過程中的缺陷。
3 軟件測試過程
3.1 測試需求分析
a)測試需求分析的目的
1)分析確定測試范圍;2)分析確定處理分支;3)分析確定所需要的業(yè)務(wù)場景;4)分析確定各功能點對應(yīng)的預(yù)期處理結(jié)果。
b)測試需求分析的依據(jù)
在軟件測試需求分析階段,我們需要根據(jù)“軟件需求規(guī)范”逐項分析系統(tǒng)的各種需求。這包括功能要求,性能要求,安全要求,易用性要求,兼容性要求和安裝要求。并列出需求列表清單,對需求進行剖析,拆分至詳細(xì)的子需求點。
c)測試需求分析的方法
1)拆分《需求規(guī)格說明書》
在測試需求分析階段,通過將“需求規(guī)范”拆分為需求跟蹤矩陣的形式,并對各種需求進行分類,如功能要求,性能要求,安全要求,易用性要求,兼容性要求,安裝要求等。重點對功能需求在分析時進行明確指出哪些是業(yè)務(wù)功能,哪些是輔助功能,哪些是數(shù)據(jù)約束、哪些是編輯約束等。
2)分析業(yè)務(wù)場景
通過對不同的業(yè)務(wù)場景進行業(yè)務(wù)分析,考慮實際業(yè)務(wù)場景的調(diào)用者,并繪制相應(yīng)的業(yè)務(wù)流程圖,檢查是否可以遍歷所有業(yè)務(wù)場景并設(shè)計涵蓋所有業(yè)務(wù)場景的測試用例。
3.2 測試計劃的編寫及測試方案的制定
軟件測試計劃是測試過程的總體設(shè)計。通過收集項目和產(chǎn)品相關(guān)信息,分析測試范圍,測試風(fēng)險以及估計測試用例,工作量,資源和時間。對測試中使用的策略,方法,環(huán)境,資源和時間表做出合理安排。
測試計劃的編寫遵循5W原則,即:
a)When:何時開始做,何時結(jié)束測試,有必要合理安排測試進度;
b)What:我們要做什么?要明確的羅列出來,便于明確我們的測試方向和重點,及后期劃分責(zé)任模塊,即確定測試范圍;
c)Who:誰要參與這次項目的測試?具體負(fù)責(zé)哪個模塊的功能測試?主要負(fù)責(zé)任務(wù)是?都是在這個里面進行明確的責(zé)任劃分,即進行測試資源安排;
d)How:如何測試,確定我們的測試策略:它是否包括功能測試,性能測試,安全測試,安裝測試,可用性測試和兼容性測試,即確定測試策略;
e)Where:這個是說把文檔放在哪里,就明確指出我們的輸出文檔有哪些:比如說測試用例,Bug清單、測試報告等等文檔要存放的位置,作用就是規(guī)定輸出文檔以及輸出文檔的存放位置,即確定測試的輸出。
我們根據(jù)測試計劃編寫的5W原則可以進行編寫完整的測試計劃,測試計劃模板可如下所示:
1概述
1.1 測試項目簡介
1.2 測試范圍說明
2測試目標(biāo)
3測試資源
3.1 軟件資源
3.2 硬件資源
3.3 測試工具
3.4 人力資源
4測試種類和測試標(biāo)準(zhǔn)
4.1 功能測試
4.2 性能測試
4.3 安裝測試
4.4 易用性測試
5測試要點
6測試時間和進度
7風(fēng)險及對策
3.3 測試用例的設(shè)計
編寫測試用例可以使測試覆蓋更加全面,使測試工作井然有序,便于切換和通信。結(jié)構(gòu)合理,案例覆蓋面廣,可執(zhí)行,可重復(fù)。
測試用例一般包含的要素:用例編號,測試范圍描述,測試模塊描述,用例標(biāo)題,前提條件,測試數(shù)據(jù)輸入,測試程序,測試用例優(yōu)先級(致命,嚴(yán)重,一般,次要,推薦),預(yù)期結(jié)果,執(zhí)行結(jié)果。
測試用例的常用方法如下所示:
a)等價類劃分法。等價類劃分方法是典型的黑盒測試方法。它對無法詳盡的輸入條件進行分類,并使用等價類中的測試條件作為查找系統(tǒng)缺陷的輸入代表。如果在這種輸入條件下也找不到系統(tǒng)缺陷,則與此等價的其他輸入也找不到系統(tǒng)缺陷,反之亦然。等價類考慮單個輸入字段的各種情況,避免輸入數(shù)據(jù)的不完整性和覆蓋的不穩(wěn)定性,無論是盲目還是隨機。
b)邊界值。邊值分析方法是一種測試用例設(shè)計技術(shù),它補充了等價類劃分方法。在測試期間,可以忽略邊界值的條件,并且在輸入或輸出范圍的邊界處發(fā)生軟件設(shè)計中的大量錯誤。而不是發(fā)生在輸入輸出范圍的內(nèi)部。因此,為各種邊界條件設(shè)計測試用例可以識別更多的系統(tǒng)缺陷。
c)基本路徑分析法。基本路徑方法是設(shè)計白盒測試用例的一種方法,但它也可用于設(shè)計黑盒測試用例。重點是設(shè)計系統(tǒng)業(yè)務(wù)流程圖,確定流程分支,并根據(jù)覆蓋程序分支的原則選擇測試數(shù)據(jù)來設(shè)計測試用例。這樣設(shè)計的測試用例就覆蓋了主流程,但是對于一些存在循環(huán)的流程就很少考慮。
d)正交表法。正交表分析方法可以有效地減少設(shè)計測試用例的數(shù)量。正交表設(shè)計測試用例的步驟如下:
列出系統(tǒng)功能的影響因素,即系統(tǒng)功能輸入條件;
明確每個因素的輸入?yún)?shù);
選擇合適的正交表來列出所有正交表值;
把變量的值映射到表中;
根據(jù)正交表分析,編寫測試用例。
e)因果圖。因果圖方法是通過圖形分析輸入的各種組合來設(shè)計測試用例的方法,并且適用于檢查程序輸入條件的各種條件的組合。設(shè)計因果關(guān)系測試用例的步驟如下:
分析所有可能的輸入和可能的輸出;
找出輸入和輸出之間的對應(yīng)關(guān)系;
畫出因果圖;
把因果圖轉(zhuǎn)換成判定表;
根據(jù)判定表設(shè)計測試用例。
f)場景設(shè)計法。場景設(shè)計方法是Rational的RUP開發(fā)模型所倡導(dǎo)的測試用例設(shè)計思想。測試人員根據(jù)系統(tǒng)功能觸發(fā)事件,進行發(fā)散思維,考慮系統(tǒng)功能的主業(yè)務(wù)場景和擴展業(yè)務(wù)場景,并根據(jù)實際業(yè)務(wù)場景編寫測試用例。
g)異常分析法。主要是構(gòu)造環(huán)境異常來看測試結(jié)果,比如網(wǎng)絡(luò)中斷,服務(wù)器宕機等。
h)錯誤猜測法。虛假猜測旨在通過根據(jù)經(jīng)驗和直覺猜測程序中可能發(fā)生的各種錯誤來針對測試用例。
3.4 測試環(huán)境的搭建與維護
測試環(huán)境是完成軟件測試所必需的計算機硬件,軟件,網(wǎng)絡(luò)設(shè)備和歷史數(shù)據(jù)的通用術(shù)語。那就是測試環(huán)境=軟件+硬件+網(wǎng)絡(luò)+數(shù)據(jù)準(zhǔn)備+測試工具。
在設(shè)置測試環(huán)境時,請嘗試考慮測試環(huán)境與正式環(huán)境之間的差異,并確保測試環(huán)境的穩(wěn)定性。它有助于順利執(zhí)行測試用例,并在測試環(huán)境中及時再現(xiàn)軟件缺陷。
如何搭建和維護穩(wěn)定的測試環(huán)境呢?一般我們和開發(fā)人員進行溝通,根據(jù)測試計劃中提供的軟件和硬件資源,借鑒開發(fā)人員搭建的本地環(huán)境和其他類似環(huán)境的說明文檔,即可進行搭建和維護測試環(huán)境。
3.5 測試用例的執(zhí)行
測試要求的分析,測試計劃和測試用例的準(zhǔn)備,測試環(huán)境的構(gòu)建和維護都準(zhǔn)備好用于測試執(zhí)行。測試用例的執(zhí)行是測試過程的一項重要活動。在進行測試時,我們應(yīng)該注意以下幾點:a)選擇合理的測試用例;b)測試的分工及資源的利用;c)在測試執(zhí)行時,建議大家要先進行冒煙測試,即先進行整個業(yè)務(wù)流程的驗證,再進行細(xì)節(jié)的驗證;d)在執(zhí)行測試時,及時記錄bug;e)如果在進行測試時測試用例覆蓋率不足,則需要及時補充;f)我們將進行多輪循環(huán)測試,直到滿足測試要求。
3.6 bug的跟進及回歸
在執(zhí)行測試的過程中,如果發(fā)現(xiàn)測試用例失敗,我們將及時記錄錯誤。那么我們?nèi)绾斡涗浉哔|(zhì)量的bug呢?記錄bug時,我們應(yīng)該包括問題范圍、問題錯誤行為描述、問題發(fā)現(xiàn)的版本、問題出現(xiàn)的環(huán)境、問題預(yù)期行為的描述和問題的重現(xiàn)步驟和問題截圖等。我們可以把 bug錄入缺陷管理系統(tǒng),比如 bugfree等,在管理工具中,我們指派給相應(yīng)的開發(fā)人員,待開發(fā)人員解決問題更新狀態(tài)后,我們再進行驗證,直至問題關(guān)閉。
因軟件底層架構(gòu)設(shè)計等因素,等大多數(shù)問題關(guān)閉后,可能由于開發(fā)人員修改一個微小的問題,而導(dǎo)致影響其他功能的正常使用,故當(dāng)我們進行完一輪測試后,我們還要進行多輪循環(huán)測試驗證,即回歸測試,直至滿足測試要求。
3.7 測試報告的總結(jié)及編寫
測試執(zhí)行完成后,我們可以通過記錄的 bug和跟進的 bug狀態(tài)及分布情況,對 bug進行各維度匯總分析,確定軟件缺陷的規(guī)律,并幫助項目經(jīng)理了解軟件開發(fā)過程中的缺陷以進行改進。
3.7.1軟件測試報告的編寫
我們可以從bug的總體數(shù)量,bug分類,bug類型分布,bug模塊分布,bug狀態(tài)分布,bug的趨勢等維度進行分析軟件問題。進而幫助我們編寫軟件測試報告。軟件測試報告的內(nèi)容包括以下內(nèi)容:
a)測試項目簡介;b)測試目標(biāo)及范圍;c)測試過程;d)測試情況分析;e)測試總結(jié)。
3.7.2軟件測試總結(jié)
軟件測試摘要包括軟件資源消耗的摘要和軟件測試經(jīng)驗的摘要。
a)軟件資源消耗情況:包括投入了多少測試人員,用了多長時間,執(zhí)行了多少測試用例,覆蓋了多少功能模塊等;
b)軟件測試經(jīng)驗:包括成功的測試經(jīng)驗和失敗的教訓(xùn),比如哪些測試用例設(shè)計得比較好,覆蓋比較全面,采用的哪些測試策略比較好等。
4 結(jié)束語
軟件測試過程應(yīng)該是一個完整的PDCA循環(huán)體。我們不會再執(zhí)行完最后一個測試用例就戛然而止了,我們還會進行多輪的回歸驗證,直至滿足軟件測試的要求。PDCA循環(huán)是一個自我完善和改進的全閉環(huán)模型,對于質(zhì)量的不斷提高和改進非常有效。
參考文獻:
[1] 陳能技.軟件測試技術(shù)大全:測試基礎(chǔ) 流行工具 項目實戰(zhàn)(第二版)[M].北京:人民郵電出版社.2011.