第一章:軟件測試基礎(chǔ)
1. 引起軟件缺陷的原因
人都會犯錯誤(error,mistake),因此人設(shè)計的代碼或文檔中會引入缺陷(defect, fault, bug);當(dāng)存在缺陷的代碼被執(zhí)行時,系統(tǒng)可能無法實現(xiàn)期望功能或?qū)崿F(xiàn)了未期望的功能,引起軟件失效(failure)。
產(chǎn)生缺陷的原因:人們本身容易犯錯誤、時間壓力、復(fù)雜的代碼、復(fù)雜的系統(tǒng)架構(gòu)、技術(shù)的革新、以及/或者許多系統(tǒng)之間的交互等。
失效也可能是由環(huán)境條件引起的:如:輻射、電磁場和污染等都有可能引起固件中的故障,或者由于硬件環(huán)境的改變而影響軟件的執(zhí)行。
2. 進行軟件測試的原因:
可以減少軟件系統(tǒng)在運行環(huán)境中的風(fēng)險,
提高軟件的質(zhì)量,
為了滿足合同或法律法規(guī)的要求,
為了滿足行業(yè)標準的要求。
3. 軟件質(zhì)量特性:
功能、可靠性、可用性、可移植性、可維護性、效率
4. 測試和質(zhì)量
通過測試發(fā)現(xiàn)的缺陷評估質(zhì)量;
測試發(fā)現(xiàn)缺陷很少或沒有,測試可以幫助樹立對質(zhì)量的信心;
合理的測試順利通過,可降低系統(tǒng)存在的風(fēng)險;
修改了缺陷則提升了質(zhì)量;
分析缺陷及其原因可改進軟件開放過程,反過來可提升以后產(chǎn)品質(zhì)量。
測試是質(zhì)量保證工作不可或缺的一部分。
5. 質(zhì)量保證包括:
開發(fā)標準、培訓(xùn)和缺陷分析
6. 測試活動包括:
計劃和控制,
選擇測試條件、設(shè)計和執(zhí)行測試用例,
檢查測試結(jié)果,
評估出口準則,
報告測試過程及被測系統(tǒng),
在一個測試階段完成后要進行測試結(jié)束和總結(jié)工作,
同時也包括文檔/代碼的評審、執(zhí)行靜態(tài)分析。
7. 測試的目標:
發(fā)現(xiàn)缺陷,
增加對質(zhì)量的信心,
為決策提供信息,
預(yù)防缺陷。
8. 不同的測試階段考慮不同的測試目標:
軟件生命周期早起的測試設(shè)計的思維過程和活動:可以避免將缺陷引入代碼;
對文檔的評審,并識別和解決問題:有助于防止代碼中出現(xiàn)缺陷;
開發(fā)測試(組件測試、集成測試和系統(tǒng)測試):盡可能多的發(fā)現(xiàn)失效,從而識別和修正盡可能多的缺陷;
驗收測試:確認系統(tǒng)是否按照預(yù)期工作,建立滿足了需求的信心;
維護測試:驗證開發(fā)過程中的變更是否引入新的缺陷;
運行測試:評估系統(tǒng)的特征,如可靠性或可用性等。
9.殺蟲劑悖論
采用同樣的測試用例多次重復(fù)進行測試,最后將不在能夠發(fā)現(xiàn)新的缺陷。為了克服殺蟲劑悖論,測試用例需要進行定期評審和修改,同時需要不斷增加新的不同的測試用例來測試系統(tǒng)的不同部分,從而發(fā)現(xiàn)潛在的更多的缺陷。
10. 測試的7個原則:
測試顯示存在缺陷(但不能證明系統(tǒng)不存在缺陷);
窮盡測試是不可行的;
測試盡早介入;
缺陷集群性;
殺蟲劑悖論;
測試活動依賴于測試背景(如對安全關(guān)鍵的軟件進行測試,跟對一般軟件的測試是不一樣的);
不存在缺陷(就是有用系統(tǒng))的謬論(如果系統(tǒng)無法使用,或不能完成客戶的需求和期望,發(fā)現(xiàn)和修改缺陷是沒有任何意義的)。
11. 基本的測試過程:
測試計劃和控制;
測試分析和設(shè)計;
測試實現(xiàn)和執(zhí)行;
評估出口準則和報告;
測試結(jié)束活動。
以上活動邏輯上連續(xù),但實際可能會重疊或同時進行;可適當(dāng)剪裁。
12. 測試計劃的主要活動是:
識別測試任務(wù),
定義測試目標,
為了實現(xiàn)目標和任務(wù)確定必要的測試活動。
13. 測試控制是持續(xù)進行的活動(整個生命周期):
報告測試的狀態(tài),包括與計劃的偏差;
采取必要措施以滿足測試任務(wù)和目標。
14. 測試分析和設(shè)計階段的主要任務(wù):
評審測試依據(jù)(如需求、軟件完整性級別(風(fēng)險等級)、風(fēng)險分析報告、系統(tǒng)架構(gòu)、設(shè)計和接口說明);
評估測試依據(jù)和測試對象的可測性;
通過對測試項、規(guī)格說明、測試對象行為和結(jié)構(gòu)的分析,識別測試條件并確定其優(yōu)先級;
設(shè)計測試用例并確定優(yōu)先級;
確定測試條件和測試用例所需要的測試數(shù)據(jù);
規(guī)劃測試環(huán)境的搭建和確定測試需要的基礎(chǔ)設(shè)施和工具;
創(chuàng)建測試依據(jù)和測試用例間的雙向可追蹤性。
15. 測試實現(xiàn)和執(zhí)行階段的任務(wù):
通過特定的順序組織測試用例來完成測試規(guī)程和腳本的設(shè)計,并且包括測試執(zhí)行所需的其他任何信息,以及測試環(huán)境的搭建和運行測試。
16. 評估出口準則和報告
主要任務(wù):
按照測試計劃中定義的測試出口準則檢查測試日志;
評估是否需要進行更多的測試,或是否需要更改測試的出口準則;
為利益相關(guān)者提供一個測試總結(jié)報告。
17. 測試結(jié)束活動
進行測試結(jié)束活動的情況:
軟件系統(tǒng)正式發(fā)布、
一個測試項目完成(或取消)、
達到一個里程碑或一個維護版本完成。
18. 測試結(jié)束活動的主要任務(wù):
檢查提交了哪些計劃的可交付產(chǎn)品;
事件報告是否關(guān)閉、或?qū)ξ搓P(guān)閉的時間報告提交變更需求;
記錄系統(tǒng)的驗收;
記錄和歸檔測試件、測試環(huán)境和測試基礎(chǔ)設(shè)備,以便以后的重復(fù)使用;
移交測試件到維護部門;
分析和記錄所獲得的經(jīng)驗教訓(xùn),用于以后的項目和測試成熟度改進;
使用為測試成熟度的提高所收集的信息。
19. 從低到高定義不同級別的測試獨立:
測試由軟件本身的編寫人員來執(zhí)行;
測試由一個其他開發(fā)人員來執(zhí)行(可能來自同一個開發(fā)小組);
測試由組織內(nèi)的一個或多個其他小組成員(如獨立的測試小組)或測試專家(如可用性和測試專家)來執(zhí)行;
測試由來自其他組織或其他公司的成員來執(zhí)行(如測試外包或其他外部組織的鑒定)。
20. 發(fā)現(xiàn)失效需要測試員具有:
好奇心,
專業(yè)的懷疑態(tài)度,
一雙挑剔的眼睛,
對細節(jié)的關(guān)注,
與開發(fā)人員良好的溝通能力,
對常見的錯誤進行判斷的經(jīng)驗。
21. 職業(yè)道德:
公共:測試工程師應(yīng)當(dāng)以公眾利益為目標;
客戶和雇主:在保持與公正利益一致的情況下,應(yīng)注意滿足客戶和雇主的最高利益;
產(chǎn)品:產(chǎn)品發(fā)布版本符合最高的專業(yè)標準;
判斷:維護職業(yè)判斷的完整性和獨立性;
管理:對軟件測試合乎道德規(guī)范的管理;
專業(yè):推進其專業(yè)的完整性和聲譽;
同事:對同事持平等、互助、支持的態(tài)度,促進與開發(fā)人員的合作;
自我:參與終生職業(yè)實踐的學(xué)習(xí),并促進合乎道德的職業(yè)實踐方法。
|