Systematic AI Testing & Evaluation

SATE AI

A Fault Injection Framework for On-Device AI Models in Flutter

Catch failure scenarios, out-of-memory crashes, and model degradation before your users do.

Physical App Interface Preview

SATE AI Mobile App Interface

Pass Demo (TFLite / Mock)

SATE AI Passing Demo

Fault Detection (ONNX Failure)

SATE AI Fault Detection Demo
7 Fault Injectors
3 Model Adapters
164 Passing Tests
160/160 Pub.dev Score

Framework Architecture & Features

A comprehensive suite designed specifically for on-device AI stress testing.

Injector

Memory Pressure Simulation

Injects artificial memory overhead to verify how your app handles resource exhaustion and low-memory conditions without crashing.

Injector

Malformed Input Validation

Feeds empty payloads, 1MB oversized text strings, and binary garbage into model runtimes to ensure robust input handling.

Injector

Quantization Drift

Simulates cumulative precision loss across repeated inference runs to evaluate model stability under quantized constraints.

Injector

Thermal Throttling

Emulates mobile hardware thermal degradation and CPU clock throttling under sustained high-load workloads.

Injector

Latency & Model Swap

Injects artificial latency spikes and quality degradation to test fallback logic and error handling paths.

Injector

Confidence Validation

Enforces minimum prediction confidence thresholds to ensure output reliability before serving inference results.

Adapter

ONNX & TFLite Support

Built-in model adapters for ONNX Runtime and TensorFlow Lite (`tflite_flutter`), plus a decoupled `MockAdapter` for unit testing.

Tooling

Web Dashboard & CLI

Export stress reports as JSON/Markdown, analyze results in an interactive web dashboard, or integrate directly into CI/CD pipelines.

Quick Start Guide

Add SATE AI to your Flutter project in seconds.

pubspec.yaml
dependencies:
  sate_ai: ^0.7.0
example.dart
import 'package:sate_ai/sate_ai.dart';

Future<void> main() async {
  // Wrap model runtime in an adapter (or use MockAdapter)
  final model = MockAdapter(modelId: 'llama-3-8b');

  // Execute stress testing suite
  final report = await SateAI.stress(
    model: model,
    injectors: [
      MemoryPressureInjector(limitMb: 150),
      MalformedInputInjector(),
      ThermalThrottleInjector(
        model: model,
        temperatureStep: 10,
        maxTemperature: 85,
      ),
    ],
    timeout: const Duration(seconds: 45),
  );

  if (report.passed) {
    print('Model passed all stress scenarios!');
  } else {
    print('Failure detected: ${report.failureCount} issues found.');
    print(report.toMarkdown());
  }
}

Documentation & Resources

Explore guides, API references, and theoretical background.