一文全面梳理測試工程師的7大技能點

2021-02-13 51Testing軟體測試網

軟體測試工程師是一個歷史很悠久的職位,可以說從有軟體開發這個行業以來,就開始有了軟體測試工程師的角色。

隨著時代的發展,軟體測試工程師的角色和職責也在悄然發生著變化,從一開始單純的在瀑布式開發流程中擔任測試階段的執行者,到敏捷開發流程中QA(Quality Assurance)角色,為整個團隊和產品的質量負責,測試工程師的職責和邊界不斷的擴大。

近年來網際網路行業的很多測試工程師被稱為是測試開發工程師,也就是要具備自動化測試和測試工具開發能力的測試工程師,可以說是對測試工程師的能力要求達到了一個新的高度。

相信有過測試工作經驗的同學都會深有體會,不管是瀑布式還是agile模式,測試人員的工作總是被壓在產品發布的最後階段,整個團隊的壓力似乎都壓在測試工程師身上,沒有人會理會開發過程中產生的延誤,因為那已經過去,可以在retro meeting的時候diss,但是目前最重要的問題是完成產品的發布上線。

所以在尋找測試工程師需要什麼技能之前,測試工程師的核心問題是什麼,這是我們要搞清楚的。

如何以最小的投入,最大程度保證產品的質量

這個問題相信大家都有所體會,商業社會追求的就是效率,甚至是極致的效率。測試工程師也不能例外,不管是叫測試工程師,QA,或者是聽著高大上的測試開發工程師,其實老闆們的目標是一致的,就是在儘可能少的投入,最大程度保證產品的質量。說得現實一點,你的薪資水平就取決於你能解決這個核心問題的能力。


明確了我們的目標,我們所需要的能力,也是圍繞著這一個目標來設定的。

按照筆者的經驗和理解,一個軟體測試工程師需要具備以下的技能:

測試設計能力

代碼能力

自動化測試技術

質量流程管理

行業技術知識

資料庫

業務知識

作為一名測試工程師,最基礎的能力應該就是根據產品來設計測試用例的能力。最基礎的能力往往也是最難做到精通的能力。要設計好的測試用例,需要對產品的特性和業務非常的熟悉,對用戶的使用場景有著系統化的思考。除此之外,還有一些科學的測試用例設計方法可以幫助我們設計規範化的用例,而不是僅僅根據經驗或者天馬行空的想法來設計用例。


業界有一些經典的測試用例設計方法需要測試工程師掌握:

上述的這些方法並不是教條,而是幫助我們理清測試用例設計的思路和提高效率的工具。

在傳統的思維中,對測試人員的代碼能力要求似乎不是很高,在業界確實也是這樣的。很多測試工程師基本上不具備代碼的能力,更多是測試的執行者。

但是在當今這個時代下,要想突破傳統功能測試人員的天花板,代碼能力是必須的。

具備代碼能力的測試工程師有這樣兩個優勢:

2.1 閱讀開發代碼

如果能夠具備閱讀開發代碼的能力,對於提高測試人員的效率是很有幫助的,它可以幫助我們做到這些一些事情:

其實可以做到的事情還有很多,體現在測試過程的很多細節當中。

2.2自動化測試的開發

自動化測試是測試發展的方向,也是提高效率的有效方法。具備了代碼能力,你可以輕鬆的駕馭各種流行的自動化測試框架和用例開發。

接著上面關於自動化測試的討論。在目前的熱門公司的招聘中,自動化能力已經是必備的能力,也是大家很關注的一個領域。目前可以粗略的把自動化測試分為這麼幾類:

3.1 UI自動化

UI自動化實現的目標是模擬人在產品UI界面上的操作,從而觀察結果來完成測試的執行。UI自動化也可以從客戶端的形態上分為PC端和移動端的自動化測試,有這樣一些著名的自動化工具需要我們掌握:

3.1.1 Selenium

Selenium是一個很經典的WEB端產品的UI自動化工具,針對不同的開發語言都有很好的支持。它的原理簡單來說就是通過WebDriver把腳本產生的操作指令傳遞到瀏覽器,執行我們需要的操作並且獲取相應的反饋,在腳本中完成校驗。


3.1.2 Appium

從這個名字就可以看出這個工具和Selenium的相似之處。其實Appium可以理解為就是移動端的Selenium。同樣也是在移動端模擬人的操作來實現執行測試用例的目的。

隨著移動網際網路時代的到來,更多的業務已經從PC的WEB端轉移到了移動端,移動端的自動化測試越來越重要。

其實UI的自動化實現的原理都是很類似的,基本的邏輯都是:

最後通過某種測試用例框架來管理測試用例,例如python的unittest,JAVA的TestNG,Ruby的respec等等。


所以說了解了某一種UI自動化的框架和工具,很容易的就能觸類旁通的學習新的框架和工具。

3.2 接口自動化

在目前SaaS成為主流的情況下,API,即接口,成為了支撐業務的核心部分。前端頁面和App裡面的業務數據都是通過各種API與伺服器進行通信,從而實現業務功能。


目前大多數的接口都是基於HTTP協議的,其中Restful的接口又佔大多數。而很多語言,例如Python和Ruby都有很好的庫來支持HTTP協議的請求,這就為我們設計接口自動化提供了很好的基礎。


回到我們的核心問題,投入產出比的衡量。UI的自動化無論是從實現的成本還是維護的成本來說都是巨大的,所以業界越來越把重心放到了接口層的自動化實現上。


接口的自動化具備這樣的優勢:

運行效率高

開發成本低

維護成本低

可以與開發代碼同步開發

接口自動化的實現思路也是簡單明了的,那就是模擬瀏覽器,發送HTTP請求來實現對接口的調用,然後比較返回與期望值,達到驗證結果的目的。

當然,要設計一套真正高效的接口自動化框架也是不容易的。這裡面涉及到如何提高用例的開發效率,降低開發維護成本等關鍵問題。同時還可以把接口測試與性能測試結合起來,豐富接口自動化測試的內涵。

在敏捷開發的流程中,測試工程師有了一個新的定義:Quality Assurance Engineer。而測試的執行僅僅是職責中的一部分,更為重要的是要為整個團隊的產品質量負責。

從整個sprint的周期來看,QA工程師都要始終如一的貫徹質量保證的意識,與開發的關係也從早期的發現bug,轉變為如何幫助開發團隊一起提高產品的質量。同時還要和產品團隊密切的合作,在需求的分析階段就介入,分析質量保證工作如何規劃和設計,而不是在產品發布前的測試執行階段才介入。

這個裡面還包含很多Soft skill的要求,包括如何與團隊合作,溝通等等,這也是敏捷開發模式的關鍵之一。

這一部分內容其實涵蓋的內容是非常豐富的,就以網際網路行業舉例吧。

對於一個網際網路產品,測試工程師需要了解的甚至是精通的知識是很多的,從前端頁面的技術棧,API的設計,後端伺服器的設計,後面會專門提到的資料庫,還有整個服務的架構等等,測試工程師都需要有所了解。

針對這個問題,其實有一個非常好的問題可以幫助大家去梳理涉及到的知識,這就是:

從在瀏覽器的輸入框輸入一個網址,到看到網頁的內容,這個過程中發生了什麼?

回答這個問題的深度和廣度,基本就能反映一個測試工程師對於網際網路產品技術的掌握情況。

在這裡呢,我簡單的羅列一些涉及到的技術和概念,這些內容對於我們測試產品,都是非常有幫助的。

DNS

TCP/IP

HTTP

SSL

Restful

HTML

DOM

CSS

Render

Xpath

伺服器

nginx

SQL

Cookie&Session

XSS,CSRF

這裡僅僅是涉及到一部分內容,具體的內容可以根據工作中遇到的場景去深入學習和了解。

之所以把資料庫單獨列出來,是因為資料庫的知識對於當今的很多產品都是非常核心的內容。不管是在手動測試還是自動化測試中,都有需要到資料庫進行數據校驗的時候。

目前主要使用的資料庫可以分為兩類:

6.1 關係型資料庫

關係型資料庫是最常見的資料庫類型,這類資料庫通過RDBMS資料庫程序來進行管理和使用,常見的有SQL Server, MySQL等等。


關係型資料庫中強調一個事務(Transaction)的概念。所謂事務是用戶定義的一個資料庫操作系列,這些操作要麼全部執行,要麼全部不執行,是一個不可分割的工作單位。例如在關係資料庫中,一個事務可以是一條SQL語句、一組SQL語句或整個程序。

事務應該具有4個屬性:原子性、一致性、隔離性、持久性。這四個屬性通常稱為ACID特性。

原子性(Atomicity):事務作為一個整體被執行,包含在其中的對資料庫的操作要麼全部被執行,要麼都不執行。

一致性(Consistency):事務應確保資料庫的狀態從一個一致狀態轉變為另一個一致狀態。一致狀態的含義是資料庫中的數據應滿足完整性約束。

隔離性(Isolation):多個事務並發執行時,一個事務的執行不應影響其他事務的執行。

持久性(Durability):一個事務一旦提交,他對資料庫的修改應該永久保存在資料庫中。

對於實際的應用來說,SQL語言是必須要掌握的。能夠通過SQL語句在資料庫中找到需要的數據,是測試工程師必備的技能。SQL語句的語法大體上比較類似,在一些細節上不同的RDBMS會有些許的差別。

對於自動化實現來說,在自動化測試中通過訪問資料庫來獲得期望值也是很常見的場景。不同的語言都有訪問資料庫的庫,整體來說應用也很簡單。

6.2 非關係型資料庫

隨著網際網路中大量的非結構化數據的產生,例如社交網絡等等應用,用戶的個人信息,社交網絡,地理位置,用戶生成的數據和用戶操作日誌已經正在以幾何級數的速率增加,同時還面臨大量的數據挖掘工作,傳統的關係型資料庫已經無法滿足。所以NoSQL漸漸的發展了起來。

NoSQL最突出的特點就是數據的非結構化,通俗的講,就是數據不再是以列和行這樣的形式存儲的。

NoSQL存儲數據的方式很多:值對存儲,列存儲,文檔存儲。例如比較常見的MongoDB就是將數據存儲為一個文檔,數據結構由鍵值(key=>value)對組成。MongoDB 文檔類似於 JSON 對象。欄位值可以包含其他文檔,數組及文檔數組。

6.3 RDBMS vs NoSQL
RDBMS

高度組織化結構化數據

結構化查詢語言(SQL)

數據和關係都存儲在單獨的表中。

數據操縱語言,數據定義語言

嚴格的一致性

基礎事務

NoSQL

對於測試工程師來說,所測試產品的業務知識也是非常重要的。

一個測試工程師可能已經具備了上述的所有技能,但是怎麼把這些技能用來解決我們最先提到的軟體測試的核心問題呢?這個裡面的關鍵,或者說中心點,就是你所測試的產品的業務。

測試的方法,規劃,實施方法都是多種多樣的,如果在這些方法中進行選擇,所依賴的正是對產品的業務的深刻理解。

這裡的產品業務不僅僅指產品的特性,同時還包括了產品的用戶特徵,用戶的使用習慣,以及由此帶來的對產品的流量趨勢。也可以說,測試人員必須要站在用戶的角度來分析產品,而不是產品開發人員的角度。

測試人員還需要找到產品的核心功能和核心業務,通過這樣的分析來進行測試優先級的劃分,以及缺陷的定級。同時對於自動化測試的規劃和架構也有著重要的影響。例如在自動化測試中要首先覆蓋那些核心的業務和功能,同時根據業務的特性,用自動化的方法去模擬用戶的使用場景,把有限的自動化資源投入到最關鍵的部分。


這一塊技能聽起來可能很虛,好像沒有什麼具體的知識點,但是在不斷的工作和總結中,優秀的測試工程師是能夠總結出一套符合某一類產品的測試方法的,甚至還可以提煉出一些更具備通用性的best practice,用到不同的產品中。

或者這樣一篇短短的文章無法涵蓋軟體測試的內涵,但是筆者也只是想拋磚引玉,讓讀者能夠通過這樣一種不能算全面的梳理,結合自己的工作經驗,對自己所從事的軟體測試工作有一個更深的理解。

筆者計劃根據這篇文章所列出的技能樹,分別寫文章進行更加細緻的梳理和總結,希望能夠和各位同行一起學習,一起進步,同時非常歡迎大家指正我的錯誤和不足。

簡書:https://www.jianshu.com/p/4554d908586d本文為51Testing經授權轉載,轉載文章所包含的文字來源於作者。如因內容或版權等問題,請聯繫51Testing進行刪除

相關焦點

  • 軟體測試工程師需要掌握哪些技能
    軟體測試工程師需要掌握哪些技能大家都知道功能測試是測試工程師的基本功,今天就來和大家說說功能測試需要掌握哪些技能...測試用例必須包含的內容:用例編號、用例名稱、測試背景、前置條件、優先級、重要級、測試數據、測試步驟、預期結果、實際結果、備註。1.測試用例的編寫流程需求分析->提取測試點->測試用例編寫->測試用例評審。
  • 測試工程師應該掌握哪些技能
    我上一篇微博講了設計公司應該如何招攬合適的測試工程師,那這回就應該相應地站在測試工程師的立場來聊一聊了.這次我想講一下,作為一個集成電路的測試工程師到底應該掌握哪些技能
  • 射頻測試工程師,這五大技能你不能不知!
    打開APP 射頻測試工程師,這五大技能你不能不知!   有人說,做射頻前景不好,測試崗位更是不值錢,但據了解,這一崗位在通信行業甚至是軍工航天領域的需求非常大,根據 Glassdoor 的統計,射頻測試工程師的平均年薪達到了 77300 美元。   那麼,一名合格的射頻測試工程師,應具備哪些技能呢?
  • 一名優秀的射頻測試工程師需要掌握這五大技能
    有人說,做射頻前景不好,測試崗位更是不值錢,但據雷鋒網了解,這一崗位在通信行業甚至是軍工航天領域的需求非常大,根據 Glassdoor 的統計,射頻測試工程師的平均年薪達到了 77300 美元。那麼,一名合格的射頻測試工程師應具備哪些技能呢?
  • 成為優秀自動化測試工程師的7個步驟
    企業完全同意這一說法,這就是您在自動化測試行業中看到大量就業機會的原因。很多與自動化測試中的職業選擇相關的答案請求,以及人們如何在有或沒有手動測試經驗的情況下適應自動化測試。在這裡,我將詳細解釋成為測試自動化工程師的七個最重要的步驟。因此,所有希望將職業轉向自動化測試的人都要注意所有這些。1.
  • 一位面試了20+家公司的測試工程師,發現了面試「絕殺四重技」!
    這個時候,對於面試者自身的情況介紹,一定要避免誇誇其談,涉及高深或層級較高的技術點。因為一個初級測試工程師,是不可能深度參與或者管理一個項目的,那麼在個人介紹中,就要著重說明自己在項目中的工作內容,以及對於工作的理解。
  • 高級測試工程師
    參與公司項目測試,編寫測試計劃、準備測試數據、編寫測試用例,負責相關產品的功能、性能、自動化測試;2. 參與項目需求評審,能夠及時指出設計不足並協助產品有效改進;3. 在測試過程中,能夠迅速、準確、全面的發現問題,並對問題產生原因進行分析,推動問題解決;4.
  • 軟體測試工程師職業規劃
    參與同行的評審(軟體需求,軟體測試計劃等),並為其它初級的測試工程師或程式設計師充當顧問。  學習方向:繼續拓展程式語言、作業系統、網絡與資料庫方面的技能。  第四階段:測試組負責人   自身條件:有4~6年經驗的測試工程師或程式設計師。具有豐富的行業業務知識,具有系統分析員的能力,專長性能測試。
  • 如何成為軟體自動化測試工程師
    由於,崗位需求量大,薪資高的特點,軟體自動化測試工程師已經是當下最熱門的職業之一。如何成為軟體自動化測試工程師呢?只要學習和掌握了相關的技能,就可以成為軟體自動化測試工程師。那麼,具體需要掌握哪些技能呢?不同類型的軟體自動化測試,對於崗位所需的技能要求各不相同。
  • 軟體測試工程師同行工資居然已經達到這個水平了?
    對於剛入行的軟體測試工程師來說,基本上可以拿到一個7K左右的一個薪資。這個是對於一線城市來說。然後你在軟體測試這個行業中間做了一到兩年的話基本上可以達到8-10K,一個中級軟體測試工程師的層級。對於初級軟體測試工程師來說:1.測試理論2.接口測試3.App測試4.Linux5.Mysql資料庫上面五個知識技能點,玩轉了就可以達到初級軟體測試工程師,或者叫做功能測試工程師的層級
  • IC驗證工程師高效戰鬥手冊--驗證feature文檔梳理
    凡事預則立,不預則廢,眾所周知,驗證feature文檔決定驗證的內容、側重點、質量,是驗證工程師最重要的文檔和指導工具。本文的側重點不在於大而全的探討諸如」不同類型的驗證對象哪些點可以作為驗證feature」等內容(以後在別的文章中有機會再討論),而是繼續遵循「高效」的主題,一起探討如何又快又好的梳理驗證測試點這個文檔?怎樣在驗證過程中充分使用這個文檔?
  • 《元氣騎士》工程師角色技能解析
    元氣騎士工程師技能怎麼樣?元氣騎士工程師技能厲害嗎?很多玩家們對工程師角色不太了解吧,不用擔心,小編這就為玩家們帶來詳細的技能解析!元氣騎士工程師角色技能解析工一,工程炮臺當個炮臺傷害220-248之間(最高值是火焰燒傷最多,最低值是根本沒出現火焰傷害),優勢在於每個炮臺是獨立的傷害,疊加起來還是很強的存在,但是保命不行,需要玩家自己帶近戰武器,而且炮臺其實很脆(12點血量)工二,機甲武裝優勢在於多變,而且防禦輸出兼備,能夠幫玩家抗住部分傷害而且機甲被打爆的傷害多餘傷害不會溢出
  • 企業重視型人才,要求有良好的應變能力-產品測試工程師
    關注並標星大同學吧每天1次,打卡閱讀了解崗位職責和必備技能今天是大同學吧崗位專欄第58期職位介紹之產品測試工程師測試工程師,產品質量的把關者,工作起點高,發展空間大。典型的封裝工藝流程為:劃片、裝片、鍵合、塑封、去飛邊、電鍍、列印、切筋和成型 外觀檢查、成品測試和包裝出貨。我國的產品測試職業還處於一個發展的階段,所以測試工程師具有較大發展前景。封裝的產品測試是用一系列的測試項目和方法,幫助設計、製造和改進產品。
  • 得軟體測試的門檻低?工程師有話說
    工程師有話說 啄木鳥學院 發表於 2021-01-07 10:55:08 隨著網際網路產品功能的日漸複雜,企業越來越重視中高級軟體測試工程師在研發團隊中的比重,高需求促使轉行的人也越來越多,可能很多人都覺得軟體測試的門檻很低,很容易進入到這個行業
  • 谷歌的測試工程師需要很酷(COOL)
    測試工程師是谷歌工程生產力(EngProd)的一部分。我們為用戶代言,提供全面的測試解決方案,並在創造成功和可靠的產品和平臺方面發揮關鍵作用。在Google,測試工程師不是點點點,我們是技術工程師,我們的重點是推進產品的卓越性和工程生產力。
  • 5g通信測試工程師前景怎麼樣
    最近5g越來越火爆了,現在中國連珠穆朗瑪峰都已經有5g信號了,也說明5g現在和人工智慧AI,大數據bigdate,雲計算,電子商務等等是非常火爆的一個話題很多朋友添加網絡工程師成長日記小編的之後,會問到「5g通信測試工程師前景怎麼樣」,「5g網絡工程師怎麼樣」,「5g網絡工程師就業怎麼樣」,網工記小編為大家整理總結一下
  • 算法工程師研發技能表
    Learning Lab    由於算法工程師這個崗位根據不同的業務場景和應用方向,各自的工作差異相對較大。所以很難有一個一概而論的算法工程師技術棧。比如說做圖像方向的有機器視覺算法崗、做文本方向的有自然語言處理算法崗、做語音的又有語音識別算法崗。本文僅對算法工程師常用的、基礎的、必備的研發技能進行梳理。也就是說,不論你是做哪個業務場景下的算法工作,這些基礎研發技能都是必知必會的。這組技能清單主要包括兩大類型,一類是理論技術,另一類是程式語言和工具類。
  • 什麼是軟體測試工程師呢?
    近年來,在IT行業衍生出很多新的職業,軟體測試工程師就是其中一種。那什麼是軟體測試工程師呢?軟體測試工程師進階路線1、資深軟體測試工程師一般情況下,軟體測試工程師可以分為測試工程師、高級測試工程師和資深測試工程師3個等級。
  • 自動化工程師應具備哪些技能
    打開APP 自動化工程師應具備哪些技能 發表於 2019-05-28 16:23:42 在有限的時間學習專業知識,通過五個部分成為自動化工程師,需要學習的內容。不管是以後做開發,做性能測試,手工測試都有極大提高。 不要盲目學習,很多事情是無意義的。即時花費很長時間,對你的回報是很小的,再舉個慄子,以前大學的時候同學們學習高數,對生活幫助是很小的,當然數學行業的除外,買菜的時候你只需要簡單加減法就行了,沒有人會在意你買菜的時候解方程嗎。這些東西也要學的,不學就要掛科。
  • 工程師(Engineer)技能列表
    以下說明是專精技能,即指需要選擇才可以掌握的。如果你在某個路線下的投入的點數越多,這個路線下的核心技能威力就越大。40級時可以同時使用4個職業戰術,另外,只要是脫離戰鬥的狀態,就可以更換戰術。工程師就像Magus,他們都用一些不能移動的炮臺寵物,不過工程師在動作上有他的特色,手持長槍有100ft的距離,手榴彈則有65ft距離,也有招式會設置地雷,非常多樣化的職業。這種炮臺型寵物有它的好處,首先寵物本來沒多少人會打它,它又不可被牙突或白獅那樣引回去群驅,所以除了法師會把它打落外,它就可以靜靜的猛打敵人。