測試開發需要掌握哪些技術?

{"type":"doc","content":[{"type":"heading","attrs":{"align":null,"level":1},"content":[{"type":"text","text":"前言","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" 先來個介紹背景,身邊的朋友或者技術羣的羣友,總會時常問起,測試開發需要具備哪些技能呢?測試要如何往測開方向轉崗呢?本篇文章主要聊下個人的一些觀點看法。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" 目前,我主要從事CI/CD(持續集成/持續交付), 自動化相關的實踐。","attrs":{}}]},{"type":"heading","attrs":{"align":null,"level":1},"content":[{"type":"text","text":"語言","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" 對於測試開發工程師,他也是屬於開發工程師,那麼,最基礎的需要具備一定的編程能力,從能看懂代碼到能寫代碼。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"編程語言: Java-》基礎算法-》重構","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" 對於大部分的計算機相關專業的同學大學時期都有接觸,把java基礎掌握然後是高級的用法,不難的一件事。第二是基礎的算法,冒泡,快排,二分法等基礎的刷完。第三,讀2+遍重構(改善既有代碼的設計)這本書,再回頭看一看自己寫的代碼,如果你覺得像一坨*,請動手重構它。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"當你每隔幾個月看到自己寫的代碼想罵人,恭喜你又進步了!","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"英語: 技術文檔,各種官網基本都是英文,當然,有的也有中文翻譯。","attrs":{}}]},{"type":"heading","attrs":{"align":null,"level":1},"content":[{"type":"text","text":"測試理論基礎","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" 測開也是測試工程師,必須具備良好的測試理論。瞭解各種的測試方法,以及它們之間的差異;瞭解常用的用例設計方法(等價類,因果圖...),等等...","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" 這裏可以推薦大家看一本書《google軟件測試之道》。(讀的第一本測試相關書籍)","attrs":{}}]},{"type":"heading","attrs":{"align":null,"level":1},"content":[{"type":"text","text":"CI/CD","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" 對於測開未來是工程效能方向,參考google,google在十年前就開始往這個方向走,那麼,應該具備最基礎的CI/CD的技能,提升開發團隊的效能,爲團隊賦能。(目前很多公司測開還是不做這事兒...)","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" CI/CD可以爲團隊提供更高效的構建速度,交付更高質量的代碼,一方面需要了解它的作用,讓團隊去做改進,比起工具,改變固有的思想往往來的更難。另一方面,大家最關心的都要會哪些工具呢?請看下圖,工具真多,如何開始呢?","attrs":{}}]},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/61/61144402bc42d13c31c134f0d7bf709a.png","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"構建工具:","attrs":{}}]},{"type":"numberedlist","attrs":{"start":null,"normalizeStart":1},"content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":1,"align":null,"origin":null},"content":[{"type":"text","text":"Git:瞭解基本的使用後需要了解分支管理策略,pipeline跟分支策略密切相關","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":2,"align":null,"origin":null},"content":[{"type":"text","text":"Jenkins:這裏的工具也很多,jenkins的使用還是佔很大比重的,生態圈很好各種plugin,學習資源也很多。瞭解基本的使用,要會寫Jenkins File,不要只會UI配置。","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":3,"align":null,"origin":null},"content":[{"type":"text","text":"構建工具:以java爲例子,需要掌握Gradle的使用,瞭解它的生命週期,依賴如何安裝的等等。","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":4,"align":null,"origin":null},"content":[{"type":"text","text":"Docker: 在遠古時期大部分是直接在服務器上編譯打包,Docker的誕生讓構建變得更加便捷,快速,同時節省資源。需要掌握基本的命令行,會構建基礎的鏡像。","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":5,"align":null,"origin":null},"content":[{"type":"text","text":"操作系統基礎知識: linux常見命令,io,cpu,內存等...","attrs":{}}]}]}]},{"type":"heading","attrs":{"align":null,"level":1},"content":[{"type":"text","text":"Automation","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" 現階段,看看大部分的JD你會發現,絕大多數的公司要求掌握自動化測試技術,包括UI自動化,接口自動化,性能測試等。","attrs":{}}]},{"type":"numberedlist","attrs":{"start":1,"normalizeStart":1},"content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":1,"align":null,"origin":null},"content":[{"type":"text","text":"UI自動化: 主流的還是selenium,雖然,puppeteer,cypress的興起對它來說有一定的衝擊。不論哪個工具,先了解基本的使用,瞭解PO之類的設計模式,然後瞭解框架的工作原理。移動端可以看看Appium.","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":2,"align":null,"origin":null},"content":[{"type":"text","text":"接口自動化: 這就很多了,找一個看吧,httprunner,rest-assured...","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":3,"align":null,"origin":null},"content":[{"type":"text","text":"單元測試: 很多的測開對這部分的瞭解並不多,其實這也是一大部分的內容,比如Junit,mock 也是需要了解的。","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":4,"align":null,"origin":null},"content":[{"type":"text","text":"性能測試: 這部分JMeter吧瞭解基本使用,知道怎麼做性能,瞭解tps,qps等","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":5,"align":null,"origin":null},"content":[{"type":"text","text":"靜態代碼分析: 1,2,3通常而言是屬於動態測試,這裏需要補充的是靜態代碼方面的測試,比如sonarqube之類的平臺,瞭解它是做啥的,大概有個印象","attrs":{}}]}]}]},{"type":"heading","attrs":{"align":null,"level":1},"content":[{"type":"text","text":"測試工具/測試平臺","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" 這部分內容,更多的是在於瞭解當前業務,當前流程有哪些可以優化提升的,有一個idea,會代碼就可以幹了。難的是發現當前的痛點,發現問題解決問題的過程,需要有足夠的知識經驗才能做好這件事。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" 測試平臺不一定是萬能的,不要爲了炫技而去開發,要立足於解決問題,節約resource。如果對之類的有興趣不妨查下github,這裏有很多開源的工具,看看那些star多的項目。","attrs":{}}]},{"type":"heading","attrs":{"align":null,"level":1},"content":[{"type":"text","text":"最重要的","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" 學習能力,個人覺得無論是什麼樣工具語言,其實最主要的還是個人學習能力,求知慾。在面試的時候,特別是對3年以內的工程師,我很關注他的自學能力,我認爲這部分的人只要有好的引導他可以很好的開展工作。5年+的更關注經驗了,如果疑問三不知,你跟我說你喜歡學習....禮貌性微笑。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" 溝通能力,良好的溝通意味着已經成功了一半。必備軟技能~","attrs":{}}]},{"type":"heading","attrs":{"align":null,"level":1},"content":[{"type":"text","text":"總結","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" 從開發到測試開發再到慢慢接觸管理方面,接近8年的時光裏,對測試行業的看法、觀點、認知,隨着自我的成長一直在發生的變化,對未來我依然憧憬着,希望測試行業可以越來越好。同時,迷茫困惑也一直伴隨左右(我是誰,我在哪,我將往何處去...)。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"以上內容純屬個人觀點,希望對你有幫助,也歡迎跟我探討測試方面的知識。","attrs":{}}]}]}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章