Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 0 additions & 6 deletions .github/workflows/Android_test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -267,12 +267,6 @@ jobs:
executionTypesJson=$(curl -s "http://localhost:8080/metrics/$metricId/execution-types")
executionTypeName=$(echo "$executionTypesJson" | jq -r --arg id "$executionTypeId" '.[] | select(.executionTypeId == ($id|tonumber)) | .executionTypeName // "N/A"')

echo "- **App Name:** $appName" >> results/summary.md
echo "- **App Version:** $appVersion" >> results/summary.md
echo "- **App Package:** $appPackage" >> results/summary.md
echo "- **Main Activity:** $mainActivity" >> results/summary.md
echo "- **Execution Type:** $executionTypeName" >> results/summary.md

echo "#### Test Execution: $testName" >> results/summary.md
echo "- **Metric:** $metricName" >> results/summary.md
echo "- **Device:** $deviceName" >> results/summary.md
Expand Down
61 changes: 61 additions & 0 deletions .github/workflows/diagrams.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
name: Java CI

permissions:
contents: write

on:
push:
branches: [main]
pull_request:
workflow_dispatch:

jobs:
build:
runs-on: ubuntu-latest

steps:
- name: Get the code from the repository
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Create error logs directory
run: mkdir -p error-logs

- name: Set up JDK 21
uses: actions/setup-java@v4
with:
java-version: '21'
distribution: 'temurin'

- name: Set execute permissions on build scripts
run: chmod +x tools/generate/generate-plantuml-diagrams.sh || true

- name: Debug script presence
run: |
ls -l tools/generate/
file tools/generate/generate-plantuml-diagrams.sh
head -5 tools/generate/generate-plantuml-diagrams.sh

- name: Install Graphviz
run: sudo apt-get install -y graphviz

- name: Set up Git user
run: |
git config --global user.name "github-actions[bot]"
git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com"

- name: Update .svg
run: ./tools/generate/generate-plantuml-diagrams.sh

- name: Add SVG files
run: git add *.svg

- name: Commit and push if there are changes
run: |
if ! git diff --cached --quiet; then
git commit -m "Update diagrams"
git push origin HEAD:main
else
echo "No changes to SVG files"
fi
6 changes: 0 additions & 6 deletions .github/workflows/iOS_tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -225,12 +225,6 @@ jobs:
executionTypesJson=$(curl -s "http://localhost:8080/metrics/$metricId/execution-types")
executionTypeName=$(echo "$executionTypesJson" | jq -r --arg id "$executionTypeId" '.[] | select(.executionTypeId == ($id|tonumber)) | .executionTypeName // "N/A"')

echo "- **App Name:** $appName" >> results/summary.md
echo "- **App Version:** $appVersion" >> results/summary.md
echo "- **App Package:** $appPackage" >> results/summary.md
echo "- **Main Activity:** $mainActivity" >> results/summary.md
echo "- **Execution Type:** $executionTypeName" >> results/summary.md

echo "#### Test Execution: $testName" >> results/summary.md
echo "- **Metric:** $metricName" >> results/summary.md
echo "- **Device:** $deviceName" >> results/summary.md
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,7 @@ build/
# Include config.json
!config.json
!data.json
!plantuml-1.2023.1.jar

# Ignore ui_dumps folder
ui_dumps/
Expand Down
130 changes: 106 additions & 24 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,25 +1,107 @@
<img width=100% src="https://capsule-render.vercel.app/api?type=waving&height=120&color=3A4A51&reversal=true&textBg=false&section=header"/>

# Melmac Performance Testing

## 1. Description of the Project

As part of [Mindera's](https://mindera.com) internship program, we are developing a framework for testing the performance of mobile applications. The goal is to create a robust and industry-aligned solution that will help evaluate and optimize the performance of mobile apps. Over the course of this internship, we will focus on identifying key performance metrics, developing a testing framework, and analyzing the results to propose performance enhancements. Our work will contribute to Mindera’s ongoing efforts to ensure that deliverables meet high industry standards and will provide valuable insights for future performance testing initiatives. This repository serves as the central hub for our internship project, containing initial source code, project management tools, and documentation to guide us through the process of building and refining the performance testing framework.

## 2. Planning and Technical Documentation

[_`Planning and Technical Documentation`_](docs/README.md)

## 3. How to Build

🚧 WORK IN PROGRESS 🚧

## 4. How to Execute Tests

🚧 WORK IN PROGRESS 🚧

## 5. How to Run

🚧 WORK IN PROGRESS 🚧

<img width=100% src="https://capsule-render.vercel.app/api?type=waving&height=120&color=3A4A51&reversal=true&textBg=false&section=header"/>

# Melmac Performance Testing

## 1. Description of the Project

As part of [Mindera's](https://mindera.com) internship program, we are developing a framework for testing the performance of mobile applications. The goal is to create a robust and industry-aligned solution that will help evaluate and optimize the performance of mobile apps. Over the course of this internship, we will focus on identifying key performance metrics, developing a testing framework, and analyzing the results to propose performance enhancements. Our work will contribute to Mindera’s ongoing efforts to ensure that deliverables meet high industry standards and will provide valuable insights for future performance testing initiatives. This repository serves as the central hub for our internship project, containing initial source code, project management tools, and documentation to guide us through the process of building and refining the performance testing framework.

## 2. Planning and Technical Documentation

[_`Planning and Technical Documentation`_](docs/readme.md)

## 3. Necessary Tools

To set up and work on this project, ensure you have the following tools and dependencies installed:

### 3.1 Java Development Kit (JDK)
- **Requirement:** JDK 17 or higher (the backend is developed in Kotlin).
- **Download:** [Adoptium](https://adoptium.net/)

### 3.2 Gradle
- **Purpose:** Build automation for compiling, running, and testing the project.
- **Installation:**
- Install manually ([Guide](https://gradle.org/install/)), or use the project’s Gradle wrapper (`./gradlew`).

### 3.3 Android SDK & ADB (Android Debug Bridge)
- **Purpose:** Required for running performance tests on Android devices or emulators.
- **Notes:**
- Ensure `adb` is available in your system `PATH`.
- Install via [Android Studio](https://developer.android.com/studio)
- Install platform tools, system images, and emulator support.

### 3.4 Xcode & Command Line Tools (macOS only)
- **Purpose:** Required for iOS performance testing.
- **Notes:**
- Uses `xcodebuild`, `simctl`, and other Xcode utilities.
- Install Command Line Tools: `xcode-select --install`
- Download Xcode from the [Mac App Store](https://apps.apple.com/us/app/xcode/id497799835?mt=12)
- XCUI tests are written in Swift and executed via `xcodebuild test-without-building`.

### 3.5 Mobile Device or Emulator/Simulator
- **Android:** Real device or emulator.
- **iOS:** Real device or simulator (macOS required).

### 3.6 API Testing Tools (Optional)
- **Purpose:** For testing and invoking API endpoints during development.
- **Examples:** [curl](https://curl.se/) or [Postman](https://www.postman.com/)

## 3. How to Generate the Gradle Wrapper

To generate the Gradle wrapper, you can run the following command in the root directory of your project:

```bash
./gradlew wrapper --gradle-version=7.6.1
```

This command generates the Gradle wrapper files, allowing you to run Gradle tasks without installing Gradle globally. The `--gradle-version` flag is optional - if omitted, the wrapper will use the version specified in your project's `gradle/wrapper/gradle-wrapper.properties` file or the default version for your current Gradle installation.

## 4. How to Build

To build the project, you can use the Gradle wrapper. Run the following command in the root directory of your project:

```bash
./gradlew build
```

This command compiles the source code, runs tests, and packages the application into a JAR file. If you want to skip tests during the build process, you can use:

```bash
./gradlew build -x test
```

## 5. How to Execute Tests

To execute the tests, you can use the Gradle wrapper with the `test` task. Run the following command in the root directory of your project:

```bash
./gradlew test
```

This command runs all the tests defined in your project. If you want to run a specific test class or method, you can use the `--tests` option:

```bash
./gradlew test --tests "com.example.YourTestClass"
```

## 6. How to Run
To run the application, you can use the Gradle wrapper with the `run` task. Run the following command in the root directory of your project:

```bash
./gradlew run
```
This command starts the application, allowing you to interact with it.

## 7. How to Call Endpoints

To call the endpoints of your application, you can use tools like `curl`, Postman, or any HTTP client library in your programming language. The endpoints are defined in your application code, and you can access them using the appropriate HTTP methods (GET, POST, PUT, DELETE, etc.) along with the correct URL paths.

**Example using `curl`:**

```bash
curl -X GET http://localhost:8080/api/endpoint
```

Replace `GET` with the desired HTTP method and update the URL to match your application's endpoint.

<img width=100% src="https://capsule-render.vercel.app/api?type=waving&height=120&color=3A4A51&reversal=true&textBg=false&section=footer"/>
Binary file modified docs/Melmac DB.vpp
Binary file not shown.
112 changes: 56 additions & 56 deletions docs/README.md
Original file line number Diff line number Diff line change
@@ -1,57 +1,57 @@
<img width=100% src="https://capsule-render.vercel.app/api?type=waving&height=120&color=4E1764"/>

# Project Planning and Technical Documentation

## 1. Team Members

| Roles | Name | Github Profile |
|:---------------------:|:-----------------:|:---------------------------------------:|
| QAE Intern | Vasco Sousa | [<img src="https://avatars.githubusercontent.com/u/199751114?v=4" height="40" alt="Vasco profile"/>](https://github.com/vascosousamindera) |
| QAE & Supervisor| Aires Oliveira | [<img src="https://avatars.githubusercontent.com/u/190511400?v=4" height="40" alt="Aires profile"/>](https://github.com/airesoliveira-mindera) |

## 2. Tasks List

- **T1:** Explore the concepts and fundamentals of non-functional requirements and performance in mobile applications.

- **T2:** Hands-on on the internal mobile application project that will serve as a basis for applying the performance testing tool.

- **T3:** Identify and document the requirements and features of the performance testing tool by collaborating with a development team of QAEs and Developers.

- **T4:** Implement a performance testing task – evaluating one of the metrics identified - that will serve as a Proof of Concept (POC).

- **T5:** Implement Database Model to record performance tests results.

- **T6:** Iterate on other implementations/metrics gathered and defined in T3 – depending on the results of iteration T4.

- **T7:** Produce technical documentation and user guides on the final state of the implemented tool.

- **T8:** Analyse the potential of the tool, notably identifying current advantages, improvements recorded in the projects where it was used, and identifying next iterations in the development.

- **T9:** Produce Final Report for University.

## 3. Tasks Planning

| Task | Fev | | Mar | | Abr | | Mai | | Jun | |
|------|------|-----|------|-----|------|-----|------|-----|------|-----|
| T1 | | █ | | | | | | | | |
| T2 | | █ | █ | | | | | | | |
| T3 | | | █ | | | | | | | |
| T4 | | | | █ | █ | █ | | | | |
| T5 | | | | | | █ | █ | | | |
| T6 | | | | | | | █ | █ | | |
| T7 | | | | | | | █ | █ | | |
| T8 | | | | | | | █ | █ | | |
| T9 | | | | | | | | █ | █ | |

### Legend:

- **Each "█" symbol represents the time period in which the task is active.**
- **Each month is divided into two columns, each representing two weeks.**
- **Tasks are scheduled across multiple months.**


## 4. Global Artifacts

[_`Global Artifacts`_](global-artifacts/README.md)

<img width=100% src="https://capsule-render.vercel.app/api?type=waving&height=120&color=4E1764"/>
# Project Planning and Technical Documentation
## 1. Team Members
| Roles | Name | Github Profile |
|:---------------------:|:-----------------:|:---------------------------------------:|
| QAE Intern | Vasco Sousa | [<img src="https://avatars.githubusercontent.com/u/199751114?v=4" height="40" alt="Vasco profile"/>](https://github.com/vascosousamindera) |
| QAE & Supervisor| Aires Oliveira | [<img src="https://avatars.githubusercontent.com/u/190511400?v=4" height="40" alt="Aires profile"/>](https://github.com/airesoliveira-mindera) |
## 2. Tasks List
- **T1:** Explore the concepts and fundamentals of non-functional requirements and performance in mobile applications.
- **T2:** Hands-on on the internal mobile application project that will serve as a basis for applying the performance testing tool.
- **T3:** Identify and document the requirements and features of the performance testing tool by collaborating with a development team of QAEs and Developers.
- **T4:** Implement a performance testing task – evaluating one of the metrics identified - that will serve as a Proof of Concept (POC).
- **T5:** Implement Database Model to record performance tests results.
- **T6:** Iterate on other implementations/metrics gathered and defined in T3 – depending on the results of iteration T4.
- **T7:** Produce technical documentation and user guides on the final state of the implemented tool.
- **T8:** Analyse the potential of the tool, notably identifying current advantages, improvements recorded in the projects where it was used, and identifying next iterations in the development.
- **T9:** Produce Final Report for University.
## 3. Tasks Planning
| Task | Fev | | Mar | | Abr | | Mai | | Jun | |
|------|------|-----|------|-----|------|-----|------|-----|------|-----|
| T1 | | █ | | | | | | | | |
| T2 | | █ | █ | | | | | | | |
| T3 | | | █ | | | | | | | |
| T4 | | | | █ | █ | █ | | | | |
| T5 | | | | | | █ | █ | | | |
| T6 | | | | | | | █ | █ | | |
| T7 | | | | | | | █ | █ | | |
| T8 | | | | | | | █ | █ | | |
| T9 | | | | | | | | █ | █ | |
### Legend:
- **Each "█" symbol represents the time period in which the task is active.**
- **Each month is divided into two columns, each representing two weeks.**
- **Tasks are scheduled across multiple months.**
## 4. Global Artifacts
[_`Global Artifacts`_](global-artifacts/readme.md)
<img width=100% src="https://capsule-render.vercel.app/api?type=waving&height=120&color=4E1764&section=footer"/>
Loading