許多編程組越來越依賴于自動化測試,特別是那些使用測試驅動開發的組。有許多框架可以編寫測試,每次將代碼輸入版本控制系統時,連續集成軟件都會自動運行測試。
雖然自動化不能重現人類所能做的一切(以及他們所認為的所有方式),但它對回歸測試非常有用。但是,為了真正有用,它確實需要一個精心開發的測試套件的測試腳本。
雖然手動測試可能會在軟件應用程序中發現許多缺陷,但這是一個費時費力的過程。此外,它可能無法有效地發現某些類型的缺陷。測試自動化是一個編寫計算機程序來進行測試的過程,否則就需要手動完成這些測試。一旦測試實現了自動化,它們就可以快速運行了。對于維護壽命長的軟件產品來說,這通常是最劃算的方法,因為在應用程序的生命周期中,即使是很小的補丁也會導致在早期工作的特性中斷。
測試自動化一般有兩種方法:
·代碼驅動的測試。對類、模塊或庫的公共(通常)接口使用各種輸入參數進行測試,以驗證返回的結果是否是正確的。
·圖形用戶界面測試。測試框架生成用戶界面事件,如擊鍵和鼠標單擊,并觀察導致用戶界面的變化,以驗證程序的可觀察行為是正確的。
測試自動化工具可能很昂貴,而且通常與手動測試結合使用。從長遠來看,它可以實現具有成本效益,特別是在回歸測試中重復使用時。
自動生成測試用例的一種方法是通過使用系統的模型進行測試用例生成來進行基于模型的測試,但研究將繼續進行各種替代方法。
自動化是什么,何時自動化,甚至是否真的需要自動化,這些都是測試(或開發)團隊必須做出的關鍵決策。選擇產品的正確功能,在很大程度上決定了自動化的成功。應避免自動化不穩定的特性或正在進行更改的特性。
代碼驅動測試
軟件開發的一個日益增長的趨勢是使用測試框架,如xUnit框架(例如,JUnit和NUnit),允許執行單元測試,以確定代碼的各個部分在各種情況下是否按預期發揮作用。測試用例描述了需要在程序上運行的測試,以驗證程序是否按預期運行。
代碼驅動的測試自動化是敏捷軟件開發的一個關鍵特性,其中它被稱為測試驅動的開發(TDD)。在編寫代碼之前,需要先編寫單元測試來定義該功能。只有當所有測試都通過時,該代碼才被認為是完整的。支持者認為,它生產的軟件比通過人工探索進行測試的代碼更可靠,成本也更低。它被認為更可靠,因為代碼覆蓋率更好,而且它在開發過程中不斷運行,而不是在瀑布式開發周期結束時運行一次。開發人員在進行更改時立即發現缺陷,而修復缺陷的成本最低。最后,代碼重構更安全;將代碼轉換為更簡單的形式,代碼重復更少,但等效的行為,不太可能引入新的缺陷。
圖形用戶界面(GUI)測試
許多測試自動化工具提供了記錄和回放功能,允許用戶交互式地記錄用戶操作,并回放任何次數,并將實際結果與預期結果進行比較。這種方法的優點是它需要很少或不需要軟件開發。這種方法可以應用于任何具有圖形用戶界面的應用程序。然而,依賴于這些特性就帶來了主要的可靠性和可維護性問題。重新標記一個按鈕或將其移動到窗口的另一部分,可能需要重新記錄該測試。錄制和回放還經常添加不相關的活動或錯誤地記錄一些活動。
這種類型的工具的一個變體是用于對網站的測試。這里的“界面”是網頁。這種類型的工具也需要很少或不需要軟件開發。然而,這樣的框架使用了完全不同的技術,因為它是讀取html,而不是觀察窗口事件。
另一個變體是無腳本的測試自動化,它不使用記錄和回放,而是構建被測試應用程序的模型,然后允許測試人員通過簡單地編輯測試參數和條件來創建測試用例。這不需要任何腳本技能,但具有腳本方法的所有能力和靈活性。測試用例維護很容易,因為沒有代碼需要維護,而且由于被測試的應用程序會更改,因此可以簡單地重新學習或添加軟件對象。它可以應用于任何基于gui的軟件應用程序。
要測試什么
測試工具可以幫助自動化任務,如產品安裝、測試數據創建、GUI交互、問題檢測(考慮配備了oracles的解析或輪詢代理)、缺陷日志記錄等,而不一定是以端到端方式自動化測試。
在考慮測試自動化時,必須保持滿足普遍的要求:
·平臺和操作系統獨立性
·數據驅動功能(輸入數據、輸出數據、元數據)
·可自定義的報告(數據庫訪問、晶體報告)
·易于調試和日志記錄
·版本控制友好-最小的二進制文件
·可擴展的和可定制的(開放的api,以便能夠與其他工具集成)
·通用驅動程序(例如,在Java開發生態系統中,這意味著Ant或Maven和流行的ide)。這使得測試能夠與開發人員的工作流集成。
·支持無人值守的測試運行,以便與構建過程和批處理運行進行集成。連續集成服務器需要這樣做。
·電子郵件通知(在故障或閾值級別上的自動通知)。這可能是執行它的測試運行器或工具。
·支持分布式執行環境(分布式測試臺)
·分布式應用程序支持(分布式SUT)
自動化框架方法
框架是一個設置特定產品自動化規則的集成系統。該系統集成了功能庫、測試數據源、對象細節和各種可重用模塊。這些組件作為小型構建塊,需要組裝以表示業務流程。該框架提供了測試自動化的基礎,并簡化了自動化工作。
定義自動化框架和測試工具之間的邊界
工具是專門針對某些特定的測試環境而設計的。例如:Windows自動化工具、web自動化工具等。它作為一個自動化過程的驅動代理。但是,自動化框架并不是執行某些特定任務的工具,而是一個提供解決方案的基礎設施,其中不同的工具可以插入自己,并以統一的方式完成它們的工作。因此,為自動化工程師提供了一個共同的平臺。
有各種類型的框架。它們是根據它們所利用的自動化組件進行分類的。這些內容包括:
·數據驅動測試
·模塊化驅動的測試
·關鍵字驅動測試
·混合動力測試
·基于模型的測試
測試工具
程序測試和故障檢測可以通過測試工具和調試器得到顯著的幫助。
測試/調試工具包括以下功能:
·程序監控,允許全面或部分監控程序代碼,包括:
·指令集模擬器,允許完整的指令級監控和跟蹤設施
·程序動畫,允許在源級別或機器代碼中逐步執行和條件斷點
·代碼覆蓋報告
·格式化轉儲或符號調試,允許在錯誤或選定點上檢查程序變量的工具
·自動化的功能GUI測試工具用于通過GUI重復系統級的測試
·基準測試,允許進行運行時性能比較
·性能分析(或分析工具),可幫助突出顯示熱點或資源使用情況
其中一些特性可以合并到集成開發環境(IDE)中。
審核編輯 :李倩
-
自動化
+關注
關注
29文章
5575瀏覽量
79272 -
代碼
+關注
關注
30文章
4788瀏覽量
68603
原文標題:自動化測試
文章出處:【微信號:QCDZYJ,微信公眾號:汽車電子工程知識體系】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論