(一)系統(tǒng)測試與調(diào)試
1.系統(tǒng)測試的意義纫普、目的及原則
意義: 為了發(fā)現(xiàn)錯誤而執(zhí)行程序的過程抛虏,成功的測試是發(fā)現(xiàn)了至今尚未發(fā)現(xiàn)的錯誤的測試。
目的: 希望能以最少的人力和時間發(fā)現(xiàn)潛在的各種錯誤和缺陷束凑。
原則:
- 應(yīng)盡早并不斷地進行測試
- 測試工作應(yīng)該避免由原開發(fā)軟件的人或小組承擔(dān)
- 在設(shè)計測試方案時贮喧,不僅要確定輸入數(shù)據(jù),而且要根據(jù)系統(tǒng)功能確定預(yù)期輸出結(jié)果
- 在設(shè)計測試用例時舔庶,不僅要設(shè)計有效抛蚁、合理的輸入條件,也要包含不合理惕橙、失效的輸入條件
- 在測試程序時瞧甩,不僅要檢驗程序是否做了該做的事,還要檢驗程序是否做了不該做的事
- 嚴格按照測試計劃來進行弥鹦,避免測試的隨意性
- 妥善保存測試計劃肚逸、測試用例,作為軟件文檔的組成部分彬坏,為維護提供方便
- 測試例子都是精心設(shè)計出來的朦促,可以為重新測試或追加測試提供方便
2.測試過程
過程:
- 制定測試計劃(充分考慮整個項目的開發(fā)時間和開發(fā)進度及一些人為因素和客觀條件)
- 編制測試大綱(規(guī)定了系統(tǒng)每項功能或特性所必須完成的基本測試項目和測試完成的標(biāo)準)
- 根據(jù)測試大綱設(shè)計和生成測試用例,產(chǎn)生測試設(shè)計說明文檔(主要包括被測項目栓始、輸入數(shù)據(jù)思灰、測試過程、預(yù)期輸出結(jié)果等)
- 實施測試(按照測試大綱和測試用例進行測試)
- 生成測試報告(對測試進行概要說明混滔、列出測試的結(jié)論、指出缺陷和錯誤歹颓、給出整改建議)
(二)傳統(tǒng)軟件的測試策略
1.單元測試
也叫模塊測試坯屿,在模塊編寫完成且無編譯錯誤后就可以進行。
單元測試側(cè)重于模塊中的內(nèi)部處理邏輯和數(shù)據(jù)結(jié)構(gòu)巍扛。
測試內(nèi)容:
- 模塊接口
- 測試模塊的輸入?yún)?shù)和形式參數(shù)在個數(shù)领跛、屬性、單位上是否一致
- 調(diào)用其他模塊時撤奸,所給出的實際參數(shù)和被調(diào)用模塊的形式參數(shù)在個數(shù)吠昭、屬性喊括、單位上是否一致
- 調(diào)用標(biāo)準函數(shù)時,所用的參數(shù)在屬性矢棚、數(shù)目和順序上是否正確
- 全局變量在各模塊中的定義和用法是否一致
- 輸入是否僅改變了形式參數(shù)
- 開/關(guān)的語句是否正確
- 規(guī)定的
I/O
格式是否與輸入/輸出語句一致 - 在使用文件之前是否已經(jīng)打開文件或使用文件之后是否已經(jīng)關(guān)閉文件
- 局部數(shù)據(jù)結(jié)構(gòu)
- 變量的說明是否合適
- 是否使用了尚未賦值或尚未初始化的變量
- 變量的初始值或默認值是否正確
- 變量名是否有錯
- 重要的執(zhí)行路徑
- 計算方面的錯誤郑什,算術(shù)運算的優(yōu)先次序不正確或理解錯誤、精度不夠蒲肋、算法錯誤等
- 比較和控制流的錯誤蘑拯,精度不相等、不同類型間進行比較兜粘、邏輯運算符錯誤等
- 出錯處理
- 邊界條件
單元測試過程:
- 驅(qū)動模塊
- 樁模塊(存根模塊)
2.集成測試
集成測試就是把模塊按系統(tǒng)設(shè)計說明書的要求組合起來進行測試申窘。
集成測試的兩種方法:
- 非增量集成(分別測試各個模塊,再把這些模塊組合起來進行整體測試)
- 增量集成(以小增量的方式逐步進行構(gòu)造和測試)
增量集成策略:
- 自頂向下集成測試
從主控模塊(主程序)開始孔轴,沿著控制層逐步向下剃法,以深度優(yōu)先或廣度優(yōu)先的方式將從屬于主控模塊的模塊集成到結(jié)構(gòu)中。 - 自底向上集成測試
從原子模塊(程序機構(gòu)的最底層構(gòu)件)開始進行構(gòu)造和測試路鹰。 - 回歸測試
重新執(zhí)行已經(jīng)測試過的某些子集贷洲,以確保變更沒有傳播不期望的副作用。 - 冒煙測試
將已經(jīng)轉(zhuǎn)換為代碼的軟件構(gòu)件集成到構(gòu)建中悍引,設(shè)計一系列測試以暴露影響構(gòu)建正確的完成其功能的錯誤恩脂,每天將該構(gòu)建與其他構(gòu)建及整個軟件產(chǎn)品集成起來進行冒煙測試。
3.確認測試
確認測試始于集成測試的結(jié)束趣斤,那時已測試完單個構(gòu)件俩块,軟件已組裝成完整的軟件包,且接口錯誤已被發(fā)現(xiàn)和改正浓领。
- 確認測試準則
- 配置評審
- α測試與β測試
4.系統(tǒng)測試
系統(tǒng)測試是將已經(jīng)確認的軟件玉凯、計算機硬件、外設(shè)和網(wǎng)絡(luò)等其他因素結(jié)合在一起联贩,進行信息系統(tǒng)的各種集成測試和確認測試漫仆,其目的是通過與系統(tǒng)的需求相比較,發(fā)現(xiàn)所開發(fā)的系統(tǒng)與用戶需求不符或矛盾的地方泪幌。
- 恢復(fù)測試
- 安全性測試
- 壓力測試
- 性能測試
- 部署測試
(三)測試面向?qū)ο筌浖?/h2>
1.單元測試
面向?qū)ο筌浖械膯卧母拍畎l(fā)生了變化盲厌,封裝導(dǎo)出了類的定義。
每個類和類的實例(對象)有屬性(數(shù)據(jù))和處理這些數(shù)據(jù)的操作(函數(shù)或方法)祸泪。
封裝的類常是單元測試的重點吗浩,然而,類中包含的操作是最小的可測試單元没隘。
面向?qū)ο筌浖念悳y試是由封裝在該類中的操作和類的狀態(tài)行為驅(qū)動的懂扼。
2.集成測試
面向?qū)ο蟓h(huán)境中的集成測試有兩種策略:
- 基于線程的測試,對響應(yīng)系統(tǒng)的一個輸入或事件所需的一組類進行集成,每個線程單獨地集成和測試阀湿,并應(yīng)用回歸測試以確保沒有產(chǎn)生副作用
- 基于使用的測試赶熟,通過測試很少使用服務(wù)類的那些類開始系統(tǒng)測試的構(gòu)建
(四)測試Web應(yīng)用
1.質(zhì)量維度
需要檢查的項目:
- 內(nèi)容
- 功能
- 結(jié)構(gòu)
- 可用性
- 導(dǎo)航性
- 性能
- 兼容性
- 安全性
2.WebApp測試策略
- 對
WebApp
的內(nèi)容模型進行評審奴烙,已發(fā)現(xiàn)錯誤 - 對接口模型進行評審杯巨,保證適合所有的用例
- 評審
WebApp
的設(shè)計模型,發(fā)現(xiàn)導(dǎo)航錯誤 - 測試用戶界面窍霞,發(fā)現(xiàn)表現(xiàn)機制和導(dǎo)航機制中的錯誤
- 對功能構(gòu)件進行單元測試
- 對貫穿體系結(jié)構(gòu)的導(dǎo)航進行測試
- 在各種不同的環(huán)境配置下實現(xiàn)
WebApp
罩旋,并測試WebApp
對于每一種配置的兼容性 - 進行安全性測試啊央,試圖攻擊
WebApp
或其所處環(huán)境的弱點 - 進行性能ces- 通過可控制的最終用戶群對
WebApp
進行測試,對他們與系統(tǒng)的交互結(jié)果進行以下方面的評估涨醋,包括內(nèi)容和導(dǎo)航錯誤瓜饥、可用性、兼容性及WebApp
的安全性浴骂、可靠性及性能等方面的評估
(五)測試方法
軟件測試方法分為:
- 靜態(tài)測試
- 人工檢測
- 計算機輔助靜態(tài)分析
- 動態(tài)測試
- 黑盒測試(功能測試)乓土,在不考慮軟件內(nèi)部結(jié)構(gòu)和特性的情況下,測試軟件的外部特性溯警。
- 等價類劃分
- 邊界值分析
- 錯誤推測
- 因果圖
- 白盒測試(結(jié)構(gòu)測試)趣苏,根據(jù)程序的內(nèi)部結(jié)構(gòu)和邏輯來設(shè)計測試用例,對程序的路徑和過程進行測試梯轻,檢測是否滿足設(shè)計的需要食磕。
- 邏輯覆蓋
- 循環(huán)覆蓋
- 基本路徑測試
- 黑盒測試(功能測試)乓土,在不考慮軟件內(nèi)部結(jié)構(gòu)和特性的情況下,測試軟件的外部特性溯警。
(六)調(diào)試
調(diào)試發(fā)生在測試之后,其任務(wù)是根據(jù)測試時所發(fā)現(xiàn)的錯誤找出原因和具體的位置喳挑,進行改正彬伦。
主要由程序開發(fā)人員進行,誰開發(fā)誰調(diào)試伊诵。
1.調(diào)試過程
調(diào)試過程通常得到以下兩種結(jié)果:
- 發(fā)現(xiàn)問題的原因并將其改正
- 未能找到原因单绑,調(diào)試人員可以假設(shè)一個原因,設(shè)計一個或多個測試用例來幫助驗證這個假設(shè)曹宴,重復(fù)此過程直到改正錯誤搂橙。
2.調(diào)試方法
- 試探法
- 回溯法
- 對分查找法
- 歸納法
- 演繹法