很長時間,一直都在做自動化相關的事情,包括測試框架,測試平臺,以及持續集成等等。但是這些的基礎還是依靠優秀的自動化測試代碼,下面的內容就是自動化測試的相關知識點,相信大家可以從這些點中可以找到很多的共鳴,然后擴展,方便大家更好的深入學習。
01 一些測試理論
1. 測試分類的三維模型:
以時間趨勢為基線的分類,如系統測試,集成測試…
以測試方法為基線的分類,這種分類是面向質量體系的,如功能測試、性能測試、安全測試…
以測試目標為基線的分類,如白盒測試、黑盒測試、灰盒測試。
2. 白盒測試、黑盒測試以及灰盒測試的區別:
黑盒測試是驗證應用程序行為準確性的測試;
白盒測試是驗證應用程序結構準確性的測試;
灰盒測試介于黑盒測試和白盒測試之間;
黑盒測試和白盒測試,與是否需要寫代碼無關。
3. 自動化測試的特點、目標
特點:使用機器和程序的能力
目標:減少資源消耗;擴大測試范圍;充分發揮人和機器的能力;
4. 測試策略安排:
風險優先;
成本優先;
5. 代碼評審的內容:
檢查風格
檢查設計
發現代碼缺陷
6. 關于測試覆蓋率:
要被測試的代碼都需要被覆蓋到
02 UI自動化測試
1. UI自動化的應用:
一般用于測試回歸;
覆蓋越多的業務越好;
衡量成本和收益:人工回歸與自動化方式的投入和效率對比
2. UI自動化的缺陷:
非視覺,即無法模擬人眼睛能夠看到的內容,如長度超出、不適當的留白或換行。
3. UI自動化的方案:
3.1 基于Javascript的方案
優點:跨瀏覽器; 缺點:無法操作瀏覽器本身;
selenium core : 腳本必須與被測應用放在同一域名下;
selenium RC : 請求發送到seleniumServer,seleniumServer轉換請求客戶端的域名為被測應用的域名,被測應用響應后,seleniumServer再轉換被測應用的域名為請求客戶端的域名;
3.2 基于瀏覽器的方案
優點:對瀏覽器操作性好; 缺點: 瀏覽器兼容性差;
方案實現工具: webDriver 、watir 、pamIe
4. 工具簡介:
webDriver : 支持非標準組件; 容易捕獲模式窗口; 可以設置代理服務器;
selenium 2.0 : 集成了Javascript和webDriver兩種方式;
5. UI自動化測試的級別:
5.1 Dom級別
操作方式:parse頁面獲取dom屬性;
訪問dom對象的方法:根據xpath訪問;根據id屬性訪問;根據name屬性訪問;
IE6對xpath的訪問方式支持性極差;
dom級別的缺點:不能校驗用戶體驗細節,如重疊、超出范圍、不合適的留白等;
5.2 基于圖像的級別
限制條件:使用模板針對頁面布局的校驗;人工判斷圖像差異性;頁面上需要保持固定的數據;針對頁面上的固定區域;提供靈活的圖片解析算法;
基于mask的圖片比較:將不需要比較的圖片區域用黑色覆蓋;
判斷圖片是否存在于頁面的某個位置;
排除字體和顯示差異:允許圖片縮放、用ocr識別文本、設計和實現字體識別;
鏤空文字保留圖像以便比較布局;提取頁面文字以便校驗數據;
6. Diff技術:
6.1 Diff技術的應用
發現變化;
基于人工判斷該變化是否是預期的變化;
根據diff結果,決定變化的技術和方法;
6.2 Diff的工作原理
通過同時發送相同請求到不同版本的同一個應用,對比發現兩者之間的變化,確定測試范圍;
對比時屏蔽一些已知的、明顯的不同;
對比時屏蔽噪音(即無用的信息);
7. 支持多瀏覽器的手工測試:
在不同的瀏覽器中展示相同的頁面,發現不同;
在其它瀏覽器上重現操作;
基于實時交互的方案:多臺機器各安裝不同的瀏覽器,并安裝seleniumServer;另外一臺seleniumClient分別發送請求到各server;使用VNC等多屏幕方式觀察server運行結果;
8. UI自動化測試的執行測略:
不依賴IDE;
和持續集成、構建腳本一起工作;
運行失敗時截圖,直接查看失敗細節;
使用selenium集群,通過統一接口訪問多臺server.
專門的圖片比較服務器;
避免內外有別:測試結果盡量和用戶結果一致;測試可以從線上發起,在線上建立proxy server,根據規則決定訪問線上還是測試環境;
9. 經驗分享:
識別應用特點:用了哪些技術,哪些是易變的,哪些是穩定的,哪些可以使用自動化方法;
在設計時考慮測試,設計評審時的可測性考慮,良好的應用隔離,清晰的分層結構,易于控制,具備標識;
圖片比較方式經驗談,圖像比較測試、基于圖像diff發現改變,在發生異常時截屏,以圖像記錄結果。
03 單元測試
1.自動化測試的哲學:
事先測試(TDD)與事后測試
針對狀態的測試和針對行為的測試;
狀態測試: 校驗應用起始和結束的正確性;
行為測試: 校驗所依賴的對象行為是否正確;
2.單元測試基礎知識:
2.1 測試對象
類的公有方法;
2.2 單元測試中的白盒測試和黑盒測試
參看01 一些測試理論
2.3 樁模塊和驅動模塊
樁模塊: 為了讓目標類正確運行而設計的支持類;
驅動模塊: 驅動目標類運行起來的類,比如junit。
原文轉自:http://www.wangyuxiong.com/archives/52292