自動化測試框架知識,讀這一篇就夠了
自動化測試因其節(jié)約成本、提高效率、減少手動干預(yù)等優(yōu)勢已經(jīng)日漸成為測試人員的“潮流”,從業(yè)人員日益清楚地明白實現(xiàn)自動化框架是軟件自動化項目成功的關(guān)鍵因素之一。本篇文章將從什么是真正的自動化測試框架、自動化腳本如何工作以及自動化測試框架會如何在測試過程中為你提供競爭優(yōu)勢三個方面進(jìn)行闡述,讓您通過這一篇文章,踏入自動化測試框架的領(lǐng)域。自動化測試的優(yōu)勢
自動化測試的流行和諸多優(yōu)勢并不意味著它是靈丹妙藥,定制型項目、周期短、測試易用性等情況并不適合自動化測試。但不可否認(rèn)的是,如果認(rèn)真計劃和執(zhí)行自動化測試框架,確實會為軟件開發(fā)和測試公司帶來以下好處:
最短時間-最大收益
構(gòu)建任何可行的自動化測試框架和自動化腳本都可以最大程度地減少編寫和運(yùn)行測試所花費的時間,從而可以在短時間內(nèi)獲得最大的輸出。另外,擁有優(yōu)秀的自動化測試框架后,人力就可以從諸如同步、錯誤管理、本地配置,報告生成、解釋等這些常見問題中解脫出來。
可重復(fù)使用和可讀的自動化代碼
當(dāng)你使用現(xiàn)有組件庫中提到的代碼時,大可以放心,它在以后的時間內(nèi)仍然是可讀和可重復(fù)使用的,并且所有相關(guān)任務(wù)(如報告、同步和故障排除)都將變得更易訪問。 資源優(yōu)化 一些公司沒有如設(shè)想的一般從自動化實施中受益,因為從自動化測試中獲得的效益取決于采用它的靈活性。 如果自動化系統(tǒng)是靈活的,并且與從事各個組件的不同團(tuán)隊兼容,那么在資源優(yōu)化和知識共享方面可以提供巨大的收益。
自動化測試框架的定義
在其他很多行業(yè)中,“自動化”指的是通過智能算法自動處理流程,流程運(yùn)行是很少或完全不需要人工干預(yù)。而在軟件行業(yè)中,自動化測試指的是通過自動化工具(授權(quán)版本或開源版本皆可)對軟件應(yīng)用程序進(jìn)行各種測試。從技術(shù)角度來說,自動化測試框架是一組定制的、可以用來執(zhí)行腳本化測試和全面報告測試結(jié)果的交互式組件。 要成功地構(gòu)建自動化測試框架,需要考慮到軟件質(zhì)量保障專家的建議,他們可以幫助觀察并幫助控制整個測試過程,提高測試結(jié)果的準(zhǔn)確性。經(jīng)過精心設(shè)計的自動化測試框架能讓測試人員以一種實用、簡化的方式執(zhí)行自動化測試。 自動化測試框架的類型 以工具為中心的框架 不管是商業(yè)自動化工具和開源自動化工具,都有有助于在測試環(huán)境中生成報告、測試套件和分布式測試執(zhí)行的系統(tǒng)基礎(chǔ)設(shè)施。比如Selenium 自動化框架,該框架具有主要組件WebDriver——基于Web瀏覽器的插件,用于控制和操作 Web 瀏覽器中的應(yīng)用程序的 DOM 模型。Selenium 測試自動化框架還擁有實用的編碼庫和記錄回放工具。
另外一個專用于工具的重要框架是 Serenity,它是圍繞 Selenium Web 驅(qū)動程序構(gòu)建的加速器。 在這種情況下,為加快測試自動化實施過程的速度,社區(qū)將特定組件組合在一個公共實體中。
諸如 TestComplete,Ranorex HP QTP 這些工具專用框架時,就很難做出明確的判斷,因為它們都是由帶有動作模擬器、報告和腳本 IDE 的已部署基礎(chǔ)架構(gòu)預(yù)先構(gòu)建的。
以應(yīng)用為中心的框架
這種類型的框架是為實現(xiàn)某個特定應(yīng)用程序項目自動化而定制的。以應(yīng)用為中心的框架支持某個指定目標(biāo)的應(yīng)用程序?qū)崿F(xiàn)測試自動化的需求,由從開源庫構(gòu)建的組件驅(qū)動。這種框架可以圍繞SUT創(chuàng)建友好的測試環(huán)境來運(yùn)行一些基本功能,包括部署開發(fā)的應(yīng)用程序、運(yùn)行應(yīng)用程序、測試用例執(zhí)行、直接測試結(jié)果報告和便于編碼的包裝器控件。以應(yīng)用為中心的框架還會有一個組件來支持在不同操作系統(tǒng)和瀏覽器上跨各種云環(huán)境的測試運(yùn)行。 關(guān)鍵字驅(qū)動框架 關(guān)鍵字驅(qū)動框架主要可以吸引缺乏編碼經(jīng)驗的新手開發(fā)和測試人員,它既可以是以工具為中心的框架,也可以是以項目為中心的框架。關(guān)鍵字驅(qū)動框架可以讓編碼不熟練的員工參與編寫、理解自動化腳本。用于編碼的關(guān)鍵字集(如 Login、NavigateToPage、Click、TypeText)作為關(guān)鍵字存儲庫安裝在代碼庫里,根據(jù)提供的關(guān)鍵字引用編寫腳本的電子表格將被傳遞到關(guān)鍵字解釋器來執(zhí)行測試 。理想的自動化測試框架的主要組件
如果要實現(xiàn)功能強(qiáng)大且性能卓越的測試自動化框架(無論是開源還是商業(yè)的),就必須把包括構(gòu)成其核心的某些組件考慮在內(nèi)。 有些框架可能包括所有組件,也有些框架只包括其中幾個,所以不必在每個框架中都涉及到下面提到的所有組件。
1. 測試基礎(chǔ)組件
a)單元測試 單元測試基礎(chǔ)組件可以作為任何自動化測試框架的基本部分。它可以用于以下情況:
l 通過@test 或等特定的形式來定義正在使用的測試方法
l 執(zhí)行影響自動化測試最終結(jié)果的斷言
l 運(yùn)行簡單明了的測試
無論是從命令行、IDE、專用工具還是 CI(持續(xù)集成)系統(tǒng)運(yùn)行測試,為了確保單元測試以簡單的方式運(yùn)行,單元測試庫都提供了測試運(yùn)行器。
單元測試庫支持幾乎所有編程語言,比如以下這些:Java 的 JUnit 和 TestNG,.NET 的 NUnit 和 MSTest,Python 的 unittest(前身為 PyUnit)。
b)集成和端到端測試 在執(zhí)行集成和端到端測試自動化的同時,也非常合適去實踐現(xiàn)有測試庫提供的功能。由應(yīng)用程序UI驅(qū)動的API級測試需要有消除不必要的編碼負(fù)擔(dān)的組件,這樣能讓與被測應(yīng)用程序的交互變得更容易。因而,測試人員就不會受到連接到應(yīng)用程序、發(fā)送請求、接收結(jié)果響應(yīng)這些編碼工作的困擾。
這種類型的幾個重要測試組件有:Selenium(可用于主要語言)、protractor(特定于 JavaScript)、Karate DSL(Java 特定的 API 級集成測試)。
c)行為驅(qū)動開發(fā)(BDD)
專門用于BDD的組件以行為規(guī)范為目標(biāo),以可執(zhí)行代碼的形式創(chuàng)建可執(zhí)行規(guī)范。在這部分,測試人員可以將預(yù)測行為的不同特性和場景轉(zhuǎn)化為代碼。盡管不像其他測試工具哪有直接跟被測應(yīng)用程序交互,但可以作為BDD過程的支持,創(chuàng)建與自動化測試的范圍和意圖相一致的活動文檔。BDD組件的典型例子有:cucumber(支持主要語言)、Jasmine (JavaScript)、SpecFlow (for .NET)。 2、測試數(shù)據(jù)管理 在軟件測試自動化和測試創(chuàng)建過程中,最大的困難是如何利用測試數(shù)據(jù)管理系統(tǒng)。隨著自動化測試數(shù)量的增加,始終存在這樣一個問題:確保執(zhí)行特定測試所需的某些測試數(shù)據(jù)在執(zhí)行測試時可用或可創(chuàng)建。目前對這種情況并沒有一個萬無一失的解決方案,這就要求采用可靠的測試數(shù)據(jù)管理方法來讓自動化工作成功運(yùn)轉(zhuǎn)。
因此所采用的自動化測試框架需要配置充分,以便能提供基本的補(bǔ)救措施來進(jìn)入或創(chuàng)建、清除要執(zhí)行的測試數(shù)據(jù)。解決這一問題的方法是使用適當(dāng)?shù)哪M工具,使數(shù)據(jù)更加簡化、更加清晰、更易于理解。
3、mock、stubs和虛擬資產(chǎn)
在對自動化測試進(jìn)行實踐和探索的歷程中,可能會出現(xiàn)以下情況:
· 希望將模塊與在單元測試中有經(jīng)驗的已連接組件隔離
· 處理在現(xiàn)代應(yīng)用程序的集成,或端到端測試中常見的繁瑣而關(guān)鍵的依賴關(guān)系
在這些情況里,就會覺得創(chuàng)建mock、stubs和虛擬資產(chǎn)來反映連接組件的行為模式是非常必要的,還可能會發(fā)現(xiàn)處理 mock 和 stub 是一項大范圍、大體量的任務(wù)。無論如何,測試人員都會意識到,在開發(fā)自動化測試框架期間選擇有用的虛擬化工具是件十分重要的事。 實現(xiàn)模式的通用機(jī)制 除了以上提及自動化框架組件,還有一些有用的機(jī)制可以幫助創(chuàng)建、使用和維護(hù)自動化測試,例如:
包裝器方法(Wrapper methods):使用 Selenium WebDriver 組件時,創(chuàng)建自定義包裝器會讓人更輕松地處理錯誤。 創(chuàng)建了用于 Selenium API 調(diào)用的自定義包裝后,就可以更好地處理超時、異常處理和故障報告。 這之后,創(chuàng)建了自動化測試的人員可以重新使用,這樣就可以避開復(fù)雜流程的關(guān)注點,專注于進(jìn)行有價值的測試。 抽象方法(Abstraction methods):抽象機(jī)制意味著可讀性的提高和冗余細(xì)節(jié)的掩蓋。例如,在創(chuàng)建 Selenium WebDriver 測試時使用頁面對象的目的是在網(wǎng)頁上公開用戶輸入操作,包括輸入憑據(jù)或單擊頁面上的某處,目標(biāo)是通過超越或繞過探索頁面特定元素的需求來實現(xiàn)高級測試方法。 此方法適用于許多類似的應(yīng)用程序和自動化測試。
測試結(jié)果報告
頁:
[1]