打造具備互補測試技能的團隊
大多數測試工作需要多重角色:主題專家、工具師傅、分析師等等。James Bach或許是北美最為知名的測試人員了,他曾經識別出七類軟體測試人員,而且這些還僅僅是圍繞活動的,未考慮型別或專案或技術!我剛剛開始工作的時候,我們有一支面向所有職能的“測試團隊”。如今此類團隊可能已經不存在了,公司更喜歡讓單個測試人員融入到一支團隊中,他需要所有的技能,而不僅僅是專業技能。嘗試僱用無所不能的人,就等於與去找個“玉麒麟”,他同時能做五件事,也能夠匹配人力資源針對薪水開出的需求。這種搜尋降低了團隊的速度,直到找到候選人(只是個概率問題)之前質量一直都在下降,並可能在浪費執行團隊的時間和精力。\
例如,試想一下,與大家開會來實施高層測試策略,然後回到六個月前發現沒多少進度,因為總監級的高管們已經試圖安排專案人員了。我希望我能告訴你這極為罕見,但卻很抱歉,這種情況極為常見。\
上一次我們討論瞭如何組織一個大型的測試組織,特別是集中控制和自組織團隊的緊張關係。如今我們將從策略上討論當測試人員數量較低且專業化是事實時,該交付團隊如何獲取所有交付軟體所需的技能。\
讓我們一起來看一下。\
最大化你當前的努力
\最好的起點通常是看看你正在做的事哪些是正確的,以及什麼在一點一點地前進。協作和團隊培訓是兩個常規起點。\
培訓
\把大家聚集為一個小型團隊的結果之一是,你會認識到團隊隊友的優勢和劣勢。一個程式設計師可能不太擅長編寫SQL查詢語句,孤獨的測試人員可能缺乏技術能力。\
“午餐時瞭解”會是一種開始去解決這種劣勢的流行方法。選定一個人在午餐時講一個超過1個小時的主題,該團隊的其他每個成員都去聽,問一些問題,並自由地進餐。最低限度,團隊裡的人都接觸到了一些新的觀點,比進餐之前有了更多的瞭解。程式設計師可以深入瞭解測試方面的知識,比如理解為什麼這是個bug,以及好的彙報習慣是什麼,而同時測試人員能瞭解到新的技能。精益咖啡就是你利用吃飯時間去了解東西,不過是換了一種說法而已。它們能夠促進問題的解決,由參與者想要了解什麼進行驅動,而不是由演講者想要說什麼進行驅動。在精益咖啡結束時,你可能就會有辦法來解決前一天還在困擾你的問題了。\
建立跨職能團隊
\設想一下,一個開發組由三或四名程式設計師以及一名獨立的非技術性測試人員構成。如果程式設計師到迭代結束時才把工作成果展示給那個測試人員,流程在最後一分鐘才能跑通,問題的發現時間總是滯後於你的預期。開發人員和測試人員結對可能會更順利地儘早找到問題。在開發人員編碼的同時,他的測試小夥伴可以問以下任何問題:如果使用者忘記填寫這個欄位會發生什麼;如果這個欄位裡放個小數會發生什麼;當一次儲存成功時使用者是如何知道的;這能在IE9下正常運轉嗎;或者針對這段新程式碼整理一份大綱,將來用於自動化檢查。\
最終結果是開發人員更瞭解怎樣會導致事情出錯了,測試人員理解特性是怎麼寫的了,就能更好地武裝起來去怎麼會導致它出錯以及什麼可能會出錯了。隨著時間的推移,你的程式設計師將更好地掌握那些測試人員習慣找出的常見錯誤模式,比如快取溢位或特定字元的處理等,而測試人員會更瞭解一門程式語言,可以和產品程式碼一起開發自動化檢查。\
諮詢的、指導的測試人員
\在一些公司裡,多個團隊奢侈地共享著一個測試人員。程式設計師們編寫產品程式碼,然後增加一些自動化檢查去驗證他們所寫的是他們設想要做的,然後會用一個綜合性工具處理合並的程式碼、構建系統並進行自動化檢查。雅虎就是這樣的例子,“主要是開發人員”的模式。你可能看到此會說他們的測試一直在負責自動化的執行,而且他們基本上擺脫了沒技術含量的測試。那麼你說的是對的。\
這仍然對於許多團隊非常重要,在這種情況下程式設計師會對測試有不同的理解。諮詢的、指導的測試人員不僅能夠在許多不同的組織中完成測試,還能夠提升程式設計師的平均測試技能水平。\
此類測試人員像在一個旅遊團裡,根據需要從開發團隊之間遊走。在此有幾種讓這種教練能力帶來價值的方式。有些需要與做新特性的開發人員結對,以程式設計方式給出指導意見,說什麼應該完成,角色應該在哪裡與產品進行互動。其他需求可能與實際的測試工作沒太大關係,更多的是指導大家提升平均技能水平。另外可能需要通過研討會或遊戲的方式來傳授測試人員技能,你可能在各種大會上見過此類研討會,或通過遊戲(比如聲名狼藉的骰子游戲)來對映軟體測試活動,比如實驗、設計、做筆記、質詢和你的預期理解。\
程式設計師和測試教練之間的每次互動應該都能使測試技能有些許提升。\
提升可測試性
\軟體測試是項有挑戰性的工作。大家期望測試人員跟蹤許多不同的資訊來源並找出哪些是值得依賴的;以適當的方式蹂躪產品,以便在客戶之前發現缺陷並予以修復;在許多團隊中(但不是全部),還要去遊說開發人員和相關負責人修復這些問題。所有這些都需要付出時間和精力,尤其是在很難了解到產品資訊的時候。\
特性的可測試效能讓測試人員更容易快速獲取到相關的資訊。\
有種情況很常見。你正在測試一個輸入病人人員統計資訊的新功能。在輸入一些簡單資訊後點選提交按鈕返回病人列表介面的時候你會覺得這個功能對有些東西的處理應更省時。返回病人列表時,有些東西看起來就不對,明顯不對。在之前你增加了至少20行的資料,結果什麼都沒顯示。你必須花時間去查,試著找出是什麼原因導致了這種令人不滿的結果。\
有幾件事能使這個過程更加快速。首先,就是把日誌記好,它要包括事件的時間戳、起點URL、傳送的資料、使用者資訊,有時甚至還要記錄IP地址。有了它,你就能跟蹤到你點選儲存的時間了,還能分析一下傳送的精確資料,看看誰是罪魁禍首。\
當然,並不是所有的測試都要有個人通過使用者介面來做。通過自動化使用者介面,有時工具可以用XPath或屬性標籤找到頁面中的元素,實在不行還可以用畫素座標。這些都很費時間,當這個頁面上的元素髮生變化時需要一個人保持指令碼的更新。你可以為每個可能會接觸到的物件建立一個ID,甚至即使你還沒打算立即為這個頁面編寫檢查指令碼也要這麼做,因為這能幫你自己在未來節約很多時間。\
如果你的元件架構具有易訪問的API,那你就很有優勢了。在使用者介面出來之前你就可以使用這些API測試很多程式了,也可以用來建立為產品新增資料的工具,這能節省很多手工勞動的時間。\
節省時間是可測試性的根本所在。你的開發人員將更快地得到問題相關的資訊,測試人員可以把時間放在對於軟體測試更重要的事情上。\
把測試當作整個團隊的活動
\理想的敏捷專案團隊是跨職能的。小型組織內的人需要一個功能從規劃到生產的所有能力。這些團隊共同為這個功能的質量負責,這是一種很理想的情況。測試是一項整個團隊共同來執行的活動。\
編寫產品程式碼的過程中,程式設計師在編寫單元測試的同時將結合使用像TDD(測試驅動開發)和BDD(行為驅動開發)之類的工具,看他們是否保持在正確的方向上。現在,有著這樣一個論調,認為這些事就是此檢查(回答簡單的“是”或“否”的問題)以及那些應該正確的東西。但是,做這些事是在它們執行之前,以及它們變紅之後,這看起來非常像測試。\
到測試人員拿到完全成熟的軟體塊的時候,程式碼質量應該已經相當高了,隨著這些檢查的建立將有希望已經找出大多數的基礎問題。這是交給測試人員的一個更具挑戰性和更具意義的任務。\
整個團隊的測試也會牽扯到技術人員之外的人。產品經理評定客戶是否能發現新功能的價值,銷售人員關心產品演示是否充分,支援人員需要了解產品能否快速掌握和充分支援。\
你專用的測試人員將成為專家,能找到其他人可能找不到的問題,質量和測試作為每人職責的一部分將最終為你帶來更好的產品。\
充分利用SME
\主題專家(SME)測試人員通常是非技術教育背景出身,比如英語、歷史或藝術,以支援的身份或產品經理的身份介入測試。這些人有著特殊的作用 ,他們對軟體產品、業務領域以及使用者和他們想要的價值有深入的理解。\
在迭代開始之初猜想會發生什麼。理想情況下,程式設計師會看到按優先順序排序的新工作列表,然後從上往下開始幹。第一次讀時,程式設計師和經常超負荷工作的產品經理會花些時間探討這些新特性要做成什麼樣,也許有時間也許沒有時間。這正是需要主題專家發揮作用的地方。把業務領域專家放到合適的位置不僅能闡明價值,還能說明客戶想要如何開展工作,他們先做一些工作,然後回頭再完成,他們處在高壓環境中需要一個非常簡單的使用者介面,或者他們處於資料敏感領域需要簡單化。瞭解大家如何使用你的產品以及他們的工作是什麼樣的,開發出的特性與最初空想的完全不同。\
同樣的,在實際軟體開發測試的時候,SME專注於價值。甚至與討論和使用者故事或接收測試一樣,有些事也會在傳遞的過程中丟失。例如,思考一個帶資料列表的產品,它由一些人間歇往裡填充資料,產品的其他部分會時常引用這些資料。你的SME將考慮這一情況,意識到沒有自動化地儲存每個輸入的值,這將意味著如果使用者忘了儲存而導航到其他頁面就會丟失資料。\
主題專家可能無法參與程式碼評審、編寫指令碼去自動化一些測試工作,或者幫助開發人員找出漏掉的錯誤處理,但他們必定能為團隊帶來價值。\
總結
\因為引入了敏捷,測試角色越來越少,更多預期的人填補到團隊中。結合這種情況和對技術能力需求的提升,你很難看清誰適合你的團隊以及他們能夠帶來什麼價值。仔細想想一個人的技能如何融入一個團隊、如何和團隊一起工作,你可以得到一群強大的開發團隊。\
關於作者
\Sanjay Zalavadia是 Zephyr 負責客戶服務的副總裁,他帶來了IT和技術支援服務方面15年以上的領導經驗。縱觀他的生涯,他所創立的IT和支援服務團隊已經發展為世界一流,為全球大大小小的公司提供服務。最近,他擔任了Patni Computers(紐約證券交易所)的副總裁,負責電信IT管理服務實踐,他在那裡建立了IT運維團隊,為Virgin Mobile、ESPN Mobile、Disney Mobile和 Carphone Warehouse提供服務。在此之前Sanjay在Bay Networks負責全球技術支援,這是一家一流的路由和交換機供應商,已被Nortel收購。Sanjay還有初創公司 Silicon Valley Networks(測試管理軟體供應商)和SynOptics的管理職位。\
相關文章
- 軟體測試人員需要具備的硬技能
- 建立高效的測試團隊
- 軟體測試團隊的管理
- 測試團隊的組建實踐
- 測試團隊效率問題思考
- 測試主管接手新團隊的幾件事
- 如何制定測試團隊的績效考核
- 技術團隊負責人應該具備怎樣的能力
- 服務端測試開發必備技能:Mock測試服務端Mock
- 如何打造合作型團隊
- 打造敏捷的自組織團隊敏捷
- 打造前端團隊的 React CLI 工具前端React
- 打造讓客戶尊敬的IT團隊
- WEB 開發者應該具備的 6 大技能?Web
- AdHoc使用團隊拓撲方法打造其工程團隊
- 開發人員必備的技能——單元測試
- 補發的團隊貢獻分分配
- 測試開發必備技能:安全測試漏洞靶場實戰
- 讓軟體測試團隊慢慢死去!
- 團隊作業5——測試與釋出
- 如何編寫測試團隊通用的Jmeter指令碼JMeter指令碼
- 初探團隊基於session的探索性測試Session
- 打造高效小團隊 - 團隊程式碼提交流程 && 規範
- 團隊作業5測試與釋出----數字工匠隊
- 入門 IT 行業,該具備哪些技能?行業
- 程式設計師需要具備的基本技能程式設計師
- 如何編寫介面測試用例?測試工程師必備技能!工程師
- 關於軟體測試的幾點反思-關於測試團隊的組織
- 測試開發工程必備技能之一:Mock的使用Mock
- 如何快速為團隊打造自己的元件庫(下)—— 基於 element-ui 為團隊打造自己的元件庫元件UI
- 程式設計師應該具備哪些必備技能程式設計師
- 團隊作業-第二週-測試計劃
- 將測試人員整合到敏捷團隊中敏捷
- 小鵬汽車智慧座艙業務測試團隊招人
- 影像測試技能
- 打造高效團隊的三大實用策略
- 為敏捷團隊準備的Lisp敏捷Lisp
- 軟體架構師需要具備的技能 - Abeysinghe架構