十年測試老兵萬字長文教你構建軟件測試知識體系和技能樹(附思維導圖)

清明三天,由於新冠病毒疫情原因不能外出,待在家中總結了一下10年來軟件測試工作中用到知識點,整理成一份思維導圖分享給大家。

其實現在網絡上關於軟件測試知識很容易得到,各種公衆號、各種博客,以及線下各種測試大會,都能方便得到各種實踐乾貨。我也是關注了十幾個公衆號、很多博客,也經常參加各類測試開發大會。但是,我慢慢發現這些公衆號、博客或者大會的分享,往往是關注於某一個點,碎片化很嚴重。很多時候當時是懂了,但是過後就忘記了,我覺得主要原因還是沒有建立自己的知識體系。

這份思維導圖中,我將軟件測試的知識體系或者叫技能樹分成兩部分,一個是計算機基礎,一個是專項測試。我把計算機基礎叫做內功,專項測試叫做招式。我認爲軟件測試水平高低往往取決於內功的深厚程度。招式易學,內功難修。

這份思維導圖我並沒有將需要掌握的每一門知識和技能展開來介紹。因爲這份圖的主要目的是,幫助大家建立屬於自己的測試知識體系和測試技能樹,就像我給大家搬來了一棵只有樹幹的大樹,需要大家依靠自己平時積累,爲這棵大樹增加樹枝和樹葉,讓自己的測試技能樹枝繁葉茂。
軟件測試知識體系和技能樹
(點擊圖片查看並保存大圖)

1. 計算機基礎知識(內功)

想成爲一名合格的軟件測試工程師,和其他任何 IT 工程師一樣,在工作中紮實的計算機基礎知識都是至關重要的。無論是從個人的職業發展角度,還是從公司招聘候選人的角度,計算機基礎知識都是必備條件和必考內容。某種程度上說,計算機基礎知識掌握的程度,決定了軟件測試工作得優秀程度,也決定了軟件測試職業生涯的高度。

從軟件測試領域來講,一定要掌握的計算機基礎知識主要包括:操作系統、計算機網絡、數據庫、編程語言、數據結構和算法以及架構知識。當然,計算機基礎知識還包括計算機組成原理、編譯原理等基礎學科,我們要不要掌握呢?從我的經驗來看,軟件測試工作並沒有直接用到過這兩門學科的知識,所以,這裏我不會介紹它們。

下面,我來分別介紹操作系統、計算機網絡、數據庫、編程語言、數據結構和算法以及架構方面,軟件測試工程師需要掌握的內容。

1.1 操作系統

這裏說的操作系統,特指的是Linux操作系統,在計算機行業,Linux操作系統絕對在操作系統領域佔據第一把交椅。首先,對於服務器端軟件,70%以上都是部署在Linux操作系統上的,其次,客戶端的操作系統Android也是基於Linux內核開發的。現在比較火的前沿技術,比如雲計算、虛擬化、容器技術、人工智能、大數據,每一項都離不開Linux技術。

軟件測試工作,也是離不開Linux操作系統,比如,我們會通過ssh登錄到服務器上,使用tail命令查看日誌;我們會通過ps或者top命令,查看服務器上的進程狀態;通過vim命令編輯服務的配置文件;會通過yum、apt-get、rpm命令安裝軟件包;某些時候還會編寫一些shell腳本來自動化和簡化我們的工作;在做性能測試時,需要分析服務的性能瓶頸並進行優化。隨着軟件測試工作的深入,一定會使用到容器、虛擬化、Kubernetes等前言技術,而熟練使用和理解Linux,將會讓你更加快速理解和使用這些前沿技術。

如果大家沒有使用過Linux操作系統,或者使用起來不是那麼順手,我非常建議大家系統學習一下《鳥哥的 Linux 私房菜》(基礎學習篇)。這本書以 CentOS 7 爲例,介紹了 Linux 系統的基本使用和管理方法,主要內容包括系統安裝、文件和目錄操作、磁盤和文件系統管理、編輯器、Bash 以及 Linux 系統的管理維護等。這些內容非常適合剛入門 Linux 系統的新手,是軟件測試工程師必須要掌握的。
在這裏插入圖片描述
隨着容器技術的普及,容器和容器雲在軟件測試領域的應用越來越廣泛。最火的應該屬於Docker容器和Kubernetes容器雲技術了。我們可以利用Dokcer快速搭建測試環境、部署被測試服務,使用Kubernetes作爲Jenkins slave進行持續集成、快速搭建分佈式性能測試環境。因此,掌握Dokcer和Kubernetes的使用,瞭解他們背後的原理,一定會讓我們測試工作更加高效。

關於Docker容器和Kubernetes容器雲,我並沒有看過紙質版圖書。我是照着Docker的官方文檔,以容器化一個Python Web應用的實踐掌握了Docker的基本使用,大家可以參考我的另一篇博文《通過容器化Python web應用瞭解Docker容器的核心功能》來親手實踐一下。

關於Kubernetes,我通過學習極客時間的專欄《深入剖析Kubernetes》,成功地將Kubernetes應用到了我們的持續集成和性能測試環境搭建中的。

通過對Docker容器和Kubernetes容器雲的學習和應用,讓我更加深信帶着目的、通過動手實踐的學習方法,是事半功倍的,是最高效的。

1.2 計算機網絡

關於計算機網絡,你可能比較困惑,感覺只是在面試時,面試官會問過TCP和UDP的區別、TCP建立連接的三次握手流程,HTTP協議是怎麼一回事。感覺計算機網絡都是偏理論的內容,在實際工作實踐中用到的並不多,是不是不需要深入系統的學習呢。如果你這樣想,就大錯特錯了。

首先,在軟件測試面試中,不管是應聘哪一個級別,計算機網絡一定是必考的內容。如果面試中還解答不出TCP和UDP的區別、三次握手四次揮手的流程和狀態轉移過程、解答不出HTTP協議請求頭和響應頭各字段含義、HTTPS爲什麼比HTTP更安全的面試問題,那肯定是應聘不到心儀的崗位。所以,就算爲了面試,也一定要掌握好計算機網絡的知識。

在日常的軟件測試工作中,當遇到網絡不通、發現網絡請求異常時,計算機網絡知識的儲備就派上用場了,你需要到ping和telnet來判斷是網絡問題還是服務異常,你需要通過tcpdump或者wireshark抓包分析網絡包的異常,需要用charles或者findler攔截HTTP請求分析請求和響應。

計算機網絡概念太多,知識太零碎,一定要建立起知識體系,並加強練習和實操才能記得住。 知識體系的建立可以基於計算機網絡的分層體系,理解數據鏈路層、IP層、傳輸層和應用層,這些層各是爲了解決哪些網絡問題,爲了解決這些問題設計了哪些網絡協議,網絡協議的數據格式是什麼樣的,執行這些網絡協議的是設備是什麼,如何通過各種命令配置網絡和排查問題。

計算機行業新技術滾滾而來,也不斷被淘汰,而計算機網絡一定是值得你掌握,讓你長期受益。

1.3 數據庫

現代軟件服務端越來越複雜,數據越來越多,不同的數據有不同的存儲需求、也有不同的應用。因此目前市場上數據庫的種類特別多,用得比較多的數據庫有Mysql、Redis、MongoDB。還有一種不能稱爲數據庫,但是在數據處理領域應用特別廣泛的Kafka。

數據庫是我們測試工程師日常工作中用的最多的軟件。爲了準備測試數據,我們可以在數據庫中修改或插入數據;發現接口請求的數據不符合預期,我們需要到數據庫中查詢存儲的數據;發現請求響應特別慢,我們會檢查數據庫是否有慢查詢;爲了優化數據庫的查詢效率我們會優化查詢語句、給數據字段增加索引;爲了提高併發量、減少響應時間,我們會引入Redis作爲數據庫緩存。在使用kafka進行業務隔離的微服務架構中,測試時,我們會通過寫kafka構造數據或者讀取kafka校驗結果,從而解耦測試時對上下游系統的依賴。

雖然數據庫種類衆多,增加了我們的學習任務,但我們可以從最常用的數據庫入手,比如MySQL,詳細瞭解它的常用操作、背後原理及性能優化技巧。我記得我的第一本學習MySQL的書,是一本小冊子,叫《MySQL必知必會》,學習完MySQL後,再後來遇到Redis、MongoDB、Cassandra等其他數據庫時,學習起來就快多了。
在這裏插入圖片描述

1.4 編程語言

提到編程語言,對於部分測試同學來說可能會望而生畏,很多同學也是因爲懼怕編程才選擇軟件測試行業的。但是,我想說的是,軟件測試行業發展到現在,編程語言已經是必備技能了,從事軟件測試行業,如果不會編程也是會被淘汰的。

部分測試同學懼怕編程,我也感同身受,因爲當時我也是懼怕,覺得編程太難了,很多語法記不住,語法記住了也不會上手寫代碼。我不是計算機專業的,和大家一樣,在學校時學的唯一一門編程語言是C語言,再加上不懂數據結構和算法,做起課程設計、畢業設計真的太痛苦了。所以從上大學時就下定決心了,以後一定要放棄編程這條路了。

畢業時,和大家一樣找了一份軟件測試的崗位,工作一年之後,發現測試工作中越來越需要我們編程實現一些小工具輔助測試。編程又回到了我的生活中,不過這次我換了一門語言——Java,因爲當時公司裏面一位前輩給我安利了Java的種種好處,有各種現成的工具庫,可以快速解決實際中的問題。憑藉着在學校時學C語言留下里的一些編程基礎概念,比如循環、分支、條件、變量等,再配合Java中的工具類,我真的將Java用到了工作中,這使得我對編程重新有了信心。

到了2014年,軟件測試自動化已經成爲趨勢,我認識到要想繼續在軟件測試領域幹下去,一定要掌握自動化測試本領。當時我調研了各種自動化測試工具、測試框架,發現大部分自動化測試工具和框架都支持Java和Python語言,而且大部分人推薦使用Python做自動化測試。從那時起,我就與Python結緣,當時我記得Python版本還是2.5或者2.6版本。相比於Java,Python更加簡潔的語法,更加豐富的內置庫和第三方庫,使得我拋棄了Java,鍾情上了Python直到現在。

現在,我使用Python進行服務端接口測試、進行WEB測試、APP測試以及性能測試,開發一些測試工具及Web系統。Python 3.0增加的更多新特性,使得我們編寫測試代碼更加如魚得水。簡潔高效的語法,使得我們可以適用最少的代碼完成工作任務。不僅僅是軟件測試領域,隨着人工智能的火爆,Python語言也成爲現在排名前三的熱門語言。

說了這麼多,我想告訴大家的是,一定要學會編程,否則真的會被淘汰。之前學不會像C\Java編程語言,現在有了簡單的Python語言,我相信你一定能學會,你看我都學會了,你也一定行的。我記得我當時學習Python使用的是一本特別短小的電子書,中文叫《簡明Python教程》,這本電子書一直在更新,大家有興趣可以看下。另外,國內比較好的網絡教材是廖雪峯在他的個人博客上發佈的Python教程。紙質書我看過兩本,一本是《Python核心編程》,這本書是基於Python2寫的,不過裏面的核心內容現在也不過時,另外一本是《Python Cookbook》,這本書也有電子版。

1.5 數據結構與算法

數據結構和算法可以說是我幾次面試碰壁後, 才使得我下決心去攻克的。如果去BAT這樣的大廠求職,數據結構和算法,面試時一定要考的。因爲我不是計算機專業,所以在學校裏面是沒有學過這門課的,我是在工作後,在各種招聘網站的招聘信息中知道這門知識的。

幾次面試碰壁,驅使我去系統學習一下數據結構和算法,可是並沒有找到好的教材,講授這方面知識的網絡課程也不多,我想也可能是由於講起來太難吧。看了看大學裏面使用的教材,感覺都比較晦澀難懂,所以一直沒學會。

但是我平時一直留心收集這方面的學習材料,直到有一天,我遇到一本書叫《圖解算法》,讓我頓時眼前一亮,裏面豐富的插圖,細緻的講解,讓我花了一週的時間看完後,大呼過癮。我想有的時候,學習就是這樣,只要你一直堅持不放棄,終會有那麼一刻讓你頓悟,這一時刻可能是遇到一本適合自己的書,也可能是遇到一個高人給你指點了一二。這本書讓我對學會數據結構和算法大大增加了信心。另外一本數據結構和算法書也很不錯,書名是《大話數據結構》,也推薦大家看看。
在這裏插入圖片描述
再後來,2019年時候極客時間出了一門課程叫做《數據結構與算法之美》,課程出來時,我就訂閱了,在2019年一年中,我大致看了3遍。第一遍特別痛苦,第二遍好點,第三遍時我把學習筆記整理到了我的博客上。目前這門課已經累計近8萬人訂閱,我從中確實學會了數組、鏈表、棧、隊列、散列表、樹、堆常用的數據結構及其上的算法,還學會了遞歸、排序、二分查找、字符串匹配和哈希算法這些思想,學完之後真的感覺我腦袋好像變聰明瞭。

現在,我平時會在Leetcode網站刷刷題,鞏固一下所學。通過學習數據結構與算法,使得我對Python和Java的一些底層原理也有了更深刻的瞭解,我的編程能力也得到了進一步的提升。所以,很多知識是相通的、相互輔助的。

1.6 架構知識

2016年加入蔚來汽車參與車聯網系統測試,伴隨着微服務架構的轉型,對測試策略和方案也提出了前所未有的挑戰。各種服務變的越來越小,變的越來越多,服務發現、網關、監控體系、新的CICD流程,突然感覺自己的知識儲備不夠了。

在微服務下,準備測試數據、測試解耦、定位和排查問題,與之前的單體應用完全不同。這時,我打算深入瞭解一下微服務,解開微服務的面紗,探尋微服務下服務端架構的全貌。由於架構因公司而異,因業務而變,看市面上的經典架構方面的書籍可能不太高效,所以我從公司內部的微服務架構出發,瞭解什麼是服務發現,如何做服務發現,網關的作用和價值,微服務下的監控體系如何運作。對這些有一定了解後,作爲極客時間的重度用戶,我在極客時間上訂閱了一門課程《微服務架構核心20講》,這門課從理論到實踐,介紹了微服務關鍵問題。通過這門課程讓我對微服務架構有了更加全面、清晰理解。

你可能會問了,作爲軟件測試工程師,有必要了解架構知識嗎?我覺得非常有必要,因爲只有深刻理解了服務端架構之後,你才能設計出合理的測試策略,纔有辦法解耦服務間依賴,才能針對性的進行測試數據準備,出了問題才能夠定位是網關的問題、還是服務發現的問題、還是邏輯代碼的問題,你才能理解線上報警意味着什麼問題。

在微服務時代,架構知識也是軟件測試工程師需要掌握的基礎知識。

2. 專項測試(招式)

我爲什麼把各項專項測試稱爲招式呢?因爲我覺得他們都是套路。不管是服務端測試、WEB測試、APP測試還是性能測試,他們的基本套路是一致的:準備測試數據、搭建測試執行環境、執行測試、校驗結果、產生測試報告。

他們的不同點只是使用的測試工具不同,比如服務端測試HTTP協議時,使用使用request這個Python庫,WEB測試使用的是Selenium,APP測試使用的Appium,性能測試使用的是Jmeter或者Locust。

這些不同的工具也有很多共同點,比如進行web自動化測試的Selenium和進行APP自動化測試的Appium都是基於webdriver的,他們的使用大同小異。

下面,我將這些套路拆解開了給大家看。

2.1 測試基礎

不管是手動測試還是自動化測試,測試工程師的基礎工作都是一樣的,都要了解軟件研發流程,都要編寫測試用例,準備測試數據,提交併分析BUG。

在軟件研發流程中的不同階段,要及時和完整輸出測試工作的產物。通常的敏捷軟件研發流程是:需求評審——>方案討論——>工作排期——>提測迭代——>版本發佈——>總結回顧。軟件測試工作對應的各階段產物應該是需求分析、測試用例、測試計劃、執行測試、測試報告、測試總結與分析。

在設計測試用例時,一方面要根據產品的需求分析和提煉出測試用例,另一方面也要根據系統的架構設計技術層面的測試用例。

測試數據準備,需要靈活採取多種手段,常用的手段主要有:

  • 基於GUI的測試數據生成方法

  • 基於API的測試數據生成方法

  • 基於DB的測試數據生成方法

  • 基於MQ的測試數據生成方法

  • 基於第三方庫方式的測試數據生成方法

  • 綜合運用上述方法生成測試數據

準備測試數據的時機也需要根據實際情況選擇在測試執行時或者測試執行前準備。創建耗時時間比較長的測試數據,不需要經常變動的測試數據最好提前創建,對於那些經常變動測試數據,最好在測試執行時創建,執行完成後要及時刪除測試數據。

BUG作爲測試工作的一項重要產出,一定要完整、明確提供BUG信息,並對BUG做出一定的分析,以便開發人員能夠定位和解決BUG。一個優質的BUG應該包含:明確標題、優先級、所屬模塊、是否必現、重現步驟、必要的日誌或者截圖,bug的原因分析等信息。

2.2 自動化測試基礎

要想開展自動化測試,有三個基本技能。第一,要掌握一門編程語言;第二,要掌握一種單元測試框架。第三,要掌握一種測試報告框架。

自動化測試,設計到編寫腳本開發工具,需要掌握一門編程語言纔可以。目前軟件測試領域常用的編程語言有Java和Python,大家可以選擇任意一種來掌握。

除了編程語言,我們還要掌握相應的單元測試框架,Java中常用的單元測試框架是TestNG,Python中常用的單元測試框架是Pytest。單元測試框架的價值在於,幫助我們管理測試用例、執行測試用例、方便進行測試數據參數化,進行斷言和輸出測試結果。有了這些功能後,我們只需要關注我們測試代碼的邏輯編寫就好了,大大提高了我們測試的效率。

對於軟件測試工作來說,測試報告是非常重要的工作產出。一個漂亮、清晰、格式規範、內容完整的測試報告,既能最大化我們的測試工作產出,又能夠減少開發人員和測試人員的溝通成本。目前,市場上特別流行的開源測試報告框架是Allure,它可以方便的與各種測試框架集成,只需要很少的定製步驟,就可以產出漂亮的測試報告。我之前曾經寫過一片關於Allure與Pytest集成的博文《用Pytest+Allure生成漂亮的HTML圖形化測試報告》,感興趣的可以參考。

2.3 代碼級質量保障

代碼級質量保障,主要是從業務代碼靜態審查、單元測試角度來執行的。我們知道BUG越早發現修復的成本越低,發現的越晚修復的成本越高。因此我們需要在代碼編寫、提交代碼和編譯階段進行代碼級的質量保障。

代碼編寫和提交結點,保障代碼質量的通常做法是Code Review和靜態代碼掃碼,發現代碼中不符合規範和難於理解地方。開發人員要根據Review的反饋和靜態掃碼的結果,修改和完善代碼。

另外,編寫單元測試也是保障代碼質量、更早發現軟件BUG的常用手段。高覆蓋率的單元測試往往能提供高質量的代碼,就會有越少的BUG在測試工程師測試階段被發現。

重視軟件質量的團隊,一定是重視Code Review和單元測試的團隊。這樣的團隊往往能提供高質量、及時的軟件交付。

代碼級的質量保證工作,往往是開發人員來負責,作爲測試工程師,可以考慮提供好用的測試數據準備工具、測試環境搭建工具,讓開發人員更好的完成自測。

2.4 服務端測試

服務端測試常見的是API測試,也有一些非API的服務測試。對於API測試我們需要拿到API文檔,按照API文檔的描述,調用API並校驗Response。對於非API的服務端測試,往往是需要根據業務邏輯通過其他手段輸入測試數據,並檢查服務處理後的輸出結果。

有的時候,如果拿不到API文檔或者不清楚服務內部的邏輯,就需要通過抓包、和開發人員溝通、查看業務源代碼等方式,明確API或者服務的邏輯信息,再進行針對性的測試數據準備、測試用例設計。

對於服務端測試,發起測試的手段有Postman、Curl或者通過編寫代碼,通常來講,試驗性的查看接口是否能通,會使用Postman、Curl這類工具,但是爲了更加全面、能夠方便與CI流水線集成,我們更加推薦使用編寫代碼的方式發起測試。

服務端測試的檢查點,我們通常要求對響應結果,以及數據流過的所有環節,包括數據庫、kafka等進行校驗,這樣做的好處是,一方面能夠強迫我們要對每一個接口或者處理流程做到心中有數,在後續服務出現問題時,能夠很快的定位到問題所在。另外一個方面,當測試用例執行失敗時,也能很快定位失敗的位置,提交BUG時,就能夠很快的給出BUG的出錯的原因。

根據測試金字塔,服務端測試要儘量做到全面,更高的測試覆蓋率,以便爲客戶端測試提供穩定的環境。

2.5 持續集成

我們編寫自動化的目的,不是爲了能夠在本地電腦上偶爾跑一次,而是爲了能夠將自動化測試集成到公司整個CICD流水線中,持續進行測試,提高研發部署效率。因此我們的自動化測試,一定要接入到CICD流水線。

現在很多公司的CICD流程都是圍繞Jenkins來開發的,對於測試工程師,要了解Jenkins的工作原理和集羣特點,熟練掌握Jenkins的Pipeline語法,定製測試流程。

測試工程師還要維護運行測試的Jenkins Slave集羣,目前大部分公司的Jenkins slave採用的是虛擬機方式,不過隨着容器雲技術的普及,也有部分公司採用Kubernetes集羣作爲Jenkins slave。對於虛擬機方式,測試工程師需要編寫腳本,快速初始化Jenkins slave並加入到Jenkins集羣,對於Kubernetes方式,測試工程師需要編寫滿足特定測試需求的kubernetes的Pod的Yaml文件。

2.6 WEB測試

Web測試是對基於瀏覽器的BS架構的服務進行測試,通過操作瀏覽器來檢查服務是否滿足需求定義。要想做好Web測試,需要掌握的知識非常多,要了解HTML\CSS以及JavaScript的知識,還要了解瀏覽器的工作原理,能夠使用瀏覽器的開發者工具診斷問題、分析性能。

Web頁面不穩定、或者在開發初期的項目,通常採用手工測試方法。對於迴歸測試、UI長期穩定的頁面配合部分自動化測試。

如果要做自動化測試,還需要掌握Selenium的使用,能夠對瀏覽器元素進行定位和操作,能夠使用Page Object模型封裝頁面元素,提高測試的可維護性,能夠通過Selenium Grid進行多瀏覽器的並行測試。

將web瀏覽器自動化測試腳本與單元測試框架融合,並與持續集成流水線集成到一起,才能發揮Web自動化測試的真正威力和價值。

2.7 APP測試

APP測試是目前測試工作中最常見的一個領域,公司可能沒有服務端測試、沒有性能測試,但是一定會有APP測試,APP作爲直接接觸用戶的產品,軟件質量保證工作尤其重要。

APP測試比較常見的包括Android APP測試、iOS APP測試、H5測試、Hybrid APP測試以及小程序測試等。通常的測試策略是,大部分的手動測試配合部分場景的自動測試。

APP的自動化測試方案與Web自動化測試方案基本相同,不過使用的自動化工具是Appium,Appium可以支持Android和iOS客戶端的測試。通過Page Object思想,將APP頁面上的控件進行封裝,可以提高測試的可維護性。藉助Selenium Grid可以進行多機並行測試。

爲了提高測試設備的利用效率,可以搭建STF平臺,集中統一管理所有的測試設備,所有的測試人員可以通過瀏覽器來共享這些設備。並且這個平臺還可以與自動化測試結合,將其作爲一個私有云測平臺,進一步提高測試效率和測試覆蓋率。

對於APP測試的專項測試也是APP測試的重要工作,專項測試包括性能測試、穩定性測試等。目前也有很多測試工具支持這些專項測試,當然也可以根據需要自己開發測試工具。

2.8 性能測試

通常說的性能測試,基本都是指的服務端的性能測試,伴隨着用戶的增多,服務端的性能和穩定性至關重要,對其進行性能測試是必要的。

性能測試通常是藉助一定的手段,模擬大量用戶的併發請求,觀察服務端的響應時間和QPS等數據,以判斷服務端性能瓶頸,並對其進行優化或者擴容。通常用來模擬大量用戶併發請求的工具包括Jmeter、Locust等。

在進行性能測試時候,通常需要大量的客戶端機器組成集羣一起向服務器端發起請求。因此性能測試集羣的搭建,在性能測試工作中非常重要。在早期我們通常是申請高配置的虛擬機來組成性能測試集羣,不過這種方式有諸多弊端,一個是代價昂貴,而是初始化比較麻煩。所以,伴隨着容器雲的發展,現在越來越多采用在Kubernetes集羣中構建性能測試集羣。

性能測試往往需要準備大量的測試數據,所以往往需要編寫腳本和工具來自動化生成測試數據。對於測試人員的代碼編寫能力要求很高。

性能測試結果收集,是性能測試的關鍵一環。我們需要得到性能測試結果並對其進行分析。目前常用的收集方式是通過監控系統,比如falcon、Promethus等,對服務進行業務監控、資源監控,監控系統會繪製各種指標非常直觀的圖表,非常便於我們分析。

對於性能測試結果的分析,真的是一個高深的技能。在這個環節會用上計算機基礎(內功)部分各個學科的知識,需要從代碼層面、數據庫層面、網絡層面、操作系統層面找出性能瓶頸的根本原因。這一點非常難,需要多年的實踐經驗。

2.9 測試平臺開發

測試平臺的目的是更好地輔助測試工作,通常我們會爲測試工作開發一些測試數據生產平臺,Mock平臺、測試執行管理平臺、測試報告管理平臺。

測試數據生產平臺,作爲測試數據準備的統一平臺,集成了各種測試數據準備方法,對外提供Restful API,所有測試數據使用方,可以通過唯一的平臺和API產生自己所需要的數據。

Mock平臺,方便對依賴服務進行Mock,以便解耦依賴服務,專注於本模塊、本服務的測試,提高測試穩定性。

如果需要,可以將所有測試執行集成到一個測試執行管理平臺上,這個平臺對接Jenkins,在平臺上方便進行測試Job的創建和配置,簡化測試執行流程。

測試報告平臺作爲測試報告的存儲、分析和展示平臺,可以查詢歷史上所有測試的測試結果。對被測試服務的歷史版本質量進行分析。

總之,測試開發工作在軟件測試工作中,將會佔據越來越多的比例,測試工程師要掌握一定的開發技能,比如藉助常見的開發框架Django或者SpringBoot,配合前端框架Vue.js,進行測試平臺開發是性價比比較高的方案。

3. 綜合素質

前面介紹了計算機基礎( 內功)和專項測試(招式),爲了更好地做好測試工作和更好的職業發展,一些基本的素質也是非常重要的。

首先,我覺得測試工程師要保持學習熱情,鍛鍊學習方法,提高學習能力,能夠在需要的時候快速學習新的技術。

測試工程師作爲研發團隊的一份子,具備良好的溝通表達能力,做好與產品經理、開發人員之間的溝通,及時預警潛在風險,展示項目質量,推動和協調團隊解決問題。

非常建議大家及時總結所學知識,養成寫博客的良好習慣,大家都說輸出是最好的輸入,在寫博客進行輸出的過程中,其實是對自己的知識進行加固的過程。

4.總結

總之,軟件測試工作是一項非常綜合工作,對於測試工程師要求的技術面特別廣,既要懂得操作系統、計算機網絡、數據庫、編程和算法等基礎知識這些內功,又要掌握多種測試領域的測試套路,還要具有一定的開發能力。既要懂軟件測試,還要了解DevOps。
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章