qileilove

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

          功能測試自動化的投入和產出

           測試自動化,對于系統性能測試、負載測試等效果是明顯的,而且我們也不得不為之。
          我們知道,沒有測試工具進行負載模擬,要通過手工測試完成系統測試任務,幾乎是不可能的。但在功能測試中,情況就大不一樣了。

          手工測試在功能測試中的優勢還是比較大的,工具本身并沒有想象力和靈活性,而人對界面美觀性、邏輯合理性,容易作出判斷。

          所以功能測試自動化主要的應用 在回歸測試中,而且產品的界面(UI)和功能變化較大,自動化的腳本(Script)維護成本較大,投入和產出往往變成我們最關心的問題,在功能測試中實 現測試自動化究竟是否合算?

            舉個例子:假如一個功能測試用例,手工運行需要10分鐘,而為此測試用例開發腳本需要4個小時,即240分鐘,那么意味著這個測試腳本要被運行24次收回成本,如果在加上測試腳本的維護工作量(10%),需要重復運行40-50次,才收回成本。如果在產品的一個版本中要進行2-3輪測試(一般是需要的),這個產品需要發布15-20個版本才收回成本。所以業界常說,產品發布7個版本才收回成本。

            如何降低成本、可以相對增加產出或者說更快地收回成本?關鍵是提高腳本開發速度、提高腳本運行的穩定性和降低維護腳本的工作量,主要方法有:

            - 選擇較好的、更適合的測試工具

            - 選擇適宜自動化的模塊

            - 盡量將腳本寫成數據驅動的腳本,這一點很重要。

            - 多錄制腳本,然后結構化腳本。我們知道,不是所有的模塊都可以變為數據驅動方式,這時就要抽象出腳本的結構,進行有效的組合,包括分層,形成有效的層次性。

            - 測試和腳本開發合二為一,效率更明顯

            下表也部分說明了這個問題。也希望得到您更好的想法。

          結構
          成本
          收益
          凈收益
          No Automation
          0
          0
          0
          Recording and Playback
          8.3
          11
          2.7
          Data-drivenstructure using data pools
          8.4
          18
          9.6
          Framework structure
          9.8
          15
          5.2
          Framework / data-driven (hybrid) structure focusingon views of the application and using data pools
          11.6
          19
          7.4

          posted @ 2011-10-13 17:16 順其自然EVO| 編輯 收藏

          IBM測試流程

            在“測試評估和計劃”中的一些測試計劃和測試策略等活動的介紹,可以在網上搜索到,而且這些內容對于初學者來說只需要了解就行了,因為這些內容大多是測試經理和測試架構師在做。

            在本章節的介紹中

            測試用例的內容:

            測試用例是為特定的目的而設計的一組測試輸入、執行條件和預期的結果。測試用例是執行的最小實體。

            開始點:當需求已經被記載和復查,相關的測試方案已獲批準的時候,測試用例開發才開始。

            結束點:測試用例是用于整個測試執行階段,并且為后續項目回歸測試用例重用而保留。

            測試用例的作用:測試用例是執行的最小實體。簡單地說,測試用例就是設計一個場景,使軟件程序在這種場景下,必須能夠正常運行并且達到程序所設計的執行結果。

            測試數據的內容:

            測試用例在執行過程中,需要一些數據輸入。測試數據準備就是在這些測試用例執行前,準備一些這些測試用例需要的測試數據。測試數據和測試用例的結合,產生一個可重復使用的,獨特的,可追溯至應用需求的測試場景。

            開始點:當測試方案已獲批準后,測試數據準備與測試用例開發進行。

            結束點:在測試準備期間和整個測試執行期間,測試數據將被積極地使用和完善。所有測試數據將被保留為回歸測試和后續項目的自動化重用。

            測試數據的作用:測試數據對可重復使用的測試用例具有非常重要的支持性,支持應用程序的質量分析的定義。

            測試用例可以被反復使用,在回歸測試的時候測試,或者在下一測試階段的時候或者在下一軟件版本的時候會反復用到這些測試用例。有些時候原封不動的使用這些用例,有些時候是要做一些修改優化,有些時候是要做一些。

            有些時候在做測試準備的時候,要花很多時間建立測試環境和測試數據,而測試執行卻花很少的時間。測試數據對測試的驗證和測試結果的分析,具有重要的意義,特別是對測試結果的分析具有支撐意義。

            測試設計的能力應該是測試工程師應該具有的很重要的能力之一。在我的博文《測試用例設計步驟》中包含到有少量關于測試分析的,請讀者自行到網上搜索測試分析的相關知識,本理論在此不做介紹。

            在我的博文《測試數據的選擇》和《軟件測試數據的準備》等博文中有介紹測試數據的相關知識,故在這里不再做過多的討論。

            在我的博文《測試用例基本概念》、《測試用例設計白皮書--等價類劃分方法》和《測試用例的粒度的討論》等博文中有關于測試用例測試的詳細討論。

          相關鏈接:

          IBM軟件測試理論——測試類型和測試階段

           

          BM軟件測試理論——測試類型和測試階段


            從第一張圖片可以看出,最上面一條是典型的軟件開發生命周期,那是一條時間軸,給下面的測試定 義在那項測試發生在軟件生命周期上的哪一部分做參考。很多不懂測試的或者只是懂點點測試知識的朋友,對測試中的很多定義是混亂的,把各類按照不同標準劃分 的測試類型混在啦一起。這一節將會把按照不同標準劃分的測試類型講述清楚,后面的章節會把這些測試中的定義闡述得比較清楚。

            從軟件質量保證上來劃分測試,測試可以劃分成靜態測試和動態測試。靜態測試就是指不運行被測程序本身,僅通過分析或檢查源程序的文法、結構、過 程、接口等來檢查程序的正確性,靜態測試可以分為代碼審查、代碼走讀、文檔審查等行為動態測試是指通過運行被測程序,檢查運行結果與預期結果的差異,并 分析運行效率和健壯性等性能的測試過程。從那條參考的時間軸上來看,動態測試和靜態測試可以發生在整個軟件生命周期的全過程。關于靜態測試和動態測試的更 多討論在我的博文《靜態測試和動態測試》中有比較詳細的討論。

            按照測試技術(test techniques)劃分,測試可以劃分為白盒測試、黑盒測試和灰盒測試。在這套理論的介紹中,后面會有專門的一節來介紹這三種測試。其中灰盒測試是指 白盒和灰盒測試相混合的一種測試。從那條參考的時間軸來看,白盒測試發生時間比較靠前,黑盒測試發生時間比較靠后,而灰盒測試發生的時間介于2者之間。

            按照測試階段(test levels)劃分,測試可以劃分單元測試、集成測試、系統測試、系統集成測試、用戶驗收測試和維護測試,這一劃分是根據軟件生命周期和測試生命周期中自然形成的階段進行劃分的,當然越靠前的測試越先進行。

            從第二幅圖可以看出,單元測試和集成測試是由開發團隊來做的,而集成測試和系統集成測試是由測試人員來做的,用戶驗收測試是由用戶和測試團隊來 做的,及時用戶不參與,測試人員也是在用戶的角度進行測試的,這里沒有做維護方面的測試。單元測試是指針對各個單元模塊進行的測試;集成測試就是由更多的 已經完成了單元測試的測試單元構成的測試,集成測試仍然不是在一個完整的測試過程上測試;系統測試是程序第一次以一個完整的個體形式進行運行而進行的測 試;而系統集成測試在系統測試的基礎上,還要關注整個軟件系統與外界的交互,比如調用打印機,比如與本軟件系統以外的其他系統進行交互;用戶驗收測試也就 是通常大家所說的UAT,這個時候整個軟件系統已經有了比較好運行狀態,可以接受用戶驗收測試啦。每一階段的結束被看做是輸出,都是作為下一階段的輸入, 在測試流程上有明確的定義什么這些輸入和輸出的標準,后面的章節會對這些標準做詳細的闡述。每一階段的測試,都應該包含前一階段的測試內容,也就是前一階 段的測試內容,但是側重點不一樣,從紅色的箭頭和紅色的邊框可以看出各個階段的測試側重點。比如UAT過程中遇到了不屬于UAT測試項的bug,當然也是 屬于UAT的內容。

            按照測試類型(test types)劃分,這些劃分包含審計和控制、文檔和過程、功能、需求、接口、回歸測試、備份和恢復、工作流、性能、壓力、容量、變換、安裝、錯誤處理、并 行、事物流、可用、UI、可操作性和安全性等方面的測試。具體的一些測試類型的定義,可以從網上搜索得知。

            各個測試類型可以發生在各個的測試階段,從第三幅圖可以看出,每個測試階段所涉及到的測試類型,而靜態測試應該和這些測試階段并列開來,也可以 理解成這些測試階段都是屬于動態測試的。從橫行可以看出錯誤處理和回歸測試發生在所有的測試階段,因為每個階段都會有bug,有bug就會有回歸,當然回 歸測試會發生在各個測試階段。從豎行上可以看出,系統測試涉及到了最多的測試類型,因為這個時候軟件系統是第一次以一個完整的個體而運行,需要的測試方面 是最多的。也并不是所有階段都要進行所有的類型測試。


           


           

          IBM軟件測試理論——白盒測試、黑盒測試和灰盒測試


           

           按照測試技術test techniques)劃分,測試可以劃分為白盒測試黑盒測試灰盒測試

            我用google翻譯翻譯了每頁左下角解釋什么是白盒測試、黑盒測試和灰盒測試的部分,不太準確,準確的話請看英文原文。

            在這套理論中,關于白盒測試的描述是:

            1、白盒測試,是對一個軟件組件或系統內部的設計知識為基礎的測試。

            2、白盒測試是邏輯為導向,重點是通過對某些軟件測試的執行路徑。

            3、測試設計決定被測軟件所需要的一定路徑下輸入設定,并指定每個輸入的預期將要采取的路徑和輸出。

            4、測試執行運行有指定輸入的軟件,檢查了預期的路徑追蹤,有產出符合預期的結果。

            5、代碼覆蓋測試經常被用來評估白盒測試的徹底情況。

            在這套理論中,關于黑盒測試的描述是:

            1、“黑盒測試”描述的是不管一個軟件組件或系統內部的設計知識的測試。

            2、黑盒測試是需求導向,在所有測試階段使用。

            3、黑盒測試專注于輸入和輸出的軟件測試。所有可能的輸入和/或輸入組合輸入到測試系統。有效和無效的輸入也是用來測試系統。

            4、測試設計根據軟件的設置,在確定的輸入情況下,指定每個輸入的預期輸出。

            5、測試執行是運行有指定的輸入情況下的軟件,檢查對預期輸出的結果。

            在這套理論中,關于黑盒測試的描述是:

            1、“灰盒測試”描述的測試是一個黑盒測試與白白盒試組合,我們知道被測程序的一些部分(不是全部)是如何工作的。

            2、灰盒測試,側重于輸入與產出(預期結果),但是測試設計和執行是基于算法,架構,數據庫的知識。

            3、一個關于灰盒測試的例子,測試人員將到數據庫中建立自己的測試數據庫中的數據,并實際上將要到數據庫中通過SQL查詢來確認/驗證輸出/測試結果。

            4、灰盒測試被最多的用在測試數據的覆蓋范圍,但也可能是單獨使用在確認配置文件的變化。

            網上關于白盒和黑盒測試的定義介紹很多,關于白盒測試的設計也很多,我這里就不在多介紹。我是個專職的測試人員,所以只了解黑盒測試,因為白盒測試一般由開發人員或者專職的白盒測試人員來做。

            每頁的左上角的紅框部分都是指明白盒測試、黑盒測試和灰盒測試所涉及到的測試階段。更大的圖請看前面一節的博文內容。白盒測試涉及到的是單元測 試和部分集成測試,黑盒測試涉及到的是絕大部分的系統測試和所有的系統集成測試用戶驗收測試,而灰盒測試涉及到全部集成測試、系統測試、系統集成測試和少 量的單元測試、用戶驗收測試。

            其實網上有很多關于灰盒測試的內容,只是平時很多人沒有明確提出灰盒測試。一些軟件公司的測試過程中已經使用了比較多的灰盒測試,當他們遇到灰盒測試的定義和內容后,明白起來很容易。而只知道白盒和黑盒測試的朋友,希望心里有灰盒測試的概念。

            每頁右邊的input case對白盒、黑盒和灰盒的概念都有一個明確的圖示,很容易幫助理解他們的概念。

          相關鏈接:



           

          IBM軟件測試理論——單元測試和集成測試

           

            從網上可以搜索到很多關于單元測試的定義,比如百度百科中就有詳細的介紹。而此理論中關于單元測試的內容有:

            單元測試是對新的或者更改過的代碼模塊進行的初步測試。它驗證程序或模塊的內部邏輯和程序規范。

            開始點:單元測試開始在開發階段,當編碼已經完成,單元測試計劃已經被有關各方已批準。

            結束點:單元測試結束后,所有的測試案例被成功執行,沒有嚴重缺陷1或2。一項行動計劃已經被記錄在案,以解決還未解決的其他缺陷。

            單元測試的作用:單元測試有助于早期識別和修復缺陷,早期消除單元模塊的不確定性

          通過測試程序的各個部分,然后再測試其各部分的總和,集成測試就更簡單啦。

            相關活動:測試計劃和測試用例審查,由有關各方批準的基線控制之下;

          按計劃執行單元測試用例;通過跟蹤需求變更來驗證測試覆蓋面;進行缺陷分析;完成單元測試報告。

            單元測試的評估有:代碼覆蓋率的百分比,符合組編碼標準,圈復雜度,行代碼,路徑,參數,缺陷密度。

          集成測試  

          從網上可以搜索到很多關于集成測試的定義,比如百度百科中有詳細的介紹,而此理論中關于集成測試的內容有:

            集成測試驗證多個已經完成了單元測試的模塊的執行。所測試的應用程序通常不連接到系統中的其他應用程序。

          子系統模塊的通信測試是在一個控制和隔離的環境。

            開始點:集成測試開始時,單元測試已經順利完成,當集成測試計劃已經被有關各方已批準,并且在基線控制之下。

            結束點:集成測試結束后,所有的測試案例的成功執行,沒有嚴重缺陷1或2。一項行動計劃已經被記錄在案,以解決所有還未解決的缺陷。

            集成測試的作用:集成測試有助于較早的識別和修復中缺陷,降低了成本。它也減輕了系統測試過程中的風險。

            相關活動:測試計劃和測試用例審查,由有關各方批準的基線控制之下;

          按計劃執行集成測試用例;通過跟蹤需求變更來驗證測試覆蓋面;進行缺陷分析;完成集成測試報告。

            集成測試的評估有:成本和進度偏差,缺陷,生產力,效率和測試覆蓋度。

            圈復雜度一種代碼復雜度的衡量標準,中文名稱叫做圈復雜度。

          在軟件測試的概念里,圈復雜度“用來衡量一個模塊判定結構的復雜程度,數量上表現為獨立現行 路徑條數,即合理的預防錯誤所需測試的最少路徑條數,圈復雜度大說明程序代碼可能質量低且難于測試和維護,根據經驗,程序的可能錯誤和高的圈復雜度有著很 大關系”。

            在這套理論中,大多用的是缺陷(defect)一詞,認為缺陷(defect)包含的范圍大于bug所代表的意思,認為軟件一切不足的地方都是 可以當做defect處理,而Bug所代表的內容比defect更少一些。其實現在各個公司有各自的叫法,還有叫issue的,但是意思都是一樣的,都是 指軟件的不足之處。此套理論的后面部分都是稱呼為缺陷(defect)。

            以后介紹的各種測試的定義,都是按照圖中所展示的那樣結構來展示。左上角是一堆相關的測試類型或者測試階段,第一頁的最下面一排是關于這個測試類型中的各種文檔,相關的文檔并不一定全展示完了。第二頁的右上角都涉及到了這個測試階段或者測試類型所常用到的測試工具。

            “參與者”里面詳細地介紹了這個測試階段有哪些測試角色參與,帶點的測試角色就被包含在這個測試中,在實際工作中,各個角色之間可以由同一人擔 當。這套理論中,測試團隊中都有一兩個叫“Test architect”的人,測試架構師是團隊中的關鍵人物,類似于系統架構師或者系統分析師,他的作用是參與系統的研發與架構,分析系統與功能模塊,找出測試的難點與關鍵點,決定測試工具環境平臺等方面的主意,在技術上主導團隊的測試過程。

            第二頁的右下角有相關的評估方面,這些評估方面就是測試用例設計的依據。

            單元測試和集成測試都是由開發人員完成,在寫完代碼后進行的。單元測試和集成測試都有明確定義的開始點和結束點,并且測試結束的時候都要提供相應的輸出。測試開始的時候,測試計劃都已經被各方批準了才開始,各方是項目經理、測試經理、開發經理、需求分析負責人甚至是客戶或者投資者。當這個階段的 測試過程中未出現嚴重性為1和2的defect的時候才能結束此階段的測試,并且未解決的所有defect都應該被記錄下來,并且做好何時解決的計劃。一個缺陷被解決得越早,越能節省成本;一個發現的缺陷越到后面才來修復,需要更多的成本。

            很多時候,并沒有把單元測試和集成測試分開來做,而是一起當做單元測試來進行的。

           


           

          IBM軟件測試理論——系統測試和系統集成測試、

           


            從網上可以搜索到很多關于系統測試的定義,比如百度百科就有詳細的介紹。而此理論中關于系統測試的內容有:

            系統測試把系統的所有組件和對其他系統的接口當作一個整體來測試,包含功能性的測試和結構性的測試,證實這個系統可以正確的運行。

            開始點:系統測試開始于成功的上一階段的單元測試集成測試,當系統測試計劃已經被有關各方已批準,并且在基線控制之下。


           

          IBM軟件測試理論——用戶驗收測試和可操作性測試

           


            用戶驗收測試的內容是:

            用戶驗收測試(UAT)驗證系統是否滿足指定的用戶需求。該UAT的模擬用戶環境,由最終用戶或者站在用戶角度去測試系統。

            開始點:用戶驗收測試開始于成功的上一階段的系統集成測試的結束,用戶驗收測試計劃已經被有關各方已批準,并且在基線控制之下。

            結束點:用戶驗收集測試執行完所有的這階段的測試用例,結果中沒嚴重性為1或者2的缺陷。如果未被測試的用例應該被記錄下來,并標明原因;所有測試應該被記錄下來;有相應的階段測試報告和總結。

           用戶驗收測試的作用:用戶驗收測試使使用者,客戶或其他授權實體決定是否接受這個系統。成功的UAT有助于確保業務需求得到滿足,為系統在生產中使用做好高度信任的準備。

            相關活動:測試計劃和測試用例審查,由有關各方批準的基線控制之下;按計劃執行用戶驗收測試用例;通過跟蹤需求變更來驗證測試覆蓋面;進行缺陷分析;完成用戶驗收測試報告。

            系統測試的評估有:成本和進度偏差,缺陷,生產力,效率和測試覆蓋度。

            可操作性測試的內容是:

            可操作性測試驗證應用程序或系統可以在生產環境中運行。這是一個動態的測試階段,其中系統的所有驗證操作都在真實或模擬出來非常真實的生產環境中發生。可操作性測試考慮的是性能,資源消耗和符合標準等因素。

            開始點:用戶驗收測試開始于成功的上一階段的用戶驗收測試的結束,用戶驗收測試計劃已經被有關各方已批準,并且在基線控制之下。

            結束點:一旦被測系統符合測試計劃中規定的結束標準,測試便結束。

            用戶驗收測試的作用:確保軟件產品的正確交付和直到軟件產品的正確部署。避免在生產環境(內部和外部)中產生可操作性方面的業務缺陷。

            相關活動(由技術支持團隊實施和驗證如下活動):部署和備份計劃;故障切換和恢復計劃;緊急中斷/修復計劃;在run books中更新生產支持;更新幫助數據。

            系統測試的評估有:成本和進度偏差,缺陷,生產力,效率和測試覆蓋度。

            用戶驗收測試(UAT)測試方面的知識,可以在網上找到很多。據我了解,很多公司和很多測試人員都知道這一測試階段。包括我在內,UAT只是處 于一個系統集成測試之后的測試階段,應該所有測試用例中涉及到和沒涉及到的defect和bug和一切看不順眼有問題的地方都可以當做測試得到的問題。 UAT是請實際的用戶參與測試或者測試人員站在用戶的角度去思考和測試系統,而很多時候并沒請實際用戶參與,只是測試人員站在用戶角度去思考和測試。系統 測試和系統集成測試涉及到的很多測試類型,將不再在這個測試階段進行。這個測試階段結束的時候,將很接近實際生產中的軟件情況啦,客戶很可能就決定是否接 受這個軟件結果。

            在前面章節中講解測試階段的時候沒到可操作性測試,而我用介紹維護測試做了代替。可操作性測試應該是UAT結束后,從項目團隊到系統部署的這個 過程,由測試人員和技術支持團隊(也就是通常所說的售后技術工程師)在模擬的環境中進行部署操作或者直接到客戶那邊的實際環境中進行部署。這個階段要做部 署、回復、故障切換、緊急中斷和修復等在實際運行中的計劃。而且這個階段使用到的工具也是部署、監控和維護相關的工具。

            最后階段當然是系統部署和交付給客戶后的維護過程,維護測試就是在這個階段之后。產品部署后,客戶方面有人會用監控和管理系統的運行,當出現 defect或者異常等情況,售后技術支持工程師會到客戶那邊進行處理。當售后技術工程師解決不了的話,會交給項目相關的支持團隊,這個團隊中就包括維護 測試團隊。所以很多很大的系統(比如銀行的系統)都會有專人就行監控和管理,也會有一個專門的技術團隊為這個系統服務。當系統出現defect的時候,交 給這個團隊修改和回歸測試,然后再以補丁的形式給系統更新。當系統有一些新的小需求的時候,由這個團隊來開發和測試,然后交付。這個團隊可以由原來開發時 候留下部分人員組成,當然也可以現招聘,可以在招聘中遇到招聘項目維護團隊的職位。

           


           

          IBM軟件測試理論——功能測試和回歸測試

           

            功能測試的內容是:功能測試,在每一個開發階段,去驗證在每個業務功能操作上都和設計文件(內部和外部)中規定的一樣。

            開始點:功能測試開始于成功完成單元測試后,和功能測試計劃已經被有關各方已批準,并且在基線控制之下。

            結束點:功能測試結束于執行完所有的計劃的測試用例,結果中沒嚴重性為1或者2的缺陷。如果未被測試的用例應該被記錄下來,并標明原因;所有測試應該被記錄下來;有相應的測試報告和總結。

            功能測試的作用:功能測試,驗證了系統執行和設計中規定的功能一致。當功能測試正確后才能進入系統集成測試。確定關鍵功能缺陷和修復缺陷,以避免在系統集成和用戶驗收測試階段出現缺陷進行昂貴的返工。

            相關活動:測試計劃和測試用例審查,由有關各方批準的基線控制之下;按計劃執行功能測試用例;通過跟蹤需求變更來驗證測試覆蓋面;進行缺陷分析;完成功能測試報告。

            功能測試的評估有:成本和進度偏差,缺陷,生產力,效率和測試覆蓋度。

            回歸測試的內容有:

            回歸測試驗證,當系統某部分修改(增加新的功能或者修改bug)后,去驗證這部分是否被成功修改和其他部分是否會被這部分的修改所影響。

          要執行回歸測試,應用程序必須運行相同的測試用例通過至少兩次。

          第一次測試是修改前應用程序的特定部分是否正確響應。

          第一次測試獲得的應用程序的正確反應做為第二次運行后判定程序是否正確運行的判定標準。

            開始點:因為增加新功能或者修改缺陷而對代碼進行的修改后開始回歸測試。

            結束點:回歸測試結束于成功的執行相關的回歸測試用例,并且修改后的程序相關部分沒還未解決的缺陷。

            回歸測試的作用:回歸測試驗證了系統的行為是不會受到由于修改系統而產生的影響。它減少了重新驗證的時間消耗,它給與驗收測試以可信任措施。當時間回歸測試相關用例的執行是自動化的時候,顯著的好處將被取得。

            相關活動:測試計劃和測試用例審查,由有關各方批準的基線控制之下;確定修改的程序(必需的元素)結構屬性,然后選擇一個可重復執行的測試用例集去執行;制定一個回歸測試執行和缺陷的詳細報告。

            回歸測試的評估有:缺陷評估,失敗率,覆蓋度。

            功能測試就是驗證的系統功能,是軟件測試中很重要的一部分。

            所有的defect被修改后,都會去驗證這個bug是否成功被修復,而且會驗證這個defect周圍相關的一些功能是否出現了新的defect,這就是回歸測試。

            當軟件增加了一個比較大的新功能后,在這個新功能被測試完成后,一般都會有一個專門的回歸測試階段,來進行驗證這個軟件的其他主要功能是否受影 響,是否出現新defect。一般只測試主要功能的主要流程,不會像對待新功能那樣詳細的測試。在游戲測試中,當某一個功能模塊被做了比較大的修改后,都 會進行一些主要功能模塊的主要功能流程的測試,比如背包有比較大的更新,都會去測試背包相關的倉庫、裝備、生活技能等功能的主要流程。每次系統進行升級 前,都要進行開機測試,驗證系統是否能夠進行正常的升級,然后才放出來。

            某些回歸測試是非常適合自動化測試的,出名的功能測試工具是QTP(quick test professional)和RFT(Rational functional tester)。這2個功能測試工具非常適合做功能方面的回歸測試,核心思想就是一個錄制和回放的過程,用在回歸測試上面的話,錄制就是錄制被修改前系統 的正確反應,回放是回放被修改后的系統來觀看系統的反應。我在后面的章節中會介紹這2個工具。


           


           

          IBM軟件測試理論——測試流程模型

          字體:        | 上一篇 下一篇 | 打印  | 我要投稿  | 推薦標簽: 軟件測試 測試流程

            第一幅圖圖示化地展現了IBM測試流程模型。

             該流程模型中的第一排是一個典型的軟件生命周期的過程,可以在很多資料中找到這一過程。該過程中每一階段上的幅度長度和寬度代表在這一階段所要花費的人 月。此IBM測試流程模型就是以此生命周期做對比基礎來展示。測試階段中的從左到右完全對比到軟件生命周期中的整個過程,也就是說項目進行到軟件生命周期 中某個位置時,垂直向下可以查找到測試處在測試生命周期的某個位置;測試處在測試生命周期的某個位置時候,垂直向上可以查找到項目處在軟件生命周期的某個 位置。

            跟著軟件生命周期過程后面的幾行是質量管理(應該是QA)、測試項目管理和變更管理。

            這三個管理是要覆蓋整個軟件生命周期,也要覆蓋到整個測試生命周期。

            緊接著是缺陷管理(defect management),缺陷管理覆蓋到整個測試生命周期,因為整個測試生命周期都可能涉及到缺陷管理。

            靜態測試可以貫穿于整個測試生命周期,和缺陷管理的長度一樣。

            在整個軟件項目在定義、設計和構建的過程中,都會涉及到測試計劃,并不是等到構建塊完成或者完成的時候才進行測試計劃,因為IBM測試理論強調測試的早期介入(后面會講到)。

            在做測試計劃的時候,已經在為測試做測試準備,所以測試準備貫穿了項目定義、設計、構建和測試階段。

            然后是測試生命周期中的各個測試階段,可以看出各個測試階段都有對應的軟件生命周期的位置。測試階段中的從左到右完全對比到軟件生命周期中的整 個過程,也就是說項目進行到軟件生命周期中某個位置時,垂直向下可以查找到測試處在測試生命周期的某個位置;測試處在測試生命周期的某個位置時候,垂直向 上可以查找到項目處在軟件生命周期的某個位置。

            最后是配置管理、測試工具和管理為整個測試做支持和保障。

            這個測試模型清楚的介紹了測試的過程和測試的保障。這個測試模型中的一些管理和保障不只是為測試服務,而且也為整個軟件項目周期做保障,比如配置管理、項目管理和變更管理。

            第二幅圖展示了每個測試階段的測試活動(測試評估和計劃、測試準備、測試執行和報告),記住是每個測試階段都會重復發生這些活動,也就是根據各 個測試階段的需要,測試相關活動會發生多次。比如在系統測試階段,就會做系統測試計劃和系統測試的詳細規格說明書;到下一階段系統集成測試階段的時候,再 做系統集成測試計劃和系統集成測試的詳細規格說明書;并不是一次把所有階段的測試計劃做完,再去做所有測試階段的詳細規格說明書。這只是理論,實際項目會 有變化和取舍。

            在測試準備中涉及到的“測試的詳細規格說明書”中,應該包含測試用例設計結果和測試環境等說明。通常情況下測試用例都是在單獨的文檔中。

            測試評估和計劃

            要做的事情有:

            1、評估目前的環境

            2、定義測試策略

            3、定義靜態測試計劃

            4、開發主要的測試計劃:單元測試計劃,集成測試計劃,系統測試計劃,系統集成測試計劃,用戶驗收測試計劃,可操作性測試計劃,完成動態測試計劃。

            5、完成動態測試計劃

            輸出的有:

            ◆ 測試過程評估報告

            ◆ 測試策略

            ◆ 靜態測試計劃

            ◆ 主要的測試計劃

            ◆ 每階段的細節性的測試計劃

            測試準備

            要做的事情有:

            1、設計如下詳細的測試計劃:設計單元測試的詳細規格說明書,設計集成測試的詳細規格說明書,設計系統測試的詳細規格說明書,設計系統集成測試的詳細規格說明書,設計用戶驗收測試的詳細規格說明書,設計可操作性測試的詳細規格說明書。

            2、準備建立測試環境

            3、部署軟件測試相關的配置管理

            4、為測試做準備

            5、進行靜態測試

            輸出的有:

            ◆ 測試的詳細規格說明書

            ◆ 測試環境

            ◆ 詳細的測試計劃

            ◆ 測試執行計劃

            ◆ 靜態的測試結果

            測試進行和報告

            要做的事情有:

            1、建立測試環境

            2、進行測試

              ● 執行測試用例

              ● 記錄問題和缺陷

              ● 記錄測試結果

            3、完成測試報告

              ● 分析測試結果

              ● 完成測試報告

            輸出的有:

            ◆ 每個階段或測試的測試結果

            ◆ 每個階段或測試的測試報告


           

          posted @ 2011-10-13 16:49 順其自然EVO| 編輯 收藏

          用例級別和缺陷等級

          用例級別 (level)  
             Level1 基本:
            1、該類用例設計系統基本功能,1級用例的數量應受到控制,防止工作量過大。
            2、劃分依據:該用例執行的失敗會導致眾多重要功能無法運行的,如:表單維護中的增加功能、最平常的業務使用等。可以認為是發生概率較高的并經常這樣使用的一些功能用例。
            3、該級別的測試用例在每一輪版本測試中都必須執行

            Level2 重要:
            1、2級測試用例實際系統的重要功能。2級用例數量較多。
            2、劃分依據:主要包括一些功能交互相關、各種應用場景、使用頻率較高的正常功能測試用例
            3、在非回歸的系統測試版本中基本上都需要進行驗證,以保證系統所有的重要功能都能夠正常實現。在測試過程中可以根據版本當前的具體情況進行安排進行測試。

            Level3 一般:
            1、3級測試用例設計系統的一般功能,3級用例數量也較多。
            2、劃分依據:使用頻率較低于2級用例。例如:數值或數組的編輯情況、特殊字符、字符串超長、與外部件交互消息失敗、消息超時、事物完整性測試、可靠性測試等等。
            3、在非回歸的系統測試版本中不一定都進行驗證,而且在系統測試的中后期并不一定需要每個版本都進行測試

            Level4 生僻:如果沒有可以不適用該級別
            1、該級別用例一般非常少。
            2、劃分依據:該用例對應較生僻的預置條件和數據設置。雖然某些測試用例發現過較嚴重的錯誤,但是那些用例的處罰條件非常特殊,仍然應該被植入4級用例中。如界面規范化的測試也可歸入4級用例。在實際使用中使用頻率非常低、對用戶可有可無的功能。
            3、在版本測試中有某些正常原因(包括:環境、人力、時間等)經過測試經理同意可以不進行測試。

            軟件的缺陷等級應如何劃分:

            A類——致命錯誤,包括以下各種錯誤:
            1.由于程序所引起的死機,非法退出
            2.死循環
            3.數據庫發生死鎖
            4.因錯誤操作導致的程序中斷
            5.功能錯誤
            6.與數據庫連接錯誤
            7.數據通訊錯誤

            B類——嚴重錯誤,包括以下各種錯誤:
            1.程序錯誤
            2.程序接口錯誤
            3.數據庫的表、業務規則、缺省值未加完整性等約束條件

            C類——一般錯誤,包括以下各種錯誤:
            1.操作界面錯誤(包括數據窗口內列名定義、含義是否一致)
            2.打印內容、格式錯誤
            3.簡單的輸入限制未放在前臺進行控制
            4.刪除操作未給出提示
            5.數據庫表中有過多的空字段

            D類——提示錯誤,包括以下各種錯誤:
            1.界面不規范
            2. 輔助說明描述不清楚
            3. 輸入輸出不規范
            4. 長操作未給用戶提示
            5. 提示窗口文字未采用行業術語
            6. 可輸入區域和只讀區域沒有明顯的區分標志

          posted @ 2011-10-13 13:35 順其自然EVO| 編輯 收藏

          測試用例與輸入數據的設計方法

           測試用例的設計是測試設計的重要內容,關于測試用例的設計方法,當前不少出版的測試書和發表的測試文章,不少存在著表述錯誤,主要是把測試用例中的輸入數據的設計方法與測試用例的設計方法混為一談,對測試初學者和測試用例設計人員產生誤導。

            這種錯誤的主要表現舉例如下:

            測試用例的設計方法包括:

            ◆ 等價類劃分法

            ◆ 邊界值法

            ◆ 功能圖與判定表法

            ◆ 錯誤推測法

            ◆ 用戶場景法

            ◆ ......

            其實,測試用例中輸入數據的設計方法只是測試用例設計方法的一個子集,上面列出的集中方法都是確定黑盒測試用例的輸入測試數據的一般方法,而不是測試用例的設計方法。

            除了確定輸入數據之外,測試用例的設計還包括如何確定測試用例的設計策略,如何組織設計用例,如何從測試需求等文檔創建完整的測試用例。

            對測試執行人員來說,測試用例的表示內容包括以下幾個方面:

            ◆ 測試用例的測試目標

            ◆ 測試用例的被測功能點描述

            ◆ 測試用例的測試運行環境

            ◆ 測試用例的執行方法(包括測試步驟,輸入測試數據或測試腳本)

            ◆ 測試期望的結果

            ◆ 執行測試的實際結果

            ◆ 其他輔助說明

            乍看起來有點像測試策劃(計劃)考慮的因素。但是測試用例的設計和測試計劃的設計關注點不同,測試計劃考慮的宏觀和全面些,而測試用例考慮的更窄。

            設計測試用例首先要考慮以下幾個問題:

            ◆ 為什么要設計測試用例?

            ◆ 誰來寫測試用例?這些寫測試用例的人的測試技術和對被測試產品了得有多深入?

            ◆ 測試用例寫給誰看,多少人將試用測試用到?

            ◆ 分配給寫測試用例的時間是多長?要安排幾個人來寫?

            ◆ 怎么在測試用例的成本、質量和效率方面達到平衡?

             只有回答了這些問題,才能確定測試用例的具體寫作方法和表現形式。一般而言,公司里分配寫作測試用例的時間并不長,而且提供的文檔也不全面,所以寫測試 用例要符合測試部門的當前現狀和項目的測試特點,綜合考慮,所以看起來有點像測試計劃的某些內容,但是對問題的細化程度不一樣。

            測試用例的設計是一項復雜的測試工作測試用例的設計方法需要考慮測試的目標,被測試軟件的特性,測試者人力資源的技術和能力,測試組織形式,測試進度、測試成本等多個方面。

            在設計測試用例時,可以綜合運用以下方法:

            ◆ 根據被測軟件的功能和特性點設計測試用例:

              ● 根據被測試功能點設計測試用例

              ● 根據軟件性能指標設計測試用例

              ● 根據軟件的兼容性要求設計測試用例

              ● 根據軟件的國際化用戶要求設計國際化測試用例

              ● 根據...設計...用例

            ◆ 根據軟件的組成元素設計測試用例

              ● 設計軟件設計用例

              ● 設計聯機幫助和文檔手冊的設計用例

              ● 設計軟件的模版等數據文件的測試用例

            ◆ 根據軟件的開發階段(里程碑)設計測試用例

              ● 單元測試設計用例

              ● 集成測試設計用例

              ● 系統測試設計用例

              ● 驗收測試設計用例

            ◆ 根據...設計測試用例

              ● ......

            具體到設計每個測試用例而言,可以考慮如下:

             ◆ 根據被測的最小目標,確定測試用例的測試目標

            ◆ 根據用戶使用環境確定測試環境

            ◆ 根據以下因素確定測試用例的步驟

              ● 用戶使用軟件的步驟或者特定場景,確定測試執行步驟地具體內容

              ● 執行者對產品的熟悉程度確定步驟的詳細或粗略程度

              ● 被測特性的復雜性也決定步驟的詳細或粗略程度

              ● 測試用例的執行方法(手工測試或自動化測試)確定步驟地內容表示

              ● 自動測試用例要編寫和調試測試腳本,手工測試給出執行步驟

              ● ......

            ◆ 根據設計規格說明書確定期望的測試用例執行結果

            ◆ ......

            確定測試用例的輸入數據確實對于測試用例非常重要,它決定著測試用例的執行效果和效率,但是確定輸入測試數據只是設計測試用例的一個步驟,而不是全部。因此,不能把測試用例的設計方法等同于測試用例數據的方法。


          posted @ 2011-10-13 11:48 順其自然EVO| 編輯 收藏

          跟蹤測試用例

          測試過程計劃確定后測試執行開始之前,測試組長應該能夠回答下面的幾個問題:

            ● 測試計劃中需要執行哪些測試組件?

            ● 測試計劃中有多少測試用例

            ● 在執行測試過程中,使用什么方法來記錄測試用例的狀態?

            ● 如何挑選出有效的測試組件和測試用例來著重測試某些模塊?

            ● 上次使用的測試用例的通過率是多少?

            ● 在未通過的測試用例中,有多少是上次執行的時候也未通過的?

            準確地回答這些問題,需要對測試過程中測試用例進行跟蹤。

             前面提到,測試過程中,測試用例有三種狀態:通過、未通過和未測試。根據在測試執行過程中測試用例的狀態,實現測試用例的跟蹤,從而進行測試有效性的檢 驗。因此,測試用例的跟蹤主要是針對測試過程中測試用例的執行和輸出而進行的跟蹤,從而達到測試過程的可管理性和進行測試有效性評估。

            跟蹤測試用例包括兩個方面的內容:

             ● 測試用例執行的跟蹤:測試用例具有易組織性、可評估性和管理性,在測試用例執行過程中,實現測試用例執行過程的跟蹤可以有效地將測試過程量化。例如,執行 一輪測試中,需要跟蹤總共執行了多少測試用例,每個測試人員平均每天使用多少測試用例,測試用例中通過、未通過以及未使用的占多少,未使用的原因是什么, 當然,這是個相對的過程,測試人員工作量的跟蹤不應該僅僅憑借測試用例的執行情況和發現的程序缺陷多少來判定,但至少,通過測試執行情況的跟蹤可以大致判定當前的項目/軟件和測試的質量與進度,并對測試的時間做出大致的推斷。

            ● 測試用例覆蓋率的跟蹤:測試用例的覆蓋率指的是根據測試用例進行測試的執行結果與實際的軟件存在的問題的比較,從而實現對測試有效性的評估。

            跟蹤測試用例的形式一般有幾種:

            ● 記憶:顧名思義,憑借個人的記憶來跟蹤測試用例,這是一種非常不可取的方法,除非是測試只是基于個人開發的小型軟件上。

            ● 書面文檔:在比較小規模的測試項目中,使用書面文檔記錄和跟蹤測試用例也是可行的一種方法。測試用例清單的列表和圖例也可以被有效地使用,但作為組織和搜索數據進行分析時,這種方法是很有局限的。

            ● 電子表格:一種流行而高效的方法是使用電子表格來跟蹤和記錄測試的過程。通過表格中列出的測試用例的跟蹤細節,可以直觀地看到測試的狀態以及分析和統計測試用例的通過,與軟件缺陷的關聯等,這為測試中有效管理和分析測試過程以及軟件的質量提供了有效的量化依據。

            ● 自定義數據庫:最理想的方式是通過自定義的數據庫來跟蹤測試用例的執行和覆蓋率,例如,測試人員通過特定的自定義程序如Web頁面將測試的結果提交,通過自定義的數據庫(Access、SQL Server、MySQLOracle等用戶習慣的數據庫系統)來存儲這些測試結果,并通過自己編寫的工具生成報表、分析圖等,這樣將更加有效地管理和跟蹤整個的測試過程,當然,所花費的成本將也是最高的。

          posted @ 2011-10-13 10:06 順其自然EVO| 編輯 收藏

          軟件性能測試過程

            摘要:本文簡單介紹軟件的性能測試過程,將性能測試過程分為性能測試設計、性能測試執行、測試結果分析三個階段,并介紹了每個階段的主要工作內容和方法,配有簡單的例子進行解釋。

            關鍵字:性能測試 性能測試設計 測試場景 結果分析

             隨著企業需求的日益增長以及計算技術的不斷進步,企業級系統的應用已經從早期的單機時代轉換到了服務成千上萬個用戶的因特網時代。隨著企業業務量的增 加,企業的應用系統承載的負荷越來越重,對應用系統的要求越來越高。系統性能的好壞直接影響企業對外提供服務的質量,而性能測試在軟件的質量保證中起著重 要的作用。

            本人結合自己的經驗,從技術角度簡單討論一下軟件性能測試的測試過程。軟件性能測試過程分為三個階段:

            ● 性能測試設計

            ● 性能測試執行

            ● 測試結果分析

            1.性能測試設計

            性能測試設計是性能測試過程中一個非常重要的環節,性能測試設計的好壞直接關系到測試的充分性和測試結果的有效性。

            性能測試設計階段主要包括性能需求分析、測試場景制定等。

            1.1 性能需求分析

            性能需求分析主要包括測試目的和性能指標確定。

            進行性能需求分析,需要明確性能需求。性能需求可以從被測軟件的相關文檔中獲得,也可以通過與用戶溝通來獲得。仔細閱讀被測軟件附帶的相關文檔,包括需求文檔、使用文檔、數據庫設計文檔等,提取有關軟件性能相關的描述,例如“要求操作響應時間在……以內”、“要求……能夠快速……”、“要求……能夠支持……用戶訪問”、“要求……能快速穩定運行”、“要求系統連續……無故障運行”等,然后對提取的測試需求進行分析。

            (1)確定測試目的

            進行需求分析,首先要明確性能測試目的,測試目的不同直接影響后序的性能測試場景的制定。測試目的可以總結為三類:符合性驗證、性能考察、性能調優。

            ● 符合性驗證―主要驗證軟件是否滿足規定的性能指標要求。如測試軟件在某一條件下的平均響應時間,或者吞吐率,或者并發用戶數等是否滿足規定的要求。

            ● 性能考察―主要測試軟件在某種條件下運行的性能狀況。如測試軟件所能支持的最大并發用戶數或者最大數據量,軟件在不同環境下的性能狀況,隨用戶數量的變化或者數據量的變化情況下軟件的性能變化狀況等。

            ● 性能調優―主要是通過性能測試找出軟件的性能瓶頸,分析出引起軟件性能缺陷的原因,并進行針對性的性能優化,以改進軟件性能。如對軟件進行性能測試,確定是軟件否存在性能方面的問題,并定位性能瓶頸,對其進行性能優化。

            將測試需求與上述目的進行比較,確定出本次測試的測試目的。

            (2)確定性能指標

             此處確定的性能指標指的是性能需求中要求的,且通過性能測試直接得到的性能指標,主要包括響應時間、吞吐率、資源利用率、交易成功率等,是測試結果分析 和判斷的依據。性能測試需要有明確的性能指標,某些軟件系統具有明確的性能指標,而有的軟件系統則需要和用戶一起,通過對軟件系統的業務特點、技術特點、 應用情況等進行綜合分析來獲得。

            如,一軟件系統,要求1個小時內必須完成7 200筆業務。可以得出每秒需要完成的業務為7 200/3 600=2筆,則可以得出該系統需要關注的性能指標為服務器處理請求的能力,即吞吐率,值為2筆/秒。

            1.2 測試場景制定

            測試場景是指導測試執行的依據。測試場景主要是模擬軟件系統一些實際的應用情況,包括測試時執行的業務、每種業務執行的用戶數量、模擬的總用戶 數、數據庫數據量、用戶增長方式、測試循環方式、用戶退出方式、執行過程中的相關參數設定等,還包括測試中需要監視的性能計數器,主要是服務器端操作系統 相關的計數器、應用服務器相關的計數器、數據庫相關的計數器等。不同的測試目的,其測試場景是不同的。

            ● 符合性驗證主要是驗證軟件性能是否符合用戶使用的要求,則測試中應模擬軟件系統的實際使用情況。如,在各功能操作中加入適當的思考時間和迭代間隔時間,用 戶增長方式采用逐漸加壓方式等。軟件實際使用時,主要是多用戶執行多項功能操作,所以測試場景主要是多用戶、多任務的并發測試。當軟件系統有長時間連續運 行的情況時,還需要有疲勞測試的測試場景。

            ● 性能考察中對于測試軟件性能極限的情況,如支持的最大用戶數、最大的數據量等,測試場景應該盡可能的模擬極限情況。為了保證測試中對軟件施加足夠的壓力, 用戶增長方式采用同時加載,思考時間、迭代間隔時間都忽略等。測試軟件性能極限,需要不斷調整影響軟件性能的要素,并分別進行并發測試。如,測試軟件支持 的最大并發用戶數,應不斷調整并發用戶數,在每組用戶數下對系統進行并發測試。對于有長時間運行要求的軟件系統,則需要進行疲勞測試。

            性能考察中檢測軟件在不同條件下的性能狀況時(非性能極限),測試場景應該盡可能與實際使用情況相接近,與符合性驗證類似。

            ● 性能調優主要是為了軟件實際應用中的性能優化,則測試中應模擬軟件系統實際應用中的多用戶、多任務的并發測試場景,與符合性驗證類似。為了驗證軟件系統是否存在內存泄漏等問題,還需要對其進行疲勞測試。

            2.性能測試執行

            根據制定的測試場景,開始執行測試。測試執行不僅包括測試場景的執行,還包括測試場景執行前的一些準備工作,如,測試環境搭建、測試腳本準備、測試場景布置、測試場景執行等。

            2.1 測試環境搭建

            測試環境主要包括軟件運行的軟硬件環境和數據環境。

            首先,需要根據測試執行方案搭建測試環境。確保測試結果的有效性,要求搭建一個獨立、無毒、逼真的軟、硬件環境及網絡環境,安裝調試被測軟件,安裝測試工具等。

            其次,需要準備測試數據。以有利于測試為原則,可以自己準備,也可以從用戶處獲得滿足要求的測試數據,或通過以上兩種方式相結合獲得。自己準備的數據要符合業務規范,同時避免增加垃圾數據。準備好測試數據后,應及時備份數據庫。

            2.2 測試腳本準備

            根據測試執行方案中制定的測試功能,準備測試腳本。測試腳本可以通過測試工具來準備,也可以通過自己編寫來完成。

            準備測試腳本前,首先確定測試功能運行無誤,防止影響測試結果。測試腳本錄制或編寫完畢后,需要進行相應的編輯,如參數化、調試等,并需要驗證測試腳本的有效性:

            (1)首先,進行單腳本單用戶驗證,驗證每個測試腳本運行與實際功能操作是否相符。如增加功能的腳本,既要保證腳本可以成功運行,還要保證數據庫中有相應的增加數據。

            (2)其次,進行單腳本多用戶驗證,驗證每個測試腳本的數據池是否有效。

            (3)最后,進行多腳本多用戶驗證,驗證測試腳本是否可以并發運行。

            2.3 測試場景布置

            根據制定的測試場景布置各測試場景,包括測試腳本及其對應的虛擬用戶數、對應的運行參數、用戶增長方式、測試循環方式、用戶退出方式、需要監視的性能計數器等。

            2.4 測試場景執行

            測試場景布置完畢后,開始執行測試場景。測試中,測試人員要監視測試運行情況,如有過多錯誤,應及時停止方案的運行,查找錯誤原因。若是因為外 界原因(如網絡不穩定等)或者運行參數設置問題,則需要進行相應的調整再運行方案。如果不是外界原因和運行參數設置問題,則保存測試結果,以便進行結果分 析,找出問題原因。執行所有的測試場景,及時匯總測試結果,為下一步結果分析做準備。

            為了保證方案運行的有效性,在執行測試前,要將數據庫恢復到腳本準備前的原始狀態。在運行中,所有相關設備不要進行與測試無關的操作,以避免影響測試結果。

            3.測試結果分析

            測試結果分析是性能測試中的一個重要部分,同時也是一個難點。不同的軟件系統,不同的性能指標,結果分析方法都是不一樣的。下面給出一個簡單的結果分析方法。

            首先,查看運行結果中是否有錯誤出現,可以結合運行日志信息來查找。若有錯誤信息,則需要進一步分析,根據錯誤信息查找原因。如,測試結果中出現超時錯誤,可能的原因有:

            a. 硬件有瓶頸,如CPU、內存等;

            b. 程序算法有問題;

            c. 應用服務的相關參數設置有問題;

            d. 程序中處理有關表的時候檢查字段太多。

            接下來,對這幾個可能的原因進一步分析,以確定出具體的原因。

            若運行結果沒有出現錯誤,則根據關注的性能指標進行分析。首先對網絡進行分析,排除網絡問題,對服務器硬件(CPU、內存、磁盤I/O)進行相 關分析,確定是否是硬件瓶頸引起的性能問題,然后對應用服務器配置進行分析,確認是否是由于應用服務器本身的配置引起的性能問題,然后對數據庫進行性能分 析,重點是索引、數據庫Cache、死鎖等問題的分析,排除上述因素后,再對程序代碼進行分析,找出導致性能問題的因素。

            測試結果分析是一項復雜而又重要的部分,涉及的內容比較多,需要根據實際測試情況來進行分析。


          posted @ 2011-10-12 17:59 順其自然EVO| 編輯 收藏

          測試過程控制----如何開展性能測試

            性能測試的提前準備關注點:

            1、性能測試的環境配置需要能夠盡可能的模擬版本的現場使用,包括外網的設備,軟件網元,各種硬件平臺,操作系統,軟件平臺;

            2、性能測試需要準備合適的模擬腳本來盡可能全真的模擬客戶可能的操作,比如同時并行網頁操作,同時進行socket連接等。而且要超出客戶的真實可能情況。

            性能測試需要出兩類數據:

            1、基準測試對比數據:比較本版本和前一版本的性能指標的情況。用以發現本版本的功能合入是否影響了基準的性能。基準測試的情況下,本版本的新增功能和特性默認都是不打開的,保持和前一版本一致。

            2、單個功能的性能對比數據:驗證本版本中,新增的功能和特性打開的時候,此功能對于版本的性能的影響。

            性能測試的關注點:

            1、資源的占用情況:查看資源的使用情況。資源包括CPU,內存,硬盤等。

            2、資源的釋放情況:查詢系統在業務處理停止后是否可以正常的釋放資源,以供后續業務使用。按道理業務停止,資源應該及時釋放。常見問題,內存泄露,資源吊死,導致系統不能正常釋放資源,嚴重情況導致宕機。可以用很多工具來檢測資源情況。

            3、異常測試:性能測試的情況在一定的話務(一般是模擬現場的用戶)的情況下,進行硬件倒換,雙機倒換,業務切換等。包括破壞性的輸入接入來驗證系統在高負荷情況下的容錯性。

            4、查詢告警等信息:一般系統都會在出問題的時候,進行通知和告警,這些信息是暴露問題的最好手段,性能測試需要及時查看。

            5、長時間運行:性能測試是模擬設備長時間的運行,這個是很好的檢查版本在外場測試的手段。可以檢查出很多跟時間,定時器等相關的積累效應的故障。

            6、日志檢查:性能測試需要經常的分析系統的日志,包括操作系統,數據庫,軟件版本等日志。

            7、查看業務響應時間:長時間的測試后,查看業務響應的時候是否在客戶可以接受的范圍。比如網頁的響應時間,終端登錄時長等。

            性能測試的人員要求:

            1、性能測試的人員必須是骨干,不能使用新人進行性能測試。

            2、性能測試的人員必須對全系統非常熟悉,對于問題定位手段使用熟練。能夠牽頭帶領開發人員進行性能相關的問題排查。

            性能測試報告:

            1、性能測試報告要體現基準性能數據,單個功能的性能數據。用于評估版本是否可以在原有的硬件環境下保持同樣的處理能力。

            2、性能測試報告需要滿足各個測試利益相關者的要求。所以性能測試進行前需要獲得測試利益相關者的要求,做成明細表,然后再開始性能測試。

            性能測試的工具要求:

            1、性能測試必須有一定的工具準備,包括LR等 。很多產品的性能測試需要自研性能測試工具,工具的最高境界是可以全真的模擬客戶的操作。 特別說明,LR僅僅是一種工具,而性能測試是一套理論和方法。

            2、性能測試工具使用過程中,需要攙和手工操作。比如模擬客戶購物的網購動作。工具和手工需要有效結合。用以彌補工具的某些不可預知的不足。

            性能測試是全系統的測試的關鍵點,需要從測試設計,測試執行,人員安排方面都萬分重視。

          posted @ 2011-10-12 15:34 順其自然EVO| 編輯 收藏

          關于性能測試模型的探討

            關于性能測試模型的探討如下:

            隨著單位時間流量的不斷增長,被測系統的壓力不斷增大,服務器資源會不斷被消耗,TPS值會因為這些因素而發生變化,而且符合通常情況下的規律。以下是一個性能測試壓力變化模型圖:

          TPS 每秒的吞吐量

            說明:

            a點:性能期望值

            b點:高于期望,系統資源處于臨界點

            c點:高于期望,性能處于拐點

            d點:超過負載,資源不夠用,系統處于崩潰

            通過如上模型圖中的情況,我們大致可以將當前性能測試分成如下4類:

            1、性能測試

            2、負載測試

            3、壓力測試

            4、穩定性測試

            》性能測試

            以上模型圖為準則,在a點與b點之間的系統性能,表示以性能目標預期為前提,對系統進行施壓,驗證系統在資源可用范圍內,是否能達到性能預期的目標。

            》負載測試

            b點的系統性能,表示在系統在一定的壓力下持續一段時間,直到系統的某項或多項指標達到極限,比如系統資源CPU、Memory或者IO等達到飽和狀態。

            》壓力測試

            b點到d點的系統性能,表示在超過安全負載的條件下,不斷對系統進行加壓,直到系統不能再接受請求,并可以確定一個系統瓶頸的情況下,目的是為了找出系統的瓶頸,需要對系統進行調優。

            》穩定性測試

            a點到b點的系統性能,表示被測試系統在特定硬件、軟件、網絡環境條件下,給系統加載一定業務壓力,使系統運行一段較長時間,以此檢測系統是否穩定,一般穩定性測試時間為n*12小時

          posted @ 2011-10-12 15:25 順其自然EVO| 編輯 收藏

          如何證明你的性能測試結果可信?

          經常和一些同行在網上交流,了解到現在很多公司都在做性能測試,甚至有的在公司都沒有成熟的性能測試人員情況下,就拉個稍微了解點性能測試工具的人員,跑個腳本就做起了性能測試。這時候都不約而同的拋出了一個問題,我們的性能測試結論是可信的嗎?結合自己的性能測試經驗,針對性能測試結論的可信度,談談個人的一點看法。

             確定測試結果可信度,指的是性能測試結果是否穩定可靠。也就是說,測試得到的各種指標數據是不是反映了系統真實性能的情況。例如,如果同一套腳本在對同 一測試對象(即被測對象本身沒有變化,例如同一頁面)進行的數次測試中,一般情況下頁面響應時間指標忽高忽低的話,則說明該測試缺乏信度則得到的響應時 間并不能反映系統在真實生產環境的響應時間。測試的信度與測試的效度有著密切的關系。一般說來,只有信度較高的測試才能有較高的效度,效度較高的性能指標 才有較高的實際性能分析價值和對改進性能方案進行決策時的參考價值。測試的信度主要涉及到測試工具自身的可靠性和測試環境穩定性以及測試方案成熟性這三個 方面。

            第一,測試工具自身的可靠性。

            測試工具的可靠性,主要是指測試工具本身是否有Bug,性能計數器是否準確等和性能測試工具針對當前性能測試項目的場景進行的設置是否合理。

            解決辦法:

             針對性能測試工具本身功能方面,要對要使用的性能工具進行評估,商業工具和開源工具以及自己開發的工具,甚至是一些簡單插件,一些小的 Application等。雖然他們的性能測試原理都是相同的。但是還是要根據項目情況和工具情況進行整體評估,特別是一些特別項目,并不是一定商業工具 就更穩定可靠,但是相對而言,商業工具功能較為豐富,簡單易學習,穩定性也可以。結合成本和項目情況可以選擇自己開發工具,也可以定制工具,也可以對一些工具進行部分改進,例如自己做個更加精確的計數器。

             針對工具設置方面,結合項目情況選擇最合理的設置,也許run腳本時候的很多問題,就是由于設置產生的。這部分需要對使用的工具很熟悉,清楚一些常用屬 性的設置場景。例如一些基本的設置:Agent和Controller的設置,scenario設置,counter sets,run setting。

            第二,測試環境穩定性。

            測試環境的穩定性對性能測試結果的重要性,相信已經都深有感觸。每個項目做性能測試方案時候都要梳理一遍可能影響request的開關,過期時間等設置。

            解決辦法:

            首先要盡可能建立一個獨立的性能測試環境,即使一些大型程序,例如大型的電子商務網站,數據庫過于龐大,難以建立獨立的性能測試數據庫環境,也要對性能測試數據進行一些標識,建立環境時候,要確保web server上的版本和windows server版本相對應,即時根據測試方案要求更新測試版本。要對一些用的cache server、Application server,搜索引擎等server集群進行合理設置。以使其符合項目性能測試的要求。

            第三,測試方案成熟性。

            測試方案是對一個性能測試從始至終的所有工作的指導。性能測試相當于做一個精密的實驗,方案的精密嚴謹性就直接會導致得到的性能測試指標準確性,合理性。

            解決辦法:

             首先要熟悉該次性能測試的目的,和測試需求。深入分析需求,提取出一些關鍵點,熟悉涉及到相關部分的業務,特別是涉及到request的,是Html請 求,還是Ajax請求,請求中是否包含動態數據,例如一些cookie參數等。根據以上了解,提取出性能測試場景。給出詳細的測試場景執行方案,以及測試 指標名稱。給出性能指標分析策略。取數據的策略(例如重測法,交替形式法,對半法等)。

            測試執行過程中要時刻保持精密的思想,確保性能測試從始至終都要有據可依,有理論可考。最終才能得出具有很高參考價值的性能指標數據,這樣才能得出有效的性能測試結論。

          版權聲明:本文出自 582357212 的51Testing軟件測試博客:http://www.51testing.com/?305564

          posted @ 2011-10-12 15:07 順其自然EVO| 編輯 收藏

          功能測試報告的編寫(版本測試報告與總結測試報告的應用)

            測試報告是 測試人員在測試過程中用于反映測試狀況的文檔,其重要性通過網上哀求、跪求、旋轉360度冰天雪地各種求測試報告模塊的帖子中就可見一斑。其實測試報告的 內容基本都是模板的那些,只是在實際測試過程中,如何去整理內容結構,使得報告的通常閱讀者:開發人員、測試經理、產品經理、項目負責人能夠一目了然地查 看想要了解的內容才是測試報告最值得注意的地方。

            產品要想有廣闊的市場,得需要切實了解用戶的需求及感受,同理測試報告要想能夠讓閱讀 者能夠滿意,也需要能將質量情況條理性地列出。通常來說,開發人員往往希望能從報告中了解缺陷的情況,而測試經理還關心用例的執行情況及覆蓋率、項目責任 人則最關心還有多少問題,此次版本是否測試通過。因此測試報告根據內容的側重點,分為『版本測試報告』和『總結測試報告』,目的也是希望不將所有內容列舉 在一個報告中,造成內容臃腫繁雜。

            〖版本測試報告〗

            ● 主要反映開發人員提交的測試版本的質量狀況。

            ● 測試用例設計與執行、缺陷概況及問題概要是版本測試報告中的主要內容。

            ● 測試人員在每個輪次測試結束時編寫提交。

            其內容結構如下:

            對版本測試報告的每個章節的編寫內容進行說明:

          大綱

          子章節

          詳細內容

          測試簡介

          測試目的

          本次測試的背景及主要內容

          測試資源

          測試人員、本次測試開始和截止日期、花費工作

          測試環境

          硬件環境

          實際情況的詳細列舉,過低的配置、件版本的不匹配、網絡拓撲的錯誤都會讓提交的缺陷缺乏說服力,也會讓開發人員對于某些缺陷是否由于環境因素導致而產生疑惑。

          軟件版本

          網絡拓撲圖

          測試方法

          本次測試的功能點、各功能點對應的測試用例設計、測試用到的測試工具

          測試用例

          用例分析

          測試用例維護記錄

          用例執行情況

          用例執行總數、通過用例數、未通過用例數、阻塞用例數

          測試執行率=(已執行的用例數)/用例總數

          測試用例效率=發現的缺陷總數/測試用例的數量

          測試過程

          缺陷統計

          新建bug數、修復bug數、未修復bug數、bug總數

          問題摘要

          遺留問題、拒絕問題、掛起問題、長期驗證問題、待評估問題

          測試結果

          資源占用

          測試項目的啟動、退出時間

          測試項目的CPU占用率初始值、峰值(如果項目啟動會有多個進程,則分多個進程進行統計)

          測試項目的內存占用初始值、峰值

          測試結論

          測試結論不論僅僅只是測試通過或不通過,應該使用詳細的數據來支持測試結論,需要列舉的數據有:

          『測試用例通過率』

          總用例

          未通過用例

          未通過比率

           

           

           

          『遺留bug情況』

          bug

          未修復bug

          遺留bug

           

           

           

          備注

          用例執行記錄

          插入測試用例的詳細執行結果文檔

          資源監控記錄

          說明資源占用監控的場景,詳細列舉各場景的監控時長、監控內容,場景操作

            〖總結測試報告〗

            ● 主要偏重于各已測試版本的缺陷變化分析,風險預估。

            ● 各測試版本質量情況概況統計、缺陷分布統計、風險分析是總結測試報告中的主要內容。

            ● 測試人員在項目發布上線前編寫提交。

            其內容結構如下:

            對總結測試報告的每個章節的編寫內容進行說明:

          標題

          子章節

          詳細內容

          測試簡介

          測試目的

          本次測試的背景及主要內容

          測試資源

          測試人員、第一輪測試的開始日期和最后一輪測試的截止日期、總共花費工作日統計

          測試環境

          硬件環境

          實際情況的詳細列舉,過低的配置、件版本的不匹配、網絡拓撲的錯誤都會讓提交的缺陷缺乏說服力,也會讓開發人員對于某些缺陷是否由于環境因素導致而產生疑惑。

          軟件版本

          網絡拓撲圖

          測試過程

          各版本測試狀況

          各測試版本的計劃提交日期、實際提交日期、測試類型(回歸或全量)、測試耗時、備注(被打回或提交補丁次數)

          各版本bug統計

          各測試版本的新建bug、修復bug、遺留bug數,表格統計、線形圖或餅狀圖輔助表示

          測試分析

          缺陷分析

          缺陷的總體分布情況,以線形圖或餅狀圖輔助表示

          根據功能模塊進行劃分

          根據嚴重、較嚴重、普通、輕微級別進行劃分

          遺留問題

          打開狀態bug、長期驗證bug、用戶體驗問題

          測試小結

          資源占用

          測試項目的啟動、退出時間

          測試項目的CPU占用率初始值、峰值(如果項目啟動會有多個進程,則分多個進程進行統計)

          測試項目的內存占用初始值、峰值

          風險分析

          測試進度、人員安排導致的風險

          測試內容考慮范圍之外導致的風險

          測試環境不全面導致的風險

          其他因素導致的風險

            以上是對功能測試報告編寫的總結,性能測試報告、兼容性測試報告因為內容的不同是不能套用以上測試報告的結構進行編寫,功能測試報告的編寫就是要做到簡約而不簡單。

          posted @ 2011-10-12 14:46 順其自然EVO| 編輯 收藏

          僅列出標題
          共394頁: First 上一頁 383 384 385 386 387 388 389 390 391 下一頁 Last 
          <2025年7月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          導航

          統計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 启东市| 凤台县| 城固县| 项城市| 泸州市| 海盐县| 台中市| 芦溪县| 重庆市| 台州市| 本溪| 齐齐哈尔市| 双峰县| 武定县| 南投市| 崇仁县| 新乡市| 云安县| 四会市| 芦溪县| 牙克石市| 武义县| 正镶白旗| 育儿| 仁寿县| 汶上县| 平泉县| 个旧市| 磴口县| 米易县| 尼勒克县| 涪陵区| 景宁| 灌云县| 安化县| 墨竹工卡县| 漳浦县| 湘潭市| 揭西县| 台湾省| 连山|