Este repositório contém um estudo-prático de Model-Based Testing (MBT) aplicado a três aplicativos de exemplo: notepad, gallery e filemanager. O objetivo é demonstrar como modelar cenários de teste com GraphWalker, gerar código e integrar testes automatizados Java/Maven com o framework Appium para mais de uma aplicação no mesmo projeto.
- Framework de Automação: Appium v2.12.0
- Ferramenta MBT: GraphWalker v4.3.3
- Linguagem: Java (JDK 21.0.5)
- Gerenciador de Dependências: Maven v3.9.8
- Compatibilidade: Windows, Linux e macOS
- Plataforma de Teste: Android
-
Git
-
IDE de sua preferência
- Para Visual Studio Code: Instalar "Extension Pack for Java" da Microsoft
-
Java JDK 21.0.5
- Download e instruções de instalação
- Importante: Versão 21 recomendada devido a problemas de compatibilidade com versões posteriores
-
Maven
- Guia de instalação
- Configurar após a instalação do Java
-
Android Studio e ADB
-
Appium
- Requer Node.js
- Guia de instalação
-
Driver UIAutomator2
-
Appium Inspector (opcional)
-
GraphWalker
- Ativar modo desenvolvedor
- Habilitar depuração USB
- Conectar via USB com compartilhamento de mídia
- Configurar permissões do Appium (disponível ao conectar o servidor Appium com o dispositivo pela primeira vez)
- Configurar dispositivo virtual via Android Studio
-
Clonar o repositório:
git clone [URL do repositório] -
Verificar dados do dispositivo (físico ou emulado):
adb devices -l
-
Configurar variáveis do dispositivo em
DriverRunner.java:appPath: Diretório do repositório clonadodeviceName: Nome do dispositivo (model)deviceUdid: UDID do dispositivodeviceOSVersion: Versão do Android
-
Instalar o APK disponível em
src/main/resourcesno seu dispositivo:- Necessário habilitar instalação de fontes desconhecidas
-
No caso do app Gallery, faça o download do zip disponível em resources e extraia para o diretório de imagens do seu dispositivo. Os testes são feitos apenas nas pastas deste zip para que não cause problemas em outros diretórios do aparelho e arquivos pessoais.
-
Limpar o cache do Maven:
mvn clean
-
Iniciar servidor Appium em um terminal separado:
appium
-
Para dispositivos físicos:
- Recomendado: Usar Vysor para espelhamento
-
Executar testes:
Execute o arquivo Main.java
mbt-study/
├── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── com/
│ │ │ ├── Main.java # Ponto de entrada principal dos testes
│ │ │ ├── filemanager/ # Módulo File Manager
│ │ │ │ ├── DriverRunner.java # Configuração do driver Appium
│ │ │ │ ├── FileManagerMain.java # Classe principal de execução
│ │ │ │ ├── impl/ # Implementações das ações do modelo
│ │ │ │ ├── model/ # Modelo GraphWalker
│ │ │ │ └── po/ # Page Objects (BasePage, NewFilePage, etc.)
│ │ │ ├── gallery/ # Módulo Gallery
│ │ │ │ ├── DriverRunner.java
│ │ │ │ ├── impl/ # Implementações (MainFlow, VideoPlayer, etc.)
│ │ │ │ ├── model/ # Modelos GraphWalker
│ │ │ │ └── po/ # Page Objects
│ │ │ └── notepad/ # Módulo Notepad
│ │ │ ├── DriverRunner.java
│ │ │ ├── NotepadMain.java
│ │ │ ├── impl/ # Implementações
│ │ │ ├── model/ # Modelo GraphWalker
│ │ │ └── po/ # Page Objects
│ │ └── resources/
│ │ ├── models/ # Modelos JSON do GraphWalker
│ │ │ ├── modelo-file-manager1.json
│ │ │ ├── modelo-gallery1.json
│ │ │ └── NotepadTestModel_v1.json
│ │ ├── *.apk # APKs dos aplicativos sob teste
│ │ └── Gallery-Media.zip # Arquivos de teste para Gallery
| └──
├── pom.xml # Configuração Maven e dependências
└── README.md # Documentação do projeto
Código Fonte (src/main/java/com/)
- Cada módulo (
filemanager,gallery,notepad) segue a mesma estrutura:DriverRunner.java: Configuração e inicialização do driver Appium*Main.java: Classe principal que executa os testes do móduloimpl/: Implementações das ações definidas nos modelos GraphWalkermodel/: Interfaces dos modelos GraphWalkerpo/: Page Objects que encapsulam os elementos e ações da UI
Recursos (src/main/resources/)
models/: Modelos JSON do GraphWalker que definem os grafos de teste- APKs: Aplicativos Android utilizados nos testes
- Arquivos de teste: Recursos adicionais necessários para execução (ex.: imagens para Gallery)
Os modelos JSON estão disponíveis em src/main/resources/models.
Para visualizar os modelos, faça o download dos arquivos e abra pelo GraphWalkerStudio.
- FarmerBB: Notepad — Por disponibilizar o app Notepad utilizado no estudo
- Fossify: FossifyOrg — Por disponibilizar os apps Gallery e File Manager utilizados no estudo
- GraphWalker: GraphWalker — Ferramenta MBT utilizada
- Appium: Appium — Framework de automação utilizado
This repository contains a practical study of Model-Based Testing (MBT) applied to three example applications: notepad, gallery, and filemanager. The objective is to demonstrate how to model test scenarios with GraphWalker, generate code, and integrate automated Java/Maven tests for multiple applications in the same project.
- Automation Framework: Appium v2.12.0
- MBT Tool: GraphWalker v4.3.3
- Language: Java (JDK 21.0.5)
- Dependency Manager: Maven v3.9.8
- Compatibility: Windows, Linux, and macOS
- Testing Platform: Android
- Git
- IDE of your choice
- For Visual Studio Code: Install Microsoft's "Extension Pack for Java"
- Java JDK 21.0.5
- Download and installation instructions
- Important: Version 21 recommended due to compatibility issues with newer versions
- Maven
- Installation guide
- Configure after Java installation
- Android Studio and ADB
- Appium
- Requires Node.js
- Installation guide
- UIAutomator2 Driver
- Appium Inspector (optional)
- GraphWalker
- Enable developer mode
- Enable USB debugging
- Connect via USB with media sharing enabled
- Configure Appium permissions (available when connecting the device to Appium Server for the first time)
- Set up virtual device via Android Studio
-
Clone the repository:
git clone [repository URL]
-
Verify device data (physical or emulated):
adb devices
-
Configure device variables in
DriverRunner.java:appPath: Cloned repository directorydeviceName: Device namedeviceUdid: Device UDIDdeviceOSVersion: Android version
-
Install the APK available in
src/main/resourceson your device:- Must enable installation from unknown sources
-
For the Gallery app, download the zip available in resources and extract it to your device's images directory. Tests are performed only on folders from this zip to avoid issues with other device directories and personal files.
-
Clean Maven cache:
mvn clean
-
Start Appium server in a separate terminal:
appium
-
For physical devices:
- Recommended: Use Vysor for screen mirroring
-
Execute tests:
Execute the Main.java file
mbt-study/
├── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── com/
│ │ │ ├── Main.java # Main entry point for tests
│ │ │ ├── filemanager/ # File Manager module
│ │ │ │ ├── DriverRunner.java # Appium driver configuration
│ │ │ │ ├── FileManagerMain.java # Main execution class
│ │ │ │ ├── impl/ # Model action implementations
│ │ │ │ ├── model/ # GraphWalker model
│ │ │ │ └── po/ # Page Objects (BasePage, NewFilePage, etc.)
│ │ │ ├── gallery/ # Gallery module
│ │ │ │ ├── DriverRunner.java
│ │ │ │ ├── impl/ # Implementations (MainFlow, VideoPlayer, etc.)
│ │ │ │ ├── model/ # GraphWalker models
│ │ │ │ └── po/ # Page Objects
│ │ │ └── notepad/ # Notepad module
│ │ │ ├── DriverRunner.java
│ │ │ ├── NotepadMain.java
│ │ │ ├── impl/ # Implementations
│ │ │ ├── model/ # GraphWalker model
│ │ │ └── po/ # Page Objects
│ │ └── resources/
│ │ ├── models/ # GraphWalker JSON models
│ │ │ ├── modelo-file-manager1.json
│ │ │ ├── modelo-gallery1.json
│ │ │ └── NotepadTestModel_v1.json
│ │ ├── *.apk # APKs of applications under test
│ │ └── Gallery-Media.zip # Test files for Gallery
| └──
├── pom.xml # Maven configuration and dependencies
└── README.md # Project documentation
Source Code (src/main/java/com/)
- Each module (
filemanager,gallery,notepad) follows the same structure:DriverRunner.java: Appium driver configuration and initialization*Main.java: Main class that executes the module testsimpl/: Implementations of actions defined in GraphWalker modelsmodel/: GraphWalker model interfacespo/: Page Objects that encapsulate UI elements and actions
Resources (src/main/resources/)
models/: GraphWalker JSON models that define test graphs- APKs: Android applications used in tests
- Test files: Additional resources needed for execution (e.g., images for Gallery)
JSON models are available in src/main/resources/models.
To view the models, download the files and open them in GraphWalkerStudio.
- FarmerBB: Notepad — For providing the Notepad app used in this study
- Fossify: FossifyOrg — For providing the Gallery and File Manager apps used in this study
- GraphWalker: GraphWalker — MBT tool used
- Appium: Appium — Automation framework used