客戶端SDK是爲第三方開發者提供的軟件開發工具包,包括SDK接口、開發文檔和Demo示例等。SDK和應用之間是什麼關係呢?以雲信即時消息服務爲例,以下圖所示,應用客戶端經過調用雲信SDK接口,進行消息等數據查詢存儲等操做,或經過協議與雲信服務器間進行通訊。html
客戶端SDK測試,就是對提供給開發者的工具包裏面的內容進行測試,所以測試的主要內容有:數組
SDK接口和文檔
SDK接口是測試的主要對象,也是核心的內容。緩存
SDK日誌
對開發者來講,SDK接口裏面的具體實現是透明的,當上層調用時遇到問題,只能依賴SDK打印的日誌來定位分析。因此SDK日誌是否完備,是否有助於解決問題,對應用開發者和SDK提供方來講都很重要。安全
Demo或行業解決方案
Demo是SDK提供方用來示例如何調用接口實現具體的功能,也能夠做爲開發者直觀感覺SDK接入效果。行業解決方案相似Demo,可是,比Demo更加像一個產品,具備比較完整和典型的行業應用場景。可讓行業開發者比較明確知道,接入這個SDK作出來的產品效果如何。服務器
其餘周邊
好比UIkit等,可能只是在SDK開發中的附帶輸出,但對有的開發者來講能極大下降接入成本。網絡
客戶端SDK根據需求和開發平臺不一樣,可能須要選擇不一樣的測試類型對SDK接口進行測試,常見的測試類型有:架構
功能測試
保證SDK接口功能正確性和完備性。客戶端SDK接口測試跟服務端接口測試相似,包括場景覆蓋和接口參數覆蓋。主要測試各類參數組合下的返回值,考慮數據是否緩存與存儲,是否有回調,對於請求成功或失敗都能按預期進行處理。微服務
性能測試
保證SDK接口知足特定的性能需求,好比資源佔用、移動設備耗電量等。在雲信IM登陸的場景,登陸時可能收到大量同步數據包和離線消息包,那麼對這些數據包的解析以及本地儲存的性能就要進行保證,不然可能出現登陸響應很慢甚至卡住的問題,因此測試時就須要考慮這個場景的性能。工具
兼容性測試
保證SDK兼容特定的設備平臺,並與其餘軟件兼容。兼容設備平臺的工做量一般是比較大的,先根據產品需求和市場現狀對須要適配的設備平臺作分析,再根據須要覆蓋的機型、系統版本、分辨率等進行優先覆蓋排序。移動端SDK兼容性測試須要考慮下對模擬器的支持,由於不少開發者可能就是先在模擬器上開發。客戶端SDK覆蓋多平臺設備的,還要考慮多端消息數據包的互通。性能
穩定性測試
考察業務場景在必定壓力下,持續運行一段時間,接口功能和設備資源佔用有無異常。好比雲信實時音視頻通話場景中,要保證多人長時間通話且不斷有人進出時的接口功能和設備資源佔用無異常。
網絡相關測試
保證在不一樣網絡類型,不一樣網絡環境下,SDK接口都能較好的處理。在涉及到多媒體資源或音視頻通訊,弱網下測試的需求較多,而且弱網下的處理一般須要反覆優化和對比,不只是新老版本效果對比,還包括競品的效果對比測試。
安全性測試 對隱私數據保護,訪問權限的控制,用戶服務鑑權等,SDK接口的安全性問題也是比較突出。安全性不少是在架構設計和開發設計中就考慮進去,可是最好仍是有專門的安全性測試。
上述諸多測試類型中,功能測試先行。在進行客戶端SDK測試前,須要全面的瞭解測試對象的細節:
瞭解業務流程,結合API接口文檔和開發指南,理順接口的使用場景和調用關係;
瞭解SDK協議,理解協議中字段的意義以及服務器端的處理邏輯;
瞭解各接口或協議返回碼,分析對應的場景;
瞭解開發實現細節,能夠繪製成圖,便於測試分析和分層驗證。
對客戶端SDK進行測試,能夠採用的分層測試方式由上至下依次有:基於Demo和解決方案->基於接口調用->基於代碼。
大多客戶端SDK在提測時,都會有對應的Demo或者解決方案提交給測試,所以能夠覆蓋到該Demo或解決方案對應的接口或業務場景。並且測試人員能夠比較直觀的看到界面表現,上手快,因此在客戶端SDK測試中比較經常使用,也是比較有效的。
但這種測試方式的缺點也不少,Demo對接口和業務場景覆蓋比較有限,對接口的輸入輸出參數不能全覆蓋,發現問題時定位複雜度增長。精心設計的Demo以及多解決方案的形式或許能夠最大程度知足測試須要,可是須要較大的Demo開發測試投入,也使得問題暴露的時間大大滯後。 基於Demo和解決方案的測試,能夠是手工的也能夠是UI層自動化測試。
基於接口調用的測試,包括對單個接口的測試,也包括業務場景的覆蓋。這種測試方式直接有效,須要必定開發基礎,能夠參考下KS上以前其餘同窗關於AOS和iOS SDK接口自動化測試實踐的經驗總結。目前,我所在項目組的同事也有一些實踐,以雲信iOS SDK測試爲例,最小回歸測試對應接口也已經自動化,測試工程基本結構以下:
基於接口調用的自動化測試,須要有有產品的思路、開發的知識和測試的思惟,作起來有難度。可是由於SDK接口一般比較穩定,因此一旦實現並投入使用,測試效率和質量的收益都很大,值得擁有。
單元測試是爲開發代碼質量保駕護航的一個重要環節,在測試左移推動的道路上,你們愈來愈意識到單元測試的重要價值。特別是在一些核心業務上,值得開發同窗投入精力去作。
其餘測試類型的展開,跟應用層測試相似,杭研QA白皮書介紹的方法、工具基本能知足測試需求,就再也不重複了。
網易雲大禮包:https://www.163yun.com/gift
本文來自網易雲社區,經做者萬春豔受權發佈。
相關文章:
【推薦】 網易蜂巢(現已改名爲網易雲計算基礎服務)用了什麼技術?
【推薦】 大數據技術在金融行業的應用前景
【推薦】 微服務化不一樣階段 Kubernetes 的不一樣玩法