天天看點

做軟體測試到底要不要學程式設計?

做軟體測試到底要不要學程式設計?

喬布斯曾經說過「每個人都應該學習程式設計,因為它會教你如何思考」,看,喬幫主都覺得所有人都應該學程式設計,那你說做測試的要不要學?當然要。

作為測試人員,除了上面這個原因,我覺得如果會程式設計,還有下面 3 個好處。

1、知道技術實作,可以設計更有針對性的用例

比如我在《需求評審之實戰演練》中提到的關于電腦的測試,有些人會寫一條用例是「測試一個超大的數」。

但是問到多大數算大?100000 算不算?很多人回答不上來。

也就是說,很多人知道需要測試邊界值的情況,但是沒人知道這個邊界值到底是多少。

當然也不是所有人都不知道。

比如有人說,是 int 類型的最大值,得,能說出來這個就已經很靠譜了,試想下,如果你不會程式設計,你能知道什麼是 int 類型?你能知道用 int 的最大值去做針對性測試?

2、更容易和開發進行邏輯層的溝通,更好的拓展測試思路

比如一個同學發現一個 bug:

如果在 windows 的系統盤根目錄丢一個 program.exe 的檔案,某些程式在執行程序建立時,就會出錯,把 program.exe 執行起來了。

于是這個同學就去找開發溝通。

第一個同學的溝通過程是這樣的:

測試:「xgg,這個問題是什麼原因導緻的?」

開發:「目标程序路徑帶有空格,我代碼中沒有加引号,是以就出問題了。」

測試:「噢,好滴。」

另一個同學覺得還是有疑問,于是再次找到開發。

測試:「xgg,具體是哪個實作的問題?是我們内部的函數實作?還是調用的系統 API 有問題?」

開發:「我用的 CreateProcess API,他的第二個參數如果帶有空格,又沒有加引号,就會出這個問題。」

測試:「CreateProcess API 使用的地方很多,能否搜一下看看每個地方本次都做了修改?」

開發:「好,馬上看。」

測試:「同樣功能的 CreateProcessAsUser、CreateProcessWithLogon、CreateProcessWithToken 應該有類似的問題,可以一起搜一下看看都處理了沒有。」

開發:「好,立刻看。」

如果你是開發,你喜歡和哪一位測試配合?

如果你是測試,你希望自己前面那位同學還是後面這位?

3、更好的自動化思維,把提效落實到實處

現在很多功能,都會在邏輯中加一些日志,如果是調試版檔案,日志輸出就更多了,對于用戶端産品來說,很多日志輸出在 dbgview 裡,我們可以通過一些過濾條件進行過濾,甚至設定高亮,但如果是輸出的純本地的文本日志,那麼每次檢視日志就必須要 Ctrl+F 然後輸入關鍵字逐個去确認了。

我們看看手工操作的步驟:

第一步:找到日志檔案并打開;

第二步:Ctrl+F 調起搜尋框并輸入關鍵字;

第三步:回車-檢查-回車-檢查,如此反複;

這時候如果有一個同學,會一些簡單的腳本技術,可能會考慮對這個過程做一個優化,比如提供一個工具,隻需要在工具中輸入關鍵字,工具就會自動找到日志檔案,并把所有關鍵字相關的記錄都提取出來,會不會爽很多?

我們看看使用這個工具的操作步驟:

第一步:打開工具并輸入關鍵字(工具自己查找日志路徑,并且在每次操作時都保證擷取的是最新的日志);

第二步:檢查結果(結果中全都是相關性内容);

看起來隻是節省了一步吧,但是工具這兩步操作中,都隐含了大量的重複操作的優化。

比如第一步「打開工具并輸入關鍵字」,其實工具是自己查找日志路徑,并且在每次操作時都保證擷取最新的日志,這樣就避免了手工操作時每次都要重新打開日志的麻煩。

比如第二步「檢查結果」,之前是在所有日志裡面去一個個檢查搜尋結果,現在工具出的結果是隻顯示和關鍵字相關的上下文資訊,可以極大地減少其他資訊幹擾,更快更準地找到自己需要的資訊。

如果你不會程式設計,你會考慮用這個簡單的工具去提效?

就算你考慮到能用工具提效,你能快速準确的把自己的需求提出來并找到人幫忙實作?

就算實作了,碰到一些小的體驗問題你能總是不斷找人幫忙優化?

最後再總結下我的結論。

做測試要不要學程式設計?我的答案是,要,會程式設計的測試可以往業務線的測試開發方向努力。

我不會程式設計能不能做測試?我的答案是,能,不會程式設計的測試可以繼續在業務專家方向深耕。

以上,你會程式設計不?目前什麼水準?自己團隊小夥伴的程式設計技術都什麼水準?你認為做測試到底要不要學程式設計呢?歡迎留言告訴我你的觀點。