QA 該具備什麼要的能力? (1)
每次在面試QA時, 很多人都不知道QA是什麼, 它需要什麼樣的能力. 所以每次我都要很多時間來一一解釋.
其實這也不能怪面試者, 軟體測試本來在台灣就不是顯學, 學校根本就不會教, 並且說不定連軟體工程的課都沒有開, 所以大家都不會.
其實這另一方面也顯示了台灣軟體界落後, 大多人只知道軟體開發裡, 只有寫程式和專案經理兩種角色, 事實上台灣業界大多也只有這兩種.
讓我們回歸正題, 首先, 對於QA所要具備的能力, 我第一要提當然是軟體測試.
很多人覺得測試很簡單, 人人可以做好軟體測試. 是這樣嗎? 撇開複雜的測試理論不說, 讓我們來看看一個簡單的範例, 看看是否測試向你說的這麼簡單.
有一個程式, 會讀入三個變數, 這三個變數是代表三角形的三個邊的長度. 然後這程式會決定這個三角形是正三角形, 等腰三角形, 普通的三角形, 或是不是三角形.
若是有人寫出這樣的程式, 你要準備哪些資料來確保這個程式能夠運作正確?
一開始有些面試者根本不懂甚麼是測試, 所以把受測程式的內容用C 或是其他語言寫出來給我
若是我看到這裡, 我就十分肯定他完全不懂測試.
接下來有些面試者, 他會回答: 寫個程式自動產生測試資料, 輸入所有input的組合, 去測試這個程式.
那我會知道這個面試者認為test automation是無所不能的, 可以cover任何測試.
我會問他, 若是這個input的type是integer(32bits長), 那2147483647 X 2147483647 X 2147483647會有多少組合, 要跑多久你的測試程式才會結束.
並且你沒有產生expected result, 那測試程式跑完後, 你還要一個個檢查actual result是否正確, 你覺得你這樣做可行嗎? ROI高嗎?
比較好一點的面試者, 便會回答我, 他會將input分成不同狀況, 每個狀況找些代表性的value來做測試. 因此他會列出
(3,3,3) 正三角形
(3,3,4) 等腰三角形
(4,5,6) 普通的三角形
(2,1,4) 不是三角形
我接著會問這樣就夠了嗎?
更厲害的會回答
(-1, -1, 4)
(0,4,3)
(0,0,0)
開始處理一些錯誤的狀況, 包括負數, 0, 等等
到這裡我會問他還有嗎? 是否這樣就可以了, 大部分的到此就停住了. 那我會問他以下狀況是否需要考慮
('a', 60, 62)
所以大部分的面者聽到這裡,就會知道軟體測試是遠遠比他所想的複雜. 因為這裡不但有複雜的測試理論, 還需要有創造力, 否則你不會想到有這些test data要加入.
此外, 除了上述的functional testing外, 還有performance testing, stressing, security testing等等, 這些都是有他的學問在的.
所以要當一個好的QA, 他必須要花時間去研讀軟體測試相關知識, 而不是很單純認為測試很簡單, 任何人都可以來做的, 不需要有測試的knowledge.
留言列表