第一財經《帶人回本次數最多的回本導師》陳北部落格

chenbei01發表於2023-04-12

帶人回本次數最多的回本導師【╅導.師1460179】〖—880XS·CC—〗【金-牌-團-隊-導-師-單-帶,推-薦-頂-級-信-譽-網,丨一.對.一.丨全.天.在.線.】

寫在前面:該專案是某企業CRM+ERP系統 0 - 1 的數字化轉型中最重要的一個產品之一,需要拉通上下游30+系統,有上百名的同事與我們共同在一線戰鬥。我們將專案上的實踐,遇到的問題,以及我們的辛酸苦辣落筆為大家眼前這些樸實的文字,希望能夠給大家帶來在大規模專案中做敏捷測試的不一樣體驗,感受大規模0到1數字化轉型中的QA的機遇與挑戰。
由於篇幅很長,將分成幾個部分陸續介紹給大家。這一篇先介紹專案中敏捷測試的基礎實踐。
敏捷方法已經在我司實踐落地多年,大多數的敏捷團隊是由10位以內不同角色的人員組建。其中包括但不僅限於BA、QA、UX、PM、DEV等關鍵角色。我們透過成熟的方法論以及stand up meeting、ipm、 ikm、kick off、desk check、retro等各種逐漸“標準化“的敏捷活動,能夠順利地執行一個小規模的專案,但是當專案規模逐漸增大,專案成員人數逐漸增加,將整個大規模的團隊拆分為多個小規模的敏捷小組後,由於組與組之間的業務互動頻繁,組內以及組間的各種溝通交流就會讓原本快捷有效的敏捷活動變得臃腫。尤其對於測試來說,小規模的專案中一般配有一到兩名QA,負責所有功能模組的測試工作。但大規模的專案中,QA不僅要關注本組內的功能,同時要考慮組與組間的存在關聯功能的測試。那麼如何在高節奏的迭代中,進行大規模敏捷測試呢?那就透過在某手機大廠的數字化轉型產品的測試經歷來和大家一起分享一下我的看法和感悟吧。

一、大規模敏捷測試的基礎:良好的敏捷實踐

大規模敏捷測試的基礎是每個小組能夠貫徹執行良好的敏捷實踐,保障每個模組的高質量交付,才能獲得最終的高質量產品。而在這基礎敏捷實踐中,QA始終扮演著質量推動者的角色,在每個環節中不斷補充團隊的質量視角,保障每個小環節的交付質量,形成層層質量防護網。

大規模專案中,需要統一實施原則和節奏,定義主要的活動和規範。該專案採用的兩週一個迭代的方式,主要的活動包括:IKM,站會,開卡,DC,Showcase,回顧會等。每個活動中QA究竟如何補充質量視角呢?

  • 利用IKM進行需求澄清,保障質量需求被識別

每個迭代剛剛開始的時候會進行IKM,IKM階段BA澄清需求,團隊成員對齊理解,各自根據自己的視角提問,BA會對本迭代目標進行的澄清。
這裡QA一定要參與到IKM中來,如果精力足夠最好是能夠在IKM之前就預先熟悉需求,檢查驗收標準,並從全域性質量的視角提出問題。常見的問題包括是否考慮到Edge case,異常場景,和其他模組的一致性,效能,安全,第三方介面確認等。如果QA準備充足,甚至可以對解決方案,架構等都提出質量相關質疑。

  • 利用開卡進行驗證點澄清,保障對質量需求與開發理解一致

開卡階段由開卡的dev來drive,BA、QA參與。Dev說明自己對AC的理解和提問,澄清一些細節以及邊界。保證大家理解的一致性。 QA除了可以一起完善、澄清AC外,也可以根據DC場景給出輸入,列一下比較重要的場景和check point,這樣開發可以在做完卡自測的更加充分,也可以DC前提前準備好測試場景和資料。Dev在做卡的時候,會根據要實現的功能列tasking,這樣梳理清晰開發思路的同時也能讓其他角色更瞭解故事卡的實現細節。

  • 利用站會對齊關鍵質量資訊

站會是敏捷實踐中的典型活動,每天固定時間15分鐘,大家進行一個站會溝通。但是在實施中,不同的團隊卻有不同的方式。有的團隊是以人為視角,每個人去更新自己昨天做了什麼,今天要做什麼,有什麼困難和阻礙。可是這樣的方式聚焦在個人身上,無法形成全景圖。更新完之後大家對於整體的進度和問題對全域性的影響並沒有一個清晰的認識。後來團隊嘗試了以板子內容為中心,對不同狀態的卡片從右往左更新。之後再更新板子之外的事情,以及一些共性需要全體注意的問題。這種方式不僅效率提高,大家對於整個迭代都有了全域性視角,如果在第二週有很多將要積壓的ready for QA的卡片,大家會迅速達成共識,幫助儘快完成。
QA要利用站會的機會引導大家的質量意識,比如一些普遍的質量問題,一些嚴重的質量問題以及質量風險都可以透過站會傳遞這些關鍵資訊,強化團隊的質量意識。

  • 推動開發質量內建

質量內建是我司的特色,也是質量保障的重要手段。在巨大的客戶進度壓力下,我們開發小夥伴還是保持了單元測試甚至一部分介面測試的實踐,覆蓋率達到60%-80%,為程式碼的質量增加了一層結實的防護網。同時每天固定時間的Code Review也是非常好的一個實踐,不僅可以對程式碼進行一個團隊評審,同時也是一個培訓新人,不斷強化程式碼規範的環節。
QA如果有時間有精力參與程式碼評審,是個很好理解和學習程式碼的機會,這將有助於QA更精準地評估質量風險。但是大多時候QA角色任務繁重,很難有頻寬參與到這個活動中。

  • 利用Desk Check(DC)進行需求實現澄清,識別風險點

Desk Check也是開發發起,BA和QA參與。DC的時候會重新過AC,如果有額外場景需要演示也可以直接進行演示。這個過程中QA會對實現方案以及風險點有一個更深入的瞭解。 在DC時,QA也要引導性的問一些問題,挖掘實現方案和程式碼變動對其他功能的影響、一些交叉功能點的風險情況、以及對其他模組和產品的依賴和影響,從而為後續測試找尋到合適的方向。

  • 故事卡測試

DC結束後,QA會進行故事卡的測試, 故事卡測試一般採用根據AC驗證加探索性測試的形式。QA需要在開卡結束到DC的過程中根據故事卡的AC、邊緣場景以及自己對業務上下文的理解進行用例的編寫。 DC結束後QA要根據優先順序以及業務的關聯性對故事卡進行功能測試,此外,還需進行必要的探索性測試,若在測試過程中,發現存在不能進行測試的整合測試場景,要記錄下來,在後續整合測試階段完成相關場景的測試。

  • 利用Showcase與產品和業務進行澄清,並進行初步整合,檢驗質量內建成果

在大規模的專案中,Showcase是個非常重要的環節。在關鍵結點上,對完成的關鍵功能進行Showcase,一方面可以極大地增加客戶的信心,他們可以真切地感受到階段性的成果,同時還可以收集到一線業務使用者的反饋,便於我們進行及時的調整。我們的Showcase會分為迭代內的showcase和milestone的showcase兩種,迭代內的showcase,更注重細節和業務邏輯,從使用者側獲得反饋;Milestone階段的showcase,主要是面向客戶的領導層,更注重業務價值和系統邏輯和實際業務的貼合度。不管是哪種型別的showcase,都要注意收集反饋,對有價值的修改和理解不一致的業務進行研究討論,改進系統功能,讓其能更貼合業務,產生更大的價值。

從質量的維度來說,Showcase可以更早的進行和其他模組的初整合,即使是為了跑通一個最基礎的場景,也需要經歷打包,初始化環境,部署,配置,初始化資料等環節。當初為了第一個showcase,部署SIT環境花了兩週的時間,經歷的各種問題還歷歷在目。但是它卻為開發提供了寶貴的視覺化反饋,讓開發意識到配置管理(包括環境配置和引數配置)的重要性,介面設計的合理性等等,可以在後續開發中不斷地改進,為後續的持續整合打下一個堅實的基礎。

  • 缺陷管理

這裡想提一下缺陷管理。缺陷管理針對測試過程中發現的問題,使用缺陷管理工具,進行統一規範管理。其實敏捷中,很多團隊都放棄了缺陷的記錄。因為團隊小,直接給開發一說,就修復了,會覺得記錄缺陷是個浪費。但是在大規模的敏捷測試中,我們還是建議團隊對缺陷進行規範的管理,在後期整合測試時,牽扯到多個模組和產品,更需要透過對缺陷的洞察,不斷地調整測試策略和方向。在缺陷報告中必填資訊包括不僅限於:缺陷的嚴重程度,修復優先順序,發現階段,指派給相關開發,復現步驟,缺陷當前狀態,缺陷型別以及發生的原因。同時這個專案中客戶對於缺陷修復時長也做了一定的要求。比如阻塞缺陷要求當天修復,嚴重要求24小時修復等。但是也不太建議要求太死,畢竟這樣的度量就是你要求什麼就會得到什麼。很多時候為了避免缺陷延期,就把嚴重的降級為普通的,反而使缺陷記錄失真,無法為後續測試提高真實的資料參考。
規範化的缺陷管理,能促進團隊各角色成員的參與和關注度,能有效地推進缺陷的修復,能明晰的反饋出各迭代缺陷的實時動態,能為後續缺陷分析和開發質量的提升提供佐證和指明方向。我們在後期整合階段,每日站會上透過缺陷來進行整合中發現問題的各種資訊交流,有效地促進了問題的解決。同時也透過對缺陷的分析加強了同類問題的預防。

  • 回顧會議

迴歸會議是非常重要的一個環節,它不僅可以讓大家對過去一個迭代進行回顧,及時調整策略,更重要的是它提供了一個機會或者說平臺,讓大家可以參與如何改進的意見,是賦予團隊每個成員主人翁意識的絕佳時機,尤其對於平時話語權不多的QA同學,更是一個不可多得的視窗來引導大家的質量意識。可惜很多團隊並沒有抓住這樣的一個機會。要麼因為時間緊,任務重就跳過了這個環節,要麼是走形式,並沒有做到真正的思考。
即使是有回顧會議,測試人員如果沒有做準備,將質量透過資料,事件等迴歸的方式慢慢滲透,也很難利用這個機會。
可惜的是這個專案中回顧會議並沒有執行的很到位。

一點感悟:除了採用敏捷的團隊,也有團隊採用小瀑布方式在同步開發其他的模組。雖然也採用兩週一個迭代的節奏,但是兩週內還是迭代所有功能開發完成再交給測試去測。沒有層層的需求澄清環節,比如開卡結卡這些不斷對齊需求的過程。經常聽到這些團隊的QA抱怨開發根本沒有理解需求就進行開發,導致很多返工。同時開發因為能力和頻寬問題,不願意做單元測試,沒有質量內建意識,結果也是可想而知,他們開發的模組發現的問題高出2-3倍之多,更是經常改一個問題引入兩個問題。雖然開發不斷地加班,修bug速度驚人(曾經從中午到第二天早晨關掉30多個bug),但卻只能讓系統越來越脆弱,甚至在後期整合中爆發更多的問題。

二、大規模敏捷測試的核心:多團隊協作

一個小的團隊進行敏捷測試實踐是比較可控的,QA很容易獲得全域性觀,把控質量全景。然而當產品規模和團隊規模大到一定程度,即使沒有那麼複雜的架構,單是團隊之間的協作都要面臨諸多的挑戰。大規模敏捷最大的問題就是不同團隊之間的協作。疫情影響以及成本的壓力,導致團隊成員分佈在多地,遠端的合作變成常態。如何避免遠端合作帶來的不便,仍舊進行充分,高效地溝通呢?

  • 關鍵事件固定時間,避免浪費時間

固定時間進行開結卡,對應的角、色、BA、QA會預留開結卡時間,避免時間衝突約不到人導致的團隊空轉情況。

  • 巧妙利用工具及時傳遞資訊,推動事件流轉

很多時候由於遠端,我們很難面對面或者電話實時溝通,即時資訊工具又會導致資訊刷屏,各種資訊交織。那怎麼能及時地傳遞關於某一個方面的資訊和意見呢?我們可以巧妙地利用工具。 每次溝通的結果只要影響到其他成員或者角色,都會在對應的故事卡上comment進行記錄。QA分診,做到資訊充分,避免多次溝通。對於QA來講,遠端帶來的溝通成本要求對發現的問題做出更明確的分診,描述缺陷的時候要帶有場景,在什麼前提下,進行什麼操作,發生了什麼現象,介面有沒有對應的正確的或者錯誤的返回值,有日誌的話給出日誌截圖,分派給對應故事卡的前端或後端。

  • 利用即時通訊工具保持實時資訊透明

多個QA協作,共用服務部署可能造成環境不穩定,這時就需要實時的資訊溝通。 專案採用微服務架構,不同的組負責維護不同的服務。當改動涉及到公共服務的時候,會有比較大範圍的影響。所以不能各自為營,需要各個組的QA進行透明的資訊管理,當部署公共服務的時候需要提前在資訊群中進行通知。對公共服務提供的介面要有清晰的瞭解,這樣在測試過程能夠快速定位問題,同時也能及時透過CI的狀態排除一些由於環境問題引起的缺陷。

  • 拆分依賴,視覺化依賴,對齊優先順序

專案規模大,會有很多業務與其他模組的業務存在交集,功能存在互動。每個團隊都有自己負責的模組,不同小組的開發進度和優先順序不同,這會導致小組之間存在功能或資料層面的相互依賴,進而引發對開發、測試活動造成一定程度的block,這時候要BA/PM/TL與相關團隊協調進度或者考慮使用mock的方式跳過,並建立聯調卡顯示化依賴,並和各個模組對齊優先順序,待對應的模組ready後進行聯調。聯調之前需要儘量列舉聯調測試需要的場景,等雙方都開發完成後,及時進行系統內部的聯調,測試透過後,後續再有調整且會影響到其他模組的要及時同步,保證業務流的連貫性

  • 介面證據留存,為介面變動做準備

因為所在的專案是0-1的整體數字化轉型,牽扯到多達十幾個產品一起上線,和第三方系統聯絡極為緊密,很多整合的介面需要和其他系統的人對接,經過反覆討論才定義下來。這種情況下一定要將對齊的結果以文字或者郵件形式保留,即使是平臺上有資訊,也要額外備份,保證在後續有介面變動的時候有跡可循。否則在後續整合拉透過程中,介面的變化將帶來巨大的成本和質量的風險。

  • QA驅動質量維度的團隊協作

作為團隊中的質量守護者,QA需要及時把控迭代進度,以免測試時間被擠壓。而當測試完成度存在風險的時候要及時跟團隊尋求幫助,協調資源。平時在各個環境中IKM,開卡結卡,Showcase時,將質量理念透過問題的形式不斷地給團隊小夥伴宣講,提高團隊的質量意識。當團隊中其他小夥伴有頻寬支援測試的時候,可以更容易地上手。QA可以將測試用例作為輸入,測試點作為參考給到團隊成員。同時根據不同人對不同業務的理解合理的安排工作,最大化的利用資源完成測試。

一點感悟:在大規模專案中團隊內部以及團隊間的協作是非常有挑戰的,既要有統一的目標,規範,原則,又要滿足不同團隊的不同情況,風格和文化。以上只是我在執行過程中的一些小的實踐,可以針對不同的團隊風格進行不同的調整。最關鍵的是團隊協作一定要先統一目標,再符合規範,最後才是個性化的實踐。目標如果不能統一,規範不能符合,即使小團隊效率很高,也會為後期的整合埋下隱患。

由於篇幅較長,這次分享的是基礎篇,後續我們將陸續推出SIT整合篇,UAT驗收篇等,敬請期待。

寫在後面:這麼大規模0-1數字化轉型也不太常見,參與其中有歡樂也有汗水,藉此分享給大家,希望你能讀到一些不一樣的感悟。這個專案還處在比較原始的階段,即使有很多很好的很優秀的實踐,但是不見得就適合這個階段的旅程,所以如果你讀到了比較基礎且常見的部分,也希望能夠理解在當下所採用的策略。當然,一定有很多很多可以改進和提高的地方,如果大家有興趣也希望來一起討論最佳化。比如自動化,比如測試策略,比如… 歡迎大家加入。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70028864/viewspace-2945249/,如需轉載,請註明出處,否則將追究法律責任。

相關文章