從理論到工具:帶你全面瞭解自動化測試框架

{"type":"doc","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"軟件行業正邁向自主、快速、高效的未來。爲了跟上這個高速前進的生態系統的步伐,必須加快應用程序的交付時間,但不能以犧牲質量爲代價。快速實現質量是必要的,因此質量保證得到了很多關注。爲了滿足卓越的質量和更快的上市時間的需求,自動化測試將被優先考慮。對於微型、小型和中型企業(SMEs)來說,自動化自身的測試過程是非常必要的,而最關鍵的方面是選擇正確的自動化測試框架。"}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"什麼是自動化測試框架?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"自動化測試框架是爲自動化測試腳本提供執行環境的腳手架。框架爲用戶提供了各種優勢,幫助他們有效地開發、執行和報告自動化測試腳本。它更像是一個專門爲自動化組織的測試而創建的系統。簡而言之,我們可以說框架是各種指導方針、編碼標準、概念、過程、實踐、項目層次、模塊化、報告機制、測試數據注入等要素的建設性混合,以此支撐自動化測試。因此,用戶在自動化應用程序以利用各種生產性結果時可以遵循這些指導原則。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":"br"}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"這些優勢可以是不同的形式,如易於編寫腳本、可伸縮性、模塊化、可理解性、過程定義、可重用性、成本、維護等。因此,爲了能夠獲得這些好處,建議開發人員使用一個或多個自動化測試框架。此外,當有一羣開發人員在同一個應用程序的不同模塊上工作時,以及當我們希望避免每個開發人員實現自己的自動化方法的情況下,需要一個統一的標準測試自動化框架。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/52/523feebf77978f76f5c1c8e849b59ed3.jpeg","alt":"","title":null,"style":null,"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"自動化測試框架的類型"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"市場上的自動化測試框架可能因支持不同的關鍵因素(如可重用性、易維護性等)而有所不同。如以下幾種類型:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"●基於模塊的測試框架"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"●測試庫架構框架"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"●數據驅動測試框架"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"●關鍵字驅動測試框架"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"●混合測試框架"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"●行爲驅動開發框架"}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"自動化測試框架的優勢"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"除了自動化測試所需的最少的手動干預外,使用測試自動化框架還有許多優點:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":"br"}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"●"},{"type":"text","marks":[{"type":"strong"}],"text":"更快的上市時間:"},{"type":"text","text":"通過允許測試用例的持續執行,使用一個好的測試自動化框架有助於減少應用程序的上市時間。一旦自動化,測試庫的執行將比手動測試更快,運行時間也更持久。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":"br"}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"●"},{"type":"text","marks":[{"type":"strong"}],"text":"早期缺陷檢測:"},{"type":"text","text":"對於測試團隊來說,軟件缺陷的文檔記錄變得相當容易。它提高了總體開發速度,同時確保了跨區域的正確功能。問題發現的越早,解決成本就越低,採用自動化測試框架的效益也就越高。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":"br"}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"●"},{"type":"text","marks":[{"type":"strong"}],"text":"提高測試效率:"},{"type":"text","text":"測試佔據了整個開發生命週期的重要部分。即使是總體效率的最輕微的改進也會對項目的整個時間框架產生巨大的影響。儘管最初的設置時間較長,但自動化測試最終所佔用的時間要少得多。它們實際上可以在無人值守的情況下運行,在進程的最後時刻對結果進行監視。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"●"},{"type":"text","marks":[{"type":"strong"}],"text":"更高的投資回報率:"},{"type":"text","text":"雖然最初的投資可能較高,但自動化測試可以長期爲組織節省支出。這是由於運行測試所需的時間減少,從而導致工作質量更高。這反過來降低了發佈後的故障概率,從而降低了項目成本。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"●"},{"type":"text","marks":[{"type":"strong"}],"text":"更高的測試覆蓋率:"},{"type":"text","text":"在自動化測試中,可以對應用程序執行更多的測試,這將帶來更高的測試覆蓋率。增加測試覆蓋率可以測試更多的特性和應用程序的質量。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"●"},{"type":"text","marks":[{"type":"strong"}],"text":"自動化測試的可重用性:"},{"type":"text","text":"在測試自動化中,測試用例的重複性可以幫助軟件開發人員評估程序的反應,以及相對簡單的設置配置。自動化測試用例可以通過不同的方法來使用,因爲它們是可重用的。"}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"十大自動化測試框架"}]},{"type":"heading","attrs":{"align":null,"level":4},"content":[{"type":"text","text":"1.機器人框架"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"如果是希望在測試自動化工作中使用python測試自動化框架,Robot框架是最佳選擇。Robot框架基於Python,但也可以使用Jython(Java)或IronPython(.NET)。Robot框架使用關鍵字驅動的方法來簡化測試的創建。Robot框架還可以測試MongoDB、FTP、Android、Appium等。它有許多測試庫,包括Selenium WebDriver庫和其他有用的工具。它有很多API來幫助它儘可能地擴展。Robot框架使用的關鍵字方法對於那些已經熟悉其他基於供應商的關鍵字驅動的測試工具的測試人員非常有用,這使得他們更容易過渡到開源。"}]},{"type":"heading","attrs":{"align":null,"level":4},"content":[{"type":"text","text":"2.網絡驅動(WebDriverIO)"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"WebdriverIO是一個基於Node.js的自動化測試框架。它有一個集成的測試運行器,可以爲web應用程序和本地移動應用程序運行自動化測試。同時,它可以在WebDriver協議和Chrome Devtools協議上運行,使它對基於Selenium WebDriver的跨瀏覽器測試或基於Chromium的自動化都有效。由於WebDriverIO是開源的,你可以得到一堆插件來滿足你的自動化需求。“Wdio安裝嚮導”使安裝簡單和容易。"}]},{"type":"heading","attrs":{"align":null,"level":4},"content":[{"type":"text","text":"3.Citrus"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Citrus是一個開源框架,您可以使用它自動化任何消息傳遞協議或數據格式的集成測試。對於任何類型的消息傳遞,如REST、HTTP、SOAP或JMS,Citrus框架將適合測試消息傳遞集成。如果您需要與用戶界面交互,然後驗證後端流程,那麼可以將Citrus與Selenium集成。例如,如果您必須單擊“發送電子郵件”按鈕並在後端驗證電子郵件是否已收到,柑橘可以接收此電子郵件或UI觸發的JMS通信,並驗證後端結果,所有這些都在一個測試中完成。"}]},{"type":"heading","attrs":{"align":null,"level":4},"content":[{"type":"text","text":"4.Cypress"}]},{"type":"heading","attrs":{"align":null,"level":4}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/a6/a67db7d94df6ef9a9e09f0a82e7829ff.png","alt":"","title":null,"style":null,"href":null,"fromPaste":true,"pastePass":true}},{"type":"heading","attrs":{"align":null,"level":4}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Cypress是一個以開發人員爲中心的測試自動化框架,它使測試驅動開發(TDD)成爲開發人員的現實。它的設計原則是能夠打包和捆綁所有東西,使整個端到端測試體驗愉快和簡單。Cypress的架構與Selenium不同;Selenium WebDriver遠程運行在瀏覽器外部,而Cypress運行在瀏覽器內部。這種方法有助於理解瀏覽器內部和外部發生的一切,從而提供更一致的結果。它不需要您處理對象序列化或在線協議,同時爲您提供對每個對象的本機訪問。當您將應用程序拉入瀏覽器時,Cypress可以同步通知您瀏覽器內發生的每一件事情,這樣您就可以本機訪問每個DOM元素。它還使得在應用程序中放置調試器變得很容易,這反過來又使開發人員工具的使用變得更容易。"}]},{"type":"heading","attrs":{"align":null,"level":4},"content":[{"type":"text","text":"5.Selenium"}]},{"type":"heading","attrs":{"align":null,"level":4}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/f8/f8f35dfc28b4d624e5bdd009722d8ddc.png","alt":"","title":null,"style":null,"href":null,"fromPaste":true,"pastePass":true}},{"type":"heading","attrs":{"align":null,"level":4}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"web應用程序最流行的開源測試自動化框架之一。Selenium還可以作爲許多其他測試工具的基礎,因爲它具有跨平臺和跨瀏覽器的功能。Selenium支持多種編程語言,如Java、C#、PHP、Python、Ruby等。它易於維護,因爲它擁有最大的在線支持網絡之一。Selenium可以通過廣泛的庫和api進行高度擴展,以滿足每個人的需求和需求。Selenium是測試人員的首選,因爲它可以編寫更高級的測試腳本來滿足各種複雜程度。它爲測試編寫提供了一個回放工具,無需學習特定的腳本語言。"}]},{"type":"heading","attrs":{"align":null,"level":4},"content":[{"type":"text","text":"6. Cucumber"}]},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/4d/4d7ff18da392f7d58468e6d0432dbdd8.png","alt":null,"title":"","style":[{"key":"width","value":"100%"},{"key":"bordertype","value":"none"}],"href":"","fromPaste":false,"pastePass":false}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"它是一個跨平臺的行爲驅動開發(BDD)工具,用於編寫web應用程序的驗收測試。Cucumber可以快速且容易地設置執行,並允許在測試中重用代碼。它支持Python、PHP、Perl、.NET、Scala、Groovy等語言,以易於閱讀和理解的格式實現函數驗證的自動化。一個好的特性是規範和測試文檔都被上傳到一個最新的文檔中。Cucumber使不熟悉測試的業務涉衆更容易閱讀代碼,因爲他們可以輕鬆地閱讀代碼,因爲測試報告是用商業可讀的英語編寫的。該代碼可以與Selenium、Watir、Capybara等其他框架一起使用。"}]},{"type":"heading","attrs":{"align":null,"level":4},"content":[{"type":"text","text":"7.Gauge"}]},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/69/69f09ace651ba2446a4a58b196ca55ce.png","alt":null,"title":"","style":[{"key":"width","value":"100%"},{"key":"bordertype","value":"none"}],"href":"","fromPaste":false,"pastePass":false}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"它是一個開源工具無關的測試自動化框架,適用於Mac、Linux和Windows。從事TDD和BDD工作的人會喜歡Gauge專注於創建動態/可執行文檔。規範——量規自動化測試是在現有的ide(如visualstudio和Eclipse)中使用C、Java和Ruby的降價語言編寫的。Gauge的功能也可以通過對插件的支持進行擴展。它是作爲一個BYOT(自帶工具)框架開發的。因此,您可以使用Selenium,也可以使用任何其他工具來驅動測試UI或API測試。如果你想要一個可讀的非BDD方法來實現自動化,你應該試試Gauge。"}]},{"type":"heading","attrs":{"align":null,"level":4},"content":[{"type":"text","text":"8.Serenity"}]},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/e0/e07a57c05d5bb837f2f9189982546761.png","alt":null,"title":"","style":[{"key":"width","value":"100%"},{"key":"bordertype","value":"none"}],"href":"","fromPaste":false,"pastePass":false}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"如果您正在尋找一個與cumber和JBehave等行爲驅動開發(BDD)工具集成的基於Java的框架,那麼Serenity可能是適合您的工具。它的目的是使編寫自動化驗收和迴歸測試更容易。它還允許您將測試場景保持在較高級別,同時在報告中容納較低級別的實現細節。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Serenity充當Selenium WebDriver和BDD工具的包裝器。它抽象了許多您有時需要編寫的樣板代碼,這使得編寫BDD和Selenium測試變得更容易。Serenity還提供了大量的內置功能,例如處理並行運行的測試、WebDriver管理、截屏、管理步驟之間的狀態、促進Jira集成,所有這些都不需要編寫一行代碼。"}]},{"type":"heading","attrs":{"align":null,"level":4},"content":[{"type":"text","text":"9.Carina"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Carina使用流行的開源解決方案構建,如Appium、TestNG和Selenium,這減少了對特定技術棧的依賴。您可以測試移動應用程序(本機、web、混合)、web應用程序、REST服務和數據庫。Carina框架支持MySQL、sqlserver、Oracle、PostgreSQL等不同類型的數據庫,提供了MyBatis ORM框架實現DAO層的驚人體驗。它支持所有流行的瀏覽器和移動設備,並且在IOS/Android之間重用測試自動化代碼高達80%。API測試基於Freemarker模板引擎,它在生成REST請求方面提供了極大的靈活性。Carina是跨平臺的,可以在Unix或Windows操作系統上輕鬆地執行測試。"}]},{"type":"heading","attrs":{"align":null,"level":4},"content":[{"type":"text","text":"10.ZTF"}]},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/9a/9a83d20e46a6758448f5e40b5a412e3e.png","alt":null,"title":"","style":[{"key":"width","value":"100%"},{"key":"bordertype","value":"none"}],"href":"","fromPaste":false,"pastePass":false}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Zentao Testing Framework,簡稱ZTF,是一款開源自動化測試管理框架。與市面上已有的自動化測試框架相比,ZTF更聚焦於自動化測試的管理功能。ZTF提供了自動化測試腳本的定義、管理、驅動、執行結果的回傳、Bug的創建以及和其他自動化測框架的集成。ZTF使用go語言開發,可以支持各種平臺。ZTF支持常見的編程語言,您可以選擇您喜歡用的語言來開發自動化測試腳本。通過"},{"type":"link","attrs":{"href":"https://www.zentao.net/u=erin","title":""},"content":[{"type":"text","text":"禪道"}]},{"type":"text","text":"自研的ZTF自動化測試工具,可很好地驅動8種單元測試框架、3種自動化測試框架來執行測試,並把最終結果回傳給禪道,進行統一的報告展示。禪道ZTF打通了項目管理和持續集成工具之間的溝壑,貫穿持續集成、持續測試、持續部署等DevOps生命週期的不同階段。"}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"總結"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"以上列出的工具大多是已成熟且流行的,它們使用AI/ML提供了測試自動化功能,以解決組織現在面臨的快速交付及質量的挑戰。此列表還包括提供API和服務測試的工具,這些工具對於成功的DevOps轉換至關重要。人工智能、無代碼、大數據和物聯網測試等新興技術正在提高測試自動化的效率,同時也爲現有的工具和新的參與者創造了機會,使其能夠爲測試社區帶來價值。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":"br"}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"自動化工具的選擇不僅應該滿足當前需求,還應該關注潛在的趨勢和改進。有效的測試自動化工具應該支持基本的優化、數據生成、更智能的解決方案和分析。到目前爲止,組織中的測試自動化水平很低,在14%到18%之間。但是組織正在努力將自動化覆蓋率提高到80%。API和服務測試也是未來發展的趨勢。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}}]}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章