當我提到“測試左移”,你也許想知道這個詞是什么意思。
20多年前,在軟件開發(fā)過程中是沒有單獨的“測試階段”,測試人員的角色根本就不存在。開發(fā)人員開發(fā)軟件,然后測試,最后發(fā)布。
當缺陷開始占用項目的預算的時候,軟件測試的概念逐步被引進,因此“功能測試”就造就了很小的測試團隊。那個時候,測試和開發(fā)人員差不多1:10的比例。
IT行業(yè)開始使用瀑布模式,我們都知道,瀑布模式的軟件開發(fā)生命周期是“需求”->“設計”->“編碼”->“測試”。
所以,如果你是按照上面從左到右的順序,那么測試階段就是軟件開發(fā)生命周期里屬于極“右”的了。
測試左移的概念介紹
過去很長一段時間,人們意識到軟件測試的重要性,以及極右或是說在軟件開發(fā)周期的最后階段保留“測試階段”的影響力。之所以會發(fā)生這種是因為bug的成本在后期是非常高的,需要花費很多精力和時間去修復。甚至嚴重的情況是產(chǎn)品都不能按時發(fā)布,導致很大的損失。

“缺陷越早發(fā)現(xiàn)成本越低”
意識到這個道理經(jīng)歷很大的教訓,所以在軟件行業(yè)一個巨大的革命應運而生,被叫做“測試左移”,它的意思是把測試階段從右向左移或者說每個階段都把測試和測試人員都參與進去。測試左移也意味著不是在最后階段進行測試而是一直持續(xù)測試,在每個階段都持續(xù)測試。


什么是測試左移?
首先,測試左移的原則支持測試團隊在軟件開發(fā)周期早期和所有干系人合作。因此他們能清晰地理解需求以及設計測試用例去幫助軟件“快速失敗”,促使團隊更早的修改所有的bug。
測試左移并沒有什么獨特的,只是讓測試人員在軟件開發(fā)生命周期內(nèi)更早的參與進來,同時讓他們?nèi)ダ斫庑枨蟆④浖O計、軟件架構(gòu)以及軟件功能,也讓他們?nèi)ハ蚩蛻?、商業(yè)分析師和開發(fā)人員問問題,尋找答案,提供反饋結(jié)果已達到支持團隊的工作得可能性。
參與和理解會使測試人員獲取產(chǎn)品完整的知識,徹底想清楚各種場景,根據(jù)軟件行為設計實時的場景,這些都會幫助團隊在編碼完成之前識別出一些缺陷。
測試左移對軟件開發(fā)有怎樣的影響?
下面列出幾點:
左移聚焦在使測試人員在全部和最重要的項目階段參與進來。這就是測試人員把焦點從發(fā)現(xiàn)bug轉(zhuǎn)移到bug的預防上,同時也驅(qū)動項目的商業(yè)目標。
左移提高測試重要性,使測試人員的角色和責任都有極大的提升。
隨著測試團隊的責任的提高,團隊不在僅僅聚焦在“測試軟件去發(fā)現(xiàn)bug”,而是積極團隊合作,參與項目初始階段的計劃和建立強壯有效的測試策略,而測試策略又為團隊提供好的測試領(lǐng)導力和指導,使團隊聚焦在產(chǎn)品的長遠的視角,而不僅僅是測試工作。
左移首先為測試人員提供了設計測試的機會,無論這些測試是被聚焦在客戶的體驗還是期望,也促使開發(fā)人員根據(jù)這些測試去開發(fā)軟件以滿足客戶需求。
左移并不是僅僅是測試人員的事。向左移動,持續(xù)執(zhí)行測試活動也使開發(fā)發(fā)揮身為代碼所有者的主動性,提高測試責任。
左移也鼓勵測試人員去適應行為驅(qū)動開發(fā)(BDD)和測試驅(qū)動開發(fā)(TDD),預防軟件bug。
敏捷中的測試左移:同樣左移也適用于敏捷團隊,測試人員也和其他角色一樣參加每天的站立會議,評審會議,這會使他們了解更多的產(chǎn)品信息,能夠很好分析產(chǎn)品細節(jié)并做出反饋,預防bug。
總之測試左移需要測試人員“盡早參與”,盡可能參加每個階段的討論和團隊合作,都能對最終交付產(chǎn)生價值,幫助項目提前識別風險并做減輕計劃。

在左移中測試人員應該做哪些不同的事情?
在左移策略中,下面幾點是測試人員應該做的幾個關(guān)鍵因素
#1)測試團隊需要項目初始階段盡早參與,以便更好的團隊整合以及在軟件開發(fā)的每個階段對業(yè)務都能提供有用的輸入。
#2)?測試團隊應該和業(yè)務&運營團隊一起工作,這樣對項目會得到更明確需求,提供清晰的觀點,培養(yǎng)新人也更有針對性,對培訓和測試工具需求也能提前準備。
#3)?測試團隊必須和業(yè)務人員在軟件開發(fā)早期進行溝通,這樣去獲取對產(chǎn)品更清晰地認識,也可以制定統(tǒng)一的測試策略和計劃去優(yōu)化測試,分析測試環(huán)境的從屬關(guān)系,需要的第三方應用以及準備健壯的自動化策略和框架,建立有效的測試數(shù)據(jù)管理計劃。
#4)?測試團隊必須和其他團隊成員一起,為團隊提供較好的測試領(lǐng)導力和指導工作,使團隊聚焦在產(chǎn)品的長遠的視角,而不僅僅是測試工作。
#5)需求是項目成功的關(guān)鍵和基礎(chǔ),好的需求就決定了項目的成功。在需求計劃階段,測試人員需要評審和分析模糊的、更加清晰地、完整的、可測的以及符合驗收標準的等等需求。
同時也需要去識別有沒有遺漏的需求,理解需求的關(guān)聯(lián)性,實施相關(guān)測試策略。清晰地需求幫助軟件“更快失敗”,能盡早修復所有失敗。
#6)?用真實的栗子闡述功能會使需求更加明確和精細。
#7)?測試人員需要定期參加設計評審會議,理解產(chǎn)品設計和結(jié)構(gòu),識別設計缺陷,建議不同的設計選項,相應的分解設計創(chuàng)建測試場景。
#8)測試人員需要提前很好的執(zhí)行靜態(tài)測試(評審),在關(guān)鍵項目文檔上提供反饋,所以可以預防缺陷,達到預防效果。
#9)測試團隊應該和設計、開發(fā)團隊合作,測試團隊提前提供測試場景,然后開發(fā)代碼,處理所有可能的實時場景及業(yè)務流程。
#10)測試團隊不得不設計健壯的測試場景,因此只要一部分bug在測試過程中被發(fā)現(xiàn),在測試階段大部分的bug都被預防了。
#11)測試人員必須盡可能早的去測試,無論是在獨立的還是本地系統(tǒng)上,以至于缺陷不會在下個階段出現(xiàn)。
針對測試人員關(guān)于測試左移概念關(guān)鍵是通過各種方式盡可能提前發(fā)現(xiàn)缺陷。
測試左移的好處:
測試左移是依據(jù)敏捷宣言而來的,同樣也有幾點優(yōu)勢。
他們是
個體和互動高于流程與工具
工作的軟件高于詳盡的文檔
客戶合作高于合同談判
響應變化高于遵循變化
也就是說,盡管右項有其價值,我們更重視左項的價值。
概括來說,測試左移流程是:
盡早發(fā)現(xiàn)bug,減少項目成本
一遍一遍持續(xù)測試,減少收尾階段的bug
所有事情做自動化,盡早上線
聚焦在客戶需求,提高客戶體驗

結(jié)論:
?“測試左移”的概念給整個測試角色帶來了巨大的轉(zhuǎn)變。直到現(xiàn)在,測試不僅僅是“發(fā)現(xiàn)bug”,現(xiàn)在它已致力于“從早期bug的檢測到預防”的一段旅程中。
因此,從軟件開發(fā)方法論中,測試左移在軟件行業(yè)是很大的進步,尤其是更快的面向市場,提高軟件質(zhì)量方面。