測試開發專題-開篇
測試開發工程師,通常是指具備開發能力的測試人員。
近年來,隨著DevOps和敏捷過程越來越廣泛地被採用,軟體測試、特別是自動化測試得到了迅速的發展。DevOps希望建立一個快速、頻繁、可靠的一體化交付過程;敏捷則要求對交付件品質進行持續、及時、全面的回饋。軟體測試作為研發過程中的重要環節,其能否達到快速響應、有效度量,實現過程自動化、系統一體化的目標,對整個組織的研發效率和產品品質將產生深遠的影響。
這幾年,Scrum和XP(極限編程)等敏捷開發過程愈發流行,Shift-Left Testing(測試左移)和TDD(測試驅動開發)得到了越來越多的重視。拋開通常以開發人員為主導的UTDD(單元測試驅動開發)這裡不做贅述,ATDD(驗收測試驅動開發)需要測試人員在需求分析和系統設計方面有著更多的參與和見解,這樣才能夠設計出高可用的用例場景,以驅動需求進一步明確、設計更加周全,從而推進相關干係人做到對需求統一理解,做好同行評審,並保障後續開發工作的順利進行。
隨著企業軟體系統越來越複雜,很多公司選擇了微服務的架構和前後端分離的技術,帶來了更多的自動化、性能、介面和安全性等方面的測試需要。加上DevOps、持續集成和部署相關平台的應用,容器和虛擬機雲服務的引入,這些測試有關的平台、工具和環境的開發、維護,無不需要更多的技能。我們預見,自動化測試作為品質度量活動中的重要一環,未來將具備以下幾個趨勢,這將帶來自動化測試人員從簡單的工具使用者到平台開發者的一個重大轉變。
過程一體化
- 使用統一的平台完成測試設計、腳本開發和調試、執行調度、統計分析、報告展示等活動;
- 同其他DevOps、CI/CD工具實現無縫對接,作為整個研發系統的一個有機組成部分而發揮效用。
資產集中化
- 將測試腳本、測試數據,AI測試的語音、說法和圖片等資產進行集中化管理,在組織層面實現共享;
- 將測試設備硬體接入雲端,實現集中管理、遠程訪問;採用虛擬化技術構建不同類型、版本的作業系統和瀏覽器,並做到按需啟動和銷毀,在組織層面實現共享。
測試服務化
- 提供方便的測試管理頁面或介面,含測試人員外的任何人、在任何時候,可方便地發起指定範圍和環境上的一次測試;
- 測試完成後,及時生成、分發測試結果和分析報告,完成度量和評估,為後續工作安排和決策提供依據。
著名諮詢公司凱捷與Micro Focus在2020年末聯合發布了全球品質報告2020-21(具體可參考軟體品質報道公眾號文章《2020-21軟體測試中的重要趨勢及應對措施》)。來自32個國家、10個行業的1750名QA/測試經理、首席資訊官和其他IT高層參與了有關軟體測試發展趨勢的調查,總結出測試領域的主要趨勢,內容包括:QA團隊正逐步轉型為品質協調者;自動化測試比重不斷上升;測試環境和數據管理不斷完善;AI技術在測試中的作用持續上升。這些趨勢為軟體測試從業者指明了方向,也提出了更高的技能要求。
這是測試工程師最好的時代,因為以手工測試為主的重複勞動已成為過去,測試從業者的能力和待遇不再亞於開發人員;這是測試工程師最壞的時代,很多大廠已經將勞動密集性的重複測試工作外包給了第三方,轉而只僱傭相對少量具備更強專業能力的高端人才。
為適應軟體測試的發展趨勢,幫助大家提高測試方面的綜合技能,我們即將推出測試開發有關的專題。內容包括以下3個方面,歡迎大家一起探討和多提寶貴建議。
- 測試人員開發技能:程式語言、電腦系統、網路和資料庫等;
- 軟體測試高級技術:自動化、性能、介面測試工具使用和開發;
- 軟體研發工具鏈: DevOps、CI/CD持續集成和部署等工具鏈。
最後,我們翻譯一份來自微軟,這個市值重回世界第一的軟體公司的一份用人需求,供正在朝著測試開發方向努力的朋友參考。
Responsibilities 職責:
Design, develop and implement automated tools and test infrastructure for validating Exchange features and interfaces;
設計、開發和實現自動化測試工具和平台,用於驗證Exchange郵件服務的功能特性和介面。
Participate in ongoing product specification and code reviews;
參與產品需求規約和程式碼的評審;
Translate customer requirements and product goals into appropriate tests;
根據客戶需求和產品目標,設計充分、有效的測試用例;
Overall 60-80% of your time will be developing code in C++ (moving toward C#).
工作中6到8成的時間,將使用C++語言進行開發編程(未來有可能切換到C#)。