首頁 > 軟體

軟體測試人員為什麼必須掌握Linux

2020-06-16 17:11:51

寫在前面

在我看來,人人都應該學習Linux,但這不是本文探討的重點。
本文主要從軟體測試人員的角度談談學習和掌握Linux的重要性、必要性、緊迫性。

另外:

  • 這裡所說的Linux系統,是unix系統和類unix系統的統稱;
  • 這裡提到的Linux操作,指的是它的命令列操作;

為什麼必須掌握

如果你是一名軟體測試人員,尤其,是一名尚未掌握Linux的測試人員,以下內容,請一定要隻字不落地閱讀,認真地思考,如果認可,請踐行起來。

在此之前,先來討論一個看似無關的話題。

什麼是能力?

一般來說,能力是完成一專案標或者任務所體現出來的素質。解釋中暗含了“能力是一個絕對值(正數)”的意思,是比較學術的解釋。
而從職業的場景、實戰的角度看,能力應當是相對的概念:
在某些方面,當你具備一些素質,而其他人並不具備時,說明你有著相應的能力。
即,
能力是參照於其他人高出的那部分素質,而這參照範圍可以大到所有人、一個行業的從業人員,也可以小到一個公司的員工,甚至是幾個人。

舉例來說,無論是招聘網站的職位上,還是你自己的簡歷上,幾乎不會出現“能熟練使用windows作業系統、熟練使用Android系統、熟練使用IOS系統”等這樣的要求和能力說明。因為,在測試人員裡,這些能力是底限,是基礎中的基礎,本就應該是測試人員都具備的,甚至都快成了網友大眾的基本功。換句話說,具備了這些能力,在測試行業裡沒有任何優勢。但,Linux則不同,它常常出現在測試職位的技能要求裡;求職者也常常會把自己熟悉Linux這一事實顯式地直白地體現在簡歷裡,哪怕是不算太熟悉,也會表明自己有所了解。這意味著,熟練使用Linux作業系統,甚至是簡單地會用,在測試人員群體中,還算是稀缺的,是綜合能力的一種體現。

通過這個現象可以得出一個結論,學習任何知識和技能時,不要害怕門檻高,學習成本高,因為門檻高,也是切切實實的好事兒。倘若門檻低,別人也能輕易獲取和學習,那你就沒有什麼優勢了。門檻高了(其實大部分情況下只是看起來門檻高),意味著許多人都會被排除在門檻外,那你就獲得了足夠的優勢。總結一句話,在培養一種技能和能力時,盡量選擇有門檻的、稀缺的、有技術壁壘的。

思考與討論

  1. 想想在你的學習和成長生涯中,有哪些知識和技術是讓你望而卻步,不敢涉足的?
  2. 現在想想,這些技術別人是不是也有同樣的感覺?
  3. 那些你樂意學習的、可輕鬆掌握的,是否長遠看有足夠的優勢?
  4. 比你更優秀的人,比你多掌握了哪些有門檻的技術或能力呢?

如果你有這方面的經歷和想法,歡迎暢言。

掌握Linux的好處

linux系統在IT行業的地位和重要性世人皆知,關於Unix和Linux的種種,也請自行搜尋。除此之外,對測試人員來說,Linux還有其它非凡的意義。

技能棧足夠寬

對於軟體測試人員來說,測試的任何產品都基於作業系統,如常見的Windows、Android、Ios、Linux系統等。熟練使用作業系統本身就是測試人員的基本功。而隨著對作業系統核心的深入理解和掌握,對提高測試能力大有幫助,也有利於測試得更加深入。

Linux系統是與windows系統截然不同的作業系統,它們的設計理念、核心原理有著巨大的差異。一種核心原理對應著它獨有的一片天地,掌握一種作業系統,就掌握了該作業系統下的那片天地:處理器管理、記憶體管理、檔案管理、裝置管理、安全性、核心結構、系統特性等。掌握這些內容,不僅增長學識,也是你測試能力向深層次提高的關鍵一步。

unix和Linux的家族足夠龐大,就連行動端作業系統IOS和Android,也分別是基於Unix和Linux而衍生出來的作品。掌握了Linux,也就自然而然地熟知Android、Ios、Mac OS X等系統。熟悉了Linux系統的命令列操作,對Android的shell,adb shell命令、Mac OS X的shell的熟悉自然不在話下。Linux還是最佳的也是應用最多的伺服器端作業系統。

所以,掌握了它,相當於get了一堆技能。

操作和思維習慣

不可否認,windows的操作對測試人員影響至深,尤其是對功能測試人員。從我們一開始接觸電腦開始,windows的圖形化操作就深深地影響了我們。幾年下來,我們對所有的圖形化介面操作似乎有了一種天生的能力,可以不加思索地使用它們。所以,當你第一次接觸蘋果的Mac OS X系統或Linux系統的圖形化介面時,也可以很輕鬆地使用起來。因為我們已然具備了對圖形化介面操作的經驗和思維習慣,所以新掌握一門圖形化作業系統沒有難度,同樣也沒有優勢。

習慣甚至安逸於圖形化的操作,長遠看,對於測試人員自身素質的培養是有阻力的

Linux的命令列操作會改變你的操作習慣和思維習慣。它使你的雙手能夠更加密切地配合和共同作業,更好更快地完成各項工作。

圖形化介面雖然好看易用,但解決問題還得靠命令列。

速度快

熟練使用Linux,你會體會到什麼是快,以及怎樣更快。測試人員作為技術人員,應該有技術極客精神,Linux在這點上支援得足夠好。

Linux的速度快,我想至少有這幾個方面的因素:

  1. 作業系統本身的效能穩定且強悍;
  2. 命令列操作起來流暢且快速;
  3. 用命令來編碼,實現復用,一次執行多次使用;

圖形化作業系統在降低了學習成本和認知門檻,提高了可讀性和可操作性的同時,也降低了作業系統的效能和操控的速度。不必對比Linux和windows,在windows上就有很好的例證:
你有沒有嘗試過,當在windows上想把多個超過1G的檔案拷貝到U盤上時,使用cmd命令拷貝會比圖形化操作要快得多的多,而且拷貝期間基本不影響你同時做別的事情。

Linux的命令列操作,可以高效精準地完成各項工作。同時,它也使得經常使用Linux的人輸入速度和準確率更高,眼疾手快。

在實際工作中,需要用Linux完成的工作,雖然可以“曲線救國”在windows下完成,但卻會花費較多的時間。比如,不熟悉Linux時,經常會把檔案從Linux系統中拷貝到windows系統中處理,減慢了速度不說,還經常因為系統換行符的差異傷腦筋,錯誤百出。在“不會使用Linux”的困難面前,能夠想到用windows來解決問題,是值得鼓勵的,這符合“沒有辦法創造辦法也要上”的精神。但反復這麼做,卻從來不突破瓶頸,就有問題了。

Linux在速度快這方面的優勢就不一一列舉了。這裡也並非是詆毀windows,只為體現Linux的優勢而已。

程式設計捷徑

熟悉了Linux的命令列操作,你將會對所有的命令列操作有著天然的喜歡和自通,哪怕是windows的dos命令。

Linux的幾乎每個命令(工具)都很好用,有些甚至很強大,如awk、sed、vim、sar等等,就拿awk來說,它在許多場合下被稱作是程式語言——處理文字資料的程式語言

尤其是功能測試人員,掌握了Linux命令,可謂是以最便捷、最低成本的方式開啟了程式設計的大門,因為會使用Linux命令離會shell程式設計僅半步之遙。

知行合一

Linux有很多哲學和文化,在Linux之外的世界裡同樣適用。比如,Linux系統的設計理念是,讓每一個命令做好一件事(實現一個功能),用管道線將這些命令組合起來,去實現更多的功能。——這也稱得上是人生哲學了:
對個人而言,努力做好每一件事、仔細打磨每一樣技能,將它們的價值組合起來,價值則會更大;
對團隊而言,每個成員都有自己的分工,把自己專職的部分做好。再把團隊成員的能力組合起來,就能做更多更有價值的事情了。

這類的哲學還有許多,知中有行,行中有知,就不一一列舉了。

除以上之外,Linux還有著其它的輔助作用。

其它

Linux的命令列是基於文字的,因而在使用Linux的過程中你不得不保持時刻閱讀文字的狀態。久而久之,閱讀和理解的能力得以提升。再者,Linux的聯機手冊、命令的出錯資訊、系統資訊等都是英文的,這會極大地提高英語閱讀能力、擴大英語詞彙量等。

有不少測試人員看到程式的出錯資訊,就會一概認為是“出錯了、程式執行異常、程式不能執行”等,已經完全不具備閱讀資訊的能力。而能夠熟練使用Linux的人,則不會存在這種情況。

學習Linux是有成本的,同時也非常超值。專業人士應該有專業人士的技術壁壘。

不掌握有沒有壞處?

不進則退

Linux涉及的技能棧如此廣泛,好處這麼多,這在測試人員的要掌握的技能(技能棧)中是罕見的。所以,如果你沒有占領Linux這塊高地,這在與同行競爭時是非常吃虧的。

隨著你工作年限的增加,不能熟練使用Linux就越發變成你的軟肋,除非你在其它方面有切切實實的優勢和積累。

學習中的陷阱

在學習和成長的路上,有一個陷阱,看起來正確無比,很具有迷惑性,實際則不然,那就是“用到了再學”。在很長的一段時間裡,我掉在這個陷阱裡不能自拔。

近水樓台先得月,但首先得先是個樓台。用到了再學,也是一樣。在用到之前,首先得知道,然後才是邊用邊學地漸進式的成長。而從“不知道”到“知道”,是不連續的,往往需要先破冰

“為了儲備知識去學學不進去,我這個人適合用到了再學。”
“系統學習效率太低,用到了再學豈不是更快?”
“學這個幹什麼?現在又用不到!”
……

但,很多時候,由於對一門知識???技能的知之甚少,你根本就沒有機會用到它,甚至根本不曾聽說它。它在你的世界裡屬於“你不知道你不知道”的那部分。

舉個親身經歷的例子
當我學會了用vim對檔案內容進行批次替換,我興奮不已,我再也不用逐個編輯要修改的內容了,也不必將那些組態檔先下載到pc上用notepad++進行批次替換了。我將“用vim對組態檔的特定內容進行批次替換”這一系列的操作用得是爐火純青,以至於輸入命令的速度、使用vi的速度都得到了極大的提高,曾被戲稱為“無影手”。比起之前,vim已經極大地提高了我的效率。直到我又學習到了sed這個命令,才發現原來非互動式地修改檔案內容更為高效!!!現在我知道了sed這個命令,我自然可以將其認真學習一番,這並不難,但“windows上編輯文字→Linux下用vim”,“vim→sed”卻不得不需要破冰。

我想,我並不孤獨。你也一定有相似的經歷。Linux中這類的例子非常常見,有時候多掌握某個命令的一個引數就會讓你效率提升很多。

總結

在軟體測試領域裡,必須要學習和掌握的內容遠遠不止Linux一項,這也是我們後續會聊到的話題。但就普及程度、應用範圍、重要程度而言,Linux是名列前茅的。

許多人能夠意識到掌握Linux的重要性和必要性,但卻遲遲沒有開始(沒有意識到緊迫性)。這些人總是有著這樣或那樣的藉口。比如,現在還用不到、沒時間,沒環境,等等。讀了上述內容,你是否有些心動了呢?

本文永久更新連結地址http://www.linuxidc.com/Linux/2017-06/145165.htm


IT145.com E-mail:sddin#qq.com