Mobile Automation Test Plan using
Appium (Java + Data-Driven
Framework)
Project Name
Mobile App Automation using Appium Java Framework
Tool Stack
Appium, Java, TestNG, Maven, Excel (Apache POI), ExtentReports, Git, Jenkins, Android
Studio/Xcode
Objective
To automate the functional and regression testing of a hybrid mobile application using
Appium and Java with a data-driven framework that facilitates test coverage with varying
input data sets.
Scope
- Automating Android and iOS hybrid mobile application flows
- Functional, regression, and smoke testing
- Data-driven testing using Excel files for input/output
- Integration with Jenkins for CI/CD automation
- Generation of execution reports using ExtentReports
Out of Scope
- Performance, load, or stress testing
- Security testing or vulnerability scans
- Manual UI/UX validation
Limitations
- Device-specific issues (resolution, OS version incompatibilities)
- iOS automation requires macOS and Xcode
- Appium server overhead may slow down large test suites
Effort Estimation
Activity Estimated Effort Timeline
Framework Setup (Maven + 3 days Week 1
TestNG + POI)
Base Utilities (driver mgmt, 2 days Week 1
logger, reader)
Test Script Development 6 days Week 1-2
(30 scenarios)
Data-Driven Excel Setup 1 day Week 2
Appium Server & Device 1 day Week 2
Setup
Jenkins/CI Integration 1 day Week 3
Reporting and 2 days Week 3
Documentation
Total 16 days 3 weeks
Test Strategy
- Page Object Model for UI separation
- Common BaseTest class with TestNG annotations
- Excel-driven input using Apache POI
- Appium capabilities dynamically handled via property files
- Grouped test suites for Android/iOS/Smoke/Regression
Sample Test Scenario
Scenario: Login functionality with valid and invalid credentials
Test Data: From Excel - username/password pairs
Expected Result: Valid credentials -> Navigate to Home screen, Invalid -> Show error
@DataProvider(name = "LoginData")
public Object[][] getLoginData() {
return ExcelUtil.readData("LoginSheet");
}
@Test(dataProvider = "LoginData")
public void testLogin(String username, String password, String expectedOutcome) {
loginPage.login(username, password);
Assert.assertEquals(loginPage.getOutcome(), expectedOutcome);
}
Test Data Strategy
- Stored in `TestData.xlsx` with multiple sheets per module
- Read via Apache POI
- Externalized for non-hardcoded data and reusability
Execution & Reporting
Tests executed via TestNG XML suite files
Maven commands:
mvn clean test -DsuiteXmlFile=smoke.xml
HTML reports generated via ExtentReports in `reports/` directory
CI/CD Integration
Jenkins pipeline triggers on code push
Reports published as HTML artifacts
Sample Jenkins Step:
stage('Execute Tests') {
steps {
sh 'mvn clean test -DsuiteXmlFile=regression.xml'
publishHTML(target: [allowMissing: false, reportDir: 'reports', reportFiles:
'ExtentReport.html', reportName: 'Test Report'])
}
}
Risks & Mitigations
| Risk | Mitigation |
|-----------------------------|-------------------------------------|
| Emulator instability | Use real devices or stable AVD |
| Flaky element locators | Use accessibility IDs, XPath fails |
| Excel format errors | Validate during test data load |
Appendices
- Appium Docs: https://appium.io/docs/en/about-appium/intro/
- TestNG Docs: https://testng.org/doc/
- Apache POI: https://poi.apache.org/
- ExtentReports: https://extentreports.com/
- Jenkins Pipeline: https://www.jenkins.io/doc/book/pipeline/
Prepared by: [Your Name]
Date: 2025-04-20