Categories
程式開發

移除“測試”任務欄,加快交付速度


任務欄裡的“測試中”一列通常會導致團隊有更多在“進行中”的工作,而實際完成的工作會更少。移除這些列可以促進測試人員和開發人員之間的協作,並使團隊能夠更快地交付項目。

BBC iPlayer&Sounds團隊的首席測試員Jit Gosai在精益敏捷交流2020大會上談到了團隊如何通過取消任務欄裡的“測試中”列來實現更快的交付。

通常,任務板裡會有一個“測試中”列,表示測試人員正在完成的工作,另外一個“等待測試”列用來收集“已開發”的任務。 Gosai說,測試人員知道他們下一步需要做什麼,開發人員可以在等待測試人員的同時進行其他工作,這樣可以充分利用團隊資源。

如果沒有問題,任務就可以移到下一列,通常是“完成”或“等待發布”。但如果測試人員發現了問題或者需要獲取更多的信息,會發生什麼呢?這裡有很多選擇:是回到“開發中”列,推回到backlog中,還是創建一個“等待開發”列作為等待區域? Gosai提到,這些選項中的任何一個都會給開發人員帶來更多的工作量。

與此同時,測試人員要做什麼?開始下一項任務,還是等待開發人員? Gosai認為,無論團隊做出何種選擇,測試總是會成為團隊完成任務的最大瓶頸,因為團隊中的開發人員總是比測試人員多。

Gosai說,在刪除“測試中”這一列後,開發人員繼續他們的開發工作,而測試人員則會進行測試,他們可以一起工作,直到產品發布。開發人員必須與測試人員協作,以便了解下一步需要做什麼,並一起完成工作。

有了良好的過程改進實踐,測試人員和開發人員可以更好地協作,降低風險。 Gosai總結說,在測試過程中發現的見解可以被加入到整個過程中,而不是通過bug報告塞給開發人員。

在Jit Gosai的演講之後,InfoQ採訪了他。

InfoQ:在任務板上設置“測試中”列有什麼問題?

吉特·戈賽:“測試中”和“等待測試”列看起來很不錯,但它們通常會導致更多的工作量和其他問題(更多細節,請參閱“測試中”列引發的問題)。

通常的應對辦法是添加更多的測試人員(通常成本很高)或進行自動化測試(通常是端到端UI測試),這樣會讓開發人員養成壞習慣,比如編寫更多的集成測試,而不是進行單元測試,因為他們認為測試已經成了別人的職責。而且這樣會讓測試變成開發生命週期的最後一環。你可以在我的文章“自動化UI測試的意外後果”中看到更多有關這些問題的信息。

InfoQ:我們怎樣才能在保持測試質量的情況下移除測試列?

高賽:移除測試列並不意味著測試不再重要或不再發生,它實際上是讓團隊專注於一個共同的目標,專注於完成工作,而不是製造更多的工作量。

更少的工作步驟意味著開發人員在工作中停留的時間更長。現在,這給了測試人員和開發人員一個機會,讓他們開始了解其他人做了什麼,以及還需要做哪些測試。

InfoQ:移除測試列如何讓團隊更快地交付?

高賽:主要有兩個方面。一方面,正在進行中的工作量減少了,這樣就可以把更多的精力放在完成工作上。這自然會完成更多的工作,特別是如果由於缺陷或其他不可預見的情況而需要返工。另一方面,現在開發人員和測試人員正在一起工作,可以減少與代碼變更相關的風險。

在這個階段,協作內容就是分享信息,比如你對變更的了解程度以及在實施這些變更的過程中學到了什麼。這使得個人能夠在其他人的知識之上想出他們在單獨工作時無法產生的新想法。現在是一個很好的機會,看看這些措施是否可以通過自動化或其他方式加入到開發流程中。這也是一個很好的時間點,看看任務是否真的返工了(例如,在現場環境中發現的問題),並從中總結經驗教訓,防止這個問題再次發生。

雖然這些改進帶來的好處不會立即顯現出來,但從長遠來看,在交付項目方面可能會有相當大的影響,這將幫助團隊在相同的時間框架內完成更多的工作,從而更快地交付。

在這些改進中有幾個假設需要注意,其中兩個最主要的假設是:開發人員和測試人員開始協作,以便了解對方已經做了/將要做什麼,而不是變成一種隱晦的迷你開發/測試過程;另一個是有效的持續改進過程,從其他地方和在生產環境中出現的各種bug中學習總結。

InfoQ:我們如何利用任務板上可見的內容來改進測試?

高賽:上述的協同工作對於團隊來說是一件新鮮事,他們還沒有形成持續改進的策略,所以可以通過一些技術來開始這個過程。如果測試確實成為團隊發布項目的最大瓶頸,那麼他們可以利用“測試中”列來發揮他們的優勢。

測試人員不應該只是簡單地從“測試”列中挑選任務,直到完成為止,他們應該與團隊一起幫助他們理解如何進行測試、他們要測試什麼以及在測試過程中發現的東西。如果任務不多,這樣做可以幫助他們找到工作中的一些關鍵問題。例如,是否存在類似的故障原因,如可用性或可訪問性問題,或某些硬件/軟件問題總是導致錯誤發生?開發人員在做這些變更時需要注意些什麼嗎?這些問題可以被加入backlog,然後團隊開始處理這些任務,看看是否可以在開發生命週期的早期處理這些任務。

關注過程而不是人,可以更容易討論測試人員在做什麼、開發人員和測試人員如何在生命週期的早期減輕工作量,並逐漸形成持續改進策略。

在這個過程中,領導力是非常重要的。領導需要幫助測試人員意識到,他們不是團隊的“問題”,而是解決方案,他們要讓團隊知道在測試時需要注意哪些風險。開發人員還需要通過指導溝通、形成同理心與其他規程緊密合作,他們的目的不是試圖取代它們,而是一起努力改進過程。

團隊領導的一個關鍵任務是創造一個心理安全的環境,讓團隊成員能夠坦誠面對他們所面臨的問題,甚至分享他們還沒有完全形成的想法和解決方案,而不會感到尷尬,也不會害怕被認為自己不夠強大。有持續改進的任務backlog固然很好,但如果人們不願意在一起協作,只會得到平庸的結果。這意味著他們永遠得不到應有的關注,創新的種子也會被扼殺在搖籃之中。你可能在團隊中聽到過這樣的話:“我們之前已經嘗試過了”或者“這永遠不會成功,因為……”。

原文鏈接

通過終止測試列來更快地交付