【揭祕】阿里測試框架,各大CTO良心力薦

自動化測試因其節約成本、提升效率、減小手動干預等優點已經日漸成爲測試人員的「潮流」,從業人員日益清楚地明白實現自動化框架是軟件自動化項目成功的關鍵因素之一。本篇文章將從 什麼是真正的自動化測試框架、自動化腳本如何工做以及自動化測試框架會如何在測試過程當中爲你提供競爭優點 三個方面進行闡述,讓您經過這一篇文章,踏入自動化測試框架的領域。java


 

自動化測試的優點面試

自動化測試的流行和諸多優點並不意味着它是靈丹妙藥,定製型項目、週期短、測試易用性等狀況並不適合自動化測試。但不能否認的是,若是認真計劃和執行自動化測試框架,確實會爲軟件開發和測試公司帶來如下好處:算法

最短期-最大收益npm

構建任何可行的自動化測試框架和自動化腳本均可以最大程度地減小編寫和運行測試所花費的時間,從而能夠在短期內得到最大的輸出。另外,擁有優秀的自動化測試框架後,人力就能夠從諸如同步、錯誤管理、本地配置,報告生成、解釋等這些常見問題中解脫出來。編程

可重複使用和可讀的自動化代碼瀏覽器

當你使用現有組件庫中提到的代碼時,大能夠放心,它在之後的時間內仍然是可讀和可重複使用的,而且全部相關任務(如報告、同步和故障排除)都將變得更易訪問。服務器

資源優化架構

一些公司沒有如設想的通常從自動化實施中受益,由於從自動化測試中得到的效益取決於採用它的靈活性。 若是自動化系統是靈活的,而且與從事各個組件的不一樣團隊兼容,那麼在資源優化和知識共享方面能夠提供巨大的收益。app

自動化測試框架的定義框架

在其餘不少行業中,「自動化」指的是經過智能算法自動處理流程,流程運行是不多或徹底不須要人工干預。而在軟件行業中,自動化測試指的是經過自動化工具(受權版本或開源版本皆可)對軟件應用程序進行各類測試。從技術角度來講, 自動化測試框架是一組定製的、能夠用來執行腳本化測試和全面報告測試結果的交互式組件。

要成功地構建自動化測試框架,須要考慮到軟件質量保障專家的建議,他們能夠幫助觀察並幫助控制整個測試過程,提升測試結果的準確性。通過精心設計的自動化測試框架能讓測試人員以一種實用、簡化的方式執行自動化測試。

自動化測試框架的類型

以工具爲中心的框架

無論是商業自動化工具和開源自動化工具,都有有助於在測試環境中生成報告、測試套件和分佈式測試執行的系統基礎設施。好比Selenium 自動化框架,該框架具備主要組件WebDriver——基於Web瀏覽器的插件,用於控制和操做 Web 瀏覽器中的應用程序的 DOM 模型。Selenium 測試自動化框架還擁有實用的編碼庫和記錄回放工具。

另一個專用於工具的重要框架是 Serenity,它是圍繞 Selenium Web 驅動程序構建的加速器。 在這種狀況下,爲加快測試自動化實施過程的速度,社區將特定組件組合在一個公共實體中。

諸如 TestComplete,Ranorex HP QTP 這些工具專用框架時,就很難作出明確的判斷,由於它們都是由帶有動做模擬器、報告和腳本 IDE 的已部署基礎架構預先構建的。

以應用爲中心的框架

這種類型的框架是爲實現某個特定應用程序項目自動化而定製的。以應用爲中心的框架支持某個指定目標的應用程序實現測試自動化的需求,由從開源庫構建的組件驅動。這種框架能夠圍繞SUT建立友好的測試環境來運行一些基本功能,包括部署開發的應用程序、運行應用程序、測試用例執行、直接測試結果報告和便於編碼的包裝器控件。以應用爲中心的框架還會有一個組件來支持在不一樣操做系統和瀏覽器上跨各類雲環境的測試運行。

關鍵字驅動框架

關鍵字驅動框架主要能夠吸引缺少編碼經驗的新手開發和測試人員,它既能夠是以工具爲中心的框架,也能夠是以項目爲中心的框架。關鍵字驅動框架可讓編碼不熟練的員工參與編寫、理解自動化腳本。用於編碼的關鍵字集(如 Login、NavigateToPage、Click、TypeText)做爲關鍵字存儲庫安裝在代碼庫裏,根據提供的關鍵字引用編寫腳本的電子表格將被傳遞到關鍵字解釋器來執行測試 。


 

理想的自動化測試框架的主要組件

若是要實現功能強大且性能卓越的測試自動化框架(不管是開源仍是商業的),就必須把包括構成其核心的某些組件考慮在內。 有些框架可能包括全部組件,也有些框架只包括其中幾個,因此沒必要在每一個框架中都涉及到下面提到的全部組件。

測試基礎組件

a)單元測試

單元測試基礎組件能夠做爲任何自動化測試框架的基本部分。它能夠用於如下狀況:

● 經過@test 或[test]等特定的形式來定義正在使用的測試方法

● 執行影響自動化測試最終結果的斷言

●運行簡單明瞭的測試

不管是從命令行、IDE、專用工具仍是 CI(持續集成)系統運行測試,爲了確保單元測試以簡單的方式運行,單元測試庫都提供了測試運行器。

單元測試庫支持幾乎全部編程語言,好比如下這些:Java 的 JUnit 和 TestNG,.NET 的 NUnit 和 MSTest,Python 的 unittest(前身爲 PyUnit)。

b)集成和端到端測試

在執行集成和端到端測試自動化的同時,也很是合適去實踐現有測試庫提供的功能。由應用程序UI驅動的API級測試須要有消除沒必要要的編碼負擔的組件,這樣能讓與被測應用程序的交互變得更容易。於是,測試人員就不會受到鏈接到應用程序、發送請求、接收結果響應這些編碼工做的困擾。

這種類型的幾個重要測試組件有:Selenium(可用於主要語言)、protractor(特定於 JavaScript)、Karate DSL(Java 特定的 API 級集成測試)。

c)行爲驅動開發(BDD)

專門用於BDD的組件以行爲規範爲目標,以可執行代碼的形式建立可執行規範。在這部分,測試人員能夠將預測行爲的不一樣特性和場景轉化爲代碼。儘管不像其餘測試工具哪有直接跟被測應用程序交互,但能夠做爲BDD過程的支持,建立與自動化測試的範圍和意圖相一致的活動文檔。BDD組件的典型例子有:cucumber(支持主要語言)、Jasmine (JavaScript)、SpecFlow (for .NET)。

二、測試數據管理

在軟件測試自動化和測試建立過程當中,最大的困難是如何利用測試數據管理系統。隨着自動化測試數量的增長,始終存在這樣一個問題:確保執行特定測試所需的某些測試數據在執行測試時可用或可建立。目前對這種狀況並無一個萬無一失的解決方案,這就要求採用可靠的測試數據管理方法來讓自動化工做成功運轉。 所以所採用的自動化測試框架須要配置充分,以便能提供基本的補救措施來進入或建立、清除要執行的測試數據。解決這一問題的方法是使用適當的模擬工具,使數據更加簡化、更加清晰、更易於理解。

三、mock、stubs和虛擬資產

在對自動化測試進行實踐和探索的歷程中,可能會出現如下狀況:

●但願將模塊與在單元測試中有經驗的已鏈接組件隔離

●處理在現代應用程序的集成,或端到端測試中常見的繁瑣而關鍵的依賴關係

在這些狀況裏,就會以爲建立mock、stubs和虛擬資產來反映鏈接組件的行爲模式是很是必要的,還可能會發現處理 mock 和 stub 是一項大範圍、大致量的任務。不管如何,測試人員都會意識到,在開發自動化測試框架期間選擇有用的虛擬化工具是件十分重要的事。

實現模式的通用機制

除了以上說起自動化框架組件,還有一些有用的機制能夠幫助建立、使用和維護自動化測試,例如:

包裝器方法(Wrapper methods):使用 Selenium WebDriver 組件時,建立自定義包裝器會讓人更輕鬆地處理錯誤。 建立了用於 Selenium API 調用的自定義包裝後,就能夠更好地處理超時、異常處理和故障報告。 這以後,建立了自動化測試的人員能夠從新使用,這樣就能夠避開復雜流程的關注點,專一於進行有價值的測試。

抽象方法(Abstraction methods):抽象機制意味着可讀性的提升和冗餘細節的掩蓋。例如,在建立 Selenium WebDriver 測試時使用頁面對象的目的是在網頁上公開用戶輸入操做,包括輸入憑據或單擊頁面上的某處,目標是經過超越或繞過探索頁面特定元素的需求來實現高級測試方法。 此方法適用於許多相似的應用程序和自動化測試。

測試結果報告

在選擇將測試結果報告到自動化框架中的庫或機制時,須要將查看這份報告的目標受衆考慮在內。在這方面,需遵循如下幾個注意事項:

●諸如 Junit 和 TestNG 之類的單元測試框架生成的報告主要針對如 CI(持續集成)服務器之類的接收系統,這些系統最終會對其進行解釋並以其餘軟件可以使用的 XML 格式進行呈現。

●當尋求使用大多數人都能理解的語言做爲進行報告的工具時,你可能須要考慮使用與單元測試框架兼容的商業工具,好比用於 Junit、NUnit 和 TestNG 的 UFT-Pro。

●另外一種選擇是利用諸如 ExtentReports 之類的第三方庫,該庫以易於理解的格式建立測試結果報告,包括經過餅形圖、圖形或圖像進行可視化解釋。

輔助平臺

除了自動化測試框架自己,一些跟持續集成相關的輔助平臺也會對自動化測試有很大的幫助。好比CI能夠進行交付件部署、測試調度;源代碼平臺可管理產品和測試腳本的代碼;依賴管理器通常是針對某種語言類庫的依賴管理工具,好比用nexus管理公司員工開發的通用java類型; 禪道 ZTF包含持續集成、單元測試和版本庫管理等特性。


 

CI平臺

爲了以更快、更連貫的方式進行應用程序測試,持續集成平臺能夠幫助您按期構建軟件併爲新版本運行各類測試。 當開發和部署新功能以及更新現有功能時,此方法使開發人員和測試人員對應用程序質量得到按期反饋和迅速響應。 當前一些突出的持續集成平臺有TeamCity、CircleCI、Jenkins 等。

源代碼管理

與手動測試同樣,自動化測試也涉及編寫和存儲源代碼版本。 每一個開發公司都有一個精選的源代碼和版本控制系統來保存並保護源代碼。 自動化測試須要完善的源代碼管理系統,該系統在處理生產代碼時會很是方便。 典型的源代碼管理示例有 Git和Subversion 。

建立依賴管理器

依賴性管理器的主要目的是協助收集、管理現有的已經應用在自動化軟件解決方案 的功能中的依賴性和庫。某些工具(例如Maven和Gradle)同時充當依賴管理器並幫助構建工具。構建工具旨在幫助您從源代碼和支持庫開發自動化軟件並運行測試。這方面的工具包括Ant,npm 和 NuGet。

 

框架的搭建和實施過程

如下是規劃實現自動化測試解決方案的幾種方式:

●從客戶的角度探討自動化的實際適用性、從各個角度檢查其外觀是否良好、並在未充分使用的技術上進行測試。 與之相比,若是自動化開發的努力大大超過預期的優點,那自動化測試就沒有什麼必要。

● 密切關注被測系統的技術,以便找到可以完美模擬用戶行爲的最合適的自動化測試工具,這一點相當重要。

●建議採用基於階段的實現方法,其中每一個階段都具備交付自動化測試腳本的優先級,同時添加框架功能以實現預期的腳本執行。

●在啓動軟件自動化測試以前,爲了確保正確執行自動化決策,必須首先估算實施後的投資回報率、概念證實、運行手動迴歸或冒煙測試的時間以及每一個版本的運行週期數 。

結論

在當今快節奏、殘酷的軟件開發生態系統中,自動化測試框架在保持軟件測試周期的速度、效率和清晰度方面起着不可或缺的做用。隨着人工智能被引入到軟件測試中,考慮採用自動化測試框架的組織必須 深刻研究最終框架的設計 以後才能涉足這一領域。良好的框架設計和使用組件的策略將爲最終的自動化測試框架奠基基礎。

構建成熟、精細、靈活的自動化測試框架體系結構的最好方法是 從小處着手,頻繁地進行測試和審覈,並逐步向更高的層次構建擴展版本 。從早期開始準備大量的自動化測試很方便,能夠更快地看到工做框架,避免以後在自動化測試階段出現衝突或受損的狀況。

上面闡述的指南旨在幫助軟件測試人員和公司,以讓你們從那些成功的執行自動化測試的項目中汲取經驗。你們也能夠加入313782132,獲取學習資料、面試技巧,不時還有大廠內推機會。

參考文獻:Mitul Makadia.The ABC of Test Automation Frameworks [OL].(2020-04-20) https://dzone.com/articles/the-abc-of-test-automation-frameworks

相關文章
相關標籤/搜索