高效時代,是時候過渡到自動化測試了
由OverOps發(fā)布的《2020年軟件質(zhì)量狀況調(diào)查》顯示,70%的工程組織認為,軟件質(zhì)量的重要性勝過交付速度;與此同時,軟件交付速度比以往任何時候都更快。超過一半的受訪者表示,他們會在兩周內(nèi)多次發(fā)布新代碼/功能,而每季度或更少頻率發(fā)布代碼的受訪者僅占19%。
越來越快的交付速度,帶來的最直接的影響是代碼質(zhì)量下降。更令人尷尬的是,其中超過40%的關(guān)鍵生產(chǎn)問題首先由最終用戶或客戶報告,而不是由內(nèi)部工具或流程首先發(fā)現(xiàn)。
步入高效時代,開發(fā)團隊要如何在提升速度的同時保證軟件質(zhì)量,從而保證用戶體驗?答案就測試自動化。
手動測試 VS 自動化測試
軟件的質(zhì)量依賴于測試。早期,測試都是以人工手動測試為主。在手動測試中,測試用例是在沒有任何工具或腳本支持的情況下手動執(zhí)行的。隨著DevOps、CI和CD的興起,自動化測試工具不斷涌現(xiàn)。在自動化測試中,測試用例在工具、腳本和軟件的幫助下執(zhí)行。
選擇手動或自動測試取決于各種因素,包括項目要求、預(yù)算、時間表、專業(yè)知識和適用性。任何成功項目的目標,都是在降低所需成本和時間的同時,保持質(zhì)量輸出。
以下是手動測試和自動化測試的對比:
目前,手動測試和自動化測試均有廣泛使用。在以下四大場景中,自動化測試往往是首選項:
回歸測試:在這里,自動化測試是合適的,因為頻繁的代碼更改需要及時運行回歸的能力。
負載測試:在負載測試方面,自動化測試也是高效完成測試的最佳方式。
重復(fù)執(zhí)行:需要重復(fù)執(zhí)行任務(wù)的測試最好是自動化的。
性能測試:同樣,需要模擬數(shù)千個并發(fā)用戶的測試需要自動化。
圍繞這四大場景,很多開源或商業(yè)的自動化測試工具或平臺應(yīng)運而生,比如Eggplant、ACCELQ、Kobiton、Avo Assure、Applitools、Subject7等等。這些工具或平臺各有千秋,Eggplant支持Windows、Mac、Linux、SaaS、Android等多個平臺,ACCELQ支持24小時在線服務(wù),Kobiton價格親民,并且提供免費版本……在國內(nèi),飛算博采眾家之長,打造出了具有可視化、低門檻、高效率等特性的飛算SoFlu全自動測試平臺。據(jù)了解,該平臺能夠以自動化的方式實現(xiàn)測試生命周期管理、測試用例自動生成、測試數(shù)據(jù)管理、精準回歸測試等一系列功能。
尤其是在回歸測試方面,飛算SoFlu能極大地提升效率。由于每次修改源代碼時都要重復(fù)軟件測試,手動修改測試不僅耗時而且成本極高。相比之下,利用飛算SoFlu創(chuàng)建自動化測試,能自動識別所有變動的接口,自動查找接口關(guān)聯(lián)的所有測試用例,可以一次又一次地執(zhí)行,幫助測試團隊快速確定由于代碼庫更新而導致的問題。在自動化回歸測試的幫助下,總時間可以從幾天減少到幾個小時。同時,回歸測試自動化也可以給測試團隊騰出時間,從而對生產(chǎn)環(huán)境中的更多異常情況進行手動探索。
測試自動化的六大優(yōu)勢
雖然并非每個測試環(huán)節(jié)都可以或應(yīng)該自動化,不過自動化的方式確實要比手動測試更能保證質(zhì)量。尤其是當測試自動化覆蓋率達到70%-80%的時候,其優(yōu)勢作用在軟件開發(fā)過中,軟件產(chǎn)品質(zhì)量能得到顯著提升,從而形成企業(yè)自身的優(yōu)勢。正如亞里士多德所說的:“品質(zhì)不是一種行為,而是一種習慣?!?/span>
因此,當測試自動化發(fā)展出手動測試所不具備的巨大優(yōu)勢時,這就說明,軟件測試是時候由手動過渡到自動化了。六大優(yōu)勢如下:
1、更快的反饋循環(huán)
應(yīng)對市場變化的唯一方法是加快發(fā)布周期。而測試自動化最大的好處是可以實現(xiàn)更快的反饋循環(huán),縮短發(fā)布周期,加快上市時間。
正確部署的自動化測試腳本或工具,將被集成到CI(持續(xù)集成)工作流中,該工作流可以在每次代碼提交時觸發(fā)。當測試團隊同時在多個設(shè)備上執(zhí)行多個功能測試,可以快速向開發(fā)人員提供反饋;開發(fā)人員也可以將修復(fù)的代碼快速返回給測試團隊。這是手動測試無法完成的。
2、增加測試覆蓋率
測試自動化允許擴展套件,并在多個設(shè)備和操作系統(tǒng)上并行運行測試。而手動測試只允許一個測試人員在一個平臺上進行測試,并且只能進行一次。例如,在10臺設(shè)備上一個接一個,或并行執(zhí)行100個登錄場景,利用自動化工具是能迅速完成測試,但如果將其分配給手動測試人員,那么將會耗費大量時間。
很明顯,測試自動化增加了測試覆蓋率,團隊可以進行更多、更快的測試。
此外,還可以同時針對各種設(shè)備和操作系統(tǒng)版本啟動單個測試套件。對于在不同地區(qū)擁有客戶,并且必須在不同的設(shè)備或操作系統(tǒng)上進行測試的公司來說,這是一個巨大的優(yōu)勢。
3、減少測試疲勞
測試自動化減少了人為制造錯誤的可能性——尤其是對于那些必須一遍遍重復(fù)的令人麻木的測試。
4、更快發(fā)現(xiàn)錯誤
測試自動化允許將更多測試轉(zhuǎn)移到構(gòu)建和開發(fā)階段的早期,使得開發(fā)人員有機會在編寫代碼時發(fā)現(xiàn)問題,這可以幫助DevOps團隊在發(fā)布軟件更新之前做出更好的決策,以減少時間和成本投入,而不是在軟件開發(fā)后期才發(fā)現(xiàn)問題,那將會付出高昂的代價。此外,測試自動化還有助于消除重復(fù)代碼,并使代碼更簡單、更清晰、更易于擴展。
5、測試更加高效
測試自動化允許在多個平臺上并行測試。這對于夜間批量測試或其他類型的時間密集型、大容量測試尤為有益。
6、給手動測試留出時間
正如我們已經(jīng)提到的,測試自動化的高效率,可以給手動測試留出更多的時間。處理臨時/探索性測試、視覺和UI測試以及審查測試結(jié)果時,仍然需要手動測試。
要注意的是,雖然自動化測試有很多優(yōu)點,但也有一些缺點需要考慮。自動化測試減少了測試階段重復(fù)的手動任務(wù),但是在實施階段,仍然需要手動創(chuàng)建基線測試腳本,這個可能非常耗時。此外,測試過程可能不穩(wěn)定,如果操作不當會產(chǎn)生大量無用數(shù)據(jù)。
不過總的來說,測試自動化的優(yōu)點要遠遠大于缺點,這也是越來越多的企業(yè)孜孜不倦追求測試自動化的原因。