天天看點

實施自動化功能測試的解決方案

摘要

  本文簡要描述了自動化功能測試的優勢和挑戰,幫助企業考慮實施最佳測試自動化的方法。

  1.介紹

  毫無疑問,嚴格的功能測試是成功開發應用的關鍵。開發人員,測試小組和管理人員所面臨的挑戰是,如何加速測試流程和提高測試的精确性和完備性,同時還不能增加已然很緊張的預算。

  通過将功能測試的關鍵環節自動化,可以滿足有挑戰性的釋出時間安排,測試得更加全面和可靠,檢驗業務過程功能的正确性,進而從上線的營運中,獲得極高的産值和客戶滿意度。然而,功能測試的自動化會産生一些新的顧慮:

  測試過程自動化的成本是多少?其投資回報率(roi)是什麼?

  是否需要新的教育訓練,這将對目前的開發計劃安排産生怎樣的影響?

  自動化測試得正确地方法論是什麼?

  自動化測試時涉及到哪些情況?

  當比較自動化測試産品時,哪些功能最重要?

  功能測試是指確定應用按期望運作,也就是按照使用者的期望運作。功能測試以一種有效的方式捕獲使用者的需求,讓使用者和開發人員對業務過程滿足需求充滿信心,同時使得qa團隊可以檢驗軟體已釋出就緒。

  功能測試是單元測試的補充,但有很大不同。簡言之,單元測試說明了代碼執行是否正确;功能測試說明了完成的應用是否做正确的事情。單元測試往往是從代碼開發人員的角度來看,而功能測試是從最終使用者和業務過程角度來看。

  3.為什麼将功能測試過程的自動化?

  現在,it部門的壓力越來越大。管理部門希望it部門通過軟體可以傳遞新功能,抓住新的商業機會和提供有競争力的優勢。這就意味着需要完成更多的業務應用開發項目,而時間會很緊迫,并不是都有更多的預算或資源。

   同時,管理部門越來越意識到軟體和銷售額的重要關系。web services,聯機事務處理和erp應用不僅是非常關鍵的,而且,它們直接關系到公司的産值能力。現在企業非常依賴非常複雜的計算機基礎設施。如圖, 一個典型的企業可能依靠多個應用,運作在不同的系統上,使用幾種不同的前端用戶端,涉及到大量的業務過程并且與很多種資料集互動。

  可能的組合是高度複雜,需要成百上千的測試場景。

元件

數量

事例

平台

1

intel

<a>作業系統</a>

5

前端用戶端

4

internet explorer 6, netscape 7.1 java, visual c++

業務過程

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 可能的測試場景!!

  4.手工功能測試的挑戰

  手工功能測試過程本身存在很多挑戰:

   時間過長。有限的it資源和緊張的傳遞時間使得手工測試對于滿足業務目标來說過于耗時。采用手工測試,測試和開發人員不得不計劃冗長的每步測試過程,然 後手工執行,再現問題,快速消耗了有價值的時間和資源。根據aberdeen group,一個獨立行業分析公司,90%的it項目傳遞出現延遲,手工測試是其中一個因素。

  覆寫不完全。平台,作業系統,用戶端裝置,業務過程和資料集等的組合對于手工測試過程來說,工作量非常大。需要驗證功能的測試用例數量非常巨大。是以當修改完成後手工回歸測試花費的時間過長,以至于不能做全面的回歸測試。

  風險更高。手工測試過程比計算機過程的錯誤和疏忽更多。人們會變得疲倦,輸入資料錯誤,不能總是正确執行測試,并不是總有時間測試所有應該測試的内容。

  5.自動化測試的好處

  自動化測試有很多好處,包括:

   快速執行。計算機在執行功能測試腳本的時候比人快得多,是以在有限的時間裡能測試的更多,在給定的時間裡更多的應用可以被測試,可以按時完成更多的工 程。并且和人不同,計算機一天工作24小時,還包括晚上,周末和假期;他們不會感到無聊或者疲倦;而且他們從不對該作的事情和不該作的事情自作主張。

   提高測試覆寫。自動測試産品支援在所有流行的浏覽器,作業系統等上執行測試腳本,用自動化的工具對不斷變化的應用和環境做回歸測試,要比手工測試容易得 多。通過整合的資料驅動表單的功能,自動化測試産品允許開發和測試團隊執行計算,操作資料集,以及快速建立多種反複的測試,使得擴大測試覆寫範圍。使用自 動測試工具可以仿效任何混合的事務和任意的使用者負載。

  提高測試精确度并提早發現更多錯誤。自動化測試給開發人員提供了一種再現和記錄軟體缺陷的非常容易的方法。這将在所有環境,資料集和業務過程等之間確定功能的正确性,同時對開發過程起到加速作用。

  提供規範化的過程。自動化測試鼓勵測試團隊規範化他們的過程,以得到更高的一緻性和更好的文檔記錄。

  提高測試的重用性。測試一旦腳本化,開發人員可以使用和重用這些腳本,可以将腳本添加到測試套件中,以适應應用的變化。沒有必要為每個應用的相同功能而重新建立腳本。

  支援erp/crm。現在越來越多的使用者使用erp/crm解決方案,對端到端的回歸測試的需求正變得越來越頻繁和越來越重要。

  6.在什麼情況下采用自動化測試?

  一般來說,把自動化測試的工作集中在關鍵的業務過程,複雜應用,以及由這些組成的用例方面(相對于低級别任務,例如系統級的驗證)是很有意義的。

   如果一個企業擁有衆多每天工作很多小時的軟體測試人員,但是産品仍然出現品質和功能問題,那麼這家企業肯定能從自動化測試中受益。是否決定實行自動化測 試應當充分考慮到投資回報,但是一般情況下,如果一個應用需要多次構造/更新檔/修改;需要在大量的硬體或軟體配置下進行測試;并且支援衆多并發使用者等,那 麼将會是值得采用自動化測試。另外,如果涉及到重複性的工作,例如資料裝載和系統配置等,或者應用需要滿足特定的服務等級協定(sla),那麼自動化測試 當然也會節約成本。

  7.如何确定自動化測試的投資回報?

  任何投資回報都可以從一個簡單的計算得出:

  投資回報=投資的淨現值/總初始成本

  當采用測試過程的自動化時,成本是切實可見的,但是淨現值仍舊包含許多無形的因素。最好的方法就是盡量精确計算直接成本,然後與自動化測試産生的直接和間接的效益進行對比。

  在roi計算中需要考慮的直接成本包括:

  購買成本:購買自動化測試軟體産品的成本。

  硬體成本:功能測試所必需的硬體成本。有代表性的是,功能測試不需要特殊的硬體,隻需帶有以太網端口的标準台式電腦或者工作站即可。

  勞動力成本:教育訓練職員編寫測試用例腳本或進行手工測試的成本因素。确認要包括招聘,雇傭,支付工資,和保留熟練的qa工程師的成本。

  教育訓練成本:依賴于所選擇的測試産品,教育訓練使用者精通編寫自動測試腳本是值得的。當然,公司可以選擇雇用專業的服務公司建立最初的自動化測試。

  當衡量自動化的潛在益處時,考慮隐性效益是很重要的,例如測試人員高漲的士氣和對工作的滿意度,改進的客戶滿意度和忠實度,還有因為最終使用者使用的可信賴的軟體而不斷提高的知名度。

  8.如何評估自動化測試軟體?

  很多商家提供自動化測試産品。每個解決方案都有自身的優勢和劣勢,獨特的功能,和市場環境。每個企業需求的特殊性決定了最适合的一種選擇。然而,任何自動化測試産品都應當包含一些關鍵的性能:

  內建的資料表:自動化功能測試的一個關鍵的好處就是可以使系統快速産生大量資料。還有一個重要的功能就是操作資料集,執行計算,并以最小的代價快速建立數以百計的重複測試群組合。企業應該尋找擁有提供強大計算能力的內建電子資料表單的産品。

   清晰明确的報告:如果測試結果不容易了解或解釋,那麼即使運作大量測試資料也不會有什麼好處。測試産品應當自動的産生并顯示所有測試運作方面的報告,并 用易讀的格式解釋結果。報告應當提供的細節包括:應用在什麼地方發生了失敗和使用了什麼樣的測試資料;為應用的每一步提供高亮或有差别的螢幕顯示;并提供 每個檢查點通過和失敗的詳細解釋。當然還應當能夠在不用修改的情況下,在測試和開發團隊之間共享報告。

  9.要點清單:自動化測試成功的五個關鍵

  即使已經證明了測試的自動化是經濟有效的,然而如何确定轉變到自動化測試過程上的最佳方法依然是困難的。這部分略述了執行自動化測試過程的五個基本原則。

  1.完成一個測試計劃文檔。了解被測應用的目标是任何測試成功的基礎。這包括全面的預先計劃以確定測試需求被正确的實施。測試工具應提供為所有被測應用管理測試用例和需求的能力。

  2.将測試細分為自動測試用例。一個組織自動執行一個測試計劃的所有方面是不可能的。自動化測試應該集中圍繞在需求設計的複雜應用上和急迫的業務過程功能上,許多組織發現他們使用自動化測試隻占總測試用例的60%,而餘下的40%為手工測試。

   3.建立自動化測試。測試工具極大簡化了準備測試資料和腳本的過程。這使得更多的完全測試可最佳地使用測試資源和結果。使用測試工具,使用者可以不必作 任何實際腳本而建立測試。測試工具應能自動捕獲目标應用的業務過程,并允許使用者建立一個可以被儲存的而且可以被管理的測試流程。

  4.提高測試覆寫的資料驅動測試。測試者就可以為應用建立一個使用儲藏在excel電子表格裡的特殊關鍵字的依賴于資料的測試。這就允許測試者通過應用驅動大量的測試資料。

  10.總結

  功能測試可以不是耗時或高成本的問題。采用自動化功能測試,企業可以将重點放在改進自動業務過程方面。開發和qa組可以增加測試過程的速度和精确度。整個it部門可以獲得更高的投資回報,而且降低了大量風險。

本文出自seven的測試人生公衆号最新内容請見作者的github頁:http://qaseven.github.io/