最近在做客戶端測試的過程中,自己負責的功能模組涉及到了第三方sdk的接入、准入測試,期間自己也踩了不少坑,所以特此寫一篇文章總結一下。
sdk接入方—提供sdk接入規範
1.第三方sdk需要提供的材料:
二進位制接入材料(接入的模組包、需要新增的許可權列表)
2.第三方sdk整合質量標準:
功能測試通過,無p0、p1級別bug,遺留bug需要列出
monkey測試通過,持續執行時間大於8h,過程中無native crash,需要提供抽樣的monkey日誌
crash率符合規定標準(線上第三方外掛程式crash率不能超過一定比例,否則會立即下線處理)
服務穩定性(由於服務宕機或端的缺陷引發的服務不穩定,每月時長小於5分鐘)
3.第三方sdk整合效能標準:
cpu損耗(cpu消耗曲線最終可以收斂為0%)
記憶體占用(帶來記憶體公升高平均不超過7-10mb,根據自身業務而定,並且記憶體消耗曲線最終可以收斂)
記憶體洩漏(sdk無記憶體洩漏存在)
流量使用(流量使用需要明確理由,後台流量無損耗)
慢操作(核心業務場景無慢操作出現)
sdk首次啟動速度不超過1s,後續啟動不超過200ms
fps(平均值50fps左右,使用者感知不到有卡頓)
耗電量(待機狀態下的耗電量、核心業務場景下的耗電量)
sdk包大小(內建外掛程式、外接外掛程式包大小要達標)
靜態**檢查findbugs(等級為scariest(high confidence)&&scary(high confidence)問題100%修復)
靜態**檢查simian(高於60行+的重複**100%解決)
4.第三方sdk相容性整合標準:
系統版本相容
第三方jar包,不能與接入方依賴的jar包有衝突
主流手機相容(小公尺、三星、華為、魅族等)
解析度相容
網路相容(2g\3g\4g\wifi)
弱網路安全軟體相容性(360手機衛士、安卓優化大師等)
5.第三方sdk安全性報告:
使用者統計資訊上傳(使用者統計上傳需要加密,使用者行為統計需要有開關控制)
敏感資訊宣告(如果使用(聯絡人||簡訊||聯絡歷史)需要宣告,不允許儲存使用者資訊)
許可權list(給出需要的許可權list,及敏感許可權的使用原因)
支援的android最低版本
不允許classloader注入
6.關鍵時間點:
sdk准入包提供時間點:最晚版本開發前一周提供
sdk包修改與替換時間點:灰度發布前一周禁止換包
sdk提供方—qa提供sdk准入報告
如果是首次接入新的sdk的時候,需要sdk方提供功能測試報告、效能報告等。
具體內容應該包括:
功能測試狀況(功能點,准入case,bug數量,重點難點bug,遺留bug等)
相容性測試狀況(最低支援系統版本,最高支援系統版本,相容螢幕尺寸、解析度等)
效能測試狀況(cpu,記憶體,資料流量等)
最終版本提供時間點(需要和我們測試時間match,最好能夠在迭代啟動前提供版本,這樣有時間進行驗收測試)
需要提供sdk的demo以及必要的說明文件
如果是曾經整合過的sdk,本次作為更新,需要sdk方提供更新功能點、功能測試報告、涉及到效能的需要效能報告。如果是官方更新,有其他產品線已經接入了同乙個版本的sdk,准入流程可簡略。
具體內容應該包括:
更新了哪些功能點(引入了多少bug,修復狀況,遺留bug)
整合的sdk的demo以及sdk更新文件
如果涉及到效能方面的,需要提供效能測試報告
sdk接入方—qa進行准入驗收測試
sdk接入方的qa根據提供的sdk demo、sdk說明文件、質量報告等,進行sdk准入驗收測試,准入驗收測試通過後,方可接入,有准入不達標的,直接打回。
Android 增加第三方APK
一 原始碼增加 這種方法要求開發的apk必須遵循一些約定,最主要的就是字串必須在strings.xml裡定義,不能直接在應用程式裡賦字串值。二 沒有原始碼,只有編譯好的apk 有2種辦法可以新增.這種方法最簡單,但是在重新make整個專案後又必須重新複製到此目錄。2 使用build prebuilt...
android呼叫第三方庫
把第三方so放在新建的libs armeabi 中 因為android.mk檔案中的當前目錄跳到local path call my dir 即jni下,所以這個libs armeabi必須在jni下 android.mk local path call my dir warning local p...
Android開發 第三方庫
1.網路訪問框架 okhttp,retrofit 還不了解 async http,volley 3.快取框架 disklrucache,robospice 還不了解 4.json解析框架 gson,fastjson,jackson 還不了解 5.事件匯流排 eventbus,otto 6.orm 是...