qileilove

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

          如何創建自動化功能測試的基本原則

           介紹
            每個實行持續交付的項目,都有生產流水線的元素,如持續集成和自動化測試。這些測試是在不同層面進行的,從單元測試到冒煙測試再到功能測試。自動化功能測試的優點之一是可重復性和可預測的執行時間。出于這個原因,它應該作為軟件質量的每一個構建之后的指標。功能測試自動化往往會成為一個瓶頸,所以你應該熟悉一下如何創建這樣的測試的基本原則。
            首先設計你的測試
            測試集合可以比作盆景樹。
            最初的時候,我們照顧樹根和樹干。我們選擇會成長的主要分支,我們每天都細心照料這棵樹并等待它長出健康的葉子。
            我們可以以類似的方式繼續測試。
            我們建一個將負責應用程序主要功能(例如:開啟)的基類。
            根據說明,我們先明確將被測試覆蓋的應用程序的主要功能,然后每天我們在執行測試的時候都添加更多平行測試。
            每一個支持測試(例如創建一個新的用戶)的方法都需要與測試分離——讓我們在單獨的類里面來實現。
            你應該在包括了應用程序主要功能的目錄里保持類。
            去建一個規定很多功能共有方法的抽象類是很好的做法。
            如果你正在測試Web應用程序,就用頁面對象設計模式。該模式里,一個類及其方法對應了單個頁面的功能或一個大型網頁里單個頁面上的一個元素。
            無需事事自動化
            自動化花費很多,所以你應該主要測試應用程序的主要功能。
            某些測試可以快速輕松地手動完成,且潛在腳本可能難以實現。
            值得用到自動化的是那些繁瑣的需要被重復很多次的,和那些需要大量數據驗證的測試工作
            寫短測試
            在一個或多個測試失敗的情況下,開發團隊的任何成員都應該能夠輕松地找到錯誤的原因。
            出于這個原因,每個測試方法里應該最多有5個斷言,并且每個方法都必須提供的測試操作的完整記錄。
            明智的做法是使用BDD(行為驅動開發)技術,但是當你沒有用一個特定的測試框架時,你應該把接下來的測試步驟放在comments //given //when //then下。
            創建獨立測試
            在測試類中的每個方法應該是一個獨立的實體,而不是依賴于其他測試。我們應該能夠在任何時間運行單個測試。否則,這樣的測試用例集將來維護起來就會很貴——必須定期跟蹤和更新測試之間的聯系。
            很多時候,測試需要一定的前提條件來滿足。這些條件不應該用外部方法,應該在試驗開始時運行。如果這些條件和測試類的所有方法一樣,它們就可以被放在一開始進行的方法里(例如:在JUnit中被標記為@ BeforeClass)。
            關注可讀性
            源代碼應該是自我記錄的,而寫下以下幾行代碼的每個利益相關者應該明白測試在做什么,為什么它被這么寫。盡量避免在源代碼注釋,因為它也必須被更新。這值得花比平常多一點的時間來命名方法,從而使你的代碼更易讀。
            再看看行為驅動開發技術,每個測試方法都應以單詞“應該”開始,而不是“測試”。
            根據這一慣例,我們馬上就可以明白一個特定的方法測試什么內容了,它在分析測試報告時特別有用。

          測試必須要快
            正如在本文開頭所提到的,自動化功能測試應該是應用程序質量的一個指標。連續傳遞過程中的每一步都應指明最長持續時間;并且根據這個概念,開發團隊應該盡快獲得有關軟件質量的反饋。自動化功能測試的持續時間應不超過幾分鐘。
            對一個非常全面的測試集來說,有必要并行運行測試(經常在不同的機器上)。虛擬化在這里可能是非常有幫助的。
            創建抗變測
            最常提及自動化功能測試的缺點是其對應用程序中變化的低抵抗性,尤其是在GUI中。
            在Web應用程序中,測試應該能抵抗網站的內容的變化。測試應該只驗證功能,這就使得它可以在不同的位置運行測試。這并不意味著我們不應該編寫自動化測試來檢查網頁的內容。
            如果你已經想創建這樣的測試,你應該遵循DDT(數據驅動測試)技術。這意味著,檢查內容是與源代碼分離開的。
            Web應用程序的頁面布局變化非常頻繁,這已經影響到了用戶界面。
            當你設計一個界面時,每個區段和每個頁面你都應該有一個你可以用來測試的唯一標識符,即使一個網站的層次結構發生了變化。
            自動化測試無法取代人類
            功能自動化測試可以是項目中的主要測試技術,但絕不是唯一的一個。
            自動化測試是可重復再生的,他們的覆蓋范圍總是相同的。
            另一方面,雖然探索性測試是低再生的,但是它們能夠覆蓋自動化測試未觸及的區域。
            你還應該記住,自動化測試的“綠色”狀態并不意味著你的應用程序是沒有錯誤的。
            這種情況往往會讓測試員分心,而且有可能會影響測試的準確性。

          posted on 2014-04-11 10:54 順其自然EVO 閱讀(203) 評論(0)  編輯  收藏 所屬分類: 測試學習專欄

          <2014年4月>
          303112345
          6789101112
          13141516171819
          20212223242526
          27282930123
          45678910

          導航

          統計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 上思县| 达日县| 肥乡县| 南昌市| 通辽市| 兴安县| 中阳县| 通山县| 元江| 分宜县| 蒙阴县| 玉树县| 井陉县| 台中县| 腾冲县| 贺兰县| 陇南市| 五指山市| 荥经县| 将乐县| 镇沅| 鹰潭市| 和硕县| 江津市| 康平县| 酒泉市| 郧西县| 西乡县| 淮安市| 隆回县| 乌苏市| 东阳市| 曲阜市| 龙里县| 宣武区| 辽源市| 太仓市| 安福县| 崇义县| 江都市| 壶关县|