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