軟件測試是軟件開發過程當中的基本活動。黑盒測試和白盒測試是兩種不一樣類型的軟件測試策略,它們具備一樣強大的功能,而且結合使用時甚至更好。java
在軟件中,黑盒測試很方便,能夠減小災難性(軟件)崩潰的風險。災難性的軟件崩潰多是什麼?系統在更新客戶數據庫的過程當中崩潰了?在這種狀況下,可能會丟失客戶數據。程序員
黑盒測試分爲三種類型:功能測試,非功能測試和迴歸測試。數據庫
經過功能性的黑盒測試,咱們能夠在不知道軟件如何執行的狀況下檢查該軟件是否按預期進行。編程
軟件是用模塊或組件構成的。它是由許多不一樣的組件組成的一系列組件,組成一個完整的系統。經過以這種方式,在小型組件中,咱們能夠測試每一個組件以確保其正常工做,而不只僅是測試大型系統。安全
所以,對於每一個小組件,都有輸入和預期輸出。要進行黑盒測試,您須要建立一個有效和無效輸入的列表,包括邊界條件等等。網絡
這是一個簡單的功能性黑匣子測試示例。假設有一個軟件模塊,該模塊輸入一個數字。框架
您的簡化測試輸入爲:函數
咱們還可使用黑盒測試來測試其餘預期的系統行爲。這些可能包括系統響應時間,預期的數據,大量網絡流量等場景。工具
非功能測試將包括諸如設置模擬測試環境之類的內容,以查看系統在壓力下的性能。有各類各樣的工具能夠幫助咱們實現這些測試目標並使所涉及的流程自動化。性能
這是當咱們在一個地方進行更改時,對整個系統進行黑盒測試(包括功能測試和非功能測試)時,請確保該更改不會意外影響系統的其餘部分。顯然,此過程須要自動化!
白盒測試是當測試軟件模塊的內部結構時:代碼自己。出於各類緣由,白盒測試是能夠採用的良好測試策略。
有時,代碼原本就是「不安全的」:是由於它引用並使用了來自外部源的不安全函數,偶然地致使數據泄漏或使用了錯誤的結構都會帶來安全隱患。
有無數種方法能夠完成某一項業務的軟件模塊的開發實現。儘管能夠正常工做,但這並不意味着它已經以最佳方式進行了配置。若是從性能角度來看代碼結構能夠更高效,那麼白盒測試能夠發現這一點。
在確認交易以前或以後,應將交易記錄在您的系統中嗎?也許以前和以後都須要記錄它?白盒測試容許您檢查路徑和數據流的內部工做方式,以查看它們是否最有意義和/或符合系統要求。
黑盒測試對於確保系統按預期運行相當重要。無需編碼知識就能夠執行這種測試,由於它不須要檢查代碼自己。在這種狀況下,瞭解軟件系統的工做原理和業務邏輯更爲重要。白盒測試更加困難,須要由經驗豐富的程序員使用高級工具進行。
兩種類型的測試都有一個大的工具集能夠幫助測試人員解決問題,請參考以前的文章。