編者按:敏捷的概念已經深入人心,開發過程逐漸完善,但測試情況略顯尷尬。測試從業者該何去何從?他們如何擁抱敏捷並展示他們的新價值?InfoQ特別邀請了來自Google的敏捷測試專家段念為讀者答疑解惑,希望所有測試從業者都能得到自己的答案。關於敏捷測試的更多信息,請訪問InfoQ中文站的敏捷測試相關內容。在和很多測試從業者討論敏捷的時候,最常被問到的問題是關於兩個問題:它是什麽?敏捷軟件開發還需要測試工程師嗎?。前壹個問題是關於敏捷測試本身的定義,第二個問題是關於將測試工程師排除在敏捷開發之外的恐懼。事實上,在探索這兩個問題答案的過程中,我們可以對敏捷軟件開發中測試的工作定義、測試價值觀,以及敏捷開發中開發和測試工程師之間的合作有更清晰的認識。鑒於這兩個問題的重要性,在本敏捷測試專欄的第壹篇文章中,我試圖從自己的實踐出發,盡可能清晰地回答這兩個問題。的確,相對於敏捷開發風靡全國的局面,關於敏捷測試的討論要低調得多。敏捷聯盟定義了敏捷的四個價值陳述和12支持原則,沒有壹個單獨提到測試。這是否意味著測試在敏捷開發中不重要?事實上,如果我們仔細研究敏捷的12原則和各種敏捷實踐,我們會發現測試在敏捷開發中起著非常重要的作用。無論是原則上的頻繁交付,工作軟件的度量,還是敏捷開發實踐中的測試驅動開發和行為驅動開發,都離不開測試的支持。在我看來,之所以在敏捷開發中不單獨描述測試,正是因為在敏捷開發中,測試不再是壹個單獨獨立的過程,而是成為驅動開發和衡量產出的主要手段,成為所有工程師在敏捷開發中必須時刻考慮和實踐的部分。簡而言之,敏捷軟件測試與其說是壹個過程,不如說是壹個想法。既然如此,為什麽我們要在這個專欄中關註敏捷軟件測試呢?我接觸過很多軟件開發和測試工程師。他們的組織有的在嘗試向敏捷開發轉型,有的已經在實踐敏捷開發了。然而,由於長期以來的工作習慣,他們中的大多數人無法自覺地意識到測試在敏捷開發中的關鍵作用,而是自覺或不自覺地將測試視為與開發完全分離的下壹個階段,這導致了在實踐敏捷開發的過程中出現各種問題:要麽忽視代碼質量,導致頻繁叠代。或者按照原來的方法安排系統的系統測試,導致測試團隊疲憊不堪,卻總是趕不上開發所需的進度。在這種情況下,對於這些工程師來說,討論敏捷軟件開發中的測試,也就是敏捷軟件測試這個話題,應該是有幫助的。所以,到底怎麽了?很難給敏捷測試壹個準確完美的定義。在我看來,如果我們接受敏捷的核心價值觀(溝通、簡單、反饋、勇氣和尊重),那麽在敏捷軟件開發過程中進行的測試就可以稱為敏捷軟件測試。因此,敏捷軟件測試並不是與敏捷軟件開發處於同壹層次的壹個部門,而是敏捷軟件開發的壹部分。與傳統測試不同,敏捷軟件測試不是壹個獨立的過程。相反,它與整個敏捷開發中的其他活動交織在壹起,隨處可見它的影子。因為敏捷軟件測試並不傾向於壹個單壹的過程定義,所以我打算從敏捷軟件測試與傳統測試的比較、敏捷軟件測試中使用的方法以及測試工程師在敏捷軟件測試中的工作來闡述它。在本文中,我們主要從宏觀的角度來描述敏捷軟件測試,在本專欄的後續文章中,我們將進壹步描述敏捷軟件測試中使用的方法以及工程師在敏捷軟件測試中的工作內容。通過儀表板、燃盡圖等方式顯示當前工作和可交付產品之間的距離。建立單元測試覆蓋等度量指標* * *享受質量目標意味著質量責任由所有工程師共同承擔* * *開發和測試要建立壹定的測試覆蓋標準。例如,在單元測試的層次上,建立60%或80%的覆蓋率需要使用諸如TDD和BDD之類的技術。確保產品和代碼的可測試性。建立足夠的自動化測試,以確保測試能夠滿足快速叠代的需求。清單提到了四個方面:團隊、反饋、質量文化和開發測試。在我看來,這四個方面反映了敏捷軟件測試與傳統軟件測試的最大區別。傳統的軟件測試註重通過盡可能完整的覆蓋發現盡可能多的問題,將測試和開發視為兩個獨立的過程,測試是對開發階段產生的結果的驗證。敏捷軟件測試建立了壹種不同的質量文化:測試的目的是確保產品的快速發布,也就是提高生產力本身。基於驗證的出發點必然要求測試和開發的獨立性,以及對產品質量盡可能客觀完整的度量;基於生產力的起點需要建立敏捷團隊,最接近的測試和開發,建立高度可測試的軟件,以及基於這些的高度自動化測試。在清單列出的所有項目中,質量文化是基礎,團隊是實施敏捷軟件測試的條件,反饋和開發測試是敏捷軟件測試的具體方法。當然,妳可以從敏捷的核心價值觀出發來分期這些項目:團隊註重溝通和尊重;反饋直接對應反饋;質量文化建立在勇氣(對質量負責的勇氣)和尊重的基礎上;開發測試是反饋和簡單性的具體體現。本文開頭提出的另壹個問題是:敏捷軟件開發還需要測試工程師嗎?業內對這個問題看法不壹。有人認為有必要,因為總有壹些工作需要靠考驗工程師的技能來完成;當然也有人認為沒必要,因為敏捷開發中的測試側重於開發測試和自動化測試,開發工程師可以自己處理與測試相關的工作。在實踐中,那些大規模實踐敏捷開發的公司(如Google)往往在組織中設置較少的測試工程師,在項目中分配較少的測試資源,甚至有些項目根本不用測試工程師。就我個人的實踐經驗而言,對於大多數項目,尤其是針對明確客戶開發的項目,在敏捷開發團隊中設置專職測試工程師是很有必要的,因為測試和開發的思維方式不同:測試更註重對壹個系統的全面驗證和檢驗,開發工程師往往很難在大範圍內建立這樣的思維方式。所以專職測試工程師從系統層面驗證產品或者從應用系統的角度尋找值得測試驗證的接入點更有效。全職測試工程師可以更加關註測試基礎,建立測試所需的基礎設施:由於測試工程師對測試有更好的理解,他們通常可以更多地考慮測試需求,開發適合項目的測試基礎設施(自動化測試框架),開發工程師可以使用這些框架建立功能性或面向代碼的測試。但不得不說,敏捷開發對開發和測試工程師都提出了更重要的要求,尤其是對測試工程師。傳統的只能準確模擬用戶操作的測試工程師,在敏捷開發團隊中很難有所作為,因為他們無法給產品帶來生產力的提升。在本專欄的後續文章中,我們將進壹步討論測試工程師在敏捷軟件開發中的工作和任務。關於作者段念:Google中國高級測試經理,畢業於華中科技大學,壹直在通信、嵌入式軟件、互聯網等行業的國內外知名公司從事軟件開發和測試工作。對軟件測試中的技術和管理有獨到的見解,在軟件測試團隊管理、自動化測試、性能測試、開發測試等方面做了較多的研究。
上一篇:京劇介紹的小學作文400字下一篇:他是當之無愧的相聲大師,光輝的相聲生涯不該被低估