qileilove

          blog已經轉移至github,大家請訪問 http://qaseven.github.io/

          自動化測試技巧之結果驗證

           自動到了京城,已經兩月沒有好好整理下自己的思路了,也沒有好好的寫一些東西了?,F在,真應該回歸了。因為有的東西,不吐不快。
            ---------------------------------------------------------------
            在這里整理下關于自動化測試技巧中的結果驗證的一些東西吧,這塊也是我當年一個一個坑走出來的,雖然現在還有很多坑在等著我。
            在我們編寫測試腳本的過程中,很多時候總會不知道該怎么去判斷我們的結果是否正確。因為有一些操作涉及圖形、一些操作涉及頁面窗口變化、一些則涉及數據庫、系統事件等,從而導致我們無處下手,很多失敗的自動化測試也是因為測試結果的不準確判斷造成的,所以,在此要慎重選擇。
            首先來說說文本的驗證吧。這也是目前最簡單也是最有效的判斷條件之一了。
            一般文本驗證的做法是:1. 獲取當前頁面上要驗證的文本字符串并賦值給一個變量;2. 讀取預期結果的文本字符串;3. 進行比較
            在這里需要注意的一些問題有:
            1) 字符串前后的空格。因為有些時候我們獲取到的一些字符串總會在前后出現一些非正常的空格,尤其是url;所以在對這些進行判斷的時候,我們需要進行預處理,即去掉前后的空格。vbs中可以使用trim函數;
            2) 文本的特殊字符;
            3) web上有一些提示內容,如賬號密碼輸入錯誤和非空的提示信息,都是很多條顯示在同一個位置的,并且顯示的方式為webelement.show()、webelement.hind(),對于這種文本的判斷,最好結合web本身的一些方法來寫方法實現,盡量避免過多依賴于測試工具,如qtp、winrunner;
            再來說下頁面和窗口變化的驗證,這類也是很常見的驗證方式了。
            不過,即使是千里馬也有馬失前蹄的時候,所以,我還是盡可能的整理總結下我所遇到的和想到的東西吧。
            頁面跳轉一般分為頁面內跳轉和頁面外鏈接,其中頁面內跳轉屬于同步操作,需要等待執行完成才能進行下一步操作;頁面外鏈接則屬于異步操作,只要發送出打開瀏覽器,訪問地址的操作就可以盡心下一步操作,不用等待鏈接的地址是否正確響應。因為實現機制的不一樣,所以測試時候的判斷方式也有一些區別。
            頁面內跳轉的在click元素后需要執行一個等待同步操作,常見的web等待同步有Browser.sync、while oIE.busy:wend、while oIE.state <> 4 :wend,如果不加等待時間,則測試腳本會在忽略加載時間直接往下執行。這時候,如果你的網速夠堅挺,那么一切好說,如果不堅挺,那就會報錯了。頁面外鏈接除了需要等待頁面加載之外,還必須對瀏覽器窗口進行定位,一般定位的方法主要有hwnd、index、name、title等,定位方案不選好,遇到稍微奇怪點的情況就會悲劇。
            窗口變化一般表現在全屏/非全屏,大小、窗體元素改變等地方。這些都可以通過獲取窗體的屬性來進行判斷。不過全屏的判斷方式比較特殊,因為很多窗體沒有提供全屏的屬性值,在這里我們可以通過獲取當前窗體的寬高,然后和當前屏幕的availableScreen進行比較,切記,窗體的全屏指的是可用屏幕,就是除掉工具導航欄外的部分,不要真以為全屏就是滿屏幕了。而瀏覽器的全屏則指的是瀏覽器顯示區域大小為全部屏幕,就是除掉瀏覽器工具菜單欄的部分占了屏幕的全部顯示區域。
            再來說說數據變動部分的測試驗證。
            數據變動一般分為在本地數據庫和服務器數據庫改變、本地數據文件改變和服務器數據改變。對于這種數據的改變,通常的做法都是先獲取數據內容,然后再和預期內容進行比較。在測試數據相關的功能時,很多人都會有種感覺,不窮盡數據組合很難完全保證是否正確。然而事實上,涉及數據變動的功能在測試時一般都是分為兩部分,即數據測試和功能測試。
            舉例子來說:一個出生地選擇的功能,有省市縣三個下拉列表,為三級聯動。那么在測試的時候,就需要先對三級聯動這個功能進行測試;確保功能沒問題之后,再對數據進行測試;最后在進行一個整合的隨機測試。這樣就能夠保證在短時間內保證這個功能和所有涉及到的數據完全正確了。在設計自動化測試腳本的時候,也可以分別針對功能和數據進行設計編寫,以便于我們在遇到錯誤時進行定位。
            最后,來說說系統事件的驗證技巧。
            系統事件的測試驗證,首先我們得知道系統事件到底做了哪些操作和修改,并針對這些系統級的操作和修改進行驗證,以避免只依賴于被測程序的提示,從而提高測試腳本的準確性。
            獲取系統事件,可以利用安裝測試工具(如InstallWatch)來進行跟蹤。跟蹤之后的驗證就比較簡單了,只需要讀取修改的內容和預期結果進行比較就可以了。但是有一些系統文件,我們無法直接讀取到里面的內容,并且這些文件也不需要或者不給我們開放一些權限去讀取文件內容,那該怎么辦呢?通常的解決方法有:1. 先對該系統事件進行單獨的測試,以確保該功能正常;2. 對被測程序的操作進行測試,以確保被測程序能夠正常操作系統事件;3. 設計測試腳本在被測程序和系統級分別進行驗證,其中被測程序驗證系統事件的提示信息,系統級則獲取系統文件的最近修改事件和修改者,并與當前操作事件進行對比,如果一致,則可以認為這個操作是正常執行完成了的。
            好了,結果驗證就到這里。
          相關文章
          自動化測試技巧之圖片驗證

          posted on 2013-12-13 09:53 順其自然EVO 閱讀(367) 評論(0)  編輯  收藏 所屬分類: selenium and watir webdrivers 自動化測試學習

          <2013年12月>
          24252627282930
          1234567
          891011121314
          15161718192021
          22232425262728
          2930311234

          導航

          統計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 沧州市| 苍山县| 麻阳| 莱芜市| 辽宁省| 寻乌县| 汉源县| 辽中县| 增城市| 平定县| 安乡县| 黄陵县| 亳州市| 全州县| 华蓥市| 华亭县| 大石桥市| 天门市| 汉源县| 伊吾县| 丰宁| 阜新| 什邡市| 南乐县| 莲花县| 兴隆县| 大新县| 平定县| 仁化县| 红桥区| 康马县| 萍乡市| 本溪| 万全县| 肥西县| 衡南县| 来安县| 泸溪县| 蓬溪县| 苍梧县| 桑植县|