banner
武大胆

武大胆

不能为这个世界留下些什么,但是却想在这个世界留下些什么!
bilibili
x
discord user
email
steam

測試篇-App測試綜述

App 技術架構#

一個典型的 App 技術架構分為 客戶端(Client) 和 服務端(Server) 兩部分,通過 網絡通信 實現數據交互。以下是分層架構示意圖:

image

客戶端技術架構#

客戶端分層#

  • UI 層(View)

    • 負責界面渲染和用戶交互。
    • 技術實現
      • Android:XML 佈局 + Jetpack Compose(聲明式 UI)。
      • iOS:Storyboard/SwiftUI。
      • 跨平台:Flutter(Dart)、React Native(JavaScript)。
  • 業務邏輯層(ViewModel/Presenter)

    • 處理業務邏輯、數據轉換和狀態管理。
    • 技術實現
      • Android:ViewModel + LiveData。
      • iOS:Combine 框架(Swift)。
      • 跨平台:Bloc 模式(Flutter)、Redux(React Native)。
  • 網絡層(Repository/DataSource)

    • 封裝 API 請求、緩存策略和錯誤處理。
    • 技術實現
      • Android:Retrofit + OkHttp。
      • iOS:Alamofire(Swift)或 URLSession。
      • 跨平台:Dio(Flutter)、Axios(React Native)。
  • 本地存儲層(Local Storage)

    • 管理本地數據持久化。
    • 技術實現
      • SQLite:Room(Android)、Core Data(iOS)。
      • 鍵值存儲:SharedPreferences(Android)、UserDefaults(iOS)。
      • 文件存儲:File System API。

客戶端技術棧#

平台開發語言主流框架 / 工具
Android 原生Kotlin/JavaJetpack、Retrofit、Glide、Room
iOS 原生Swift/Obj-CSwiftUI/UIKit、Alamofire、Core Data
跨平台Dart/JSFlutter、React Native、Ionic

服務端技術架構#

服務端分層#

  • API 網關層(API Gateway)

    • 統一入口,處理路由、鑑權、限流和日誌。
    • 技術實現:Nginx、Kong、Spring Cloud Gateway。
  • 業務邏輯層(Application Layer)

    • 實現核心業務邏輯(如訂單處理、用戶管理)。
    • 技術實現
      • Java:Spring Boot、Micronaut。
      • Python:Django、FastAPI。
      • Node.js:Express、NestJS。
      • Go:Gin、Echo。
  • 數據存儲層(Data Storage)

    • 持久化數據存儲與查詢。
    • 技術實現
      • 關係型數據庫:MySQL、PostgreSQL。
      • 非關係型數據庫:MongoDB、Redis(緩存)。
      • 大數據存儲:HBase、Elasticsearch(搜索)。
  • 消息隊列與異步處理

    • 解耦高並發任務(如郵件發送、訂單異步處理)。
    • 技術實現:Kafka、RabbitMQ、Celery(Python)。
  • 微服務與容器化(可選)

    • 複雜系統拆分為獨立服務,提升擴展性。
    • 技術實現:Docker、Kubernetes、gRPC。

服務端技術棧#

類型技術選型
開發語言Java、Python、Node.js、Go、C#
數據庫MySQL、PostgreSQL、MongoDB、Redis
雲服務AWS、阿里雲、Firebase(Serverless)
監控與運維Prometheus(監控)、Grafana(可視化)

客戶端與服務端交互流程#

典型交互流程(以用戶登錄為例)#

  1. 客戶端發起請求

    • 用戶輸入賬號密碼,客戶端通過 HTTPS 發送登錄請求(POST /api/login)。
    • 數據格式:JSON(如 {"username": "user1", "password": "***"})。
  2. 服務端處理請求

    • API 網關驗證請求合法性(如 IP 白名單、頻率限制)。
    • 業務邏輯層校驗賬號密碼,生成 Token(JWT)。
    • 數據庫查詢用戶信息(MySQL SELECT * FROM users WHERE username = ?)。
  3. 服務端返回響應

    • 成功:返回 200 OK + Token 及用戶數據。
    • 失敗:返回 401 Unauthorized + 錯誤碼。
  4. 客戶端處理響應

    • 解析響應數據,存儲 Token 至本地(SharedPreferences/Keychain)。
    • 跳轉至首頁,更新 UI 狀態。

通信協議與數據格式#

  • 協議:HTTP/HTTPS(RESTful API)、WebSocket(實時通信)。
  • 數據格式:JSON(主流)、Protocol Buffers(高性能場景)。
  • 安全機制:JWT 鑑權、OAuth 2.0(第三方登錄)、SSL/TLS 加密。

App 測試#

測試流程#

  1. 需求分析階段

    • 明確測試目標:理解功能需求、用戶場景和非功能性需求(如性能、安全)。
    • 編寫測試需求文檔:確定測試範圍、優先級和驗收標準。
  2. 測試計劃階段

    • 制定測試策略:確定測試類型(功能、性能、兼容性等)、資源分配和時間表。
    • 風險評估:識別潛在風險(如設備碎片化、網絡環境差異)並制定應對方案。
  3. 測試用例設計

    • 根據需求編寫測試用例,覆蓋正向、逆向場景和邊界條件。
    • 使用等價類劃分、邊界值分析、場景法等設計方法。
  4. 測試環境搭建

    • 準備硬件設備(真機、模擬器)、網絡環境、測試數據和工具鏈。
  5. 測試執行

    • 按優先級執行測試用例,記錄測試結果和缺陷。
    • 分階段進行:冒煙測試 → 功能測試 → 回歸測試 → 驗收測試。
  6. 缺陷管理

    • 使用工具(如 JIRA、Bugzilla)跟蹤缺陷生命周期(提交→修復→驗證→關閉)。
    • 分析缺陷分佈,優化測試重點。
  7. 測試報告與總結

    • 輸出測試報告:覆蓋率、缺陷統計、風險分析和改進建議。
    • 复盤測試過程,優化後續測試策略。

測試方法#

  1. 黑盒測試

    • 關注輸入輸出,不涉及內部代碼邏輯。
    • 典型方法:功能測試、用戶體驗測試、安裝卸載測試。
  2. 白盒測試

    • 基於代碼邏輯設計用例,覆蓋分支、路徑和條件。
    • 常用技術:代碼覆蓋率分析(如 JaCoCo)、靜態代碼檢查(如 SonarQube)。
  3. 灰盒測試

    • 結合黑盒與白盒,通過接口或日誌分析定位問題。
  4. 專項測試類型

    • 功能測試:驗證核心功能(如登錄、支付)是否符合需求。
    • 性能測試:響應時間、內存 / CPU 佔用、啟動速度(工具:GT、PerfDog)。
    • 兼容性測試:覆蓋不同設備、OS 版本、屏幕分辨率、網絡環境(工具:Firebase Test Lab)。
    • 安全測試:數據加密、權限管理、漏洞掃描(工具:OWASP ZAP、Burp Suite)。
    • 用戶體驗測試:界面易用性、交互流暢度、多語言支持。
    • 安裝卸載測試:安裝包大小、升級覆蓋、殘留文件清理。
    • 接口測試:驗證 API 調用和數據傳輸(工具:Postman、Charles)。
    • 回歸測試:自動化腳本覆蓋主流程,確保新版本無回退問題。

測試技術#

  1. 自動化測試

    • UI 自動化:Appium(跨平台)、Espresso(Android)、XCUITest(iOS)。
    • 接口自動化:RestAssured、Python Requests。
    • 性能自動化:JMeter、LoadRunner。
  2. 雲測試平台

    • 使用 AWS Device Farm、Sauce Labs 等平台實現多設備並行測試。
  3. Monkey 測試

    • 通過隨機事件(點擊、滑動)檢測崩潰和 ANR(工具:Android ADB Monkey)。
  4. A/B 測試

    • 對比不同版本的用戶行為數據,優化功能設計(工具:Firebase A/B Testing)。
  5. 代碼靜態分析

    • 使用 Lint 工具檢測代碼規範、內存泄漏和潛在崩潰。
  6. 網絡模擬工具

    • 模擬弱網、延遲、丟包(工具:Network Link Conditioner、Charles Proxy)。

測試環境#

  1. 硬件環境

    • 真機覆蓋主流品牌(如 iPhone、華為、三星)和不同配置(CPU、內存)。
    • 模擬器 / 虛擬機:Android Studio 模擬器、iOS Simulator。
  2. 軟件環境

    • 操作系統:Android(不同版本及定制 ROM)、iOS(最新及舊版本)。
    • 第三方依賴:SDK 版本(如 Google Play Services)、數據庫兼容性。
  3. 網絡環境

    • 測試不同網絡類型(Wi-Fi、4G/5G)、弱網(2G / 高延遲)及離線場景。
  4. 數據環境

    • 準備測試數據:正常數據、異常數據(如超長文本、特殊字符)。
    • 數據隔離:避免測試數據污染生產環境。
  5. 持續集成(CI)環境

    • 集成 Jenkins、GitLab CI 等工具,實現自動化構建→測試→報告流程。
  6. 安全測試環境

    • 搭建沙盒環境,模擬中間人攻擊、數據篡改等安全威脅。
載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。