selenium2.0 原理 html
當使用 Selenium2.0 啓動瀏覽器 Web Browser 時,後臺會同時啓動基於 WebDriver Wire 協議的 Web Service 做爲 Selenium 的 Remote Server,並將其與瀏覽器綁定。綁定完成後,Remote Server 就開始監聽 Client 端的操做請求。 執行測試時,測試用例會做爲 Client 端,將須要執行的頁面操做請求以 Http Request 的方式發送給 Remote Server。該 HTTP Request 的 body,是以 WebDriver Wire 協議規定的 JSON 格式來描述須要瀏覽器執行的具體操做。 Remote Server 接收到請求後,會對請求進行解析,並將解析結果發給 WebDriver,由 WebDriver 實際執行瀏覽器的操做。 WebDriver 能夠看作是直接操做瀏覽器的原生組件(Native Component),因此搭建測試環境時,一般都須要先下載瀏覽器對應的 WebDriver。前端
Appium原理:java
本質上,Appium Server 是一個 Node.js 應用,接受來自 Appium Client 的請求,解析後經過 WebDriver 協議和設備端上的代理打交道。Appium Client 其實就是測試代碼,使用對應語言的 Client 將基於 JSON Wire 協議的操做指令發給 Appium Server。python
iOS:Appium Server 會把操做請求發送給 WebDriverAgent(簡稱 WDA),而後 WDA 再基於 XCUITest 完成 iOS 模擬器或者真機上的自動化操做;ios
Android:Appium Server 會把操做請求發送給 appium-UIautomator2-server,而後 appium-UIautomator2-server 再基於 UIAutomator V2 完成 Android 模擬器或者真機上的自動化操做。git
總結:Appium 屬於 C/S 架構,Appium Client 經過多語言支持的第三方庫向 Appium Server 發起請求,基於 Node.js 的 Appium Server 會接受 Appium Client 發來的請求,接着和 iOS 或者 Android 平臺上的代理工具打交道,代理工具在運行過程當中不斷接收請求,並根據 WebDriver 協議解析出要執行的操做,最後調用 iOS 或者 Android 平臺上的原生測試框架完成測試。 github
性能測試須要關注的是算法設計、架構設計、性能最佳實踐、數據庫相關、軟件性能的可測試性這五大方面。web
性能測試須要關注的具體內容:算法
性能測試的能力spring
併發用戶數:業務上認爲是最大最大在線人數,但對於服務的性能來說,是在線的人想發起請求數,同時要注意用戶發起的哪類請求較多
響應時間標準定義:應用系統從請求發出開始,到客戶端接收到最後一個字節數據所消耗的時間
系統吞吐量:單位時間內的請求數量,請求的字節大小,頁面多少
性能測試方法分類:
性能測試領域:能力驗證、能力規劃、性能調優、缺陷發現
性能測試步驟
性能工具組成:虛擬用戶腳本生成器、壓力控制器、壓力產生器、系統監控器、測試結果分析器
負載策略
全鏈路疑難點解決
Selenium Hub 用來管理各個 Selenium Node 的註冊信息和狀態信息,而且接收遠程客戶端代碼的測試調用請求,並把請求命令轉發給符合要求的 Selenium Node 執行。
搭建通常的selenium grid
在Docker上搭建 selenium grid
在雲端搭建selenium grid
注意如下流程,這樣能夠實現大型系統的統一控制,若是是小型系統能夠不使用統一測試平臺,和jenkins集羣,甚至不須要把selenium grid部署在docker上,服務器自動擴容等
注意實現selenium grid的遠程控制併發,持續集成,使用人員
測試服務化: