什麼是軟體測試?
當我十多年前開始在 JMP 工作時,如果你問我什麼是軟體測試,我會去我最喜歡的網路搜尋(或現在是 AI LLM 助理)並返回類似以下內容:軟體測試是評估軟體應用程序或產品以確保其按預期工作並滿足使用者要求的過程。
然而,透過與我的同事 Joseph Morgan 的多次討論,我採用了 Glenford Myers [1] 簡潔表述的軟體工程定義:
“測試是為了發現錯誤而執行程式的過程。”
這個定義有那麼不同嗎?我認為是的。而邁爾斯等人。 [1] 對此有一個很好的討論,對於大多數人來說,要求某人檢查某些東西是否有效與試圖破壞它之間存在心理差異。透過採用邁爾斯的定義,測試工程師就有了他們的目標——發現錯誤。這不僅提供了結構,而且透過儘早、深思熟慮地發現並修復這些錯誤(或我們可能認為的錯誤),結果是軟體能夠按預期工作並滿足用戶要求。
錯誤在哪裡?
如果您仍然支持我,並且對測試的定義感到滿意,那麼自然的下一個問題是從哪裡開始嘗試破壞軟體。為此,我們可以求助於 Boris Beizer [2]:
“蟲子潛伏在角落裡,並聚集在邊界處。”
讓我們將其分為兩部分,我們將輸入視為某種數據或訊息,您將其提供給軟體以獲得反應或利用該資訊執行某些操作。
錯誤聚集在邊界:這強調了錯誤通常出現在系統設計處理的邊緣。例如,如果一個函數應該接受 0 和 1 之間的輸入,我們應該測試邊界(0 和 1)以及邊界之外。
錯誤潛伏在角落:這表示錯誤通常隱藏在涉及多個輸入的系統部分中。也就是說,就像我們思考互動一樣,除非我們測試這些組合,否則我們不會發現錯誤。
我們該去哪裡?
在接下來的幾周里,您將聽到我和我的同事談論與驗證(我們是否正在建立正確的產品?)和測試(尋找錯誤,確保軟體工作)相關的不同主題。對我來說特別有趣的是,測試和實驗設計之間存在著深刻的聯繫(我喜歡談論的另一個主題)。
無論您是正在建立自己的應用程序,面臨自己的測試挑戰,還是只是對這個主題感興趣,我希望您繼續閱讀。您想看到涵蓋的任何主題嗎?請在評論中告訴我們!
而且,如果沒有圖片,部落格似乎就不完整,第一個「電腦錯誤」的圖片,就像 1947 年哈佛大學團隊成員的圖片,其中包括格蕾絲·霍珀 (Grace Hopper)。

由弗吉尼亞州達爾格倫海軍水面作戰中心提供,1988 年。
參考。
- G. Myers、C. Sandler 和 T. Badgett, 《軟體測試的藝術》,第三版。 ,新澤西州,約翰威利父子公司,2011 年。
- B. Beizer,軟體測試技術,Van Nostrand Reinhold 電氣/電腦科學與工程系列,1983 年
嗨@Ryan_Lekivetz !
感謝您的精彩介紹,迫不及待地想了解有關使用覆蓋數組或其他故障定位方法來測試軟體的更多資訊。