摘要 當今的企業需要掌控其關鍵業務應用的所有功能測試,以確保所有業務流程工作符合預期。通過實施自動化的功能測試,企業可以極大提高測試速度和精度,從挼間項目中得到更高的投資回報并且顯著地降低風險。
本文簡要描述了自動化功能測試的優勢和挑戰,幫助企業考慮實施最佳測試自動化的方法。
1.介紹
毫無疑問,嚴格的功能測試是成功開發應用的關鍵。開發人員,測試小組和管理人員所面臨的挑戰是,如何加速測試流程和提高測試的精確性和完備性,同時還不能增加已然很緊張的預算。
通過將功能測試的關鍵環節自動化,可以滿足有挑戰性的發布時間安排,測試得更加全面和可靠,檢驗業務過程功能的正確性,從而從上線的運營中,獲得極高的產值和客戶滿意度。然而,功能測試的自動化會產生一些新的顧慮:
測試過程自動化的成本是多少?其投資回報率(ROI)是什么?
哪些應用/過程適合做自動化測試,哪些不合適?
是否需要新的培訓,這將對當前的開發計劃安排產生怎樣的影響?
自動化測試得正確地方法論是什么?
自動化測試時涉及到哪些情況?
當比較自動化測試產品時,哪些功能最重要?
在自動化測試項目開始之前,以上和其他一些問題應該得到全面地調查和了解。
2.功能測試與單元測試
功能測試是指確保應用按期望運行,也就是按照用戶的期望運行。功能測試以一種有效的方式捕獲用戶的需求,讓用戶和開發人員對業務過程滿足需求充滿信心,同時使得QA團隊可以檢驗軟件已發布就緒。
功能測試是單元測試的補充,但有很大不同。簡言之,單元測試說明了代碼執行是否正確;功能測試說明了完成的應用是否做正確的事情。單元測試往往是從代碼開發人員的角度來看,而功能測試是從最終用戶和業務過程角度來看。
3.為什么將功能測試過程的自動化?
現在,IT部門的壓力越來越大。管理部門希望IT部門通過軟件可以交付新功能,抓住新的商業機會和提供有競爭力的優勢。這就意味著需要完成更多的業務應用開發項目,而時間會很緊迫,并不是都有更多的預算或資源。
同時,管理部門越來越意識到軟件和銷售額的重要關系。Web Services,聯機事務處理和ERP應用不僅是非常關鍵的,而且,它們直接關系到公司的產值能力。現在企業非常依賴非常復雜的計算機基礎設施。如圖, 一個典型的企業可能依靠多個應用,運行在不同的系統上,使用幾種不同的前端客戶端,涉及到大量的業務過程并且與很多種數據集交互。
可能的組合是高度復雜,需要成百上千的測試場景。
組件 | 數量 | 事例 |
平臺 | 1 | Intel |
操作系統 | 5 | Windows XP, ME, 2000, NT4, and 98 |
前端客戶端 | 4 | Internet Explorer 6, Netscape 7.1 Java, Visual C++ |
業務過程 | 5 | Login, Search, Order Entry, Order Confirmation, Order Fulfillment |
數據集 | 15 | usernames, passwords, search strings, order numbers, ship dates,等的組合 |
需求的測試數量 | 1x 5 x 4 x 15 | = 1,500 可能的測試場景!! |
當軟件出現故障時,其代價是非常大的,包括銷售額下降,員工的低效率,客戶的不滿和開發和QA人員的士氣低落。在軟件開發周期中,缺欠發現的越晚其代價越高。上線后發現的缺欠的改正成本可能比在設計階段發現的高出100倍。自動化是提高軟件測試過程的速度,精確度和靈活性的關鍵,使公司可以更早發現和改正缺欠。
4.手工功能測試的挑戰
手工功能測試過程本身存在很多挑戰:
時間過長。有限的IT資源和緊張的交付時間使得手工測試對于滿足業務目標來說過于耗時。采用手工測試,測試和開發人員不得不計劃冗長的每步測試過程,然 后手工執行,再現問題,快速消耗了有價值的時間和資源。根據Aberdeen Group,一個獨立行業分析公司,90%的IT項目交付出現延遲,手工測試是其中一個因素。
覆蓋不完全。平臺,操作系統,客戶端設備,業務過程和數據集等的組合對于手工測試過程來說,工作量非常大。需要驗證功能的測試用例數量非常巨大。所以當修改完成后手工回歸測試花費的時間過長,以至于不能做全面的回歸測試。
風險更高。手工測試過程比計算機過程的錯誤和疏忽更多。人們會變得疲倦,輸入數據錯誤,不能總是正確執行測試,并不是總有時間測試所有應該測試的內容。
5.自動化測試的好處
自動化測試有很多好處,包括:
快速執行。計算機在執行功能測試腳本的時候比人快得多,因此在有限的時間里能測試的更多,在給定的時間里更多的應用可以被測試,可以按時完成更多的工 程。并且和人不同,計算機一天工作24小時,還包括晚上,周末和假期;他們不會感到無聊或者疲倦;而且他們從不對該作的事情和不該作的事情自作主張。
提高測試覆蓋。自動測試產品支持在所有流行的瀏覽器,操作系統等上執行測試腳本,用自動化的工具對不斷變化的應用和環境做回歸測試,要比手工測試容易得 多。通過整合的數據驅動表單的功能,自動化測試產品允許開發和測試團隊執行計算,操作數據集,以及快速創建多種反復的測試,使得擴大測試覆蓋范圍。使用自 動測試工具可以仿效任何混合的事務和任意的用戶負載。
提高測試精確度并提早發現更多錯誤。自動化測試給開發人員提供了一種再現和記錄軟件缺陷的非常容易的方法。這將在所有環境,數據集和業務過程等之間確保功能的正確性,同時對開發過程起到加速作用。
提供規范化的過程。自動化測試鼓勵測試團隊規范化他們的過程,以得到更高的一致性和更好的文檔記錄。
提高測試的重用性。測試一旦腳本化,開發人員可以使用和重用這些腳本,可以將腳本添加到測試套件中,以適應應用的變化。沒有必要為每個應用的相同功能而重新創建腳本。
支持ERP/CRM?,F在越來越多的用戶使用ERP/CRM解決方案,對端到端的回歸測試的需求正變得越來越頻繁和越來越重要。
6.在什么情況下采用自動化測試?
一般來說,把自動化測試的工作集中在關鍵的業務過程,復雜應用,以及由這些組成的用例方面(相對于低級別任務,例如系統級的驗證)是很有意義的。
如果一個企業擁有眾多每天工作很多小時的軟件測試人員,但是產品仍然出現質量和功能問題,那么這家企業肯定能從自動化測試中受益。是否決定實行自動化測 試應當充分考慮到投資回報,但是一般情況下,如果一個應用需要多次構造/補丁/修改;需要在大量的硬件或軟件配置下進行測試;并且支持眾多并發用戶等,那 么將會是值得采用自動化測試。另外,如果涉及到重復性的工作,例如數據裝載和系統配置等,或者應用需要滿足特定的服務等級協議(SLA),那么自動化測試 當然也會節約成本。
7.如何確定自動化測試的投資回報?
任何投資回報都可以從一個簡單的計算得出:
投資回報=投資的凈現值/總初始成本
當采用測試過程的自動化時,成本是切實可見的,但是凈現值仍舊包含許多無形的因素。最好的方法就是盡量精確計算直接成本,然后與自動化測試產生的直接和間接的效益進行對比。
在ROI計算中需要考慮的直接成本包括:
購買成本:購買自動化測試軟件產品的成本。
硬件成本:功能測試所必需的硬件成本。有代表性的是,功能測試不需要特殊的硬件,只需帶有以太網端口的標準臺式電腦或者工作站即可。
勞動力成本:培訓職員編寫測試用例腳本或進行手工測試的成本因素。確認要包括招聘,雇傭,支付工資,和保留熟練的QA工程師的成本。
培訓成本:依賴于所選擇的測試產品,培訓使用者精通編寫自動測試腳本是值得的。當然,公司可以選擇雇用專業的服務公司創建最初的自動化測試。
當衡量自動化的潛在益處時,考慮隱性效益是很重要的,例如測試人員高漲的士氣和對工作的滿意度,改進的客戶滿意度和忠實度,還有因為最終用戶使用的可信賴的軟件而不斷提高的知名度。
8.如何評估自動化測試軟件?
很多商家提供自動化測試產品。每個解決方案都有自身的優勢和劣勢,獨特的功能,和市場環境。每個企業需求的特殊性決定了最適合的一種選擇。然而,任何自動化測試產品都應當包含一些關鍵的性能:
自動化測試的“Scriptless”表示法:產品應該提供一個可點擊的界面,在測試時與應用組件進行訪問和交互——而不是呈現出一行行的腳本。測試者應該可以可視化每一步的業務過程,并且直觀的觀察和編輯測試用例。這將減少測試者在學習上走彎路,并幫助測試團隊面對緊迫的最終期限。
集成的數據表:自動化功能測試的一個關鍵的好處就是可以使系統快速產生大量數據。還有一個重要的功能就是操作數據集,執行計算,并以最小的代價快速創建數以百計的重復測試和組合。企業應該尋找擁有提供強大計算能力的集成電子數據表單的產品。
清晰明確的報告:如果測試結果不容易理解或解釋,那么即使運行大量測試數據也不會有什么好處。測試產品應當自動的產生并顯示所有測試運行方面的報告,并 用易讀的格式解釋結果。報告應當提供的細節包括:應用在什么地方發生了失敗和使用了什么樣的測試數據;為應用的每一步提供高亮或有差別的屏幕顯示;并提供 每個檢查點通過和失敗的詳細解釋。當然還應當能夠在不用修改的情況下,在測試和開發團隊之間共享報告。
9.要點列表:自動化測試成功的五個關鍵
即使已經證明了測試的自動化是經濟有效的,然而如何確定轉變到自動化測試過程上的最佳方法依然是困難的。這部分略述了執行自動化測試過程的五個基本原則。
1.完成一個測試計劃文檔。理解被測應用的目標是任何測試成功的基礎。這包括全面的預先計劃以確保測試需求被正確的實施。測試工具應提供為所有被測應用管理測試用例和需求的能力。
2.將測試細分為自動測試用例。一個組織自動執行一個測試計劃的所有方面是不可能的。自動化測試應該集中圍繞在需求設計的復雜應用上和急迫的業務過程功能上,許多組織發現他們使用自動化測試只占總測試用例的60%,而余下的40%為手工測試。
3.創建自動化測試。測試工具極大簡化了準備測試數據和腳本的過程。這使得更多的完全測試可最佳地使用測試資源和結果。使用測試工具,使用者可以不必作 任何實際腳本而創建測試。測試工具應能自動捕獲目標應用的業務過程,并允許使用者創建一個可以被保存的而且可以被管理的測試流程。
4.提高測試覆蓋的數據驅動測試。測試者就可以為應用創建一個使用儲藏在Excel電子表格里的特殊關鍵字的依賴于數據的測試。這就允許測試者通過應用驅動大量的測試數據。
5.給測試增加驗證。需要在測試中添加了“通過或失敗”的測試標準。這包括了應用的前端,中間層,或后端數據庫的驗證。內置的數據庫驗證使數據庫值的存儲得到確認,并確保處理的精確性和已更新、刪除或增加的數據記錄的完整性。
10.總結
功能測試可以不是耗時或高成本的問題。采用自動化功能測試,企業可以將重點放在改進自動業務過程方面。開發和QA組可以增加測試過程的速度和精確度。整個IT部門可以獲得更高的投資回報,而且降低了大量風險。