伺服器端測試主要包含什麼?
本人是自動化測試工程師, 一直做得是功能方面自動化,我拿到的測試需求是保證產品的功能良好,於是我會用各種方式模擬用戶操作,很好奇服務端測試都要測試什麼?關注點? 怎麼測之類的,望詳解
這可是一個很大的話題,呵呵。
一般來說,服務端測試有兩種:一種是直接對WEB或者APP的服務端進行測試;另一種是對更後端的資料庫、緩存系統、中間件、文件系統等進行測試。一、先來說第一種吧:直接對WEB或者APP的服務端進行測試。
一般來說,這種服務端的開發人員就是WEB/APP產品團隊的開發人員,當然,測試人員跟WEB/APP的前端測試人員也是一個團隊的。這種服務端就是為WEB/APP端提供一些後台的介面,比如說,用戶個人信息、交易記錄的讀取和存儲等,一般都是用HTTP介面的方式提供。這種後台的測試從流程上來說是跟隨著WEB/APP產品的發布節奏來的,在後端開發完成介面以後,測試人員就直接用TestNG+HttpClient寫介面測試用例、或者用Postman等工具手工測試。如果項目緊張,一般會先用Postman等工具先手工測試,等版本發布完以後,再用TestNG+HttpClient把自動化用例補上去,或者用Python的Nose框架。對於這種服務端後台的測試人員,除了需要掌握上述的自動化測試技術之外,還有一個溝通、協調的工作,因為後台的介面一般是同時提供給iOS/Android/WEB三個端,所以需要跟三端的測試人員協調測試進度、測試環境等事項。
如果遇到後端服務大的重構、或者是第一次上線預計有大流量的,那還需要對後端服務做一個性能測試,用JMeter/Grinder等工具編寫腳本並進行壓測,看看後端服務能不能撐住大流量。有些版本性能風險小的,不必要每次都做性能測試,可以根據實際版本的情況具體分析。
二、第二種:對更後端的資料庫、緩存系統、中間件、文件系統等進行測試。
這種就類似於雲計算等後端基礎服務的測試,對於一些大的公司,會有一個專門的團隊來開發這種後端基礎服務,這種服務當然也需要測試人員來保證質量。這類服務一般都是通過HTTP介面的方式提供給剛才講的WEB/APP的後端使用,所以,第一個要做的也就是介面測試,也就是用Postman等工具做手工測試、用TestNG+HttpClient或者Python的Nose框架做自動化測試。
不過,對於這類後端服務來說,介面只是暴露給外用的部分,內部邏輯通常是非常複雜的,所以,除了針對介面做測試之外,測試人員還需要細緻地了解這些服務端產品的技術框架及技術實現,需要了解到模塊的級別,對於系統框架圖、時序圖等都有很好的理解。針對這些理解去設計用例,再跟開發一起討論如何實現用例。
如果這種基礎服務用了某一個開源軟體,那通常也需要測試人員能關注社區的進展,並把我們發現的Bug及解決方案等推到社區,為社區做貢獻。
除了介面測試之外,在我們公司,異常測試、穩定性測試、性能測試也是服務端測試必備的測試類型。
異常測試會模擬各種異常情況,比如硬體異常-機器掛掉的情況下能否啟動備機、硬碟掛掉的情況下是否會丟失數據;網路異常-網路忽然斷掉、或者網路流量變小的情況;系統異常-操作系統忽然掛掉的情況。這些極端的情況出現的時候,我們需要驗證數據有沒有丟、能不能儘快啟動備機對外提供服務、系統狀態有沒有異常等。我們會採用各種方式或者工具來模擬這些異常,比如用TrafficControl工具來控制網路流量。穩定性測試,就是模擬系統在7*24的運行下會不會出問題,一般會用介面測試或者性能測試用例不斷地跑,在運行期間,我們會模擬各種情況,比如說負載的變化、系統的各種干擾等。可以用ChaosMonkey等工具來進行這類測試。
性能測試,其實細分起來會有各種類型,比如負載測試、壓力測試、配置測試、甚至還有線上壓測、容量規劃等。最常規的性能測試,一般是先規定一個系統需要承受的壓力,比如說,某一個系統,1個小時之內會有1W單的單子,那基於這個需求我們分析伺服器後端需要承受的壓力,分析出來以後,就寫性能測試腳本,然後逐漸增加壓測的力度,直到超過這個預定的壓力。通常在這個測試過程中會發現各種問題,比如資料庫索引沒有建、線程池太小、系統異常等。需要解決了之後再加大壓力測試。也是用Grinder/JMeter等工具來進行性能測試,不過難的不是這些工具的使用,而是發現問題以後的定位。
對於這種後端服務的測試人員來說,技術上的要求是挺高的,需要有較好的編程能力,需要對資料庫、操作系統等機制有很好的了解才行。服務端測試主要是測試後端的業務。比如你一個手機app,比如騰訊qq,微信,每次和好友對話都要把信息傳遞到後台,後台很複雜的,遠遠超過手機客戶端。有大量集群接受數據,然後計算分類,流到下一個節點,下一個節點再歸類匯總,有些寫入資料庫,有些直接寫入緩存給網頁展示.....後端測試除了要驗證這些功能點,還要測試集群機器性能是否達標,還有安全測試、壓力等等。一個優秀的後台測試工程師需要掌握技能很多。linux命令、shell腳本、Python都是最基礎的。
有沒有一個基本的學習和提高的思路可以讓我們往這個方向去轉,求大神掃盲
我覺得最麻煩的就是業務邏輯這一塊兒,只不過是對於新人來說,至少得有半年多時間去熟悉服務端的業務情況,介面的性能測試,業務場景搞不清楚,採集的數據也就不夠準確了。
求大神指教
我也想知道,求大神們指教
推薦閱讀:
※測試人力不足時,測試技術層面有什麼方法可以提高測試效率?
※性能測試是不是只要學習LR就可以了,還需要學習其他什麼知識?
※在校生想成為軟體測試工程師自學需要學什麼?
※嵌入式系統如何進行測試?
※如何跨平台使用自動化測試?