Final Delivery - JuanJoseBotero/Merko GitHub Wiki

1. Manual tests

The manual tests were divided into six main sections, each corresponding to a flow of activities that the user can perform.

Test ID Objective/Description Preconditions Test Steps Expected Result Check Phrase
TC-1 List Categories and Prompts (Unauthenticated): Verify that the unauthenticated user can view categories with descriptions and the associated prompts for each. User is NOT logged in. 1. Navigate to the categories section.
2. Verify that all categories and their descriptions are displayed.
3. Click on a specific category.
All categories with their description are displayed.
Upon clicking a category, the associated prompts are listed.
Without being logged in and entering the "categories" section, all categories and their description can be seen, and upon entering a category, the related prompts are visible.
TC-2 List and Filter Prompts (Unauthenticated): Verify that the unauthenticated user can view and filter all available prompts, but without the option to edit/select. User is NOT logged in. 1. Navigate to the view of all prompts.
2. Use the search bar and available filters.
3. Attempt to select or edit a prompt.
All prompts are displayed.
Search and filters function correctly, facilitating the location of prompts.
The option to edit or select for submission to the AI is disabled/invisible.
Without logging in, the prompts can be correctly searched and filtered, but the system does not allow selecting or editing them for the AI.
TC-3 Editing and AI Query of Selected Prompts (Authenticated): Verify the sequence of selection, individual editing, and AI query for a batch of 5 prompts. User IS logged in. 1. Select 5 prompts to query the AI.
2. Access the editing mode.
3. Edit the first prompt.
4. Save changes and proceed to the next prompt in the batch.
5. Verify that the edited prompt is automatically sent to the AI.
6. Repeat for all 5 prompts.
After selecting 5 prompts, the user can edit them one by one.
When proceeding to the next, the previous prompt is sent to the AI and a response is received before continuing with the editing of the next one.
Once logged in, 5 prompts are selected, edited one by one, and when changing the prompt the request is sent to the AI and its response is obtained.
TC-4 Dashboard Creation with Edited Prompts (Authenticated) : Verify the creation and redirection flow after editing and selecting prompts. User IS logged in and has completed prompt editing (TC-3). 1. Go to the option to create a dashboard.
2. Assign a unique name to the dashboard.
3. Confirm the creation.
The dashboard is successfully created.
The system automatically redirects to the newly created dashboard.
After editing and querying the prompts, I can name and create a new dashboard and the system correctly redirects me to it.
TC-5 Data and Diagram Consistency in Dashboard (Authenticated) : Verify the coherence of the information displayed in a specific dashboard. User IS logged in and is on a dashboard (e.g., the one created in TC-4). 1. Observe the charts and data on the dashboard.
2. Compare the information with the selected prompts that compose it.
The charts and data displayed are coherent and directly correlate with the content and responses of the selected prompts. When on a specific dashboard, the displayed data and charts are consistent and reflect the information from the prompts that comprise it.
TC-6 API Dashboard for Specific Product (Unauthenticated): Verify the access and functionality of the API dashboard for product data without authentication. User is NOT logged in. 1. Navigate to the "current dashboard" section (API dashboard).
2. Verify that product information is displayed.
3. Verify the presence and accuracy of specific diagrams and data consumed by the API.
The API dashboard loads without the need for login.
The specific product data and diagrams, sourced from an API consumption, are displayed correctly.
Without the need for registration, the "current dashboard" section functions correctly, showing specific product information, data, and diagrams by consuming the API.

2. Automated Software Testing

1. Test Automation Strategy

During the development of Merko, an automated testing strategy based on pytest was implemented. The goal was to ensure the stability of the backend (Django REST Framework) and the correct integration with external services (APIs).

The strategy was complemented by continuous manual testing on the frontend (React) to validate the dynamic data visualization in the dashboards.

Classification of Automated Tests

The automated tests were classified according to their purpose:

  • Unit Tests: To validate specific functions.
  • Integration Tests: To ensure communication between components (API ↔ Backend ↔ Frontend).
  • Functional Tests: To simulate real-world scenarios on the main endpoints.
  • Scenario Tests: Evaluate complete user flows that combine multiple functionalities, validating that the system behaves correctly under real conditions.

Test Case Summary

Test Case User Story Test Type
Basic Navigation US01: Prompts Catalog Functional
Selection and Editing of a Prompt US02: Message Parameterization Functional
Successful Request to OpenAI API US03: Analysis with AI Integration
API Error Handling US03: Analysis with AI Integration
User Registration US13: Login Scenario
User Login US13: Login IntegraciΓ³n
Integration with Google Trends US04: Web Scraping Unit
Validation of AI Output Format for Nivo Charts US05: Visual Dashboard Unit

2. Results Achieved

  • All tests were executed successfully.
  • Only one bug was detected during test execution.
  • Multiple complete user flows were validated, from registration/login to dashboard generation.
  • Errors in external APIs were simulated to ensure a controlled response.
  • Complementary manual tests were performed to evaluate visualization in React and real-time data handling.

3. Conclusions

  • Automation with pytest allowed for the execution of complete flows and validation of the behavior of the system's multiple integrations (OpenAI, UN Comtrade, and The World Bank). Integration with Google Trends was also evaluated during testing; however, its use was discarded due to the limitations of pytrends, which did not support the volume of requests required by the project.
  • Manual tests on the frontend were essential for validating the user's visual experience and the consistency of the rendered data.
  • Together, this strategy provided a solid, reproducible, and scalable foundation for the project's continuous evolution.

3. Usability test results

1. General Information

Field Description
Test Date 03/11/25
Moderator Samuel Villa
Total Users 4
Test Type Mixed (Virtual and In-person)
Average SUS Score 86.6 / 100
Average Confidence 4.5 / 5

2. Hypotheses Summary

Hypothesis Findings Key Notes
#1 β€” Navigation All users found it intuitive (average rating 5). Some located "Demand Analysis" through the navigation bar, others via "Learn More".
#2 β€” Dashboard Creation The process was smooth; minor limitation with 5 prompts. Suggested adding an API loading animation.
#3 β€” Dashboard Understanding Data visualization was clear and easy to interpret. Some users had trouble locating dashboards inside the profile.
#4 β€” Registration Simple and fast; average 55s. Missing validation feedback when entering incorrect credentials.

3. Quantitative Metrics

Metric Definition U1 U2 U3 U4 Average
Task 1 Time (s) Navigation efficiency 25 28 22 26 25
Task 1 Errors Misclicks/confusion 0 0 0 0 0
Task 2 Time (s) Dashboard creation 320 270 310 290 298
Task 2 Errors Incorrect steps 0 1 1 0 0.5
Task 3 Time (s) Interpretation speed 120 130 140 125 129
Task 4 Time (s) Registration speed 50 60 55 52 54
Average Confidence (1–5) User trust/satisfaction 5 4 4 5 4.5

4. Task Completion Summary

# Task Description Avg. Time (s) Errors Completed Help Needed Observations
1 Find "Demand Analysis" 25 0 βœ… ❌ Quick and intuitive; all <30s.
2 Create dashboard (5 prompts) 301 0.4 βœ… ❌ Smooth; some explored options longer.
3 Interpret dashboard data 125 0.4 βœ… ❌ Clear graphs; minor confusion locating the section.
4 Register and log in 55 0.4 βœ… ❌ Issue only with validation feedback.

5. System Usability Scale (SUS)

# Statement U1 U2 U3 U4 Average
1 I would like to use this application frequently 5 4 5 4 4.5
2 The application was unnecessarily complex (R) 1 1 2 1 1.25
3 The application was easy to use 5 4 4 5 4.5
4 I needed help to use it (R) 1 1 2 1 1.25
5 Features were well integrated 5 5 4 5 4.75
6 The application was inconsistent (R) 1 1 2 1 1.25
7 I learned to use it quickly 5 5 4 4 4.5
8 It was cumbersome (R) 1 1 2 1 1.25
9 I felt confident using it 5 4 4 5 4.5
10 I needed to learn many new things (R) 1 2 2 1 1.5
SUS (0–100) 90 86 80 92 87.0

6. General Observations

Category Notes
Strengths Clear interface, intuitive navigation, visually appealing dashboard, high confidence.
Issues Detected Difficulty locating the dashboard in the profile, weak validation feedback during login, 5-prompt limit.
Suggestions Add API data loading animation, allow more than 5 prompts, improve error/validation feedback.

7. Overall Summary

Criteria Success Threshold Result Met?
Task 1: Navigation Completed by β‰₯2/3 users 5/5 completed, avg. 25s Yes
Task 2: Dashboard Creation Dashboard created correctly 5/5 completed, avg. 298s Yes
Task 3: Dashboard Interpretation < 2 minutes Avg. 129s Yes
Task 4: Registration < 1 minute, confidence β‰₯4 Avg. 54s, 4.5 Yes
SUS Score β‰₯ 68 87 Yes

4. App deployment

The application was deployed on GCP and can be accessed via this URL: http://34.31.138.222:5173/ image

5. Presentation

See the presentation here

⚠️ **GitHub.com Fallback** ⚠️