軟件測試
內容
- 黑盒測試和白盒測試的定義
- 等價類的定義
- 測試整個系統
- 測試注冊和登錄功能
- 驗收測試的優點
- 利用單元測試來測試應用程序的一部分
- 測試示列MVC控制器
2.1 黑盒和白盒測試
在不知道實現細節的前提下的測試稱為黑盒測試,基于應用程序源碼的測試稱為白盒測試。
- 保證程序對給定的輸入字符串生成正確的輸出字符串
- 為了減少測試字符串的數量,必須建立等價類。
- 注意邊界及非法的輸入值。增加整數值時會發送什么,增加非數值的值時發送什么!
- 首先測試基本路徑,然后測試邊界,最大輸入值加1,最小輸入值減1。這些工作都已經執行過了,就可以測試無厘頭的輸入。如NULL值或非法數據類型
- web應用程序都使用cookie和服務器的會話管理來規避HTTP的無狀態性。沒有狀態,除非證書(Credential)通過每一個HTTP請求被轉發,否則一個應用程序不能區分匿名用戶和注冊用戶。
2.2系統測試
2.3自動測試
瀏覽器測試自動化的最初方法是所謂的“捕獲和重放”(capture and replay)工具。該工具不能捕獲實際屏幕位置,而只能在JavaScript或者DOM級別上捕獲瀏覽器事件。
Selenium測試使用DOM樹上的斷言來確保當前的HTML網頁滿足一定的指標。因為測試直接在瀏覽器里執行,即在瀏覽器中直接測試javaScript代碼,這樣Ajax應用程序也能接收Selenium測試,不同的斷言允許檢查任意HTML元素的存在或內容。HTML、ID、CSS選擇器、JavaScript代碼或者XPath語句可以訪問元素(或DOM節點)。
不能對一個正在正常運行的系統進行測試, 當用戶的數據被莫名其妙地修改時,他們對此或許并不覺得好玩,在一些情況下,創建測試系統比預期難,比如生產系統相當復雜或者相當強大以導致測試系統非常昂貴。
2.2.3 孤立測試
實際中,每一個測試需要一個數據庫及相應的測試數據,這是測試工作流程的必由之路:注冊->確認->真正登錄。每一步驟必須與前面的測試相對獨立。
除了管理和維護所有這些測試工具裝置需要付出的努力之外,每一次測試都必須建立測試環境,這通常意味著我們要填充測試數據庫。依靠應用程序,為了運行測試,在文件系統或預填充高速緩存中用某些數據創建文件是必要的。
2.2.4 驗收測試
驗收測試:至少關于功能部分的驗收測試,可以通過如Selenium的工具實現自動化。即使開發軟件是為了自己使用,這會迫使您的終端用戶的角度考慮軟件的功能性而不必擔心實現問題。
優點:指出軟件不能實現那些規格要求。
TDD(Test-Driven-Development) 測試驅動的開發模式
2.2.4 單元測試
通常只測試單獨一個類,但測試包括聚合對象甚至是應用程序的整個架構層。單元測試通常是白盒測試。編寫基于帶測試代碼。
2.2.5依賴性
- 常亮
- 全局變量
- 超全局變量
- 函數(用戶定義或內置)
- 類(用戶定義或內置)
- 靜態方法
- 靜態屬性
- 對象
只有滿足代碼的所有依賴性時才能測試代碼。隱式依賴有問題的。更傾向于以構造函數和有類型提示的方法參數的形式使依賴性明晰。這種技巧稱為依賴注入。
使用顯示依賴不僅使代碼更容易測試,而且有助于本著單一、明確定義的職責編寫對象。以為API的方法簽名清楚地說明了一個類所具有的依賴性,使用和重用代碼更簡單。使用接口可增加代碼的松散耦合性。
理論不看了 直接看實踐了?。。。。?!