客戶端SDK測(cè)試是什么?如何測(cè)?

本文來(lái)源于:網(wǎng)易云社區(qū)

01
是什么

客戶端SDK是為第三方開(kāi)發(fā)者提供的軟件開(kāi)發(fā)工具包,包括SDK接口、開(kāi)發(fā)文檔和Demo示例等。SDK和應(yīng)用之間是什么關(guān)系呢?以云信即時(shí)消息服務(wù)為例,如下圖所示,應(yīng)用客戶端通過(guò)調(diào)用云信SDK接口,進(jìn)行消息等數(shù)據(jù)查詢存儲(chǔ)等操作,或通過(guò)協(xié)議與云信服務(wù)器間進(jìn)行通信。



02
測(cè)什么

1. 客戶端SDK測(cè)試的對(duì)象
客戶端SDK測(cè)試,就是對(duì)提供給開(kāi)發(fā)者的工具包里面的內(nèi)容進(jìn)行測(cè)試

因此測(cè)試的主要內(nèi)容有:

SDK接口和文檔
SDK接口是測(cè)試的主要對(duì)象,也是核心的內(nèi)容

SDK日志
對(duì)開(kāi)發(fā)者來(lái)說(shuō),SDK接口里面的具體實(shí)現(xiàn)是透明的,當(dāng)上層調(diào)用時(shí)遇到問(wèn)題,只能依賴SDK打印的日志來(lái)定位分析。所以SDK日志是否完備,是否有助于解決問(wèn)題,對(duì)應(yīng)用開(kāi)發(fā)者和SDK提供方來(lái)說(shuō)都很重要

Demo或行業(yè)解決方案
Demo是SDK提供方用來(lái)示例如何調(diào)用接口實(shí)現(xiàn)具體的功能,也可以作為開(kāi)發(fā)者直觀感受SDK接入效果。行業(yè)解決方案類似Demo,但是,比Demo更加像一個(gè)產(chǎn)品,具有比較完整和典型的行業(yè)應(yīng)用場(chǎng)景??梢宰屝袠I(yè)開(kāi)發(fā)者比較明確知道,接入這個(gè)SDK做出來(lái)的產(chǎn)品效果如何

其他周邊
比如UIkit等,可能只是在SDK開(kāi)發(fā)中的附帶輸出,但對(duì)有的開(kāi)發(fā)者來(lái)說(shuō)能極大降低接入成本

2. 客戶端SDK接口測(cè)試類型
客戶端SDK根據(jù)需求和開(kāi)發(fā)平臺(tái)不同,可能需要選擇不同的測(cè)試類型對(duì)SDK接口進(jìn)行測(cè)試

常見(jiàn)的測(cè)試類型有:

功能測(cè)試
保證SDK接口功能正確性和完備性??蛻舳薙DK接口測(cè)試跟服務(wù)端接口測(cè)試類似,包括場(chǎng)景覆蓋和接口參數(shù)覆蓋

主要測(cè)試各種參數(shù)組合下的返回值,考慮數(shù)據(jù)是否緩存與存儲(chǔ),是否有回調(diào),對(duì)于請(qǐng)求成功或失敗都能按預(yù)期進(jìn)行處理

性能測(cè)試
保證SDK接口滿足特定的性能需求,比如資源占用、移動(dòng)設(shè)備耗電量等。在云信IM登錄的場(chǎng)景,登錄時(shí)可能收到大量同步數(shù)據(jù)包和離線消息包,那么對(duì)這些數(shù)據(jù)包的解析以及本地儲(chǔ)存的性能就要進(jìn)行保證,否則可能出現(xiàn)登錄響應(yīng)很慢甚至卡住的問(wèn)題,所以測(cè)試時(shí)就需要考慮這個(gè)場(chǎng)景的性能

兼容性測(cè)試
保證SDK兼容特定的設(shè)備平臺(tái),并與其他軟件兼容。兼容設(shè)備平臺(tái)的工作量通常是比較大的,先根據(jù)產(chǎn)品需求和市場(chǎng)現(xiàn)狀對(duì)需要適配的設(shè)備平臺(tái)做分析,再根據(jù)需要覆蓋的機(jī)型、系統(tǒng)版本、分辨率等進(jìn)行優(yōu)先覆蓋排序

移動(dòng)端SDK兼容性測(cè)試需要考慮下對(duì)模擬器的支持,因?yàn)楹芏嚅_(kāi)發(fā)者可能就是先在模擬器上開(kāi)發(fā)??蛻舳薙DK覆蓋多平臺(tái)設(shè)備的,還要考慮多端消息數(shù)據(jù)包的互通

穩(wěn)定性測(cè)試
考察業(yè)務(wù)場(chǎng)景在一定壓力下,持續(xù)運(yùn)行一段時(shí)間,接口功能和設(shè)備資源占用有無(wú)異常。比如云信實(shí)時(shí)音視頻通話場(chǎng)景中,要保證多人長(zhǎng)時(shí)間通話且不斷有人進(jìn)出時(shí)的接口功能和設(shè)備資源占用無(wú)異常

網(wǎng)絡(luò)相關(guān)測(cè)試
保證在不同網(wǎng)絡(luò)類型,不同網(wǎng)絡(luò)環(huán)境下,SDK接口都能較好的處理。在涉及到多媒體資源或音視頻通信,弱網(wǎng)下測(cè)試的需求較多,并且弱網(wǎng)下的處理通常需要反復(fù)優(yōu)化和對(duì)比,不僅是新老版本效果對(duì)比,還包括競(jìng)品的效果對(duì)比測(cè)試






安全性測(cè)試

對(duì)隱私數(shù)據(jù)保護(hù),訪問(wèn)權(quán)限的控制,用戶服務(wù)鑒權(quán)等,SDK接口的安全性問(wèn)題也是比較突出。安全性很多是在架構(gòu)設(shè)計(jì)和開(kāi)發(fā)設(shè)計(jì)中就考慮進(jìn)去,但是最好還是有專門(mén)的安全性測(cè)試

03
功能怎么測(cè)

上述諸多測(cè)試類型中,功能測(cè)試先行。在進(jìn)行客戶端SDK測(cè)試前,需要全面的了解測(cè)試對(duì)象的細(xì)節(jié):

了解業(yè)務(wù)流程,結(jié)合API接口文檔和開(kāi)發(fā)指南,理順接口的使用場(chǎng)景和調(diào)用關(guān)系;

了解SDK協(xié)議,理解協(xié)議中字段的意義以及服務(wù)器端的處理邏輯;

了解各接口或協(xié)議返回碼,分析對(duì)應(yīng)的場(chǎng)景;

了解開(kāi)發(fā)實(shí)現(xiàn)細(xì)節(jié),可以繪制成圖,便于測(cè)試分析和分層驗(yàn)證。

對(duì)客戶端SDK進(jìn)行測(cè)試,可以采用的分層測(cè)試方式由上至下依次有:基于Demo和解決方案->基于接口調(diào)用->基于代碼。

1、基于Demo和解決方案的測(cè)試
大多客戶端SDK在提測(cè)時(shí),都會(huì)有對(duì)應(yīng)的Demo或者解決方案提交給測(cè)試,因此可以覆蓋到該Demo或解決方案對(duì)應(yīng)的接口或業(yè)務(wù)場(chǎng)景。而且測(cè)試人員可以比較直觀的看到界面表現(xiàn),上手快,所以在客戶端SDK測(cè)試中比較常用,也是比較有效的。

但這種測(cè)試方式的缺點(diǎn)也很多,Demo對(duì)接口和業(yè)務(wù)場(chǎng)景覆蓋比較有限,對(duì)接口的輸入輸出參數(shù)不能全覆蓋,發(fā)現(xiàn)問(wèn)題時(shí)定位復(fù)雜度增加。精心設(shè)計(jì)的Demo以及多解決方案的形式或許可以最大程度滿足測(cè)試需要,但是需要較大的Demo開(kāi)發(fā)測(cè)試投入,也使得問(wèn)題暴露的時(shí)間大大滯后?;贒emo和解決方案的測(cè)試,可以是手工的也可以是UI層自動(dòng)化測(cè)試。

2、基于接口調(diào)用的自動(dòng)化測(cè)試
基于接口調(diào)用的測(cè)試,包括對(duì)單個(gè)接口的測(cè)試,也包括業(yè)務(wù)場(chǎng)景的覆蓋。這種測(cè)試方式直接有效,需要一定開(kāi)發(fā)基礎(chǔ)

目前,我所在項(xiàng)目組的同事也有一些實(shí)踐,以云信iOS SDK測(cè)試為例,最小回歸測(cè)試對(duì)應(yīng)接口也已經(jīng)自動(dòng)化,測(cè)試工程基本結(jié)構(gòu)如下:



基于接口調(diào)用的自動(dòng)化測(cè)試,需要有產(chǎn)品的思路、開(kāi)發(fā)的知識(shí)和測(cè)試的思維,做起來(lái)有難度。但是因?yàn)镾DK接口通常比較穩(wěn)定,所以一旦實(shí)現(xiàn)并投入使用,測(cè)試效率和質(zhì)量的收益都很大,值得擁有。

3、基于代碼的單元測(cè)試
單元測(cè)試是為開(kāi)發(fā)代碼質(zhì)量保駕護(hù)航的一個(gè)重要環(huán)節(jié),在測(cè)試左移推進(jìn)的道路上,大家越來(lái)越意識(shí)到單元測(cè)試的重要價(jià)值。特別是在一些核心業(yè)務(wù)上,值得開(kāi)發(fā)同學(xué)投入精力去做。

其他測(cè)試類型的展開(kāi),跟應(yīng)用層測(cè)試類似,就不再重復(fù)了。

本文來(lái)源于:網(wǎng)易云社區(qū)

作者:網(wǎng)易云社區(qū)


歡迎關(guān)注微信公眾號(hào) :Python測(cè)試社區(qū)