1、頁面對象自動生成技術,屬于典型的“自動化你的自動化”的應用場景。它的基本思路是,你不用在手工維護Page Class了,只需要提供WEB的URL,它就會自動幫你生成這個頁面上的所有控件的定位信息,并自動生成Page Class。
但是,需要注意,那些依賴于數據的動態頁面對象也會包含在自動生成的Page Class里,而這種動態頁面對象通常不應該包含在Page Class里,需要手動刪除,
工具:商用UFT,免費Katalon Studio
https://blog.csdn.net/weixin_43664254/article/details/89375298
有些場景是無法錄制的,如Web表單處理,多個框架(畫面)切換,切換窗口,處理驗證碼、圖像識別、視頻回饋。這些頁面比較復雜,還有一些元素定位需要我們自己去定義Xpath / CSS
使用手冊:http://www.lxweimin.com/p/8df8b4755185
2、GUI測試數據自動生成,指的由機器自動生成測試用例的輸入數據。
(1)根據GUI輸入數據類型,以及對應的自定義規則庫自動生成測試輸入數據。
eg:界面“書名”輸入框,它的數據類型是string。那么基于數據類型就可以自動生成諸如Null,SQL注入、超長字符串、非英語字符等測試數據。
同時,根據自定義規則庫,還可以根據具體規則生成各種測試數據。這個自定義規則庫里面的規則,往往反映了具體的業務邏輯。比如,對于“書名”,就會有書名不能大于多少個字符、一些典型的書名(比如,英文書名、中文書名等)等等業務方面的要求,那么就可以根據這些業務要求來生成測試數據。
根據自定義規則生成測試數據的核心思想,與安全掃描軟件?AppScan?基于攻擊規則庫自動生成和執行安全測試的方式,有異曲同工之處。
(2)對于需要組合多個測試輸入數據的場景,測試數據自動生成可以自動完成多個測試數據的笛卡爾積組合,然后再以人工的方式剔除掉非法的數據組合。
但是,這種方式并不一定是最高效的。對于輸入參數比較多,且數據之間合法組合比較少或者難以明確的情況,先自動化生成笛卡爾積組合,再刪除非法組合,效率往往還不如人為組合來得高。所以,在這個場景下是否要用測試數據自動生成方法,還需要具體問題具體分析。
更常見的用法是,先手動選擇部分輸入數據進行笛卡爾積,并刪除不合法的部分;然后,在此基礎上,再人為添加更多業務上有意義的輸入數據組合。
比如,輸入數據有?A、B、C、D、E、F?六個參數,你可以先選取最典型的幾個參數生成笛卡爾積,假設這里選取?A、B?和?C;然后,在生成的笛卡爾積中刪除業務上不合法的組合;最后,再結合?D、E?和?F?的一些典型取值,構成更多的測試輸入數據組合。
無頭瀏覽器
無頭瀏覽器,即?Headless?Browser,是一種沒有界面的瀏覽器。
什么?瀏覽器沒有界面,還叫什么瀏覽器啊?別急,我將為你一一道來。
無頭瀏覽器,其實是一個特殊的瀏覽器,你可以把它簡單地想象成是運行在內存中的瀏覽器。它擁有完整的瀏覽器內核,包括?JavaScript?解析引擎、渲染引擎等。
與普通瀏覽器最大的不同是,無頭瀏覽器執行過程中看不到運行的界面,但是你依然可以用?GUI?測試框架的截圖功能截取它執行中的頁面。
無頭瀏覽器的主要應用場景,包括?GUI?自動化測試、頁面監控以及網絡爬蟲這三種。在?GUI?測試過程中,使用無頭瀏覽器的好處主要體現在四個方面:
(1)測試執行速度更快。?相對于普通瀏覽器來說,無頭瀏覽器無需加載?CSS?以及渲染頁面,在測試用例的執行速度上有很大的優勢。
(2)減少對測試執行的干擾。?可以減少操作系統以及其他軟件(比如殺毒軟件等)不可預期的彈出框,對瀏覽器測試的干擾。
(3)簡化測試執行環境的搭建。?對于大量測試用例的執行而言,可以減少對大規模?Selenium?Grid?集群的依賴,GUI?測試可以直接運行在無界面的服務器上。
(4)在單機環境實現測試的并發執行。?可以在單機上很方便地運行多個無頭瀏覽器,實現測試用例的并發執行。
但是,無頭瀏覽器并不完美,它最大的缺點是,不能完全模擬真實的用戶行為,而且由于沒有實際完成頁面的渲染,所以不太適用于需要對于頁面布局進行驗證的場景。同時,業界也一直缺乏理想的無頭瀏覽器方案。
在?Google?發布?Headless?Chrome?之前,PhantomJS?是業界主流的無頭瀏覽器解決方案。但是,這個項目的維護一直以來做得都不夠好,已知未解決的缺陷數量多達?1800?多個,雖然支持主流的?Webkit?瀏覽器內核,但是依賴的?Chrome?版本太低。所以,無頭瀏覽器一直難以在?GUI?自動化測試中大規模應用。
但好消息是,2017?年?Google?發布了?Headless?Chrome,以及與之配套的?Puppeteer?框架,Puppeteer?不僅支持最新版本的?Chrome,而且得到?Google?官方的支持,這使得無頭瀏覽器可以在實際項目中得到更好的應用。
也正是這個原因,PhantomJS?的創建者?Ariya?Hidayat?停止了它的后續維護,Headless?Chrome?成了無頭瀏覽器的首選方案。
那什么是?Puppeteer?呢?Puppeteer?是一個?Node?庫,提供了高級別的?API?封裝,這些?API?會通過?Chrome?DevTools?Protocol?與?Headless?Chrome?的交互達到自動化操作的目的。
Puppeteer?也是由?Google?開發的,所以它可以很好地支持?Headless?Chrome?以及后續?Chrome?的版本更新。