【編者按】敏捷的理念已經(jīng)深入人心,開(kāi)發(fā)過(guò)程已經(jīng)漸入佳境,測試的處境卻稍顯尷尬。
測試從業(yè)者應該何去何從,怎樣才能擁抱敏捷,體現出自己新的價(jià)值呢?InfoQ特地邀請了來(lái)自Google的敏捷測試專(zhuān)家段念,為讀者答疑解惑,希望所有測試從業(yè)者可以從中得到自己的答案。更多關(guān)于敏捷測試的內容,請訪(fǎng)問(wèn)InfoQ中文站敏捷測試相關(guān)內容。
在與不少測試從業(yè)人員討論到敏捷的時(shí)候,被問(wèn)得最多的大約是兩個(gè)問(wèn)題:到底?,敏捷軟件開(kāi)發(fā)還需要測試工程師嗎?。前一個(gè)問(wèn)題是對于敏捷測試本身定義的疑問(wèn),第二個(gè)問(wèn)題則是對敏捷開(kāi)發(fā)將測試工程師排除在外的擔心。
其實(shí),在探尋這兩個(gè)問(wèn)題答案的過(guò)程中,我們可以更清晰的了解敏捷軟件開(kāi)發(fā)中測試的工作定義,測試價(jià)值觀(guān),以及敏捷開(kāi)發(fā)中開(kāi)發(fā)與測試工程師的配合。鑒于這兩個(gè)問(wèn)題的意義,在本敏捷測試專(zhuān)欄的第一篇文章中,本人嘗試從自己的實(shí)踐出發(fā),盡可能清楚的回答這兩個(gè)問(wèn)題。
確實(shí),相對于敏捷開(kāi)發(fā)紅遍大江南北的狀況而言,對敏捷測試的討論則低調得多。敏捷聯(lián)盟定義了敏捷的4個(gè)價(jià)值聲明,以及伴隨的12條支持原則,這12條原則中沒(méi)有一條單獨提到測試。
這是不是意味著(zhù)測試在敏捷開(kāi)發(fā)中并不重要呢?實(shí)際上,如果仔細研讀敏捷的12個(gè)原則,以及各種不同的敏捷實(shí)踐,就會(huì )發(fā)現,測試在敏捷開(kāi)發(fā)中占有非常重要的地位。無(wú)論是原則中的頻繁交付,還是對可工作的軟件的度量,或是敏捷開(kāi)發(fā)實(shí)踐中的測試驅動(dòng)開(kāi)發(fā),行為驅動(dòng)開(kāi)發(fā),都離不開(kāi)測試的支持。
在本人看來(lái),敏捷開(kāi)發(fā)中不把測試單獨拿出來(lái)描述的原因,恰恰是因為在敏捷開(kāi)發(fā)中,測試不再是一個(gè)單獨的、和開(kāi)發(fā)獨立的過(guò)程,而是變成了驅動(dòng)開(kāi)發(fā)、衡量產(chǎn)出的主要的手段,成為了敏捷開(kāi)發(fā)中所有工程師在工作時(shí)必須時(shí)刻考慮和實(shí)踐的一個(gè)部分。簡(jiǎn)而言之,敏捷軟件測試更多的是一種理念,而非過(guò)程。
既然是這樣,為什么我們還要在這個(gè)專(zhuān)欄中專(zhuān)門(mén)來(lái)討論敏捷軟件測試?本人接觸過(guò)不少軟件開(kāi)發(fā)和測試工程師,他們所處的組織有的正在努力向敏捷開(kāi)發(fā)轉型,有的已經(jīng)實(shí)踐了一段實(shí)踐的敏捷開(kāi)發(fā),但由于由來(lái)已久的工作習慣,他們中的絕大多數并不能自覺(jué)的認識到測試在敏捷開(kāi)發(fā)中的關(guān)鍵作用,而是有意無(wú)意的將測試仍然看作是與開(kāi)發(fā)截然分開(kāi)的下一個(gè)階段,導致在實(shí)踐敏捷開(kāi)發(fā)的過(guò)程中遇到種種問(wèn)題:要么是忽略了代碼質(zhì)量,導致在頻繁的迭代過(guò)程中,每一個(gè)迭代的問(wèn)題層出不窮;或是沿用原有的方法安排對系統的系統測試,導致測試團隊疲于奔命,卻總也趕不上開(kāi)發(fā)所要求的進(jìn)度。在這種情況下,專(zhuān)門(mén)來(lái)討論敏捷軟件開(kāi)發(fā)中的測試,也就是敏捷軟件測試的話(huà)題,對這些工程師應該會(huì )有一些幫助。
那么,到底?很難給敏捷測試下一個(gè)精確、完善的定義,在本人看來(lái),接納了敏捷的核心價(jià)值觀(guān)(溝通,簡(jiǎn)單,反饋,勇氣,尊重),在敏捷軟件開(kāi)發(fā)過(guò)程中開(kāi)展的測試就可以被稱(chēng)作是敏捷軟件測試。因此,敏捷軟件測試并不是一個(gè)與敏捷軟件開(kāi)發(fā)同一層次的劃分,而是敏捷軟件開(kāi)發(fā)中的一部分,與傳統的測試不同,敏捷軟件測試并不是一個(gè)獨立的過(guò)程,相反,它與整個(gè)敏捷開(kāi)發(fā)中的其他活動(dòng)交織在一起,處處都能看到它的影子。
由于敏捷軟件測試并不傾向于一個(gè)單獨的過(guò)程定義,本人擬從敏捷軟件測試與傳統測試觀(guān)點(diǎn)的比較、敏捷軟件測試中采用的方法、測試工程師在敏捷軟件測試過(guò)程中的工作等方面來(lái)闡述之。在這篇文章中,我們主要從宏觀(guān)的角度來(lái)描述敏捷軟件測試,而在本專(zhuān)欄的后續文章中,我們將對敏捷軟件測試中采用的方法、工程師在敏捷軟件測試中的工作內容等進(jìn)行進(jìn)一步的描述。
使用Dashboard、燃盡圖等方式展示當前工作與可交付產(chǎn)品之間的距離建立單元測試覆蓋率等度量指標共享質(zhì)量目標意味著(zhù)質(zhì)量責任由所有工程師共同承擔開(kāi)發(fā)測試應該建立一定的測試覆蓋率標準,例如,在單元測試這個(gè)級別上,建立60%或80%的覆蓋率要求通過(guò)使用TDD、BDD等技術(shù),保證產(chǎn)品和代碼的可測試性建立足夠多的自動(dòng)化測試,保證測試能夠滿(mǎn)足快速迭代的要求檢查表提到了團隊、反饋、質(zhì)量文化和開(kāi)發(fā)測試四個(gè)方面的內容,在本人看來(lái),這四個(gè)方面體現的就是敏捷軟件測試與傳統軟件測試的最大的不同。傳統軟件測試關(guān)注的是通過(guò)盡可能完備的覆蓋去發(fā)現盡可能多的問(wèn)題,把測試和開(kāi)發(fā)當成是兩個(gè)獨立的過(guò)程,測試是對開(kāi)發(fā)階段產(chǎn)生成果的驗證。
而敏捷軟件測試則建立了一種不同的質(zhì)量文化:測試的目的是為了保證產(chǎn)品快速發(fā)布,也就是對生產(chǎn)率本身的提高。基于驗證的出發(fā)點(diǎn)必然會(huì )要求測試與開(kāi)發(fā)的獨立,以及盡可能客觀(guān)和完備的度量產(chǎn)品質(zhì)量;而基于生產(chǎn)率的出發(fā)點(diǎn)則要求建立敏捷的團隊,要求測試與開(kāi)發(fā)盡可能緊密,要求建立具有高度可測試性的軟件,以及基于這些的高度自動(dòng)化測試。
在檢查表列出的所有項目中,質(zhì)量文化是基礎,團隊是敏捷軟件測試得以實(shí)施的條件,反饋和開(kāi)發(fā)測試則是敏捷軟件測試的具體方法。當然,你可以可以從敏捷的核心價(jià)值觀(guān)來(lái)階段這些項目:團隊關(guān)注的是溝通與尊重;反饋直接對應于反饋;質(zhì)量文化基于勇氣(承擔質(zhì)量責任的勇氣)與尊重;而開(kāi)發(fā)測試則是反饋與簡(jiǎn)單的具體體現。
另一個(gè)在本文最。
敏捷測試應該是適應敏捷方法而采用的新的測試流程、方法和實(shí)踐,對傳統的測試流程有所剪裁,有所不同的側重,例如減少測試計劃、測試用例設計等工作的比重,增加與產(chǎn)品設計人員、開(kāi)發(fā)人員的交流和協(xié)作。在敏捷測試流程中,參與單元測試,關(guān)注持續迭代的新功能,針對這些新功能進(jìn)行足夠的驗收測試,而對原有功能的回歸測試則依賴(lài)于自動(dòng)化測試。由于敏捷方法中迭代周期短,測試人員盡早開(kāi)始測試,包括及時(shí)對需求、開(kāi)發(fā)設計的評審,更重要的是能夠及時(shí)、持續的對產(chǎn)品質(zhì)量進(jìn)行反饋。
在敏捷方法中,需求變化比較快、產(chǎn)品開(kāi)發(fā)周期很短,我們目前采用四周時(shí)間,也就是每個(gè)月發(fā)布一個(gè)新版本。開(kāi)發(fā)周期短,功能不斷累加,給測試帶來(lái)很大的挑戰,測試流程要做相應的調整。
在對新功能進(jìn)行app功能測試和回歸測試策略上,測試任務(wù)簡(jiǎn)單地可分為新功能測試和回歸測試。在敏捷方法中,針對這兩部分的測試建立相應的策略,加上自動(dòng)化測試,以提高測試的效率,最大限度地降低質(zhì)量風(fēng)險。
TestBird - 手游和App自動(dòng)化測試
1、敏捷測試人員的定義
我們這樣定義敏捷測試人員:專(zhuān)業(yè)的測試人員,適應變化,與技術(shù)人員和業(yè)務(wù)人員展開(kāi)良好協(xié)作,并理解利用測試記錄需求和驅動(dòng)開(kāi)發(fā)的思想。敏捷測試人員往往具有優(yōu)秀的技術(shù)能力,知道如何與他人合作以實(shí)現自動(dòng)化測試,同時(shí)也擅長(cháng)探索性測試。他們希望了解客戶(hù)在做什么,以此更好地理解客戶(hù)的軟件需求。
誰(shuí)是敏捷測試人員?她是驅動(dòng)敏捷測試的團隊成員。我們知道許多敏捷測試人員剛開(kāi)始的時(shí)候在從事其他工作。開(kāi)發(fā)人員可能會(huì )愛(ài)上測試而超越單元測試的范疇。習慣以敏捷方式工作的探索型測試人員也會(huì )被敏捷團隊吸引。其他角色的專(zhuān)業(yè)人士,比如業(yè)務(wù)或者功能分析師,也可能具有同樣的特質(zhì)并做同樣的工作。
技能很重要,但態(tài)度更值得關(guān)注。Janet總是說(shuō):“如果態(tài)度不好,那么技能則一無(wú)是處”。既然我們要為敏捷團隊招募大量的測試人員,那么必須慎重考慮這一點(diǎn),并與敏捷社區的其他朋友進(jìn)行相關(guān)討論。測試人員往往可以總覽全局。他們更多時(shí)候是以客戶(hù)的角度看待應用程序,這意味著(zhù)他們一般以客戶(hù)為中心。
2、敏捷測試思想
如何使一個(gè)團隊變得“敏捷”?對我們而言,敏捷團隊持續關(guān)注如何最出色地工作并發(fā)布最優(yōu)秀的產(chǎn)品。根據我們的經(jīng)驗,這需要大量的訓練、學(xué)習、時(shí)間、實(shí)驗和協(xié)同工作。這并不適合所有人,但是對那些希望自己團隊充滿(mǎn)活力并關(guān)注持續改進(jìn)的人來(lái)說(shuō)非常適合。
成功的項目總是因為優(yōu)秀的人才完成了出色的工作。在敏捷團隊中做一名成功的測試人員所需要的特質(zhì)可能與在任何團隊做一名高水平的測試人員所需要的相同。
敏捷測試人員不會(huì )把自己看作是質(zhì)量管理辦公室的主管以保護客戶(hù)避免受到缺陷代碼的傷害。她會(huì )樂(lè )于收集和分享信息,與客戶(hù)或者產(chǎn)品負責人協(xié)作以幫助他們充分展示自己的需求,從而得到他們需要的功能,同時(shí)向所有人提供項目進(jìn)展的反饋。
敏捷測試應該是適應敏捷方法而采用的新的測試流程、方法和實(shí)踐,對傳統的測試流程有所剪裁,有所不同的側重,例如減少測試計劃、測試用例設計等工作的比重,增加與產(chǎn)品設計人員、開(kāi)發(fā)人員的交流和協(xié)作。
在敏捷測試流程中,參與單元測試,關(guān)注持續迭代的新功能,針對這些新功能進(jìn)行足夠的驗收測試,而對原有功能的回歸測試則依賴(lài)于自動(dòng)化測試。由于敏捷方法中迭代周期短,測試人員盡早開(kāi)始測試,包括及時(shí)對需求、開(kāi)發(fā)設計的評審,更重要的是能夠及時(shí)、持續的對產(chǎn)品質(zhì)量進(jìn)行反饋。
在敏捷方法中,需求變化比較快、產(chǎn)品開(kāi)發(fā)周期很短,我們目前采用四周時(shí)間,也就是每個(gè)月發(fā)布一個(gè)新版本。開(kāi)發(fā)周期短,功能不斷累加,給測試帶來(lái)很大的挑戰,測試流程要做相應的調整。
在對新功能進(jìn)行app功能測試和回歸測試策略上,測試任務(wù)簡(jiǎn)單地可分為新功能測試和回歸測試。在敏捷方法中,針對這兩部分的測試建立相應的策略,加上自動(dòng)化測試,以提高測試的效率,最大限度地降低質(zhì)量風(fēng)險。
TestBird - 手游和App自動(dòng)化測試。
敏捷開(kāi)發(fā)包括一系列的方法,主流的有如下七種:
XP
XP(極限編程)的思想源自 Kent Beck和Ward Cunningham在軟件項目中的合作經(jīng)歷。XP注重的核心是溝通、簡(jiǎn)明、反饋和勇氣。因為知道計劃永遠趕不上變化,XP無(wú)需開(kāi)發(fā)人員在軟件開(kāi)始初期做 出很多的文檔。XP提倡測試先行,為了將以后出現bug的幾率降到最低。
SCRUM
SCRUM是一種迭代的增量化過(guò)程,用于產(chǎn)品開(kāi)發(fā)或工作管理。它是一種可以集合各種開(kāi)發(fā)實(shí)踐的經(jīng)驗化過(guò)程框架。SCRUM中發(fā)布產(chǎn)品的重要性高于一切。
該方法由Ken Schwaber和 Jeff Sutherland 提出,旨在尋求充分發(fā)揮面向對象和構件技術(shù)的開(kāi)發(fā)方法,是對迭代式面向對象方法的改進(jìn)。
Crystal Methods
Crystal Methods(水晶方法族)由Alistair Cockburn在20實(shí)際90年代末提出。之所以是個(gè)系列,是因為他相信不同類(lèi)型的項目需要不同的方法。雖然水晶系列不如XP那樣的產(chǎn)出效率,但會(huì )有更多的人能夠接受并遵循它。
FDD
FDD (Feature-Driven Development,特性驅動(dòng)開(kāi)發(fā))由Peter Coad、Jeff de Luca 、Eric Lefebvre共同開(kāi)發(fā),是一套針對中小型軟件開(kāi)發(fā)項目的開(kāi)發(fā)模式。此外,FDD是一個(gè)模型驅動(dòng)的快速迭代開(kāi)發(fā)過(guò)程,它強調的是簡(jiǎn)化、實(shí)用、易于被開(kāi)發(fā)團隊接受,適用于需求經(jīng)常變動(dòng)的項目。
ASD
ASD(Adaptive Software Development,自適應軟件開(kāi)發(fā))由Jim Highsmith在1999年正式提出。ASD強調開(kāi)發(fā)方法的適應性(Adaptive),這一思想來(lái)源于復雜系統的混沌理論。ASD不象其他方法那樣 有很多具體的實(shí)踐做法,它更側重為ASD的重要性提供最根本的基礎,并從更高的組織和管理層次來(lái)闡述開(kāi)發(fā)方法為什么要具備適應性。
DSDM
DSDM(動(dòng)態(tài)系統開(kāi)發(fā)方法)是眾多敏捷開(kāi)發(fā)方法中的一種,它倡導以業(yè)務(wù)為核心,快速而有效地進(jìn)行系統開(kāi)發(fā)。實(shí)踐證明DSDM是成功的敏捷開(kāi)發(fā)方法之一。在英國,由于其在各種規模的軟件組織中的成功,它已成為應用最為廣泛的快速應用開(kāi)發(fā)方法。
DSDM不但遵循了敏捷方法的原理,而且也適合那些成熟的傳統開(kāi)發(fā)方法有堅實(shí)基礎的軟件組織。
輕量型RUP
RUP其實(shí)是個(gè)過(guò)程的框架,它可以包容許多不同類(lèi)型的過(guò)程, Craig Larman 極力主張以敏捷型方式來(lái)使用RUP。他的觀(guān)點(diǎn)是:目前如此眾多的努力以推進(jìn)敏捷型方法,只不過(guò)是在接受能被視為RUP 的主流OO開(kāi)發(fā)方法而已。
軟件測試的方法根據軟件工程的組織和實(shí)現方式,有很大差別,有些是比較技術(shù)化的方法,有些則是工程方法,主要分為: 黑盒測試方法群:等價(jià)類(lèi)劃分、邊界值、因果圖、基路徑法、專(zhuān)家測試法、smoking、場(chǎng)景測試等 白盒測試方法群:同行評審、需求審查、代碼審查、接口測試(調用測試和返回測試,需要結合等價(jià)類(lèi)和因果圖方法)等。
當在單元層面黑盒而在集成層面白盒時(shí),基本上兩類(lèi)方法就會(huì )有結合了,就會(huì )出現習慣上說(shuō)的灰盒測試(說(shuō)實(shí)話(huà),不做到純產(chǎn)品級開(kāi)發(fā),基本上都是用的灰盒測試)。
可能在軟件測試技術(shù)的概念上,你不太熟悉,敏捷測試和自動(dòng)化測試,不是測試技術(shù),是一種測試類(lèi)型。比如你參與的項目是敏捷開(kāi)發(fā),那么你做的測試就成為敏捷測試,而自動(dòng)化測試,是相對于手工測試而言的。
軟件測試的技術(shù),有很多,畢竟軟件測試人員要做的工作涉及范圍很廣,相對應的,要懂的技術(shù)也很懂,根據用途,我做了以下分類(lèi),希望對你有所幫助吧:
1、進(jìn)行數據庫測試,那么就要掌握數據庫的操作語(yǔ)句和數據庫相關(guān)知識,如sql、觸發(fā)器、內/外連接、單表/多表操作;
2、進(jìn)行客戶(hù)端測試,就要考慮各種測試方法;
3、進(jìn)行產(chǎn)品的網(wǎng)絡(luò )性能測試,就要具備一定的網(wǎng)絡(luò )知識。
相對于手工測試而言,自動(dòng)化測試要掌握的東西就更多了,除了以上幾點(diǎn)外,還要掌握:
1、性能測試工具/功能測試工具,如loadrunner和QTP;
2、掌握自動(dòng)化腳本語(yǔ)言,因為腳本語(yǔ)言有很多種,要看你做的是什么測試,用的是什么工具,不過(guò)各個(gè)語(yǔ)言都是想通的,如果你掌握了java,基本上那些東西都是能夠用起來(lái)的。
1)按照測試技術(shù)劃分
黑盒測試:功能測試,必須
白盒測試:邏輯結構測試,代碼的邏輯、算法、結構是否正確,要求必須懂得代碼,需要編寫(xiě)測試用例,可選
灰盒測試:介于中間
注意:在單元測試時(shí),白盒應用相對較多,在集成測試時(shí),灰盒測試應用相對較多,在系統、驗收測試時(shí)一般就不會(huì )使用白盒測試和灰盒測試了。
2)按是否需要運行代碼劃分
靜態(tài)測試:界面測試,文檔測試,代碼測試【重點(diǎn)關(guān)注代碼的規范性,一般檢查變量的命名,注釋的頻率,編程的規范性,不需要寫(xiě)測試用例,一般只需要有代碼審查單】
注意:一般經(jīng)常把白盒測試和靜態(tài)測試的要素結合在一起,形成靜態(tài)白盒測試
動(dòng)態(tài)測試:運行程序進(jìn)行檢查,檢查實(shí)際輸出結果和預期結果是否相符
3)按軟件特性分類(lèi)
功能測試
性能測試
敏捷開(kāi)發(fā)包括一系列的方法,主流的有如下七種:XPXP(極限編程)的思想源自 Kent Beck和Ward Cunningham在軟件項目中的合作經(jīng)歷。
XP注重的核心是溝通、簡(jiǎn)明、反饋和勇氣。因為知道計劃永遠趕不上變化,XP無(wú)需開(kāi)發(fā)人員在軟件開(kāi)始初期做 出很多的文檔。
XP提倡測試先行,為了將以后出現bug的幾率降到最低。SCRUMSCRUM是一種迭代的增量化過(guò)程,用于產(chǎn)品開(kāi)發(fā)或工作管理。
它是一種可以集合各種開(kāi)發(fā)實(shí)踐的經(jīng)驗化過(guò)程框架。SCRUM中發(fā)布產(chǎn)品的重要性高于一切。
該方法由Ken Schwaber和 Jeff Sutherland 提出,旨在尋求充分發(fā)揮面向對象和構件技術(shù)的開(kāi)發(fā)方法,是對迭代式面向對象方法的改進(jìn)。Crystal MethodsCrystal Methods(水晶方法族)由Alistair Cockburn在20實(shí)際90年代末提出。
之所以是個(gè)系列,是因為他相信不同類(lèi)型的項目需要不同的方法。雖然水晶系列不如XP那樣的產(chǎn)出效率,但會(huì )有更多的人能夠接受并遵循它。
FDDFDD (Feature-Driven Development,特性驅動(dòng)開(kāi)發(fā))由Peter Coad、Jeff de Luca 、Eric Lefebvre共同開(kāi)發(fā),是一套針對中小型軟件開(kāi)發(fā)項目的開(kāi)發(fā)模式。此外,FDD是一個(gè)模型驅動(dòng)的快速迭代開(kāi)發(fā)過(guò)程,它強調的是簡(jiǎn)化、實(shí)用、易于被開(kāi)發(fā)團隊接受,適用于需求經(jīng)常變動(dòng)的項目。
ASDASD(Adaptive Software Development,自適應軟件開(kāi)發(fā))由Jim Highsmith在1999年正式提出。ASD強調開(kāi)發(fā)方法的適應性(Adaptive),這一思想來(lái)源于復雜系統的混沌理論。
ASD不象其他方法那樣 有很多具體的實(shí)踐做法,它更側重為ASD的重要性提供最根本的基礎,并從更高的組織和管理層次來(lái)闡述開(kāi)發(fā)方法為什么要具備適應性。DSDMDSDM(動(dòng)態(tài)系統開(kāi)發(fā)方法)是眾多敏捷開(kāi)發(fā)方法中的一種,它倡導以業(yè)務(wù)為核心,快速而有效地進(jìn)行系統開(kāi)發(fā)。
實(shí)踐證明DSDM是成功的敏捷開(kāi)發(fā)方法之一。在英國,由于其在各種規模的軟件組織中的成功,它已成為應用最為廣泛的快速應用開(kāi)發(fā)方法。
DSDM不但遵循了敏捷方法的原理,而且也適合那些成熟的傳統開(kāi)發(fā)方法有堅實(shí)基礎的軟件組織。輕量型RUPRUP其實(shí)是個(gè)過(guò)程的框架,它可以包容許多不同類(lèi)型的過(guò)程, Craig Larman 極力主張以敏捷型方式來(lái)使用RUP。
他的觀(guān)點(diǎn)是:目前如此眾多的努力以推進(jìn)敏捷型方法,只不過(guò)是在接受能被視為RUP 的主流OO開(kāi)發(fā)方法而已。
聲明:本網(wǎng)站尊重并保護知識產(chǎn)權,根據《信息網(wǎng)絡(luò )傳播權保護條例》,如果我們轉載的作品侵犯了您的權利,請在一個(gè)月內通知我們,我們會(huì )及時(shí)刪除。
蜀ICP備2020033479號-4 Copyright ? 2016 學(xué)習?shū)B(niǎo). 頁(yè)面生成時(shí)間:3.042秒