第一章 敏捷測試的定義 敏捷方法:Scrum(迭代式增量軟件開發(fā)過程)、極限編程(XP)、Crystal、動態(tài)系統(tǒng)開發(fā)方法(DSDM)或特性驅(qū)動開發(fā)(FDD)等。 敏捷是迭代的和增量的。 敏捷軟件開發(fā)宣言:
敏捷測試人員的十條法則 提供持續(xù)反饋、為客戶創(chuàng)造價值、進行面對面的溝通、勇氣、簡單化、持續(xù)改進、響應(yīng)變化、自我組織、關(guān)注人、享受樂趣 支持團隊的面向技術(shù)測試 單元測試驗證代碼段的行為。組件測試通過測試類和方法間的交互幫助鞏固系統(tǒng)的一個可部署部分的整體設(shè)計。 可靠的源碼控制、配置管理和持續(xù)即成是從指導開發(fā)的程序員測試中獲取價值的要素。 持續(xù)集成是敏捷團隊的核心實踐。 單元測試的工具 Java的Junit、 .NET的NUnit、Perl和Ruby的Test::Unit、Python的PyUnit 為了幫助支持團隊的面向技術(shù)測試,敏捷團隊需要例如源代碼控制、測試自動化、IDE和構(gòu)建管理工具等。 支持團隊的面向業(yè)務(wù)測試 面向業(yè)務(wù)的測試同時基于示例和使用變成語言描述需求。 第一象限的活動確保內(nèi)部質(zhì)量,最優(yōu)化項目生產(chǎn)力,減少技術(shù)性負債。第二象限測試定義和驗證外部質(zhì)量,同時幫助我們了解何時完成。` 核對以下內(nèi)容以解決需求問題:
面向業(yè)務(wù)測試工具包 面向業(yè)務(wù)測試的目標是促進客戶和開發(fā)人員之間的溝通和協(xié)作,確保團對在每一次迭代中都產(chǎn)生真正的價值。 作為一名(角色),我需要(功能),因此(業(yè)務(wù)價值)。 Windows NetMeeting和VNC這樣的工具是不同地區(qū)的兩位同事能夠結(jié)對測試。 視頻會議工具如WebEx和Skype支持遠程團隊和客戶之間的協(xié)作和演示。在線白板(如Scriblink)和交互式白板(Mimeo)方便了分散式的白板討論。 行為驅(qū)動開發(fā)(BDD)是測試驅(qū)動開發(fā)的變種。它與領(lǐng)域驅(qū)動設(shè)計有關(guān),關(guān)注領(lǐng)域而不是技術(shù)。一些BDD工具包括:由于Java平臺的easyb和JBehave、用于.NET的NBehave和Nspec、用于Ruby的RSpec。 Fit(集成測試框架)。可通過http://fit.c2.com了解Fit。 FitNesse是一個基于Fit的Web服務(wù)器、Wiki、軟件測試開源工具。FitNesse和Fit之間的主要區(qū)別在于FitNesse的測試通過Wiki標記符而不是HTML表格編寫。它也支持在電子表格中創(chuàng)建測試并導入到測試中。 可通過http://www.了解FitNesse。 測試Web服務(wù)
敏捷開源測試工具(GUI測試) Watir——Watir(Ruby測試Web應(yīng)用)是一款開源Ruby庫,用于自動化Windows上的IE瀏覽器。還提供對其它瀏覽器的支持,包括FireWatir(用于Firefox)和SafariWatir(用于Safari)。 Selenium——測試工具集,開源,用于測試Web應(yīng)用。測試可以寫成HTML表格形式或者通過常用編程語言編寫,并且可以運行于大多數(shù)瀏覽器。名為Selenium IDE的Firefox插件提供了快速學習該工具的途徑。 Canoo WebTest——在WebTest腳本中,測試在XML文件中以“步驟”描述,模仿了用戶對web界面的操作。WebTest不像Selenium和Watir那樣驅(qū)動真實的瀏覽器,它使用HTML模擬需要的瀏覽器。WebTest支持測試PDF文件和Excel文件。 如何有效使用工具編寫面向業(yè)務(wù)測試的策略? 1. 增量構(gòu)建測試 首先確保最明顯的用例是正常工作的。編寫一個簡單、常用路徑的自動化測試來證明代碼完成了最基本的功能。在測試通過后,在開始考慮其它情況。編寫面向業(yè)務(wù)測試是一種迭代過程。 討論測試會讓開發(fā)人員意識到塔忽略或者誤解了某個需求。 2. 確保測試通過 每當測試在持續(xù)集成和構(gòu)建過程中失敗時,全隊的最高優(yōu)先級(除了關(guān)鍵的生產(chǎn)問題)應(yīng)該是讓構(gòu)建通過測試。 3. 使用合適的測試設(shè)計模式 4. 構(gòu)建/操作/檢查 (搭建/執(zhí)行/驗證) 依據(jù)測試的目的在內(nèi)存或者數(shù)據(jù)庫中構(gòu)建輸入數(shù)據(jù);調(diào)用產(chǎn)品代碼來操作這些輸入;檢查運算結(jié)果。 使用真實數(shù)據(jù)庫的測試可以幫助測試那些數(shù)據(jù)訪問層和業(yè)務(wù)邏輯層無法輕易分離的遺留代碼。 5. 基于時間的、活動和事件模式 6. 了解更多 業(yè)務(wù)邏輯和算法應(yīng)該能夠被測試模塊訪問,而不需要通過用戶界面或者批處理過程。這保證了測試驅(qū)動開發(fā),也會生成可測試的架構(gòu)。 7. 關(guān)鍵詞和數(shù)據(jù)驅(qū)動測試 可測試性 o 代碼設(shè)計和測試設(shè)計 o 自動化與手動第二象限測試 o 測試管理 團隊需要正確的工具來啟發(fā)需求和示例,從全局到細節(jié),包括核對表、思維導圖、電子表格、模型、流程圖和各種軟件工具。 第10章 評價產(chǎn)品的面向業(yè)務(wù)測試 敏捷開發(fā)增量迭代的特性帶來了一個在開發(fā)軟件的同時演示其業(yè)務(wù)價值的機會。 探索測試(ET)——同時進行的測試設(shè)計、測試執(zhí)行和學習。探索測試本身不是一種測試技術(shù),而是一種可以應(yīng)用于任何測試技術(shù)的方式或態(tài)度。探索強調(diào)個人和交互而不是過程和工具。 作為一個研究性工具,是用戶故事測試和自動化回歸集的重要補充。探索測試并不是通過詳盡的測試來評估軟件,它的一個副作用是增加了測試人員對被測系統(tǒng)的了解。它揭示了產(chǎn)品中可以更多地使用自動化測試的區(qū)域,并能引出不少對于新特性的想法,而這些新特性往往會演變成新的故事。 可用性測試 o 用戶需求和角色測試 o 導航 o 研究競爭對手 API(應(yīng)用程序編程接口)是可以被其它軟件應(yīng)用或構(gòu)件執(zhí)行的一組功能。 o 改變輸入?yún)?shù) o 改變調(diào)用順序 探索測試輔助工具 o 設(shè)置測試數(shù)據(jù) PerlClip可以用不同類型的輸入數(shù)據(jù)測試文本輸入框。從http://www.免費獲取。 o 幫助評估測試會話的輸出 LogWatch用于監(jiān)控日志文件中的錯誤信息。 o 模擬器——用于為系統(tǒng)生成具有關(guān)鍵特征和行為的,類似于真實數(shù)據(jù)的工具。 o 仿真器——仿真器能復制一個系統(tǒng)的功能,從而與被測的系統(tǒng)行為一致。當要測試系統(tǒng)中與其它系統(tǒng)或設(shè)備的接口代碼時,仿真器十分有用。 第11章 利用面向技術(shù)的測試評價產(chǎn)品 非功能性需求包括配置、安全、性能、內(nèi)存管理、各種ility(比如可靠性、交互性以及可伸縮性)、恢復,甚至還有數(shù)據(jù)轉(zhuǎn)換。 可靠性(PSR)測試 如何完成安全性測試任務(wù)? 1. 采用持續(xù)集成(CI)周期性地運行自動化測試套集。 2. 學習使用開源的靜態(tài)代碼分析工具,將其加到CI中。 3. 安裝自動化安全漏洞檢測工具,如Nessus(http://www./nessus/)??梢栽诜荊UI模式的命令行中運行Nessus,這樣就可以將其集成到CI工具中了。 4. 學習使用開源的fuzzing工具,將其加到CI中。 詳情參見https://en./wiki/Buffer_overflow和https://en./wiki/Uncontrolled_format_string 關(guān)于可用于靜態(tài)代碼分析的工具列表,參見https://en./wiki/List_of_tools_for_static_code_analysis 可維護性 傳統(tǒng)項目通過完整的代碼審查或是檢測來實現(xiàn)。敏捷團隊經(jīng)常使用結(jié)對編程,這本身就包含了持續(xù)的代碼審查。此外還需:
交互性——不同系統(tǒng)和組織協(xié)同工作與分享信息的能力。交互性測試會檢查兩個或多個通信系統(tǒng)之間端到端的功能。 兼容性 項目類型表明了需要進行多少兼容性測試。 可靠性——軟件的可靠性是指系統(tǒng)在常規(guī)與意外環(huán)境下執(zhí)行和保持其功能的能力。 一些用于度量可靠性的統(tǒng)計數(shù)據(jù)有:
性能、負載、壓力以及可伸縮性測試 可伸縮性——可伸縮性測試驗證應(yīng)用在多用戶訪問的情況下是否依舊可靠。重要的是要考慮整個系統(tǒng)而非應(yīng)用本身。 通常性能測試的目的是確定系統(tǒng)中的瓶頸或是建立基準以供未來測試所用。此外,它還會確保系統(tǒng)符合性能目標和需求并幫助負責人就應(yīng)用的整體質(zhì)量做出決策。 負載測試用于在越來越多的用戶同時訪問時評估系統(tǒng)的行為。壓力測試用于在負載超出預期的情況下評估應(yīng)用的健壯性。 性能與負載測試工具: 開源: Apache Jmeter、Grinder、Pounder、ftptt以及OpenWebLoad 付費: NeoLoad、WebLoad、eValid、LoadTest、LoadRunner以及OSATest 敏捷回顧也是每次迭代計劃會議的一部分。 測試自動化前期需要:適當?shù)妮o導、充足的時間和強大的管理支持。 將單元測試自動化與持續(xù)集成放在首要位置。 測試矩陣是以被測試的功能為縱軸,測試條件為橫軸而形成的矩形圖表。 迭代開始時確保故事可測試并提供充足測試數(shù)據(jù)的最后機會。 有用的迭代度量
測試人員經(jīng)歷的一個迭代 1. 發(fā)布或主題計劃階段:
2. 迭代前的準備
3. 迭代開始(是確保故事可測試并提供充足測試數(shù)據(jù)的最后機會)
4. 編碼和測試
5. 迭代結(jié)束時的收尾:
用戶驗收測試(UAT) 敏捷測試成功的7個要素: 1. 使用全隊參與方法 2. 利用敏捷測試思維 3. 自動化回歸測試 4. 提供和獲得反饋 5. 構(gòu)建核心實踐的基礎(chǔ)(持續(xù)集成、可控的測試環(huán)境、管理技術(shù)債務(wù)、增量工作) 6. 與客戶協(xié)作 7. 保持大局觀 來源:http://www./content-4-147601.html |
|