banner
武大胆

武大胆

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

Test Article - Overview of App Testing

App Technical Architecture#

A typical App technical architecture is divided into Client and Server parts, achieving data interaction through network communication. Below is a layered architecture diagram:

image

Client Technical Architecture#

Client Layering#

  • UI Layer (View)

    • Responsible for interface rendering and user interaction.
    • Technical Implementation:
      • Android: XML layout + Jetpack Compose (declarative UI).
      • iOS: Storyboard/SwiftUI.
      • Cross-platform: Flutter (Dart), React Native (JavaScript).
  • Business Logic Layer (ViewModel/Presenter)

    • Handles business logic, data transformation, and state management.
    • Technical Implementation:
      • Android: ViewModel + LiveData.
      • iOS: Combine framework (Swift).
      • Cross-platform: Bloc pattern (Flutter), Redux (React Native).
  • Network Layer (Repository/DataSource)

    • Encapsulates API requests, caching strategies, and error handling.
    • Technical Implementation:
      • Android: Retrofit + OkHttp.
      • iOS: Alamofire (Swift) or URLSession.
      • Cross-platform: Dio (Flutter), Axios (React Native).
  • Local Storage Layer (Local Storage)

    • Manages local data persistence.
    • Technical Implementation:
      • SQLite: Room (Android), Core Data (iOS).
      • Key-value storage: SharedPreferences (Android), UserDefaults (iOS).
      • File storage: File System API.

Client Technology Stack#

PlatformDevelopment LanguageMainstream Framework/Tools
Native AndroidKotlin/JavaJetpack, Retrofit, Glide, Room
Native iOSSwift/Obj-CSwiftUI/UIKit, Alamofire, Core Data
Cross-platformDart/JSFlutter, React Native, Ionic

Server Technical Architecture#

Server Layering#

  • API Gateway Layer (API Gateway)

    • Unified entry point, handling routing, authentication, rate limiting, and logging.
    • Technical Implementation: Nginx, Kong, Spring Cloud Gateway.
  • Business Logic Layer (Application Layer)

    • Implements core business logic (e.g., order processing, user management).
    • Technical Implementation:
      • Java: Spring Boot, Micronaut.
      • Python: Django, FastAPI.
      • Node.js: Express, NestJS.
      • Go: Gin, Echo.
  • Data Storage Layer (Data Storage)

    • Persistent data storage and querying.
    • Technical Implementation:
      • Relational databases: MySQL, PostgreSQL.
      • Non-relational databases: MongoDB, Redis (cache).
      • Big data storage: HBase, Elasticsearch (search).
  • Message Queues and Asynchronous Processing

    • Decouples high-concurrency tasks (e.g., email sending, asynchronous order processing).
    • Technical Implementation: Kafka, RabbitMQ, Celery (Python).
  • Microservices and Containerization (Optional)

    • Breaks complex systems into independent services to enhance scalability.
    • Technical Implementation: Docker, Kubernetes, gRPC.

Server Technology Stack#

TypeTechnology Selection
Development LanguageJava, Python, Node.js, Go, C#
DatabaseMySQL, PostgreSQL, MongoDB, Redis
Cloud ServicesAWS, Alibaba Cloud, Firebase (Serverless)
Monitoring and OperationsPrometheus (monitoring), Grafana (visualization)

Client and Server Interaction Process#

Typical Interaction Process (Taking User Login as an Example)#

  1. Client Initiates Request

    • User inputs account password, and the client sends a login request via HTTPS (POST /api/login).
    • Data format: JSON (e.g., {"username": "user1", "password": "***"}).
  2. Server Processes Request

    • API Gateway verifies the request's legality (e.g., IP whitelist, rate limiting).
    • Business logic layer verifies account password and generates Token (JWT).
    • Database queries user information (MySQL SELECT * FROM users WHERE username = ?).
  3. Server Returns Response

    • Success: returns 200 OK + Token and user data.
    • Failure: returns 401 Unauthorized + error code.
  4. Client Processes Response

    • Parses response data, stores Token locally (SharedPreferences/Keychain).
    • Redirects to the homepage, updates UI state.

Communication Protocol and Data Format#

  • Protocol: HTTP/HTTPS (RESTful API), WebSocket (real-time communication).
  • Data Format: JSON (mainstream), Protocol Buffers (high-performance scenarios).
  • Security Mechanism: JWT authentication, OAuth 2.0 (third-party login), SSL/TLS encryption.

App Testing#

Testing Process#

  1. Requirement Analysis Phase

    • Clarify testing objectives: understand functional requirements, user scenarios, and non-functional requirements (e.g., performance, security).
    • Write testing requirement documents: determine testing scope, priority, and acceptance criteria.
  2. Testing Planning Phase

    • Develop testing strategy: determine testing types (functional, performance, compatibility, etc.), resource allocation, and schedule.
    • Risk assessment: identify potential risks (e.g., device fragmentation, network environment differences) and develop response plans.
  3. Test Case Design

    • Write test cases based on requirements, covering positive, negative scenarios, and boundary conditions.
    • Use design methods such as equivalence class partitioning, boundary value analysis, and scenario method.
  4. Test Environment Setup

    • Prepare hardware devices (real devices, emulators), network environment, test data, and toolchain.
  5. Test Execution

    • Execute test cases by priority, recording test results and defects.
    • Conduct in phases: smoke testing → functional testing → regression testing → acceptance testing.
  6. Defect Management

    • Use tools (e.g., JIRA, Bugzilla) to track the defect lifecycle (submission → fixing → verification → closure).
    • Analyze defect distribution and optimize testing focus.
  7. Test Report and Summary

    • Output test report: coverage, defect statistics, risk analysis, and improvement suggestions.
    • Review the testing process and optimize subsequent testing strategies.

Testing Methods#

  1. Black Box Testing

    • Focuses on input and output, not involving internal code logic.
    • Typical methods: functional testing, user experience testing, installation and uninstallation testing.
  2. White Box Testing

    • Designs test cases based on code logic, covering branches, paths, and conditions.
    • Common techniques: code coverage analysis (e.g., JaCoCo), static code analysis (e.g., SonarQube).
  3. Gray Box Testing

    • Combines black box and white box testing, locating issues through interface or log analysis.
  4. Special Testing Types

    • Functional Testing: Verifies core functionalities (e.g., login, payment) meet requirements.
    • Performance Testing: Response time, memory/CPU usage, startup speed (tools: GT, PerfDog).
    • Compatibility Testing: Covers different devices, OS versions, screen resolutions, network environments (tools: Firebase Test Lab).
    • Security Testing: Data encryption, permission management, vulnerability scanning (tools: OWASP ZAP, Burp Suite).
    • User Experience Testing: Interface usability, interaction smoothness, multilingual support.
    • Installation and Uninstallation Testing: Installation package size, upgrade coverage, residual file cleanup.
    • Interface Testing: Verifies API calls and data transmission (tools: Postman, Charles).
    • Regression Testing: Automated scripts cover main processes to ensure no regression issues in new versions.

Testing Technologies#

  1. Automated Testing

    • UI Automation: Appium (cross-platform), Espresso (Android), XCUITest (iOS).
    • Interface Automation: RestAssured, Python Requests.
    • Performance Automation: JMeter, LoadRunner.
  2. Cloud Testing Platforms

    • Use platforms like AWS Device Farm, Sauce Labs for parallel testing across multiple devices.
  3. Monkey Testing

    • Detect crashes and ANR through random events (clicks, swipes) (tools: Android ADB Monkey).
  4. A/B Testing

    • Compare user behavior data across different versions to optimize feature design (tools: Firebase A/B Testing).
  5. Code Static Analysis

    • Use Lint tools to detect code standards, memory leaks, and potential crashes.
  6. Network Simulation Tools

    • Simulate weak networks, delays, packet loss (tools: Network Link Conditioner, Charles Proxy).

Testing Environment#

  1. Hardware Environment

    • Real devices covering mainstream brands (e.g., iPhone, Huawei, Samsung) and different configurations (CPU, memory).
    • Emulators/virtual machines: Android Studio Emulator, iOS Simulator.
  2. Software Environment

    • Operating Systems: Android (different versions and custom ROMs), iOS (latest and old versions).
    • Third-party dependencies: SDK versions (e.g., Google Play Services), database compatibility.
  3. Network Environment

    • Test different network types (Wi-Fi, 4G/5G), weak networks (2G/high latency), and offline scenarios.
  4. Data Environment

    • Prepare test data: normal data, abnormal data (e.g., overly long text, special characters).
    • Data isolation: avoid test data contaminating the production environment.
  5. Continuous Integration (CI) Environment

    • Integrate tools like Jenkins, GitLab CI to achieve automated build → test → report processes.
  6. Security Testing Environment

    • Set up a sandbox environment to simulate man-in-the-middle attacks, data tampering, and other security threats.
Loading...
Ownership of this post data is guaranteed by blockchain and smart contracts to the creator alone.