導讀:
所有的測試從業人員都想從業務測試轉型成長為測試開發工程師,因為這是一個門檻,一種層級,一個上升自我,提高個人價值的重要驅動力。
測試開發工程師是一個交又工作的角色。與開發工程師相比,測試開發工程師除了要具備寫程式碼的能力,還需要掌握作業系統、資料庫、網路、軟體測試等相關領域的知識。與業務測試工程師相比,測試開發工程師擁有編寫測試指令碼、設計測試框架、搭建測試平臺、維護測試環境等技能,但是可能沒有業務測試工程師那種專業的業務知識背景。測試開發工作,本質就是為了保證測試能夠正確且順利進行而做的工作。測試開發要服務於業務測試,測試開發不是脫離業務而單獨存在的。在軟體系統生命週期過程中,業務測試工程師和測試開發工程師是並存的,並不會彼此替代。
那麼,你為轉型做好準備了嗎?
1.2業務測試的挑戰
1.2.1測試人員的挑戰及新要求
在固定時間內快速迭代,進行高併發任務測試一直都是測試人員和測試團隊所面臨的挑戰。除此之外,他們還要應對不斷變化的使用者需求,同時整個行業內開發人員和測試人員人數比例不平衡,傳統測試之外的任務缺乏明確的方向和職業發展路徑等,這些都是測試人員面臨的問題。業務的多元化,以及公司戰略調整和整個行業的不斷髮展,要求測試人員具備越來越多的技能,其承擔的責任也就越來越大傳統測試的角色已經無法滿足工作的需要,同時測試人員也希望變得比以往更具技術性。如今的工作也要求測試人員具備比以往更高的執行力,能夠提供快速反饋,有時不僅要是測試人員,還需要成為開發人員。
從流程上來看,測試介於產品和開發之間,需要和產品人員溝通,也需要和開發人員溝通,工作的特點也決定了測試人員要面臨的挑戰。現在大量的公司在招鴨測試工程師時,越來越需要綜合性的測試人才,要求應聘人員掌握一定的開發技能,這樣其可以更好地理解系統,發現更深層次的缺陷,與開發人員的交流也會更高效,在和產品人員溝通時也能提出更有建設性的意見。將來完全不懂技術或者程式碼的測試人員可能會被行業淘汰。
應對挑戰的唯一方法就是不斷適應和進步。測試人員必須瞭解他們的角色在如何變化,以及如何在不同的環境中為利益相關者提供最好的服務。測試人員需要具備很高的靈活性和適應性,不斷學習新的技能和方法,並願意承擔新的角色和活動,這才是測試人員自身必須掌握的核心技能。
結合作者所在團隊的實際情況,團隊的目標是能夠快速反應,支援業務快速迭代,同時要把測試人員從繁重的重複工作中解放出來,為內外“賦能”,提供好的測試平臺、好用的測試工具和高效的測試方法等。這就對測試人員提出了一些新的要求。
1.編寫程式碼的能力
具備編寫程式碼的能力能夠提高測試效率,獨立或者輔助開發人員定位問題,而不是隻報告問題。這也有助於測試人員瞭解程式設計過程,完善思維方式,提升測試形象。
2.工具思維與工具開發能力
工具思維有助於測試人員敏銳地發現可以節省人力的工作點。具備工具開發能力可以真正從繁重的重複工作中解放自己。
3.持續學習的能力,學會思考
持續學習不僅是一種態度,更是一種能力。持續學習新的技術和新的思想,瞭解新的動態趨勢等,能夠幫助測試人員更好地適應變化,在變化中進步。學會思考這個話題很寬泛,包括規避風險、專案推進、問題解決等測試人員需要的很多其他的認知過程。但是,如果測試人員不能持續學習,那麼他的思考也會被限制。只有持續學習,不斷思考,才能知道在不可知的未來我們能夠提供什麼,價值該如何體現
4.強大的內心
測試工作是一個不斷質疑與被質疑的過程。測試人員每天會面對很多繁重的工作,隨時隨地都可能被別人挑戰,還有可能在工作中遭遇質疑及誤解。想要將工作進行下去,強大的內心對於測試人員來說極其重要。
5.測試思維
測試思維決定了測試人員能在測試這條路上走多遠。測試的核心技能不是測試理論、也不是測試工具,而是試分析試設計測試架構和試補主:思美去長、び少矩地”一直是作者所在團隊提侶的·學會分析任務,分清優先順序,具備統一規劃能力,能夠使工作達到事半功倍的效果。
轉型的基礎及必要性
轉型是為了更好地滿足業務需求,更好地保證系統質量,也是為了能夠更好地配合公司的戰略。每個團隊是否轉型,以及轉型的動機及基礎,根據具體情況而不盡相同。作者所在團隊主要負責業務的測試,年後新來了一位經驗豐富的測試經理,所以同時存在測試開發的崗位,這也是團隊轉型的一個優勢。
相信和作者情況相同的團隊數量不少,那麼這樣的團隊想要快速轉型需要先搞清楚哪些問題呢?
1.轉型的目的
更好地滿足業務需求以配合公司的戰略,同時考慮到行業的發展趨勢,提升團隊整體的技術水平,實現團隊與個人的共同成長,實現良性迴圈
2.轉型的方向
單元測試是非常重要而且非常有必要實施的。在敏捷開發模型的工作實踐中,開發人員承擔了單元測試的工作。由於公司戰略的調整,UI層的自動化測試不再是團隊的重點,因此自動化介面測試配合測試工具開發,是作者所在團隊轉型的首選方向。完善的介面測試體系能夠在很大程度上保證產品的質量,而這部分的投入也快速收到成效,而且測試工具的開發能夠將測試人員從大量的手工重複性工作中解放出來,提高效率。
3.轉型的基礎
團隊轉型要根據轉型的目的以及需要解決的問題,選擇轉型的方案。大體上可以從轉型意願、轉型所需時間、轉型規劃、轉型前後技能、應用等方面選行準備。
(1)轉型意願
團隊想要轉型成功,除了需要考慮業務需求、行業趨勢等外部環境因素外,還要考慮團隊成員的轉型意願。團隊成員主動轉型的意願是轉型成功的關鍵因素。被迫轉型與主動轉型的差別在這裡就不需要討論了,取得的轉型效果也是不同的。充分發揮團隊成員的主觀能動效能夠讓轉型快速完成並取得令人驚喜的效果。
(2)轉型所需時間
團隊轉型必須經歷一個學習和練習的過程,這個過程需要時間。然而,測試工作的性質決定了其最缺少的恰恰又是時間。那麼這部分時間從哪裡來?需要團隊成員達成共識,避免佔用成員的業餘時間而使他們產生牴觸情緒
(3)轉型規劃
團隊想要轉型成功,在轉型開始之前,要做好整個轉型期間的規劃,包括需要學習的技能、學習的進度、練習的時間、掌握程度的考核、備份學習材料和備用方案等轉型期間要嚴格按照規劃進行,確保轉型有條不紊地進行。
(4)轉型前後技能
根據團隊轉型的目的,要求團隊掌握的技能也不盡相同,想要達到的效果也不同團隊應根據業務的特點及面臨問題的緊迫性來決定需要掌握的技能。轉型前需要具備的技能基本大同小異,包括測試的基本知識、業務背景知識、資料庫相關操作能力、主流程式語言開發能力(最好與公司開發語言一致)等。
(5)應用
團隊轉型想要取得好的成效,實戰是不得不考慮的問題。如果沒有實戰應用,那麼再多的理論支援也只能是紙上談兵。在轉型過程中,可以嘗試將培訓的技能應用到實際專案中。如果沒有專案,也可人為地創造針對性的實戰。只有通過實際應用,才能發現問題和解決問題,讓轉型真正發揮作用,取得好的效果。
13團隊轉型的目標及計劃
1.3.1轉型路上的迷茫
自動化測試是軟體測試發展的一個必然結果。隨著軟體技術的不斷髮展,測試工具也得到了長足的發展,人們開始利用測試工具來幫助自己做一些重複性工作。軟體測試的一個顯著特點是重複性。重複會讓人產生厭倦的心理,重複也使工作量倍增,因此人們想利用工具來解決重複的問題。
目前,自動化測試在行業中處於被熱捧的時期。一方面,很多專業人士對自動化測試大加讚賞:另一方面,在移動互聯時代,企業的生存環境發生著深刻的變化,各大網際網路公司都在尋求自身發展的道路,公司的轉型成了必然趨勢。公司要轉型,員工勢必也要跟隨發生變化。至今,作者都不能忘記團隊成員第一次聽說元件化測試時滿臉的新奇。隨著一輪又一輪地探討如何做、怎麼做,團隊成員才慢慢意識到這將會是一條漫長的路,期間肯定有迷茫和痛苦。然而,更痛苦和嚴峻的挑戰是團隊的轉型。轉型是否可以達到應有的預期呢?
很多團隊基本上會不同程度上的面臨以下兩大問題。
(1)人員水平參差不齊
團隊轉型不是一個人的轉型,通常涉及十幾人、二十幾人的同步轉型。其中每個人的水平參差不齊,學習能力也不盡相同。例如,之前大多數人從事的工作是功能測試,沒有開發過自動化工具或者框架,用的自動化工具不多,也沒有做過開發。那麼,這就要求我們必須雙管齊下,線上學習和線下培訓同步進行。
(2)做什麼及從何處做起Microsoft公司最初也設有隻進行手工測試而不編寫程式碼的職位,稱為STESoftware Testing Engineer)。而現在所有測試工程師的職位都稱為SDET( Software Development Engineer in Test)。從名字可以看出來,後者是需要掌握程式設計能力的,而掌握程式設計能力是為了更好地測試。
從STE轉到SDET的充分條件是測試人員對軟體及需求具有較強的理解能力,同時擅於站在使用者的角度去理解需求,以及重視質量使得程式的返工率大大降低而必要條件是達到開發人員所具備的設計能力和編碼能力。認清自己的不足,在以下方面不斷提高自己的能力。
(1)對程式架構思想的理解:通過參加需求評審、設計評審、程式碼評審,學習設計方面的知識。
(2)編碼能力:通過單元測試、自動化測試、測試工具和測試框架的開發等環節提高自己在編碼方面的能力。
走出迷茫,有了奮鬥的目標,只要拼命追逐、堅持不懈,終會看到成功的方向。
1.3.2樹立目標
我們做任何事情都應該有一個目的。有了目的,就會產生一個對應的目標。然後基於這個目標,進行相關活動的實施,以此來達到目的。類似地,我們在進行自動化實施的時候,首先要明確自動化測試的目標,即實現了自動化測試到底能為我們帶來什麼好處,以及可以解決什麼間題。我們不能為了自動化而自動化,必須在實施自動化測試之前明確自動化測試的目標。
1.提高測試人員的工作成就感和幸福感,減少手工測試中重複性的工作
目前。在大部分中小企業中,手工測試在日常測試工作佔據的比例很大。測試人員必須跟隨開發團隊不斷地進行選代式開發和測試。一個功能模組可能在整個測試周期中重複測試超過10次。
如何改變這個現狀呢?進行自動化測試肯定是一個很好的選擇。相應指令碼寫好以後,可以不斷地重複執行。測試人員只需要單擊某個按鈕就可以開始測試工作了,然後看一下測試結果。就完成了以往手工測試需要花費很長時間才能完成的工作。此時,測試工作的成就感和幸福感油然而生,測試人員也會有意願去主動地推進自動化測試在不同專案中的深入實施
2.提高測試用例的執行效率,實現快速的自動化迴歸測試,快速地給予開發團隊質量反饋
使用手工方式來執行測試用例,執行速度必然是很慢的。人是一種生物,而不是機器,工作時間長了必然會覺得勞累,測試執行的速度自然就慢了下來。在測試用例非常多的情況下,測試一遍通所有測試用例的時間成本就會相當高。
如果使用自動化測試取代手工測試,那麼測試用例的執行者就變成了機器。機器可以全天候不停地執行,可以不知疲倦、快速地完成測試指令碼指派給它的測試任務。此種方式勢必可以大大提高測試執行的效率,縮短測試用例的執行時間,提高測試執行的準確性。
目前,敏捷開發模式在各類軟體企業中開始普及和應用。敏捷開發對被開發產品的質量反饋有著很高的要求,需要每週甚至每天開發出一個 Build版本,並且部署在測試環境上,同時希望測試人員能夠給予快速的質量反饋。目前,只有通過自動化測試的方式,才能真正實現對於大型敏捷開發專案的質量反饋需求。缺少自動化測試的敏捷開發專案會大大增加專案失敗的風險
為了驗證是否達到了此目的,可以和以前手工測試的執行時間進行對比,看看是否明顯縮短了測試用例的執行時間,詢問開發人員專案的質量反饋速度能否為快速釋出產品帶來很大幫助。
3.減少測試人員的數量,提高開發和測試的比例,節省企業的人力成本在大部分IT企業的運營成本中,5006~706的成本是人工成本,如何更好地控制人工成本,對企業的發展有著重要意義。使用自動化測試方式,勢必會減少手工測試的工作量,從而達到減少測試人員的目的,進而降低企業的人工成本,提高企業的盈利能力
4.線上產品的執行狀態監控
在完成產品開發和測試工作後,產品會發布到生產環境中,正式為使用者提供服務。但是,在生產環境的運營過程中,產品總是會由於各類原因產生這樣或者那樣的問題或故障。如何快速發現這樣的問題呢?有人說:“出了問題一定會有使用者給客服打電話,這樣我們就可以發現生產環境中的問題了。”採用這樣的處理方式,勢必會降低使用者對產品的滿意度。另外,如果沒有熱心的使用者進行反饋,那麼生產環境中的問題被發現的時間會大大推遲。因此,僅僅依靠客戶反饋的方式是不可取的。
為了保證快速、及時地發現生產環境中的問題,可以編寫自動化測試指令碼,以測試產品的主要功能邏輯。定時執行測試指令碼,以檢查產品系統是否依舊可以正常工作。如果執行測試指令碼後沒有發現任何問題,則休眠等待一段時間後再執行測試指令碼,以檢測產品系統的執行狀態。如果測試指令碼發現了產品系統的執行問題,在重試幾次之後確認產品系統的問題依舊存在,則測試指令碼會自動給系統運維的值班人員發出報警郵件和簡訊。相關人員收到報警資訊後可以人工處理系統出現的執行故障,這樣就達到了實時監控產品系統的目的,以便在第一時間發現和處
理系統的故障
5.插入大量測試資料
在系統級別的測試過程中,經常要插入大量的測試資料來驗證系統的處理能力。例如,測試人員想要插入100個訂單,並且每個訂單都要有業務要求,使用手工的方式來插入這些資料勢必會花費很長的時間和很多的精力。然而,如果我們有“
6.常見的錯誤目標:使用自動化測試完全替代手工測試
有人認為,轉型後就是自動化測試了,不用手工測試了。對於任何專案,首選自動化測試,這是不可取的。在做出如何對待自動化測試的決定之前,首先要對自動化測試有一個清斷的認識。自動化測試是對手工測試的一種補充。很多資料的正確性、介面美觀程度和業務邏輯的滿足程度等都離不開測試人員的人工判斷。而僅僅依賴手工測試會讓測試過於低效,尤其是迴歸測試的重複工作量會對測試人員造成巨大的壓力。因此,人工測試與自動化測試都不可或缺,關鍵是在合適的地方使用合適的測試手段。
(未完待續)