農林漁牧網

您現在的位置是:首頁 > 農業

自動化迴歸測試全接觸:概念、方法和實踐

2023-01-22由 51CTO 發表于 農業

統計圖有哪幾種及其概念

眾所周知,在軟體開發的生命週期中,開發人員往往需要修改已有程式碼,或將新功能引入目標系統。不過,此類更改可能會透過影響現有功能對系統造成破壞。因此,我們需要執行一系列測試,以驗證新的程式碼對系統不會造成負面影響。這便是迴歸測試。

自動化迴歸測試全接觸:概念、方法和實踐

在本文中,我們將從迴歸測試的概念入手,討論其實施的重要性,以及那些實現自動化測試的方法與優秀實踐。

什麼是迴歸測試?

迴歸測試是一種軟體的測試形式,能夠涵蓋軟體系統中的各種功能性和非功能性的元素。我們可以在執行如下操作後,透過它來發現潛在的問題或錯誤。

部署新的功能

新增新的模組

修復現有缺陷

重構程式程式碼

更改系統配置

改善應用程式的效能

針對上述任何事件,如果採用手動的方式測試整個系統,顯然既費時又費力。開發團隊往往希望透過自動化測試的方式,來加快整個工作流程,以實現每修改一次程式碼,都能執行一系列預先開發好的測試指令碼。據此,他們能夠在進行連續性迴歸測試的同時,降低測試的總體成本,減少人為錯誤,並保持更高的準確性。

為何要使用自動化迴歸測試?

如前文所述,我們在對每個系統元件進行下一階段開發之前,需要對其進行徹底的測試,否則就會積累所謂的技術債(technical debt)。這不僅成本高昂,而且對於開發工作流程來說也是危害極大的。

值得注意的是,錯誤的修復成本會在軟體開發的各個階段呈指數性增長,並且會在產品釋出的時候高達30倍以上。下圖是此類費用隨時間增加的統計圖。

自動化迴歸測試全接觸:概念、方法和實踐

可見,透過在開發的早期階段進行徹底的測試,不但可以及時地發現錯誤,還能夠避免糾正錯誤所帶來的高昂成本。這也正是自動化迴歸測試發揮作用的地方。當然,除了改進錯誤檢測的效率,自動化迴歸測試還能夠為開發工作、及其流程帶來如下好處:

更高的測試覆蓋範圍 - 自動化能夠讓我們透過執行更多的迴歸測試,來檢查系統的各個方面。顯然,這是手動迴歸測試所無法達到的徹底水平。

更高的測試投資回報率 - 儘管自動化測試有時會引發更高的初期投資,但是從長遠來看,由於軟體開發和維護是一個連續性的過程,因此自動化迴歸測試往往可以在可預見的將來,為團隊節省大量的時間與金錢,並能收穫更大的回報。

更少的人力成本 - 使用自動化測試平臺時,團隊只需一名QA(質量檢測)工程師即可測試指令碼。相反,手動迴歸測試將需要數名專業人員,才能達到相似的效果。因此,自動化大幅減少了迴歸測試所需的總體時間和人力成本。

增強的穩定性 - 手動迴歸測試的結果,往往取決於團隊中QA專家的專業知識和測試方法。而自動化卻能夠確保用相同的專業技術,來測試整個系統的方方面面。

重複性 - 自動化迴歸測試可以按需隨時執行,而無需顧及QA團隊是否有時間和精力。而手動測試則需要為每個新專案配備足夠的QA人員。

如何執行自動化迴歸測試?

正如執行任何其他型別的自動化軟體測試一樣,我們需要遵循預定義的測試路線,才能成功地完成迴歸測試。

正所謂“工欲善其事,必先利其器”,我們在執行自動化迴歸測試前,首先也是最重要的一步是:選擇合適的工具。目前市場上的自動化迴歸測試工具林林總總,其中比較流行的包括Selenium、TestComplete、Ranorex Studio和Perfecto。

接著,我們可以按照如下四步來開展自動執行迴歸測試:

發現和計劃 - 首先概述產品將要釋出的範圍,確定哪些測試用例可能會被包含在迴歸測試的套件中。

設計和開發 – 在確定測試專案需包含的所有任務後,開始為每個測試用例編寫自動化的指令碼。

測試執行 – 執行測試,並在執行過程中識別錯誤。

測試結束 - 最後,記錄和提交測試報告,進而執行其他的後續測試。

自動化迴歸測試的方法

目前,業界通常會使用如下三種方法,來執行自動化迴歸測試。您該具體選擇哪種方法,則完全取決於開發的優先順序、程式碼庫的大小、以及可用在測試中的資源。

全部重新測試 - 有時候,在程式碼庫上執行所有現有的迴歸測試是一種最佳選擇。儘管需要初期大量的投入,但是隻要設計合理,就能夠發現一些不需要回歸的環節。當然,客觀地說,該方法對於大型程式碼庫幾乎是不可行的。

基於優先順序重新測試 – 按照重要性和緊迫性的順序,執行測試用例。在確定具有最高優先順序的測試用例時,往往需要QA專家給出專家意見。而且,優先順序測試應涵蓋所有關鍵的程式碼路徑,以發現那些嚴重的錯誤。

選擇性重新測試 - 您可以選擇迴歸測試套件中的一個子集來執行,而不是重新執行整個測試套件。在後續的迴歸週期中,您只需執行那些可以在程式碼庫上覆用的測試用例,並將過時的用例剔除出去。

此外,您還可以使用混合迴歸測試技術,即:先執行優先順序測試,然後再執行其他必要的測試,以避免遺漏並實現全覆蓋。

自動化迴歸測試的例項

如前所述,我們可以根據對程式碼庫所進行的更改,來採用不同形式的迴歸測試。有些是在新增新的功能後執行,而有些是在修復了系統中已知錯誤後執行。下面,讓我們來討論迴歸測試的一些實際案例:

場景1:假設有一個具有資料庫管理功能的應用,其核心功能有三個,即:資料新增、資料儲存、以及資料刪除。當我們在新版本中,引入允許使用者對資料進行修改的“資料更新”功能時,則需要透過執行迴歸測試,來確保該功能不會影響到既有的“新增”、“儲存”和“刪除”功能。

場景2:某個系統具有管理員、版主、客戶和作者,四個角色模組。如果管理員模組出現了錯誤,那麼就會導致作者使用其憑據,以版主的身份登入到後臺系統中。因此,測試團隊需要反饋開發團隊修復該錯誤。而在實施了有效修復後,測試團隊將再次檢查系統,以確保具有修復功效的程式碼能夠正常工作,且不會影響到其他模組與功能(該過程便是迴歸測試)。

根據上述的場景,我們來討論其中的登入驗證功能,即:使用者輸入其登入憑據(如使用者名稱和密碼),然後單擊登入按鈕。其中,用於測試此功能的分步實施程式碼如下:

自動化迴歸測試全接觸:概念、方法和實踐

如下程式碼則展示了當我們對該功能性程式碼進行測試時,生成的具有登入功能的類:

自動化迴歸測試全接觸:概念、方法和實踐

上述程式碼實為手動迴歸測試的示例。如果我們使用諸如Perfecto之類的自動化迴歸測試工具,則無需對測試指令碼進行硬編碼。我們只需做到:首先,確定可能用到的迴歸測試,並記錄每個測試用例的工作流程。接著,使用Perfecto儀表板對測試方案進行建模。如下圖所示,我們可以讓Perfecto協助將工作流程轉換為測試指令碼。

自動化迴歸測試全接觸:概念、方法和實踐

在工作流程準備就緒後,我們即可執行測試並捕獲結果。而在完成測試之後,Perfecto將返回對應的測試透過或失敗狀態,併為每個執行的命令提供詳細的反饋。據此,您可以相繼開展分析測試結果,生成報告,以及重新測試更改等工作。

自動執行迴歸測試的最佳做法

在執行迴歸測試時,開發團隊往往會碰到包括:時間與資源有限,測試時間過長,測試用例增多等各方面的挑戰。為了避免“踩坑”,並能夠成功地完成自動化迴歸測試,我在此為您羅列了如下實踐建議:

選用可靠的自動化工具,以擴大測試的範圍,並利用其自動化的優勢。

在整個專案中採用常規化的測試方案。

透過獨立可重用的迴歸測試,以節省時間。

在修改程式碼庫後,應重新執行過往已成功完成的測試。

透過定期更新迴歸測試包,以確保與更新的產品版本相對應。

為每個新發現的錯誤編寫各種測試。

確保所有整合測試用例都被包含在迴歸測試的套件中。

希望上述實踐經驗能夠幫助您平滑地開展迴歸測試,並獲得預期的結果。

小結

迴歸測試是在減少潛在技術債,並改善軟體專案維護態勢的有效方法。藉助自動化測試工具,開發團隊不但能夠簡化測試的整體工作量,並且可以確保產品在交付到生產環境之前的穩定性與程式碼質量。