1. 程式人生 > >Python測試之介面測試的基礎

Python測試之介面測試的基礎

介面測試基礎

  測試對於介面測試的理解總是停留在工具使用層面,很多情況下,測試人員會花很大的代價去學習一個工具,而測試工具本身的侷限性,又導致測試人員陷入想直接用現成的測試框架卻又無法進行擴充套件的僵局,最後由於專案的特殊性等客觀因素,測試人員只能放棄工具,脫離了工具的視覺化介面友好操作,發現直接連線口是什麼都不明白,更不要說完成介面自動化測試

 

一:網路傳輸知識:

  超文字傳輸協議( HTTP )是一種分散式,合作式超媒體資訊系統,它是一種通用的,無狀態的協議,除了應用於超文字傳輸外,它也可以應用於諸如名稱伺服器和分佈物件管理之類的系統,這可以通過擴充套件它的請求方法,錯誤程式碼和報頭來實現,HTTP的一個特點是資料表現形式是可輸入的和可協商性的,這就允許系統能被建立而獨立於資料傳輸

  1. 協議

    在介面測試中,從客戶端傳送request(請求)至伺服器反饋response(響應),網路傳輸的資料就是介面測試中最主要的部分,而資料傳輸的本質就是基於網路傳輸協議,網路傳輸很顯而易見,是指資料在網路上的傳輸過程,

  2. Cache(快取)

    把使用者的等待時間稱為響應時間,也就是開發人員所說的效能,會有多方面的指標幫助測試及開發人員判定效能的好壞,其中最直觀的就是看網頁及應用的開啟速度,其中提高反應速度的一個方式就是使用快取,一個優秀的快取策略可以為網路傳輸帶來以下兩方面好處

      1) 減少延遲:因為所發出的網頁請求是指向更接近客戶端的快取,而不再是源伺服器端,因此請求所花費時間更短,這讓網站看上去反應跟快,調高了使用者體驗

      2) 降低網路負荷:因為快取檔案可以重複使用,節省不少的頻寬,降低了網路負荷,同時站在使用者的角度,這也省了不少流量,

    使用快取Cache的站點會監聽客戶端向服務端發出的請求,並根據相應的快取設定儲存伺服器端反饋的資料,比如URL,HTML頁面,圖片等檔案,如果使用者再次使用相同URL傳送請求,請求不會直接發向伺服器,而是通過快取策略先行判斷是否能夠使用之前已經儲存下來的反饋檔案,從而降低伺服器的負載及提高資料的響應時間,

    快取根據其型別可以分為:

      1. 瀏覽器快取

        瀏覽器(IE,Chrome,Firefox等)都有快取設定選項,它可以將你瀏覽過的網頁全部儲存在你本地計算機的硬碟中,最常用的場景就是當你點選瀏覽器的'後退'或者以前瀏覽過的頁面的連結時就能直接使用這種快取,同樣的,當你不希望使用瀏覽器快取時,可以通過刪除瀏覽歷史記錄的操作對其進行刪除,刪除後,第一次訪問相同的網站,瀏覽器會將請求直接發往瀏覽器獲取返回資料

      2.代理快取

        瀏覽器快取由於客戶端記憶體的限制不能存放過多的資料,否者會降低本機的效能,在實際應用中,開發者需要儲存大規模的資料及面向更廣泛的使用者群時,可以使用代理快取,它使用相同的原理,但可以用相同的方法為幾百甚至幾千的使用者服務,

        因為代理快取及不屬於客戶端,也不屬於伺服器端,而是利用網路路由器請求資訊,有以下兩種最常用的場景

          1)使用者手動設定瀏覽器的代理

          2)使用網頁代理,網頁代理將你的URL請求通過潛在的網路定向的代理,所有使用者甚至無需手動配置它們

        代理快取時共享快取的一種,不是隻有一個人正在使用它們,而是同時存在大量的使用者使用

      3.閘道器快取

        閘道器快取也是中間人,但不是由系統網路管理員處於節省頻寬而部署,它們通常是由網站站長自己部署的,這樣可以讓自己的網站更具有課擴充套件性,可靠性和效能更好,可以通過許多方法將請求路由的閘道器快取記憶體,它就類似於負載平衡器

    在快取策略來分,分為:

      1.強快取

        直接從本地快取中取資源,不會和伺服器通訊

      2.協商快取

        通過伺服器來告知是否能用本地快取,先和伺服器通訊,如果返回可以使用本地快取的指示,再從本地快取中取,如果不可以使用本地快取,就會返回最新的資源

  3. Cookie

    Cookie的內容是儲存的一段文字資訊,這些文字資訊組合成一份通訊證,他是客戶端對於無狀態協議的一種解決方案,

    Cookie的使用原理:

      1) 使用者會提供包括使用者名稱在內的資訊,並且將其提交至伺服器

      2) 伺服器向客戶端回傳相應資料的同時,也會發回這些資訊 

      3)當客戶端接受來自伺服器的響應之後,瀏覽器會將Cookie 存放在一個統一的位置,

      4)客戶端在向伺服器傳送請求的時候,會把Cookie 再次發回至伺服器

    獲取Cookie的途徑

      1)使用瀏覽器的開發者工具或者專業抓包工具獲取

      2)從本地檔案中獲取

        常用瀏覽器的存放地址:

          IE:%APPDATA%\Microsoft\Windows\Cookies\ 目錄中的xxx.txt檔案(裡面可能有很多個.txt Cookie檔案)。

          Firefox:%APPDATA%\Mozilla\Firefox\Profiles\ 目錄中的 xxx.default目錄名為cookies.sqlite的檔案。

          Chrome:%APPDATA%\Google\Chrome\User Data\Default\目錄中,名為Cookies的檔案。

      3)通過前端技術獲取:

    Cookie的生命週期

      Cookie的生成時間是整個會話期間:瀏覽器會將Cookie儲存在記憶體中,瀏覽器關閉時就會自動清除這個Cookie

      Cookie的生存時間是長久有效:Cookie儲存在客戶端的硬碟中,瀏覽器關閉的話,該Cookie也不會被清除,下次開啟瀏覽器訪問對應網站時,這Cookie就會自動再次傳送到伺服器端

      測試人員可以通過對瀏覽器的設定修改Cookie的生命週期

      Cookie的常用屬性,便於測試人員根據測試場景進行修改

        1)  Name:該Cookie的名稱,Cookie一旦建立,名稱便不可更改

        2)  Value:該Cookie的值,如果值為二進位制資料,則需要使用Base64編碼

        3)MaxAge:該Cookie失效的時間,單位為秒,如果為正數,則該Cookie在MaxAge秒之後失效,如果為負數,該Cookie為臨時Cookie,關閉瀏覽器即失效,瀏覽器也不會以任何形式儲存該Cookie,如果為0,表示刪除該Cookie,預設為-1

        4) Secure :該Cookie是否僅被使用安全協議傳輸,安全協議有HTTP,SSL等,在網路上傳輸輸入之前先將資料加密,預設為False

        5)  Path: 該Cookie的使用路徑,如果設定為"/sessionWeb/",則只有contextPath為"/sessionWeb/"的程式可以訪問該Cookie,如果設定為"/",則本域名下conetextPath都可以訪問該Cookie

        6) Domain: 可以訪問該Cookie的域名,如果設定為".google.com",則所有以".google.com"結尾的域名都可以訪問該Cookie

    Cookie不可跨域名以及跨瀏覽器使用

      一般Cookie是不可跨域名的,這是由Cookie的隱私安全機制決定的,隱私安全機制能夠禁止網站非法獲取其他網站的Cookie

      

  4.Session

    Session是另一種記錄使用者狀態的機制,不同的是Cookie儲存在客戶端瀏覽器中,而Session儲存在伺服器上,他是伺服器端對於無狀態協議的一種解決方案,客戶端訪問伺服器的時候,伺服器把客戶端資訊以某種形式記錄在伺服器上,這就是Seesion,客戶端再次訪問時只需要從Session中查詢該使用者的狀態即可

    Session的傳輸步驟:

      1)伺服器端程式執行的過程中建立Session,並且為該Session生成唯一的Session ID

      2)伺服器將Seesion ID發到客戶端

      3)當客戶端再次傳送請求的時候,會將這個Session ID帶上

      4)伺服器接受到請求之後就會依據Session ID找到相應的Session,完成請求相應

    Session的傳輸媒介

      1) 通過Cookie傳輸

        Session的資訊是報錯在伺服器端的,測試人員只需要運用抓包工具從Cookie中獲取Session ID 的值用於模擬使用者請求,雖然Session儲存在伺服器,對客戶端是透明的,但是他的正常執行任然需要客戶端瀏覽器的支援,這是因為Session需要使用Cookie作為識別標識,因此伺服器向客戶端瀏覽器傳送一個名為 JSESSIONID 的 Cookie,它的值為該 Session 的 ID。測試人員獲取JSESSIONID的值即可。      

        Session的有效期與會話有關。儲存JSESSIONID的Cookie是伺服器自動生成的,它的maxAge屬性一般為−1,表示僅當前瀏覽器內有效,並且各瀏覽器視窗間不共享,關閉瀏覽器就會失效,因此同一機器的兩個瀏覽器視窗訪問伺服器時,會生成兩個不同的Session,但是由瀏覽器視窗內的連結、指令碼等開啟的新視窗(不是雙擊桌面瀏覽器圖示等開啟的視窗)使用同一個Session。這類子視窗會共享父視窗的Cookie,因此會共享一個Session。