Final Delivery - JuanJoseBotero/Merko GitHub Wiki
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. |
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.
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 | 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 |
- 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.
- 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.
| 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 |
| 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. |
| 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 |
| # | 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. |
| # | 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 |
| 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. |
| 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 |
The application was deployed on GCP and can be accessed via this URL: http://34.31.138.222:5173/

See the presentation here