互聯網測試有什么不一樣
作者:網絡轉載 發布時間:[ 2012/4/24 10:04:59 ] 推薦標簽:互聯網
變和不變總是永恒的主題。先說說我看到的不一樣的地方。
1、大的不同是互聯網的產品很多都是自己來部署和運營,用戶只要用一個瘦客戶端能使用。
這里的瘦客戶端是一個瀏覽器,一個App,或者一個需要安裝的client,但是核心的數據和業務邏輯主要在互聯網公司的機房里面,在IDC,在云端。這里和以前的C/S, B/S架構的企業系統的主要區別在于為多大范圍的人來服務以及誰來運營和運維這樣的系統。所以自然的,多了很多的這方面的工作。
縮小范圍到測試這個方面,需要考慮現網的問題。比如有下面的這些方面:
a、如何來監控現網功能的可用性。
這個需要和運維一起來做,但是運維針對的是比較通用的部分,比如機器的資源使用情況、流量和帶寬的情況,但是偏產品業務層面的,比如哪些功能是否可用,可能需要業務測試人員來設計和開發自動化的系統來監控了。
b、如何來發布功能到現網
測試完了一般直接發布了,所以不像傳統的軟件有那么長的測試周期,包括internal beta,external beta等過程,而且我了解到的情況,很多基于web的互聯網產品平均有多個發布,可大可小。所以發布可能成了測試人員的工作,當然有相關的系統的支持。 這里還需要考慮的問題是常見的基于各種條件的灰度發布,先讓部分用戶用起來。發布完了之后還要做現網的驗證。
c、如何來保證或者驗證測試環境和現網是同步的
一旦是互聯網的這種模式,測試環境的問題會變得比較突出,因為常常牽涉的系統比較多,有些和外部系統的接口可能很難以自己搭建或者用mock。另一方面如果保證測試環境是好的,到現網也是好的。需要相應的機制和工具來驗證和同步。
2、互聯網產品的節奏都很快
不像傳統的一個客戶端或者服務器的軟件產品,可能周期是半年,一年,甚至更長。這樣有比較充足的時間來做項目計劃,需求評審,然后是概要/詳細設計,進而有測試設計文檔,開大量的測試用例,然后有不同的測試cycle,同時也可以有很多的時間來準備測試環境和自動化測試。
目前來看,互聯網的產品這樣做不太現實。這樣對測試人員也是很大的挑戰,可能看到一個需求過幾天要開測了,用例是臨時開出來的,根本來不及自動化,也沒有很多的時間來做測試設計,然后測兩天這個功能上線了。
不切身的感受很難體會到這種速度帶來的差異。所以如何在這么短的時間里面來保證測試的覆蓋度和質量,如果減少遺漏?
這是現實的問題,或者說是要求,有一些措施,但是其實也沒有很好的答案。
3、有更多的人參與到測試里面來
互聯網公司里面,測試vs開發的比例都很低,1:6,1:7都是很常見的,甚至更高,在這樣的配比的情況下,如果來保證質量?必須有更多的方法。比如:
a、開發人員的自測。
測試耗費更多時間很多時候是因為代碼的質量不夠好,有很多bug,有很多討論,很多的拉代碼的次數。所以提高開發提交的代碼質量是一個很重要的方面。有些公司是通過開發人員的強制的單元測試來保證的,有些是通過功能級別的自測來保證的。這些可以借助一些數據來反映,比如同一個版本拉代碼的次數,或者測試用例的通過率等等。
b、產品或者運營人員的體驗。
很多互聯網的產品不像傳統軟件產品,不是一個產品經理來提所有的需求。產品,或者稱為產品經理,是一個團隊,每人負責一塊來提出需求。另外很多需求可能是來自于運營團隊,和business相關,或者是不同系統的打通。每個產品經理或者運營,需要在開發人員實現了相應的功能之后到體驗環境里面來試用產品,是所謂的體驗,看這些功能是不是他們想要的。這樣可以在測試人員測試之前保證沒有明顯的需求理解的問題,避免浪費測試的人力和時間。
c、發布之前的評審。
不同的角色進來看對于一個已經測完的工作還有沒有問題,以及發布的時候需要注意的問題,環境的問題,配置的問題,數據的問題等等。
上面的一些做法可能都有幫助,但是如何來推動,如果來檢驗都是需要流程和工具來支撐。
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、測試設計的方法
上面提到,因為產品發布節奏的差異,使得整個流程必須更輕更快,但是針對于一個具體功能的測試的時候,用例的設計和執行上需要考慮的問題其實和傳統的沒有太大的差別。因為這個時候大家面臨的問題是一樣的,如何測這個軟件的這個功能。所以一些思路和方法還是能用得上。
綜合以上來看,局部的差異反而比較小,但是涉及到大的形態和流程方面的差異會比較大。
也可能正是因為這樣的原因,很多從傳統軟件到互聯網的人也很快能夠融入并開始發揮作用,而且退回幾年來看,現在各大互聯網公司里面的人大部分也都是來自于所謂的傳統軟件企業。
相關推薦

最新發布
性能測試之測試環境搭建的方法
2020/7/21 15:39:32軟件測試是從什么時候開始被企業所重視的呢?
2020/7/17 9:09:11Android自動化測試框架有哪些?有什么用途?
2020/7/17 9:03:50什么樣的項目適合做自動化?自動化測試人員應具備怎樣的能力?
2020/7/17 8:57:06幾大市面主流性能測試工具測評
2020/7/17 8:52:11RPA機器人能夠快速響應企業需求,是怎么做到的?
2020/7/17 8:48:05Bug可以真正消滅嗎?為什么?
2020/7/17 8:43:03軟件測試基本概念是怎么來的?軟件測試生命周期的形成歷經了什么?
2020/7/16 9:11:10