Development & Quality Assurance

A complete overview of ListApp's development process, architecture decisions, automated testing framework, and quality assurance pipeline — built to professional standards.

Application Architecture

ListApp is a native Android application built with modern Android development best practices, targeting Android 8.0+ (API 26) with full Material Design 3 compliance.

Language & UI

Kotlin 2.2 with Jetpack Compose for declarative UI. Material 3 Design System with exclusive dark theme. Navigation Compose for type-safe screen navigation.

Data Layer

Room 2.7 (SQLite) with KSP code generation. Repository pattern with StateFlow for reactive data streams. DataStore for preferences.

Cloud & Auth

Firebase Authentication (Google Sign-In + Email). Cloud Firestore for real-time sync. FCM for push notifications. Google Play Billing for subscriptions.

Features

CameraX + ML Kit for barcode scanning. ZXing for code generation. WorkManager for scheduled notifications. In-App Updates API.

MVVM Architecture Pattern

The application follows the Model-View-ViewModel (MVVM) architecture with a clean separation of concerns:

Build Variants

The project uses Gradle build variants to manage different environments:

Automated Testing Framework

Professional end-to-end testing using Appium with UiAutomator2, running on a local Android emulator with Google Play Store for realistic production-like testing.

Technology Stack

Test Runner

Python 3.9+ with pytest 8.x. Allure reporting for rich test reports. pytest markers for test categorization. Parallel execution support.

Mobile Automation

Appium 3.6 server with UiAutomator2 8.2 driver. Supports both emulator and physical device testing. Cross-platform (macOS + Linux).

Emulator

Android 14 (API 34) with Google Play Store. x86_64 architecture for fast execution. Google account pre-configured for in-app purchase testing.

Design Pattern

Page Object Model (POM) with base page inheritance. Text-based UiAutomator selectors for Jetpack Compose elements. Reusable navigation helpers.

Test Execution Flow

1
Start Emulator

Boot AVD with Play Store

2
Start Appium

UiAutomator2 server ready

3
Run Tests

pytest executes suites

4
Allure Report

Rich HTML results

Test Suites

Test Results

Current automated test execution results on the staging build running on Android 14 emulator:

Test Suite Total Passed Failed Skipped Coverage
Smoke (Navigation & UI) 13 10 3* 0 77%
Products CRUD 4 3 0 1 75%
Shopping Lists CRUD 4 4 0 0 100%
Stores CRUD 4 2 1 1 50%
Settings 6 6 0 0 100%
Backup & Export 6 5 1 0 83%
Total 37 30 5 2 81%

* 3 smoke failures are expected on the staging build — features that require Firebase Auth (disabled) or populated database.

Quality Metrics

CI/CD Pipeline

The testing framework includes a GitHub Actions workflow for continuous integration, along with local automation scripts for daily development.

Pipeline Architecture

1
Code Push

Developer commits

2
Build APK

Gradle assembleStaging

3
Run Tests

Emulator + Appium

4
Report

Allure + artifacts

Development Workflow

# Build staging APK (no ads, no firebase, premium enabled)
./gradlew assembleStaging

# Install on emulator
adb install -r app/build/outputs/apk/staging/app-staging.apk

# Run automated tests
pytest tests/ -v --alluredir=allure-results

# Generate report
allure serve allure-results

Repositories

Future Enhancements