『壹』 軟體測試:使用自動化測試工具的意義在哪裡,使用自動化測試工具能發現BUG嗎 小弟測試新手
目前,軟體測試自動化的研究領域主要集中在軟體測試流程的自動化管理以及動態測試的自動化(如單元測試、功能測試以及性能測試方面)。在這兩個領域,與手工測試相比,測試自動化的優勢是明顯的。首先自動化測試可以提高測試效率,使測試人員更加專注於新的測試模塊的建立和開發,從而提高測試覆蓋率;其次,自動化測試更便於測試資產的數字化管理,使得測試資產在整個測試生命周期內可以得到復用,這個特點在功能測試和回歸測試中尤其具有意義;此外,測試流程自動化管理可以使機構的測試活動開展更加過程化,這很符合CMMI過程改進的思想。根據OppenheimerFunds的調查,在2001年前後的3年中,全球范圍內由於採用了測試自動化手段所實現的投資回報率高達1500%。
『貳』 軟體測試的意義和作用是什麼
一、軟體測試的意義
軟體測試(英語:Software Testing),描述一種用來促進鑒定軟體的正確性、完整性、安全性和質量的過程。換句話說,軟體測試是一種實際輸出與預期輸出之間的審核或者比較過程。
軟體測試的經典定義是:在規定的條件下對程序進行操作,以發現程序錯誤,衡量軟體質量,並對其是否能滿足設計要求進行評估的過程。
二、軟體測試的作用
1、在一些大型軟體開發過程中,測試活動需要花費大量的時間和成本,如果用手工測試,測試的效率非常低;而測試工具可以進行部分的測試設計、實現、執行和比較的工作。通過運用測試工具,可以達到提高測試效率的目的。
2、測試工具的發展,大大提高了軟體測試的自動化程度,讓測試人員從繁瑣和重復的測試活動中解脫出來,專心從事有意義的測試設計等活動。
3、採用自動比較技術,還可以自動完成測試用例執行結果的判斷,從而避免人工比對存在的疏漏問題。設計良好的自動化測試,在某些情況下可以實現 「 夜間測試 」 和 「 無人測試 」 。在大多數情況下,軟體測試自動化可以減少開支,增加有限時間內可執行的測試,在執行相同數量測試時節約測試時間。
(2)軟體自動化測試的意義擴展閱讀:
軟體測試原則
一,測試應該盡早進行,最好在需求階段就開始介入,因為最嚴重的錯誤不外乎是系統不能滿足用戶的需求。
二,程序員應該避免檢查自己的程序,軟體測試應該由第三方來負責。
三,設計測試用例時應考慮到合法的輸入和不合法的輸入以及各種邊界條件,特殊情況下還要製造極端狀態和意外狀態,如網路異常中斷、電源斷電等。
四,應該充分注意測試中的群集現象。
五,對錯誤結果要進行一個確認過程。一般由A測試出來的錯誤,一定要由B來確認。嚴重的錯誤可以召開評審會議進行討論和分析,對測試結果要進行嚴格地確認,是否真的存在這個問題以及嚴重程度等。
六,制定嚴格的測試計劃。一定要制定測試計劃,並且要有指導性。測試時間安排盡量寬松,不要希望在極短的時間內完成一個高水平的測試。
七,妥善保存測試計劃、測試用例、出錯統計和最終分析報告,為維護提供方便。
『叄』 軟體自動化測試,實用意義大嗎
自動化測試一般用在負載測試和壓力測試上,做性能測試的時候會用loadrunner。功能上的就是qtp啦,用腦子想想就能明白,自動化測試工具當然比手動測試的效率高。自動化測試必然是以後測試的發展方向!
『肆』 使用自動測試工具有哪些好處
自動化測試的優點:
1、對程序的回歸測試更方便。這可能是自動化測試最主要的任務,特別是在程序修改比較頻繁時,效果是非常明顯的。由於回歸測試的動作和用例是完全設計好的,測試期望的結果也是完全可以預料的,將回歸測試自動運行,可以極大提高測試效率,縮短回歸測試時間。
2、可以運行更多更繁瑣的測試。自動化的一個明顯的好處是可以在較少的時間內運行更多的測試。
3、可以執行一些手工測試困難或不可能進行的測試。比如,對於大量用戶的測試,不可能同時讓足夠多的測試人員同時進行測試,但是卻可以通過自動化測試模擬同時有許多用戶,從而達到測試的目的。
4、更好地利用資源。將繁瑣的任務自動化,可以提高准確性和測試人員的積極性,將測試技術人員解脫出來投入更多精力設計更好的測試用例。有些測試不適合於自動測試,僅適合於手工測試,將可自動測試的測試自動化後,可以讓測試人員專注於手工測試部分,提高手工測試的效率。
5、測試具有一致性和可重復性。由於測試是自動執行的,每次測試的結果和執行的內容的一致性是可以得到保障的,從而達到測試的可重復的效果。
6、測試的復用性。由於自動測試通常採用腳本技術,這樣就有可能只需要做少量的甚至不做修改,實現在不同的測試過程中使用相同的用例。
7、增加軟體信任度。由於測試是自動執行的,所以不存在執行過程中的疏忽和錯誤,完全取決於測試的設計質量。一旦軟體通過了強有力的自動測試後,軟體的信任度自然會增加。
『伍』 什麼是自動化測試
原文
首先我們從招聘崗位需求說起。看近期的職業機會,提到「軟體測試工程師」,基本上都有關於自動化測試的要求。例如:
了解 selenium、appium或者其他自動化測試框架;
至少熟悉一門面向對象開發語言,有一定的代碼功底優先;
熟悉Java或者python,有一定的測試自動化經驗和代碼閱讀能力;
了解介面集成測試,會使用JMeter、Postman、SoapUI等介面測試工具;
等等,上述內容不再一一列舉。突然自動化測試遍地開花,好像測試工程師的自動化測試能力成為了標配一般。本文就從自動化測試的要求入手,簡單的進行自動化測試掃盲,爭取讓各位在一分鍾之內了解自動化測試。
那麼我們就從「自動化測試」五個字來剖析。
一、測試
測試:這個我們熟悉。最經典的一個解釋「程序測試是為了發現錯誤而執行的過程。」這個來自於G.J.Myers的經典著作《軟體測試的藝術》的定義,給我們展示了測試的本質:過程。
測試是為了發現軟體的錯誤,而執行的過程,這個過程可以是以下內容:
運行被測試的軟體,執行軟體的功能;
運行其他工具,去檢查軟體的內部和外部。
總而言之,是一個過程,執行的過程。接下來就一張最常見的測試示意圖:
這個呢?自動化測試示意圖
『陸』 軟體自動化測試的意思是什麼具體價值體現在什麼方面能做些什麼事情
軟體測試是對創造力和智力非常有挑戰性的任務。測試一個大型軟體需要的智能要超過設計這個程序的智能。軟體在它發行之前應當通過徹底的測試,以保證它的可靠性和功能性,不幸的是,測試工程師要覆蓋一個大型程序的所有情況會感到太麻煩和太費時。確實,軟體的每個部分如能被分別測試到,同時一些指定的路徑也能被測試,這對總的軟體質量的保障是非常有效的。
一般的說,沒有測試覆蓋分析工具,軟體在發行前僅有50%的源程序被測試過。在差不多有一半源代碼沒有被測試的情況下,大量的故障(bug)隨軟體一道被發行出去。在這種情況下,軟體的質量、性能和功能不可能得到保障。此外,什麼時候測試結束?或是否要對該程序作進一步的測試?對於測試工程師和測試管理人員來說是不知道的,通過引進測試覆蓋的概念,問題就可以得到解決。
項目測試管理
1。幫助軟體管理者准確地測算開發組的效率的,通過提供多層分析,包括系統/文件/類/函數的能力。
2。提供管理人員測算工程開發進度與質量分析的能力,允許在被生成的類繼承圖和函數調用圖上,直接反顯所有在規定的日期或一個小組/單個員工完成的模塊,在這些圖上帶有覆蓋在每個類/函數框上以條形圖方式顯示的相關質量信息,比如大小、復雜性、數據性能、代碼測試覆蓋等。
3。 結合軟體系統質量分析能力和系統開發管理能力,提供給管理人員的帶有質量數據的有關開發效率和工程開發進度信息總是即時的和精確的,因為它們是直接從源代碼得來的第一
軟體測試是對創造力和智力非常有挑戰性的任務。測試一個大型軟體需要的智能要超過設計這個程序的智能。
軟體在它發行之前應當通過徹底的測試,以保證它的可靠性和功能性,不幸的是,測試工程師要覆蓋一個大型程序的所有情況會感到太麻煩和太費時。確實,軟體的每個部分如能被分別測試到,同時一些指定的路徑也能被測試,這對總的軟體質量的保障是非常有效的。
一般的說,沒有測試覆蓋分析工具,軟體在發行前僅有50%的源程序被測試過。
在差不多有一半源代碼沒有被測試的情況下,大量的故障(bug)隨軟體一道被發行出去。在這種情況下,軟體的質量、性能和功能不可能得到保障。此外,什麼時候測試結束?或是否要對該程序作進一步的測試?對於測試工程師和測試管理人員來說是不知道的,通過引進測試覆蓋的概念,問題就可以得到解決。
項目測試管理
1。幫助軟體管理者准確地測算開發組的效率的,通過提供多層分析,包括系統/文件/類/函數的能力。
2。提供管理人員測算工程開發進度與質量分析的能力,允許在被生成的類繼承圖和函數調用圖上,直接反顯所有在規定的日期或一個小組/單個員工完成的模塊,在這些圖上帶有覆蓋在每個類/函數框上以條形圖方式顯示的相關質量信息,比如大小、復雜性、數據性能、代碼測試覆蓋等。
3。 結合軟體系統質量分析能力和系統開發管理能力,提供給管理人員的帶有質量數據的有關開發效率和工程開發進度信息總是即時的和精確的,因為它們是直接從源代碼得來的第一手信息。
測試計劃
軟體系統不僅變得越來越龐大,但是也變得越來越復雜。復雜的代碼是很難閱讀、理解和修改的;必須化更多的精力去測試、維護和再測試。
測試復雜性分析能幫助軟體工程師容易並精確地去計劃他們的測試活動。 提供系統級復雜性分析和過程級復雜性分析去精確地測量復雜性,幫助工程師更好地計劃他們的測試活動。幫助工程師更好估計和使用測試復雜性度量,為滿足不同層次的測試覆蓋的要求,必需提供:塊測試復雜性、分支測試復雜性、段測試復雜性、條件-判定測試復雜性、條件-段測試復雜性。
『柒』 自動化測試有哪些優勢
1. 自動化測試可以替代大量的手工重復性操作, 可以讓測試人員留出更多的時間和精力去更加全面的設計測試用例或展開對新功能的測試工作
2. 自動化測試可以大大提高回歸測試的效率, 這一點可以充分迎合敏捷開發過程
3. 自動化測試可以讓測試人員更加合理的安排測試執行時間, 方便調整工作進度安排
4. 自動化測試可以完成一些手工測試難以達成的測試類型, 譬如性能測試里的高並發場景壓測等
5. 自動化測試也可以盡最大程度的避免由於人為原因導致的錯誤和遺漏
更多實戰小技巧可以到網路上找下黑馬程序員相關視頻,之前在他們官網上看過視頻中老師的經驗分享。
『捌』 軟體自動化測試是幹嘛的
恩,現在很流行的,但是大部分都是跟風而已,工作中有迷茫是好事,說明你在思考,不妨就那麼放著,做好眼前的事,隨著工作的深入,會找到適合自己的結論。
首先,什麼適合做自動化測試
重復性高的測試用例,比如版本更新很快,基本功能驗證的用例,回歸測試等
人力不可達或者極其費力的,比如10000次注冊,點擊,等
自動化測試的方法論
1.測試自動化類似於軟體開發的過程
錄制/回放腳本的開發方式是不可能應付所有自動化測試的需求的,因此,需要測試人員掌握必要的開發知識和編碼知識。
2.測試自動化是一個長期的過程
首先,不能期望自動化測試在短期內找到很多Bug,自動化測試只有在長期的多次運行後磁能體現它的價值。其次,不要認為只要購買了工具,錄制一些腳本,然後就可以安枕無憂的看著自動化測試實現想要的效果,需要考慮自動化測試腳本維護成本,隨著被測試應用程序功能的增加和修改,測試腳本的維護工具量會急劇的增加。
3.確保測試自動化的資源,包括人員和技能
最好有專門的自動化測試工程師來保證測試自動化持續,順利的進行下去,自動化測試工程師需要對項目測試自動化負責,設計測試框架和腳本結構,解決各種測試腳本的開發問題,確保自動化測試得以計劃,設計和有序的開發,維護。
4.循序漸進的開展自動化測試
不要一開始就把自動化設想的很大,這往往是不可實現的,應該從小開始,先熟悉工具和自動化測試的基本技能,然後,整合資源開始實現一些基本的自動化測試用例,例如:冒煙測試類型的自動化測試腳本,先實現那些容易實現的,且相對穩定的功能模塊的自動化測試,然後再考慮逐步擴展和補充其他相對難實現,或者是比較不穩定的功能模塊。
5.確保測試過程的成熟度
如果軟體企業的測試過程和項目管理過程的能力成熟度比較低,則實現自動化測試的成功率也比較低,在開展自動化測試之前,先考察一下軟體企業各方面的管理能力,;例如:測試是否獨立進行?有無配置管理?進度控制能力如何?如果各方面的能力成熟度都比較差的話,則不要盲目的引入測試自動化。
自動化的目標:
自動化測試應該是這樣的:
自動化應該是一種Service(Automation As A Service),所有的測試人員和開發人員都應該可以自己很方便的去跑自動化
自動化測試的運行結果應該是可以自動分析的,佔用很少的時間
自動化測試的成功率應該是要很高的(比如95%以上)
自動化應該是寫一次,運行很多次
『玖』 軟體測試的意義和作用是什麼
軟體測試的作用:
產品質量評估:為軟體產品發布(驗收測試)、軟體系統部署(性能規劃測試)、軟體產品鑒定(第三方獨立測試)和其他決策提供產品質量所需的各種信息和報告。
持續的質量反饋:通過持續的測試(需求評審、設計評審、代碼評審)對產品質量提供持續的、快速的反饋,從而在開發中不斷地及時解決質量問題,改進產品質量、減少各種返工。最大限度地降低軟體開發的劣質和成本。
客戶滿意度提升:通過測試發現要交付產品的各種缺陷,降低或消除產品的質量風險,提高客戶的滿意度。
缺陷預防:分析缺陷,找根本原因(流程缺失、不遵守流程、錯誤的行為方式、不良習慣等原因),總結出軟體缺陷模式,採取措施糾正深層次問題,避免將來再犯同樣的錯誤。
『拾』 什麼是自動化測試
一般是指軟體測試的自動化,軟體測試就是在預設條件下運行系統或應用程序,評估運行結果,預先條件應包括正常條件和異常條件。自動化測試是把以人為驅動的測試行為轉化為機器執行的一種過程。
基本信息
中文名稱
自動化測試
外文名稱
Test
定 義
人為驅動測試為轉為機器執行過程
應 用
軟體測試的自動化
工 具
QTP
自動化測試是把以人為驅動的測試行為轉化為機器執行的一種過程。通常,在設計了測試用例並通過評審之後,由測試人員根據測試用例中描述的規程一步步執行測試,得到實際結果與期望結果的比較。在此過程中,為了節省人力、時間或硬體資源,提高測試效率,便引入了自動化測試的概念。
折疊編輯本段工具介紹
折疊QTP
全名HP QuickTest Professional software ,2012年12月6日發布11.5版本,並更名為Unified Functional Testing
QTP是quicktest Professional的簡稱,是一種自動測試工具。使用QTP的目的是想用它來執行重復的手動測試,主要是用於回歸測試和測試同一軟體的新版本。因此你在測試前要考慮好如何對應用程序進行測試,例如要測試那些功能、操作步驟、輸入數據和期望的輸出數據等
QuickTest針對的是GUI應用程序,包括傳統的Windows應用程序,以越來越流行的Web應用。它可以覆蓋絕大多數的軟體開發技術,簡單高效,並具備測試用例可重用的特點。其中包括:創建測試、插入檢查點、檢驗數據、增強測試、運行測試、分析結果和維護測試等方面。
折疊WinRunner
Mercury Interactive公司的WinRunner是一種企業級的功能測試工具,用於檢測應用程序是否能夠達到預期的功能及正常運行。通過自動錄制、檢測和回放用戶的應用操作,WinRunner能夠有效地幫助測試人員對復雜的企業級應用的不同發布版進行測試,提高測試人員的工作效率和質量,確保跨平台的、復雜的企業級應用無故障發布及長期穩定運行。
企業級應用可能包括Web應用系統,ERP系統,CRM系統等等。這些系統在發布之前,升級之後都要經過測試,確保所有功能都能正常運行,沒有任何錯誤。如何有效地測試不斷升級更新且不同環境的應用系統,是每個公司都會面臨的問題。
折疊RationalRobot
是業界最頂尖的功能測試工具,它甚至可以在測試人員學習高級腳本技術之前幫助其進行成功的測試。它集成在測試人員的桌面IBM Rational Test Manager上,在這里測試人員可以計劃、組織、執行、管理和報告所有測試活動,包括手動測試報告。這種測試和管理的雙重功能是自動化測試的理想開始。
折疊AdventNetQEngine
AdventNet QEngine是一個應用廣泛且獨立於平台的自動化軟體測試工具,可用於Web功能測試、web性能測試、Java應用功能測試、Java API測試、SOAP測試、回歸測試和Java應用性能測試。支持對於使用HTML、JSP、ASP、.NET、PHP、JavaScript/VBScript、XML、SOAP、WSDL、e-commerce、傳統客戶端/伺服器等開發的應用程序進行測試。此工具以Java開發,因此便於移植和提供多平台支持。
折疊SilkTest
是業界領先的、用於對企業級應用進行功能測試的產品,可用於測試Web、Java或是傳統的C/S結構。SilkTest提供了許多功能,使用戶能夠高效率地進行軟體自動化測試。這些功能包括:測試的計劃和管理;直接的資料庫訪問及校驗;靈活、強大的4Test腳本語言,內置的恢復系統(Recovery System);以及具有使用同一套腳本進行跨平台、跨瀏覽器和技術進行測試的能力。
折疊QARun
QARun的測試實現方式是通過滑鼠移動、鍵盤點擊操作被測應用,即而得到相應的測試腳本,對該腳本可以進行編輯和調試。在記錄的過程中可針對被測應用中所包含的功能點進行基線值的建立,換句話說就是在插入檢查點的同時建立期望值。在這里檢查點是目標系統的一個特殊方面在一特定點的期望狀態。通常,檢查點在QARun提示目標系統執行一系列事件之後被執行。檢查點用於確定實際結果與期望結果是否相同
折疊TestPartner
是一個自動化的功能測試工具,它專為測試基於微軟、Java和Web技術的復雜應用而設計。它使測試人員和開發人員都可以使用可視的腳本編制和自動向導來生成可重復的測試,用戶可以調用VBA的所有功能,並進行任何水平層次和細節的測試。TestPartner的腳本開發採用通用的、分層的方式來進行。沒有編程知識的測試人員也可以通過TestPartner的可視化導航器來快速創建測試並執行。通過可視的導航器錄制並回放測試,每一個測試都將被展示為樹狀結構,以清楚地顯現測試通過應用的路徑。
折疊Holodeck
-強大的故障植入軟體測試工具
Holodeck is an advanced fault-injection tool that gives you the power to attack an application while it monitors and logs everything your application does - every function call, registry entry, piece of data read or written.
折疊TelelogicTAU
TAU第二代包含三個最新的、最強大的技術用來加速大規模軟體開發和測試:統一建模語言(UML)及它的許多最新修訂版本中的特性,UML2.0;功能強大的測試語言TTCN-3和新的構造系統的方法:Model Driven Architecture(模型驅動構架)。這三個新的業界標准結合成TAU的已經過認可的軟體開發平台,形成了一個系統,一個一流的穩定可靠的工具解決方案。TAU第二代是系統與軟體開發解決方案的一個突破,它把業界從使用了太長時間的手工、易出錯、以代碼為中心的方法中釋放出來,自然而然地邁向下一步,一個更加可視化、自動化及可靠的開發方法。Telelogic TAU/Tester是基於通用測試語言TTCN-3,用於自動化的系統和集成測試的強大工具。TAU/Tester以現代化的開發工具為基礎,提供高層測試功能,支持整個測試生命周期,加速自動化測試。TAU/Tester可使用戶特別關注於測試的開發,因為TTCN-3語言是獨立於開發語言或測試設備的,且是抽象和可移植的。
折疊AutoRunner
AutoRunner是黑盒測試工具,可以用來完成功能測試、回歸測試,可以提高測試效率,降低測試人工成本。
產品可以對以下類型對象進行GUI功能性測試:
1 Windows類型對象,一般為用C++/Delphi/VB/VFP/PB/.NetForm等技術開發的桌面程序。
2 IE網頁對象,一般性的網站,比如大的門戶類網站。
3 Java對象,一般為用AWT/Swing/SWT等技術開發的桌面程序。
4 Flex對象,網頁的內容是用Flex開發的。
5 Silverlight對象,網頁的內容是用Silverlight開發的。
6 WPF對象,一般為用WPF技術開發的桌面程序。
7 QT對象,一般為用QT技術開發的桌面程序。
折疊PhoenixFramework
Phoenix Framework是一款基於 Selenium,Webdriver,autoIt研發的一款集資源管理和測試於一體的Web自動化測試工具。最新版本是1.1.8,該工具支持無腳本執行模式,無人值守執行模式,自由定製模式。不僅執行模式可以定製,功能模塊也支持定製。使用該工具的界面創建用例,組裝腳本,啟動執行。使用該工具其他開放的介面,可手動創建腳本,組裝並執行。它支持兩種部署模式,第一種是Server-Client方式,Server與Client均為EXE程序,通信協議是Socket;另一種是WEB版部署,方便與現有系統集成,支持Linux,將Server與Client放到Tomcat或Weblogic伺服器下部署,通信協議為Http,通過WEB頁面控制並監控Client端的執行。
折疊編輯本段前提條件
實施自動化測試之前需要對軟體開發過程進行分析,以觀察其是否適合使用自動化測試。通常需要同時滿足以下條件:
1) 需求變動不頻繁
測試腳本的穩定性決定了自動化測試的維護成本。如果軟體需求變動過於頻繁,測試人員需要根據變動的需求來更新測試用例以及相關的測試腳本,而腳本的維護本身就是一個代碼開發的過程,需要修改、調試,必要的時候還要修改自動化測試的框架,如果所花費的成本不低於利用其節省的測試成本,那麼自動化測試便是失敗的。
項目中的某些模塊相對穩定,而某些模塊需求變動性很大。我們便可對相對穩定的模塊進行自動化測試,而變動較大的仍是用手工測試。
2) 項目周期足夠長
自動化測試需求的確定、自動化測試框架的設計、測試腳本的編寫與調試均需要相當長的時間來完成,這樣的過程本身就是一個測試軟體的開發過程,需要較長的時間來完成。如果項目的周期比較短,沒有足夠的時間去支持這樣一個過程,那麼自動化測試便成為笑談。
3) 自動化測試腳本可重復使用
如果費盡心思開發了一套近乎完美的自動化測試腳本,但是腳本的重復使用率很低,致使其間所耗費的成本大於所創造的經濟價值,自動化測試便成為了測試人員的練手之作,而並非是真正可產生效益的測試手段了。
另外,在手工測試無法完成,需要投入大量時間與人力時也需要考慮引入自動化測試。比如性能測試、配置測試、大數據量輸入測試等。
折疊編輯本段適用場合
通常適合於軟體測試自動化的場合:
(1)回歸測試,重復單一的數據錄入或是擊鍵等測試操作造成了不必要的時間浪費和人力浪費;
(2)此外測試人員對程序的理解和對設計文檔的驗證通常也要藉助於測試自動化工具;
(3)採用自動化測試工具有利於測試報告文檔的生成和版本的連貫性;
(4)自動化工具能夠確定測試用例的覆蓋路徑,確定測試用例集對程序邏輯流程和控制流程的覆蓋。
隨著測試流程的不斷規范以及軟體測試技術的進一步細化,軟體測試自動化已經日益成為一支不可忽視的力量。能否藉助於這支外在力量以及如何藉助於這支力量來規范企業測試流程、提高特定測試活動的效率,正是本期所要討論的話題。
軟體測試自動化的研究領域主要集中在軟體測試流程的自動化管理以及動態測試的自動化(如單元測試、功能測試以及性能方面)。在這兩個領域,與手工測試相比,測試自動化的優勢是明顯的。首先自動化測試可以提高測試效率,使測試人員更加專注於新的測試模塊的建立和開發,從而提高測試覆蓋率;其次,自動化測試更便於測試資產的數字化管理,使得測試資產在整個測試生命周期內可以得到復用,這個特點在功能測試和回歸測試中尤其具有意義;此外,測試流程自動化管理可以使機構的測試活動開展更加過程化,這很符合CMMI過程改進的思想。根據OppenheimerFunds的調查,在2001年前後的3年中,全球范圍內由於採用了測試自動化手段所實現的投資回報率高達1500%。
折疊編輯本段選型原則
然而存在優勢是否就一定意味著選擇自動化測試方案都能為企業帶來效益回報呢?也不盡然,任何一種產品化的測試自動化工具,都可能存在與某具體項目不甚貼切的地方。再加上,在企業內部通常存在許多不同種類的應用平台,應用開發技術也不盡相同,甚至在一個應用中可能就跨越了多種平台;或同一應用的不同版本之間存在技術差異。所以選擇軟體測試自動化方案必須深刻理解這一選擇可能帶來的變動、來自諸多方面的風險和成本開銷。
以下筆者給出企業用戶進行軟體測試自動化方案選型的參考性原則,這些原則是從筆者實際工作中凝練而成的,它包括以下六個方面的建議:
●選擇盡可能少的自動化產品覆蓋盡可能多的平台,以降低產品投資和團隊的學習成本;
●測試流程管理自動化通常應該優先考慮,以滿足為企業測試團隊提供流程管理支持的需求;
●在投資有限的情況下,性能測試自動化產品將優先於功能測試自動化被考慮;
●在考慮產品性價比的同時,應充分關注產品的支持服務和售後服務的完善性;
●盡量選擇趨於主流的產品,以便通過行業間交流甚至網路等方式獲得更為廣泛的經驗和支持;
●應對測試自動化方案的可擴展性提出要求,以滿足企業不斷發展的技術和業務需求。
折疊編輯本段過程
自動化測試與軟體開發過程從本質上來講是一樣的,無非是利用自動化測試工具(相當於軟體開發工具),經過對測試需求的分析(軟體過程中的需求分析),設計出自動化測試用例(軟體過程中的需求規格),從而搭建自動化測試的框架(軟體過程中的概要設計),設計與編寫自動化腳本(詳細設計與編碼),測試腳本的正確性,從而完成該套測試腳本(即主要功能為測試的應用軟體)。
1) 自動化測試需求分析。
當測試項目滿足了自動化的前提條件,並確定在該項目中需要使用自動化測試時,我們便開始進行自動化測試需求分析。此過程需要確定自動化測試的范圍以及相應的測試用例、測試數據,並形成詳細的文檔,以便於自動化測試框架的建立。
2)自動化測試框架的搭建。
所謂自動化測試框架便是像軟體架構一般,定義了在使用該套腳本時需要調用哪些文件、結構,調用的過程,以及文件結構如何劃分。
而根據自動化測試用例,我們很容易能夠定位出自動化測試框架的典型要素:
a. 公用的對象。
不同的測試用例會有一些相同的對象被重復使用,比如窗口、按鈕、頁面等。這些公用的對象可被抽取出來,在編寫腳本時隨時調用。當這些對象的屬性因為需求的變更而改變時,只需要修改該對象屬性即可,而無需修改所有相關的測試腳本。
b. 公用的環境。
各測試用例也會用到相同的測試環境,將該測試環境獨立封裝,在各個測試用例中靈活調用,也能增強腳本的可維護性。
c. 公用的方法。
當測試工具沒有需要的方法時,而該方法又會被經常使用,我們便需要自己編寫該方法,以方便腳本的調用。
d. 測試數據。
也許一個測試用例需要執行很多個測試數據,我們便可將測試數據放在一個獨立的文件中,由測試腳本執行到該用例時讀取數據文件,從而達到數據覆蓋的目的。
在該框架中需要將這些典型要素考慮進去,在測試用例中抽取出公用的元素放入已定義的文件,設定好調用的過程。
折疊編輯本段腳本編寫
該編寫過程便是具體的測試用例的腳本轉化。初學的自動化測試人員均會使用錄制腳本到修改腳本的過程。但專業化的建議是以錄制為參考,以編寫腳本為主要行為,以避免錄制腳本帶來的冗餘、公用元素的不可調用、腳本的調試復雜等問題。
折疊編輯本段測試運行
事實上,當每一個測試用例所形成的腳本通過測試後,並不意味著執行多個甚至所有的測試用例就不會出錯。輸入數據以及測試環境的改變,都會導致測試結果受到影響甚至失敗。而如果只是一個個執行測試用例,也僅能被稱作是半自動化測試,這會極大的影響自動化測試的效率,甚至不能滿足夜間自動執行的特殊要求。
因此,腳本的測試與試運行極為重要,它需要詳查多個腳本不能依計劃執行的原因,並保證其得到修復。同時他也需要經過多輪的腳本試運行,以保證測試結果得一致性與精確性。
自動化測試引入的原因是就把軟體測試人員從枯燥乏味的機械性手工測試勞動中解放出來,以自動化測試工具取而代之,使測試人員的精力真正花在提高軟體產品質量本身。
折疊編輯本段注意事項
首先,一個企業實施測試自動化,絕對不是拍腦袋說干就能幹好的,它不僅涉及測試工作本身流程上、組織結構上的調整與改進,甚至也包括需求、設計、開發、維護及配置管理等其他方面的配合。如果對這些必要的因素沒有考慮周全的話,必然在實施過程中處處碰壁,既定的實施方案也無法開展。其次,盡管自動化測試可以降低人工測試的工作量,但並不能完全取代手工測試。100%的自動化測試只是一個理想目標,根據筆者的經驗,即便一些如SAP、OracleERP等測試庫規劃十分完善的套件,其測試自動化率也不會超過70%。所以一味追求測試自動化只會給企業帶來運作成本的急劇上升。再次,實施測試自動化需要企業有相對規模的投入,對企業運作來說,投入回報率將是決定是否實施軟體測試自動化的最終指揮棒,筆者建議企業在決定實施軟體測試自動化之前,必須要做量化的投資回報分析。此外,實施軟體測試自動化並不意味著必須采購強大的自動化軟體測試工具或自動化管理平台,畢竟軟體質量的保證不是依靠產品或技術,更多的因素在於高素質的人員和合理有效的流程。
折疊編輯本段實戰模擬
折疊背景介紹
A公司是一家大型保險公司,擁有近20個城市的分公司,並在其中5個城市建立了IT支持中心。平均每年的上線應用數量在20個左右(新業務系統和原有業務系統的主要版本發布)。A公司的專職測試團隊人數不足30人而且測試團隊的測試人員技能參差不齊測試只是作為項目上線前的一道工序而已。在測試團隊內部也幾乎沒有自動化的手段,主要依靠手工測試。由於已上線應用系統的問題,開發團隊必須分出一部分資源去維護和修復上線應用,而同時測試團隊的測試成果和效率卻無法和這些應用質量掛鉤,也更無從談起對軟體質量的控制。所以,A公司決定在軟體質量和測試方面進行投入,他們考慮以下幾方面:
●引進軟體測試流程管理的自動化,提高軟體測試過程的管理水平,使軟體測試和軟體開發一樣可被評估、被衡量。
●實現性能測試自動化,所有應用上線之前必須有應用性能風險評估報告和相關部門的確認
●逐步實現功能測試的自動化,在目前人員配置的情況下,把部分手工測試變成自動化測試,提高測試可信度,降低人為錯誤。
●通過軟體測試自動化,管理軟體測試中的案例、缺陷、報告等資產,進一步提升軟體測試的效率並建立測試基礎庫。
●在規劃中,將來的2~3年內使所有的應用系統上線都必須有數字化的測試數據作為依據。
折疊系統的情況
由於保險公司的業務種類繁多,同時在經過了幾十年的經營後,公司內的應用系統從早期的終端方式到現代的J2EE和.NET等應有盡有,魚龍混雜。IT部門已經建立的3年規劃,即在未來的3年時間內將所有終端和C/S方式的應用轉換成B/S架構,但當前仍然需要對這些舊應用系統進行維護,以保證業務的順利進行。對於開發部門來說,新應用開發基本上已經以B/S架構為主,主要是基於J2EE架構的WebHTTP應用和部分Window.NETForm的應用。
折疊公司現狀
企業機構在做測試自動化選型時一定要考慮清楚企業內部哪些部分可以實施自動化、哪些部分暫不實施自動化、哪些部分僅在某幾個項目做自動化試點。切忌匆忙上馬或盲目否定,缺乏實事求是的理性思考。
測試部門僅負責系統測試和對用戶驗證測試進行管理,對於之前的單元測試和集成測試主要由開發團隊中劃分出的一部分臨時測試人員完成。由於缺乏監測手段,測試部門也無法收集和確定集成測試和單元測試的完成情況,在整個軟體測試過程中,業務需求是由開發部門通過RationalRequisitePro進行管理,但測試需求尚沒有提出要求,測試案例主要通過在公司公用的文件伺服器中的目錄管理方式管理,對測試中缺陷流程等管理主要依靠郵件的流轉進行處理90%以上的測試是通過Excel和Word等測試案例文檔來完成,測試人員對軟體測試自動化的認識僅停留在"記錄+回放"的認識上。
折疊方案
方案A:A公司可以採用美科利(Mercury)公司產品為主的軟體測試自動化方案。
●依照原先的郵件流轉過程配置TestDirector缺陷管理流程,為每個保險業務的開發小組和測試團隊分配相應的用戶許可證,取消原有郵件方式。
●部署MercuryQuickTestProfessional,以便完成應用程序相關功能測試。
●部署MercuryLoad-Runner。從測試團隊中分化出專職的性能測試自動化工程師和小組,和業務部門協調,建立A公司應用系統上線性能指標,通過LoadRunner給出測試指標。
●建議A公司成立專門的質量控制部門,對TestDirector中的數據定期進行分析,建立相關質量模型,以便於企業量化管理和過程改進。
方案B:A公司也可以採用IBMRational產品為主的軟體測試自動化方案。
●採用RationalTestmanager來進行整個測試流程的管理,為相關開發和測試小組成員分配相應許可權,改變以前通過郵件以及Word、Excel文檔管理測試的工作方式。
●部署RationalRobot,用它來完成功能相關的測試工作以及新版本發布時的冒煙測試。此外,RationalRobot也能較好地完成性能相關測試。統一的操作方式降低了工具的學習周期和培訓帶來的大筆開銷。
●部署RationalPurifyplus,使測試工作前移到開發階段。由於Purifyplus能較好地支持白盒測試,編程人員在編碼階段引入的錯誤能盡早被檢測到,這大幅降低了後期測試的開銷。
●建議A公司成立專門的質量控制部門,對Testmanager中的數據定期進行分析,建立相關質量模型,以便於企業量化管理和過程改進。
方案C:A公司也可以採用開源軟體為主的軟體測試自動化方案。
●採用Bugzilla來進行Bug跟蹤管理,採用BugzillaTestRunner進行測試用例管理,採用CVS進行測試資源的配置管理。
●採用MaxQ和WebInject對B/S結構的應用系統進行功能測試。
●採用DBMonster、Open-STA、LoadSim進行性能相關測試。
●可採用Xunit架構的開源工具對不同語言的程序單元進行單元測試。
●建議A公司成立專門的開源軟體維護小組,以解決可能會碰到的工具維護工作。
●建議A公司成立專門的質量控制部門,對Bugzilla、TestRunner、CVS中的數據定期進行分析,建立相關質量模型,以便於企業量化管理和過程改進。
折疊方案評價
由於不同客戶在組織架構、員工素質以及流程管理水平等方面的不同,我們很難用一個實例、一兩句話來說明不同解決方案的適用性。在上面的例子中,筆者給出了3種可行的方案,具體選擇哪一個,需要仔細權衡。這里筆者給出一般性的意見,對於不想受制於某個測試自動化廠家的企業,開源絕對是一個理想的選擇。此外,它不需要支付成本,工具的源代碼可以隨意修改,因而具有較好的靈活性。但開源工具的弊端也是明顯的:缺乏使用培訓和技術支持,工具的用戶界面一般也較為粗糙。而對於那些比較看重培訓和售後支持的企業,筆者建議選擇IBMRational或Mercury或其他廠家的產品。這樣雖然需要支付一部分費用,但省去了工具維護所需要的大量工作。至於具體選擇哪個廠家的產品為好,筆者尚無結論性意見。相信讀者朋友都有一些見仁見智的看法,不妨來信交流。