網際網路測試有什麼不同
1.最大的不同就是網際網路的產品很多都是自己來部署和運營,使用者只要用一個瘦客戶端就能使用。
這裡的瘦客戶是一個瀏覽器、一個APP或者一個需要安裝的client,但核心的資料和業務邏輯主要在網際網路公司的機房裡,在IDC,在雲端。
在和以前的B/S、 C/S架構的企業系統的主要區別是為多大範圍的人來運營和運維這樣的系統。
縮小到測試範圍,就需要考慮現網的問題。比如有下面的這些方面:
a. 如何監控現網的可用性。
這需要跟運營人員一起做。但運營針對的是比較通用的部分,例如機器的資源使用情況、寬頻和流量的情況。
而偏產品業務層面的,例如功能是否可用,則需要測試人員來設計和自動測試工具來監控。
b.如何釋出到現網
測試完後直接釋出,週期短。常使用灰度機制,讓一部分人先使用起來。釋出完後還要做現網的驗證。
c.如何來保證測試環境和現網是同步的
2.網際網路的產品節奏很快
不像傳統的客戶端或伺服器的軟體產品,週期可能是半年,或者一年,甚至更長,有足夠的時間來做專案計劃、需求評審,然後是概要/詳細設計,進而有測試設計文件,寫大量的測試用例,然後有不同的測試cycle,也有足夠的時間來部署測試環境和自動化測試。
就目前而言,網際網路產品這樣做是不太現實的。產品需求經常變動,用例是臨時開出來的,根本來不及自動化,也沒有很多時間來做測試設計,經常是測試個一兩天就上線。
3.有更多的人蔘與到測試裡面來
a.開發自測
開發進行單元測試
b.產品體驗
開發出相應的模組後,由產品體驗開發出來的功能是否是他們想要的。這樣就可以在測試人員測試之前保證沒有明顯的需求理解問題,避免浪費測試的人力和時間。
4.有一些是免測試的
並不是所有釋出到現網的東西都需要測試,有些東西是不用測試的。這個沒有一定的標準,取決於具體釋出的情況,以及產品和團隊的成熟度等因素。
5.海量的使用者帶來的挑戰
其實有很多,這裡列舉幾個
a、如何來保證或者驗證效能
傳統軟體的效能測試相對要單純一些,可以比較容易搭建一套環境,流量也比較容易模擬。而網際網路的一個產品可能有幾百上千臺甚至更多的伺服器,多地多層部署,受到各種因素的影響,比如廣告促銷活動,一下子流量可以衝到很高。所以這方面的做法也會有所不同,全量的模擬不太現實,而且如上面所說,釋出非常快,也沒有那麼多的時間去反覆的做效能測試。所以如何來做比較輕量級的效能測試也是一個很大的課題。
b、瀏覽器的相容性。
使用者使用的瀏覽器種類可能非常多,包括大家都在罵的IE6,還有IE9的n種模式,版本更新速度火箭一般的Chrome和Firefox,以及很多種國產的瀏覽器。要一一覆蓋是一個很大的挑戰,其實不可能,但是產品團隊肯定希望測試能夠覆蓋更多。對於一些企業級的產品可以宣稱就支援很少的幾種,但是網際網路產品很難這樣做,那就等於放棄一些使用者。如何來設計策略?有沒有技術手段?
c、一個小的改動引起的問題可以影響到無數的使用者,而且很多時候馬上會被發現,那個壓力還是非常大的。整個修復的過程也是帶電操作,沒有那麼多環境和時間來在內部慢慢調整,如何來保證修復的質量?
6、問題的修復
網際網路的產品相比傳統的產品的一個優勢或者說是特性就是問題的修復比較快,因為很快就可以影響到使用者,而不需要等使用者一個個去打hotfix或者patch,甚至安裝新版本。有很多時候,這種問題的發生到修復的時間很短,真是絕大部分使用者都沒有感知。有時候這個也會成為quick & dirty的一個藉口,不過一般都會把現網的問題列為一個考核的指標。而且有些問題不是小問題,會構成事故。其實對於這樣的產品,測試人員對於漏測的壓力就更大了。
7、測試工具和技術選擇上的差別
大概是因為網際網路自身產品的一些特點,各大公司都在大量的使用開源的,以及內部開發的平臺和系統。相應的,測試方面用到的平臺和工具主要也是這兩種,要麼是開源的工具(也可能做一些改造),要麼是內部自己開發的工具。相比而言,傳統軟體行業更會去購買一些商業的測試工具,比如用於效能測試、覆蓋率或者程式碼檢查的工具,還有就是測試用例和缺陷的管理平臺。 目前我瞭解到的情況,國內幾大網際網路公司都是改造和自研的比較多,所以在簡歷裡面列一堆大的工具的使用經驗不一定有多大優勢。而對於新人來說需要花不少時間來學習和熟悉這些平臺。
以上列舉了一些相比傳統軟體行業的不同的地方吧,但是對測試人員來說,也有很多相同或者類似的地方。
1、一樣的需要非常瞭解產品和業務
對於測試人員來說,如果不瞭解產品和業務,測試工作很難開展,因為連最基本的對錯(是不是bug)都很難判斷,當然除了一些明顯的錯誤,比如js出錯這樣的資訊,這種缺陷產品體驗的時候就能夠發現或者等到被使用者發現了。所以我們還是需要花很多的時間和精力來熟悉產品業務。從這個角度看,沒有很大的變化,只是換了一個不同的領域而已,這個差別是不同的產品帶來的,而不是因為傳統軟體或者網際網路的差別帶來的。
2、一樣的需要了解產品的技術
這個其實和上面有點類似,測試人員需要去了解產品開發用到的技術,這對深度的測試,甚至和很多測試技術和工具的應用有很大的關於,比如效能分析,記憶體洩露的發現,覆蓋率的分析等等。不去學習和了解這些,很多工作沒有辦法開展。從方向上來看沒有變化,我們也要去學習和實踐這些東西才能更好的瞭解。但是具體的技術可能有所不同,比如網際網路web的產品可能會常用到JS,PHP, Java, C++等語言,還有各種web伺服器,cache,代理等等。
3、具體的測試技術
上面說到了一些產品開發的技術,其實還有一塊是測試方面的技術,其實這一塊細化來看和傳統的軟體開發有很多相似甚至相同的地方。比如如果來做靜態程式碼的掃描、區域性的效能測試方法和工具、覆蓋率的工具、自動化的一些工具和框架、一些監控的工具等等。
從這個角度來看,技術的差異並沒有很大,當然網際網路有一些特別,比如很多基於web的系統、分散式的、多層的,會對工具提出一些要求,這個差別其實倒不是很大,因為很多傳統的伺服器軟體也是這樣。
4、測試設計的方法
上面提到,因為產品釋出節奏的差異,使得整個流程必須更輕更快,但是針對於一個具體功能的測試的時候,用例的設計和執行上需要考慮的問題其實和傳統的沒有太大的差別。因為這個時候大家面臨的問題是一樣的,如何測這個軟體的這個功能。所以一些思路和方法還是能用得上。
綜合以上來看,區域性的差異反而比較小,但是涉及到大的形態和流程方面的差異就會比較大。