【轉】服務器端測試模式總結

服務器端測試模式總結

  • 最近這兩星期,我一直在研究關於服務器端功能測試的方案,如今正式總結一下:>apache

  • 本文分爲兩部分,第一部分是「服務端測試的方向」,第二部分是「現有的服務器端測試方案」。 瀏覽器

服務端測試的方向

  • 先看下圖: 服務器

  • 上圖描述了幾個問題: 多線程

    1. 能夠在服務端進行的測試類型,以及它們之間的層次關係。 架構

    2. 客戶,產品,測試,代碼之間的關係。 框架

測試類型(5類)

  1. Function Test:功能測試,也叫驗收測試。模擬用戶操做的基本功能測試,以保證產品的基本功能。 函數

  2. PerformanceTest:性能測試。這是服務端測試中很重要的一環。首先,服務端的不少BUG其實都是在大壓力下才出現的,此外,性能測試能爲服務器集羣,部署提供參考性數據。 工具

  3. Stability Test:穩定性測試。在長時間運行中,測試服務端的穩定性。 性能

    • 以上3種A類測試,絕大多狀況下須要完整產品才能進行的測試。 單元測試

  4. Module Test:模塊測試。這裏根據模塊的集成度,又能夠分爲兩類:單一模塊的模塊測試,多模塊的模塊集成測試。

  5. Unit Test:單元測試。這是粒度最小的測試,針對每一個函數進行。

    • 以上2種B類測試,只須要相關模塊便可展開測試,不必定須要完整產品。

  • 測試類型特性分析

    • 這裏我從測試的粒度展開說一下,不一樣的測試粒度,測試的效果可能會有很大差距。

    1. A類測試,測試粒度較大,這樣的測試會較粗的(這僅僅是相對B類測試而言的),但上面說到,絕大多狀況下須要完整產品才能進行的測試,這類型的測試每每貼近實際,因此發現的問題比較基礎但卻最爲重要。

    2. B類測試,測試粒度較小,這樣的測試是比較細的,很容易發現不少內在的,複雜的,在表面不容易發現的高質量BUG。因爲模塊的功能單一,因此開展起來也比較簡單,並且不用顧及UI,初始化環境等問題(在模塊和單元測試中,能夠用MOCK方式徹底模擬外部環境),但B類測試有個致命的問題,就是它不能說明如今產品的具體質量到底如何(注意是產品的具體質量,不是模塊質量),B類測試只是針對各個模塊/集成幾個模塊進行的測試,到底效果如何,是很難斷定的,因此 纔會出現代碼覆蓋率這個概念,以量化的方式評定效果。可是當模塊集成爲產品後,到底質量如何,基本功能是否能用,模塊和模塊/模塊和UI之間可否正常工 做,這就不得而知了(特別若是在模塊測試中使用了MOCK模擬外部環境後,此類隱患更加明顯),因此在模塊測試完畢後,都必須再對產品作功能測試,以確保各部分串跑成功。

測試模式(2種)

  • 對產品的測試模式基本上能夠分爲兩種(見上圖的箭頭),一種是從上往下的X測試模式(紅色箭頭),一種是從下往上的Y測試模式(藍色箭頭)。

    • Y測試模式是一種從下往上的測試模式,先從單元測試和模塊測試入手,一步步往上,最後進行功能測試,我以爲如下狀況很是適合對產品使用Y測試模式:

    • 採用Y測試模式有個明顯好處是:它能夠從本質上提升產品的質量,由於越往下的測試類型越和代碼相關,先進行單元和模塊測試有利於提升開發的代碼質量和軟件架構,好的代碼和軟件設計是高質量產品的基礎,因此說Y測試模式有利於從本質上提升產品質量。

    • X測試模式和Y測試模式相反,它從上往下的測試模式,先從整體的功能測試入手,一步步深刻,最後進行模塊/單元測試。我以爲如下情適合對產品使用X測試模式(使用狀況也偏偏和Y測試模式的使用狀況相反):

    • X測試模式它先是進行功能測試,在保證了基礎功能正常的狀況下再進行深刻測試。因此在資源(人手,時間...)有限的狀況下能夠最大限度地保證產品功能的穩定,這也是它優勢。

    1. 在人手緊缺的狀況下

    2. 項目已經開發完畢/差很少完畢

    1. 人手是足夠的。由於Unit Test和Module Test是很是消耗資源的測試。

    2. 項目正處於設計/開發階段。由於產品還沒成型,因此也只能先從模塊下手,固然若是能夠實現測試驅動開發那是最好的。

  • 說了這麼多,你們應該有感受,上圖中,越往上的測試類型,越貼近用戶,也越重要(這裏重要是相對而言的,並非說單元測試不重要),而越往下的測試類型,越貼近代碼。各位能夠根據產品的特色,選擇適合本身的測試方案。

  • 我對小公司的開展測試的建議是:採用X測試模式,在保證基礎功能的基礎上,再作打算。

現有的服務器端測試方案

  1. 針對Function Test(功能測試)的測試方案:

    • Selenium是Web測試利器,支持C#,JAVA,Python在內的多種語言編寫測試案例,Selenium經過內嵌入JavaScript控制瀏覽器的動做,實現模擬真人的操做。參考資料:http://seleniumhq.org/

    1. 使用Web測試工具Selenium編寫自動化測試腳本,進行服務端進行簡單的功能測試。

    2. QTP的開源框架Saffron4Web。

  2. 針對Performance Test(性能測試)的測試方案:LoadRunner就是一個很好的選擇。

  3. 針對Module Test(模塊測試)的測試方案:對於Module Test,個人想法的使用現有的框架編寫測試案例,用Groboutils+Cactus+(JMock)搭建起模塊測試的基本運行環境。

原地址:[hyddd(http://www.cnblogs.com/hyddd/)]

相關文章
相關標籤/搜索