什麼是模組測試?(定義、示例)
一個軟體應用程式包含各種模組的整合。模組是用特定語言編寫的程式,由子程式、子例程、函式、類和過程組成。模組測試是一個過程,您需要測試這些模組的每個單元以確保它們符合最佳編碼標準。除非模組透過測試階段,否則它不能進行應用程式測試過程。
模組測試,又稱元件測試,有助於儘早發現應用程式測試中的錯誤。這在測試的後期階段可以為測試人員帶來極大的便利。模組測試是並行測試的途徑,允許測試人員同時測試多個模組。
為什麼模組測試是軟體測試的重要組成部分?
測試人員出於以下原因更喜歡模組測試:
減少時間消耗 - 將應用程式分成較小的部分(例如子程式或小型程式碼單元)更好。開發人員可以建立單元測試用例並將它們分配給不同的測試人員,而不是處理所有事情。
支援並行測試 - 它允許獨立地測試來自單個應用程式的多個模組。由於模組體積較小,測試人員可以更加關注它們,從而產生更好的最終產品。
降低複雜性 - 一次性測試整個應用程式可能是一項複雜而繁瑣的事情。在模組測試中,您可以將大型應用程式分解成較小的部分或單元級別,從而降低整體測試應用程式的複雜性。
模組測試最佳實踐
一些成功的測試過程的關鍵模組測試技巧:
在進行模組測試之前,首先要設計測試。為了準備測試用例,您必須考慮兩個重要因素:模組規範和被測原始碼。
必須分析被測模組的程式碼邏輯。您可以使用多種白盒方法來做到這一點。您可以透過應用黑盒技術進一步擴充套件這些測試用例。
設計測試用例後,下一步是關聯要測試的模組。您可以使用增量或非增量方法來實現。
假設您選擇自頂向下或自底向上方法的增量方法。在自頂向下方法中,您需要測試更高級別的模組,並逐漸轉向較低級別的模組。同時,自底向上方法與自頂向下的模組測試正好相反。
對於增量方法,您必須分別測試所有模組,然後才能將它們整合到完整的程式中。
您需要準備測試資料並透過驅動程式將其提供給模組以執行測試。下一步是監控測試並存儲結果。
模組測試策略
模組或元件測試是透過將過程分成兩部分來進行的:小型元件測試 (CTIS) 和大型元件測試 (CTIL)。
小型元件測試是在完全隔離的情況下執行的過程,而無需將一個元件與其他元件整合。
同時,大型元件測試是在不將元件彼此隔離的情況下執行的測試過程。通常,當一個元件依賴於另一個元件時,隔離它們可能會導致功能問題。
在沒有依賴元件的情況下,您可以使用虛擬物件作為替代。這些虛擬物件稱為存根(被呼叫函式)和驅動程式(呼叫函式)。
整合測試與模組測試
整合測試 - 在整合測試中,測試人員按順序組合兩個元件並一起測試系統。其目的是檢查不同單元的組合以及它們如何相互互動。它還涉及評估子系統如何整合到單個系統中的過程。
假設您正在檢查電子商務應用程式的登入和註冊功能。您可以將登入和註冊都視為單獨的單元。
現在假設您將一些商品新增到購物車並轉到結賬。但是,在結賬之前,您必須登入應用程式或如果您是新使用者則註冊。現在,您可能會在登入後丟失購物車中的所有商品。因此,整合測試的工作是檢查上述這兩個功能之間的整合。
模組測試 - 在模組測試中,測試單個元件,然後將其與其他元件整合。基於之前的示例,在模組測試中,您可以獨立測試註冊、登入、將商品新增到購物車等,並將它們整合到完整的應用程式中。
簡而言之,我們可以說整合測試是模組測試的下一步。
什麼是存根和驅動程式?
驅動程式是在沒有呼叫函式的情況下用於呼叫最低模組函式的虛擬程式。
存根是接受來自頂級模組的輸入或請求併成功響應它們的程式碼或程式碼片段。
用示例簡化模組測試
讓我們考慮一個組織正在開發一個大型 Web 應用程式。作為敏捷測試人員,您必須加快測試過程以更快地投放市場。因此,您不能等待應用程式開發數月才能最終釋出。因此,您需要在登入頁面開發後立即對其進行測試。您必須執行所有測試用例,以確保登入頁面的所有功能都能按預期工作。
您可以將測試過程分成不同的部分:
測試使用者介面是否存在拼寫錯誤、對齊、格式、徽標等。
使用負面測試技術,例如身份驗證和授權。這是在早期發現缺陷的理想步驟。
使用 SQL 注入等技術測試頁面的安全功能。
一旦您記錄了所有缺陷,您可以將其傳遞給開發團隊,以便對後續頁面進行必要的更改。
現在,如前所述,您只有登入頁面需要測試,因為其他頁面尚未開發。例如,如果您輸入登入憑據並按 Enter 鍵會發生什麼情況。您沒有驗證登入頁面功能的必要元件。
如果您只有一個頁面在您輸入正確的憑據時顯示“登入成功”,而在輸入錯誤的憑據時顯示“使用者名稱/密碼錯誤”,則可以解決此問題。存根用於解決此問題。
結論
模組測試仍然是測試周期中的重要組成部分,並且是整合測試的前身。因為它支援並行測試,所以它有助於加快整個測試過程,這在這個敏捷時代非常重要。此外,它還有助於儘早發現錯誤,讓您能夠提前糾正錯誤,並最大限度地減少測試團隊的整體測試工作。
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP