qileilove

          blog已經轉移至github,大家請訪問 http://qaseven.github.io/

          自動化測試技術的探討與研究

           摘要:軟件測試軟件開發中占有非常突出的重要位置,軟件必須通過測試才能確保其在應用環境中正常工作。在測試過程,運用自動化軟件測試技術可以減少測試周期,節約人力成本,同時也減少了人為出錯的機率。

            本文通過對自動化測試技術的介紹,對當前流行的幾種自動化測試技術以及自動化測試工具的比較,系統全面的討論了自動化測試技術。首先從介紹自動化測試的基本概念入手,然后對當前幾種比較流行的自動化測試技術進行了研究和比較,接著介紹了幾款成熟的自動化測試工具,最后對自動化測試進行了總結和展望。

            關鍵詞:自動化測試;手動測試;測試用例;測試工具;

            一、前言

            軟件測試是對創造力和智力非常有挑戰性的任務。測試一個大型軟件需要的智能要超過設計這個程序的智能。 軟件在它發行之前應當通過徹底的測試以保證它的可靠性和功能性。測試工程師要覆蓋一個大型應用程序的所有情況是一件非常麻煩和費時的事情,但為了保證軟件質量,我們不得不這樣做。那么有沒有省時省力的技術或者工具去幫我們做這樣的事情呢,由此便有了下面對于自動化測試技術的探討。

            二、自動化測試的概念

            自動化測試一般是指軟件測試的自動化,軟件測試就是在預設條件下運行系統或應用程序,評估運行結果,預先條件應包括正常條件和異常條件。

            自動化測試一般包括測試過程自動化和測試結果分析自動化。測試過程的自動化指的是不用手工逐個的對用例進行測試。測試結果分析自動化指的是不用人工一點點去分析測試過程中的中間結果或數據流。

            軟件自動化測試就是模擬手動測試步驟,執行用某種程序設計語言編制的測試程序,控制被測軟件的執行,完成全自動或半自動測試的過程。全自動測試就是指在自動測試過程中,根本不需要人工干預,由程序自動完成測試的全過程。半自動測試就是指在自動測試過程中,需要手動輸入測試用例或選擇測試路徑,再由自動測試程序按照人工指定的要求完成自動測試。

            三、自動化測試的前提

            對于開發出來的軟件產品,是不是都可以使用自動化測試技術,這個答案顯然是否定的,對于是否應用自動化測試技術我們需要一定的前提條件。

            1)軟件需求變動不頻繁。

            測試腳本的穩定性決定了自動化測試的維護成本。如果軟件需求變動過于頻繁,測試人員需要根據變動的需 求來更新測試用例以及相關的測試腳本,而腳本的維護本身就是一個代碼開發的過程,需要修改、調試,必要的時候還要修改自動化測試的框架,如果所花費的成本 不低于利用其節省的測試成本,那么自動化測試便是失敗的。項目中的某些模塊相對穩定,而某些模塊需求變動性很大。我們便可對相對穩定的模塊進行自動化測試,而變動較大的仍是用手工測試。

            2)項目周期足夠長。

            由于自動化測試需求的確定、自動化測試框架的設計、測試腳本的編寫與調試均需要相當長的時間來完成。這樣的過程本身就是一個測試軟件的開發過程,需要較長的時間來完成。如果項目的周期比較短,沒有足夠的時間去支持這樣一個過程,那么自動化測試便成為笑談。

            3)自動化測試腳本可重復使用。

            如果費盡心思開發了一套近乎完美的自動化測試腳本,但是腳本的重復使用率很低,致使其間所耗費的成本大于所創造的經濟價值,自動化測試便成為了測試人員的練手之作,而并非是真正可產生效益的測試手段了。

            另外,在手工測試無法完成,需要投入大量時間與人力時也需要考慮引入自動化測試。比如性能測試、配置測試、大數據量輸入測試等。

            四、自動化測試與手動測試

            自動化測試相對于手工測試的優點:

            ● 優化測試速度:可非常快速的運行上萬條記錄

            ● 提高準確性、穩定性:可以不為外界因素干擾,準確運行測試用例

            ● 確定性:能真實快速搭建測試環境,測試數據,重現缺陷

            ● 提高工作效率:一邊運行自動化測試,一邊準備測試報告

            ● 測試環境搭建:可以結合多種編程語言及技術協助搭建測試環境,防止手工測試重復勞動,如批處理技術

            ● 提高技能:可提高測試人員技能,同時提高對測試的興趣,防止對手工測試感覺枯燥

            但是對于自動化測試也不要進入一個誤區,有自動化測試不再需要手工測試這種觀點是不對的。自動化測試雖然有如此多的優點,但是有些測試比如:本地化測試、用戶體驗測試、測試環境搭建方面并不能完全代替手工測試。自動化測試的基礎也必須是對產品的運行,測試點有一定的手工測試的基礎,自動化測試和手動測試是相輔相成的。自動化測試并不僅指自動化運行測試產品,數據處理也是非常重要的一個環節。并非只是自動化測試工具如QTP,Loadrunner,等才可以做自動化測試,很多的編程語言都可以運行自動化測試。比如QTP就是基于VBScript語言的一款自動化測試工具,只是在VBS上的一些封裝。

            五、自動化測試技術比較

            ● 基于組件的自動化測試技術

            該測試是針對軟件設計的最小單位——組件,進行正確性檢驗的測試工作.其目的在于發現各組件內部可能存在的各種差錯,確保每個組件都能有效實現自己的預期功能。這一步是為了在選擇組件階段把好組件“準人”關,無論是自己開發組件、第三方組件或是其它來源的組件,都要對每一個組件進行測試。組件自身測試是典型的黑盒測試,即在不考慮代碼內部結構的前提下,根據需求對應用程序進行測試。它的任務足驗證組件的功能及其它特征是否與預期的要求一致。組件測試時應充分考慮到該組件可能涉及到的盡可能多的內外環境因素。

          基于組件的自動化測試技術的過程模型

            ● 基于關鍵字驅動的自動化測試技術

            在我們的測試腳本中可能會用到上千條這樣的語句,測試工具通過按鈕名字和顯示文本來識別這個按鈕。可以想見,當其中任何一個發生改變時,所有相關的腳本都會受到影響,維護這樣的腳本是十分困難的。為解決該問題,我們可以做到以下幾個分離,界面元素名與測試內部對象名的分離,測試描述與具體實現細節的分離,腳本與數據的分離。以上這“三個分離”正是關鍵字驅動自動化測試的核心思想,各司其職、互相獨立,才能最大程度地減少相互之間的影響。

          基于關鍵字的自動化測試模型

            ● 基于數據操作的自動化測試技術

            所謂數據操作操作自動化測試技術,就是把數據作為測試動作應用的基本對象,并以此為出發點,把對數據驅動的軟件測試活動轉化為一系列數據操作,通過不同的數據操作體現被測軟件的應激狀態,進而達到軟件測試的目的。從上文可知,關鍵字驅動腳本通過導航腳本控制,分別讀取關鍵字支持腳本和數據文件的固有機制帶來了執行效率問題,因此可以合并導航腳本和關鍵字支持腳本,即提高關鍵字腳本所處的層次,也就是說,把腳本執行控制字和數據操作關鍵字合并,形成一種真正的面向數據操作的腳本語言,同時為了解決文件數據固定問題,使用另一種腳本來描述多樣的數據結構,同時把對數據的不同加工方式融入腳本描述中,這樣就解決了數據結構定制和完備產生的困難。

            ● 基于模型驅動的自動化測試技術

            模型驅動測試就是通過對SUT的功能與系統結構進行分析,然后結合測試策略構建起全面、清晰的測試模型,最后通過測試模型自動生成測試用例驅動測試人員完成SUT的測試。模型驅動測試的優點主要有兩方面:

            (1)測試模型為用戶提供了更加清晰、準確和系統的測試設計。無論是基于數據驅動的還是基于關鍵字驅動的自動化測試技術展現給用戶的都是一個個互不相關的測試用例啪,用戶很難從生成的測試用例中理解整個測試系統的結構與測試重點。

            (2)減少了測試用例維護工作,實現了測試資源的重利用,有效縮短了測試周期。建立起測試模型后,測試系統沒計師可以在測試需求或SUT的系統設計規格發生改變后通過調整測試模型(而不是個性測試用例)來適應變化。

          基于模型驅動的自動化測試架構圖

            ● 基于數據驅動的自動化測試技術

            數據驅動自動化測試是一種數據被包含在輸入測試數據文件中,并且以數據來控制自動化測試腳本執行的流程和動作的測試。輸入測試數據記錄是從外部文件中讀入的,并且是獨立于測試腳本程序開發的。數據驅動測試使用存檔的測試數據來驅動自動化測試過程,這些數據通常以簡單的文本文件或Excel文件(電子表格)形式存在。

          基于數據驅動的自動化測試框架圖

            六、自動化測試工具介紹

            隨著計算機應用的日益普及和深化,現代軟件的規模越來越大、類型越來越復雜。設計人員和使用人員都希望在將軟件系統投入運行之前,能盡可能地提高軟件的質量。軟件測試對確保軟件質量有著極其重要的作用,但是手工的測試工作是非常繁瑣和低效率的,為了更有效的進行軟件測試,讓一部分工作利用自動化工具進行自動測試是非常有效的方法。下面為幾款具有代表性的自動化測試工具。

            Rational Robot

            是業界最頂尖的功能測試工具,它甚至可以在測試人員學習高級腳本技術之前幫助其進行成功的測試。它集成在測試人員的桌面IBM Rational Test Manager上,在這里測試人員可以計劃、組織、執行、管理和報告所有測試活動,包括手動測試報告。這種測試和管理的雙重功能是自動化測試的理想開始。

            Win Runner

            是一種企業級的用于檢驗應用程序是否如期運行的功能性測試工具。通過自動捕獲,檢測,和重復用戶交互的操作,Win Runner能夠辨認缺陷并且確保那些跨越多個應用程序和數據庫的業務流程在初次發布就能避免出現故障,并且保持長期可靠運行。

            QuickTest Professional

            是一個功能測試自動化工具,主要應用在回歸測試中。QuickTest針對的是GUI應用程序,包括傳統的Windows應用程序,以及現在越來越流行的Web應用。它可以覆蓋絕大多數的軟件開發技術,簡單高效,并具備測試用例可重用的特點。其中包括:創建測試、插入檢查點、檢驗數據、增強測試、運行測試、分析結果和維護測試等方面。

            AdventNet QEngine

            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);以及具有使用同一套腳本進行跨平臺、跨瀏覽器和技術進行測試的能力。

            QA Run

            QARun的測試實現方式是通過鼠標移動、鍵盤點擊操作被測應用,即而得到相應的測試腳本,對該腳本可以進行編輯和調試。在記錄的過程中可針對被測應用中所包含的功能 點進行基線值的建立,換句話說就是在插入檢查點的同時建立期望值。在這里檢查點是目標系統的一個特殊方面在一特定點的期望狀態。通常,檢查點在QARun提示目標系統執行一系列事件之后被執行。檢查點用于確定實際結果與期望結果是否相同。

            Test Partner

            是一個自動化的功能測試工具,它專為測試基于微軟、Java和Web技術的復雜應用而設計。它使測試人員和開發人員都可以使用可視的腳本編制和自動向導來生成可重復的測試,用戶可以調用VBA的所有功能,并進行任何水平層次和細節的測試。TestPartner的腳本開發采用通用的、分層的方式來進行。沒有編程知識的測試人員也可以通過TestPartner的可視化導航器來快速創建測試并執行。通過可視的導航器錄制并回放測試,每一個測試都將被展示為樹狀結構,以清楚地顯現測試通過應用的路徑。

            Telelogic TAU

            TAU第二代包含三個最新的、最強大的技術用來加速大規模軟件開發和測試:統一建模語言(UML)及它的許多最新修訂版本中的特性,UML2.0;功能強大的測試語言TTCN-3和新的構造系統的方法:Model Driven Architecture(模型驅動構架)。這三個新的業界標準結合成TAU的已經過認可的軟件開發平臺,形成了一個系統,一個一流的穩定可靠的工具解決方案。TAU第二代是系統與軟件開發解決方案的一個突破,它把業界從使用了太長時間的手工、易出錯、以代碼為中心的方法中釋放出來,自然而然地邁向下一步,一個更加可視化、自動化及可靠的開發方法。

            Telelogic TAU/Tester是基于通用測試語言TTCN-3,用于自動化的系統和集成測試的強大工具。TAU/Tester以現代化的開發工具為基礎,提供高層測試功能,支持整個測試生命周期,加速自動化測試。TAU/Tester可使用戶特別關注于測試的開發,因為TTCN-3語言是獨立于開發語言或測試設備的,且是抽象和可移植的。

            七、總結

            通過研究和比較當前比較流行的幾種自動化測試技術,我們可以對自動化測試技術發展方向做出以下展望。

            采用標準化架構

            在企業產品線日益膨脹的情況下,采用一個標準化架構開發通用測試平臺是行之有效的方法,以提高產品從研發到生產測試的整個生命周期里測試硬件和軟件組件的復用性。

            多通道RF測試

            無線技術變革已經對測量測試行業產生巨大影響,其中兩個關鍵技術趨勢尤為突出,其一是MIMO技術,其二便是多種無線標準在同一系統中的集成。這兩個技術趨勢都要求射頻測量系統能夠實現并行測試,這就需要可配置的多通道射頻測試系統。

            Peer-to-Peer高速傳輸與計算

            隨著測試需求的日益復雜和數據量的指數態增長,自動化測試系統需要更強的處理能力,分布式處理的架構也隨之被提出。新一代高性能分布式架構應以下具有高吞吐量點對點拓撲結構、低延遲、能夠提供用戶自定義處理節點這三大特性。

          posted on 2013-06-24 11:32 順其自然EVO 閱讀(463) 評論(0)  編輯  收藏 所屬分類: selenium and watir webdrivers 自動化測試學習

          <2013年6月>
          2627282930311
          2345678
          9101112131415
          16171819202122
          23242526272829
          30123456

          導航

          統計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 辉南县| 绍兴县| 汉川市| 阳原县| 历史| 青冈县| 涪陵区| 靖边县| 卢湾区| 阳西县| 班戈县| 赤壁市| 巢湖市| 夏津县| 天长市| 邢台市| 凯里市| 鹿邑县| 吉安市| 沁水县| 堆龙德庆县| 明溪县| 博湖县| 射阳县| 子长县| 全南县| 定西市| 通州市| 蕉岭县| 北宁市| 海丰县| 琼结县| 宽甸| 梁山县| 亚东县| 保定市| 阿勒泰市| 和平区| 太仆寺旗| 望江县| 沧州市|