text: 在軟體測試中，自動化測試指的是使用獨立於待測軟體的其他軟體來自動執行測試、比較實際結果與預期並生成測試報告這一過程。 在測試流程已經確定後，測試自動化可以自動執行的一些重複但必要測試工作。也可以完成手動測試幾乎不可能完成的測試。對於持續交付和持續整合的開發方式而言，測試自動化是至關重要的。隨著軟體系統規模的日益擴大，以及應用領域的不斷拓展，對軟體系統的測試也變得更加困難和複雜，傳統的人工測試的侷限性也越來越明顯。自動化軟體測試技術可以克服傳統測試技術的許多問題。自動化測試所依據的是一套嚴密的測試法則和評估標準，具有完整的自動測試過程。因此，它可以避免測試人員慣性思維所導致的測試疏漏，也可減少由於手工測試中繁複的重複工作所導致的人為差錯。概述.自動化測試的意義和優點.自動化測試。單元測試的用例可以在程式碼編寫完成之前就設計好，並作為功能的一種定義形式存在。隨著新的程式碼不斷完成編寫，單元測試隨之進行，缺陷被不斷找出，因而程式碼也不斷得到改進。 由於開發人員能夠及時發現缺陷然後立即作出改變，修復的代價大大減小，這種不斷發展的開發方式被認為比瀑布模型這類開發結束再測試的方式更為可靠。使用單元測試框架執行自動化測試是目前軟體開發行業的大趨勢。單元測試框架的應用使得各部分程式碼開發完成後立即進行相關單元測試來驗證它們是否如預期在執行成為可能。手工完成一些軟體測試的工作(例如大量的低階介面的迴歸測試)十分艱苦耗時，而且尋找某些種類的缺陷時效率並不高，因而測試自動化，提供一種完成這類工作的有效方法。一旦自動化測試方法開發完成，日後的測試工作將可以高效迴圈完成。很多時候這是針對軟體產品進行長期迴歸測試的高效方法。畢竟，早期一個微小的補丁中引入的迴歸問題可能在日後導致巨大的損失。自動化測試的侷限性.儘管長期來看自動化測試，可以帶來開支上的節省，將所有測試短期內全部自動化還是可能產生巨大的開銷，通常情況下業內採用手工測試和自動化測試相結合的方法完成測試工作。儘管測試“自動化”了，但測試結果分析、測試指令碼維護和編寫仍然需要人力投入。自動化測試的要求.對於測試用例的要求.需要被自動化的測試用例大多是待測產品中每次修改程式碼都需要進行迴歸測試的重要部分。對這樣的部分採取自動化測試手段後能大大減小手工測試消耗的人力物力。對於測試人員的要求.由於在自動化測試中的測試用例和輸出結果都由程式碼構成，測試工程師必須具備軟體編碼的能力。不過某些測試自動化工具支援透過關鍵詞指定測試步驟，因而免除了程式編寫的過程，對測試人員而言也就不再要求他們掌握程式設計技術了。對於團隊的要求.自動化測什麼，什麼時候可以自動化，團隊是否真的需要自動化——這三個問題是一個測試團隊必須做出的關鍵決斷。來自52名從業者和26名學者的研究與評論中共同指出測試自動化應考慮五個關鍵因素：被測系統、測試的數量和種類、測試的工具、人和組織的工作重心、。在上述研究中最常提及的獨立因素是：迴歸測試的必要性、經濟因素、被測系統成熟度。自動化測試的分類.測試自動化有許多途徑，下面列出一些廣泛應用的一般方法：介面測試.介面測試是被廣泛使用的軟體測試方法之一，它使軟體測試工程師能夠忽略GUI的影響，對軟體功能本身進行測試。它是程式邏輯測試中非常關鍵的一步。通常情況下在開發的早期階段，介面測試就會開始執行來確保程式碼始終是準確無誤的。介面測試也作為整合測試的一部分，用於判斷系統是否滿足功能、可靠性、效能表現和安全性的要求。 由於介面測試不使用GUI，它主要透過字元方式與測試者進行互動。圖形使用者介面(GUI)測試.許多測試自動化工具提供記錄與回放巨集的功能，這允許使用者記錄他們在互動式使用者介面上進行的滑鼠點選、鍵盤輸入等操作。這樣在之後的測試當中，播放巨集便可以自動測試這些互動，與正常情況下的互動反饋進行對比便可完成針對GUI的測試工作。這種方法幾乎不要求使用者具有軟體開發經驗，並且可以應用於幾乎任何具有GUI的應用程式。然而，這些特點也帶來了一些可靠性和維護性問題：任何按鈕的重新命名或是移動都會讓巨集出現錯誤，使用者便需要重新錄製巨集。這類工具有一種用於測試網站的變種，其“介面”不是應用程式而是網頁，由於網頁依賴HTML渲染器展示使用者介面，因此這類變種不再關注操作本身，而是代為渲染HTML並監聽DOM事件來完成巨集的記錄與回放。在這裡，"介面"的網頁。然而，這一框架利用了完全不同的技術，因為它是渲染HTML並聽事件，而不是作業系統的活動。無頭瀏覽器或通常用於網站的測試工作。持續測試.指的是在軟體開發過程中自動對即將釋出的軟體版本，透過軟體輸送管道，自動的執行測試並給出即時反饋，依次降低軟體缺陷帶來的業務風險。自動化測試框架.測試自動化框架是一個為特定產品設定一系列特定自動化規則執行測試的整合系統。這套系統的整合和各種可重用模組。將這些模組按照測試需求組合起來便可以得到一個完整的，針對特定功能或應用場景的測試用例。測試框架為自動化測試提供基礎，並簡化了自動化測試的工作流程。自動化測試介面.自動化測試介面是自動化測試框架中，為不同測試工具提供統一的平臺。其目標是儘可能減少將業務指標對映成測試步驟這一過程中產生的程式碼量。自動化測試介面被設計用於改善測試指令碼的維護效率和靈活性。自動化測試介面包括以下核心模組：介面引擎.介面引擎建立在介面環境之上，包括一個語法分析器和一個測試執行程式。語法分析器用於將來自物件庫的檔案解析成測試指令碼語言可用的形式，之後由測試執行程式執行。物件庫.物件庫是使用測試工具，針對待測UI或應用程式建立的全部測試資料、宏物件的集合。自動化框架和測試工具的區別.測試工具是專門針對一些特殊應用場景設計的，它們在自動化測試過程中完成一部份工作。自動化框架則不執行特定任務，而作為基礎設施，為不同工具提供統一平臺，並讓它們工作在同一個模式下，以便自動化測試工程師開展工作。有許多不同種類的框架，會依照測試或開發的架構來進行分類，有以下這些分類：自動化測試在行業中的現狀.根據Practitest組織2018年收集，來自80多個國家的QA專業人士提供，約1,500份回覆報告統計顯示，高達76%的受訪者執行自動化測試或負責編寫自動化測試指令碼。有85.5%的受訪企業採用了各類自動化測試方法，其中75%的企業利用自動化測試方法執行迴歸測試，43%的企業將自動化測試和持續整合、持續開發方法結合使用，有3%的公司甚至將90%的測試工作自動化進行。就薪資水平看，有著一到兩年工作經歷的測試工程師在西方國家能夠拿到40k左右的年薪。具備自動化能力的工程師的年薪普遍更高。註釋.
metadata: erhwenkuo/wikipedia-zhtw
metadata: 自動化測試
metadata: https://zh.wikipedia.org/wiki?curid=6658012