質量保證不足是破壞軟件公司聲譽的最快、最可靠的方法之一。隱藏在應用程序源代碼中的微小錯誤可能會導致巨大的經濟損失。如果錯誤足夠嚴重,公司可能永遠無法恢復。備受矚目的軟件被入侵并導致大公司損失數百萬美元的案例一直成為頭條新聞。由于 POS 系統故障,星巴克一度不得不暫時關閉一半以上的北美門店。由于安全氣囊傳感器故障被證明是軟件故障,日產曾經不得不召回超過 100 萬輛汽車。
對于一個價值數十億美元的全球組織而言,從重大軟件問題中恢復過來確實具有挑戰性。對于一家較小的公司來說,這可能只是一個難以應對的挑戰。這就是為什么任何發布軟件的組織都需要非常熟悉軟件測試的原因。測試識別應用程序代碼中的錯誤、差距和缺失的需求。這使軟件開發團隊能夠在發布之前修復錯誤。測試軟件的兩種主要方法是白盒測試和黑盒測試。這些測試方法各有優缺點。每一個都旨在解決特定問題,并提供對軟件問題原因的質量保證洞察。
白盒測試
白盒測試也稱為結構測試。一些開發人員將其稱為透明盒測試或玻璃盒測試。白盒測試技術側重于系統地檢查應用程序的源代碼。開發人員可以自動化白盒測試,以便在開發過程推進之前有效地解決錯誤的代碼行。
白盒測試的主要目的是驗證應用程序代碼的質量。由于系統的內部結構是已知的,因此開發人員可以查明錯誤的來源。例如,在正確配置的白盒測試中,相對容易找到定義不明確的變量或不準確的調用函數。
白盒測試人員需要是一名軟件工程師,他徹底了解被測試應用程序的預期結果。即使擁有一流的自動化工具,它仍然可能是一個詳盡且耗時的體驗。如果應用程序的代碼庫快速更改,自動化測試可能無法工作。
白盒測試技術的一個例子包括:
- 語句覆蓋率:這種測試技術驗證每行代碼是否至少執行一次。
- 分支覆蓋率:這種測試技術驗證每個分支是否至少執行一次。
- 路徑覆蓋:此測試技術檢查程序描述的所有路徑。
白盒測試的缺點之一是它暴露了代碼。外包測試的開發人員冒著代碼被盜的風險。開發人員應該只信任具有長期白盒測試記錄的知名專家。
黑盒測試
黑盒測試也稱為功能測試或數據驅動測試。這種方法的目的是檢查程序功能。進行黑盒測試不需要編程知識。軟件酯是導航應用程序界面的人類用戶。應用程序通過或失敗的測試取決于其可用性,而不是其代碼的質量。
由于黑盒測試人員不知道該程序是如何工作的,他們的擔憂反映了普通用戶的擔憂。這種測試方法基于反復試驗。程序員可能無法預測黑盒測試人員可能選擇的特定路徑,這將導致錯誤。然后,程序員將需要檢查代碼以找出失敗的原因。黑盒測試非常適合具有明確功能的大型代碼段。它非常適合外包測試,因為它允許低技能測試人員完成有價值的工作。由于代碼沒有暴露,因此不存在知識產權被盜的風險。
有多種黑盒測試方法,其中大多數專注于測試輸入:
- 等價分區將大量潛在輸入減少到小的、有代表性的測試用例。它非常適合創建測試用例。
- 邊界值分析尋找產生錯誤的極端輸入值。測試人員尋找輸入值的邊界并報告它們。
- 因果圖使用圖表來識別產生錯誤的輸入值。它是多變量輸入類型的理想選擇。
何時使用白盒測試與黑盒測試
白盒測試不需要完整的用戶界面。當程序員希望測試早期應用程序構建時,這使得它更可取。它提供了一種快速、徹底的方法來測試程序中的每條路徑。這確保了代碼是好的——但不能保證它做用戶希望它做的事情。白盒測試不會將程序和測試環境分開。有時更新會破壞源代碼。這可能是對開發人員時間的額外壓力。
這使得白盒測試在開發過程中成為一個不錯的選擇。當需要驗證程序的一小部分時,白盒測試使其成為一項簡單的內部任務。隨著發布日期的臨近,白盒測試讓位于黑盒測試。黑盒測試最適合已完成的程序。在發布前測試程序的大型團隊可以在最后一刻發現用戶體驗問題。測試用例很容易制作,程序員可以快速響應它們。
仔細組織黑盒測試場景很重要。測試結果可能難以重現。測試可能會變得多余。即使在最好的情況下,測試也很少涵蓋所有的軟件路徑。由于黑盒測試人員不需要非常熟練,程序員可以在發布日期臨近時擴大測試規模。這為軟件公司提供了在發布強大的最終產品的同時增強最終用戶體驗的最佳機會。
最終,每種類型的測試都最適合特定情況。測試工程師經常結合使用白盒和黑盒測試來解決不同的錯誤。而且,測試可能發生在開發周期的不同階段。無論您選擇運行什么版本或組合,正確的測試過程對于軟件質量保證都是至關重要的。所有這些測試現在可能感覺很多,但從長遠來看,它將為您節省時間和金錢。有一天,它可能會保護您的公司免受令人尷尬的公共事件的影響。