Test - chrisdacel/Backend_EcoRisaralda GitHub Wiki
Test Execution
To validate the system functionality, automated tests can be executed for both the frontend and backend using the following commands:
Frontend (React)
npm test
Backend (Laravel)
php artisan test
These commands execute the unit, component, and integration tests defined in the system.
Types of Tests Performed
Unit Tests
Unit tests were performed in both the backend and frontend to validate the correct functioning of individual system components.
Backend (Laravel):
Models were tested verifying:
- Correct functioning of casts
- Relationships between entities
- Integrity of data generated by factories
Example:
In TuristicPlaceModelTest, the correct relationship between tourist sites and other associated entities was validated.
Frontend (React):
Key system components were evaluated, especially those related to the initial user flow:
LoginPageHomePage
Tools Used:
- Backend: PHPUnit
- Frontend: Vitest + React Testing Library + JSDOM
Test Examples:
- Frontend: It was validated that the
LoginPagecomponent displays the message "Invalid credentials" when incorrect data is entered, and that it redirects correctly after authentication. - Backend: Through
EventsApiTest, the creation of ecotourism events was tested, verifying the assignment of required data such as image and date range.
Integration Tests
Integration tests were performed to validate the correct communication between the frontend and backend.
Strategy Used:
- In Laravel: Feature Tests simulating real HTTP requests
- In React: API response simulation (mocking) using Vitest
Evaluated Cases:
- Authentication flow (registration and login)
- Retrieval of dynamic data (view history and personalized recommendations)
Results:
Initially, errors occurred due to inconsistencies in variable names between frontend and backend (for example: birth_date and country).
Solution:
Tests were adjusted to align with the real API requirements, achieving a 100% success rate.
Stress Tests
Yes, stress tests were performed in a controlled environment during classroom sessions.
Description:
These tests consisted of subjecting the system to intensive usage conditions by simulating multiple simultaneous actions from different users, such as:
- Concurrent user registration
- Posting comments on different tourist sites
- Simultaneous navigation across municipalities and ecotourism sites
Objective:
To evaluate system behavior under high load conditions and verify its stability, response times, and handling of multiple requests.
Results:
- The system maintained stable behavior under moderate load conditions
- Slight delays were identified in data loading when multiple users performed actions simultaneously
- No critical failures or system crashes occurred
Conclusion:
Stress tests demonstrated that the platform is functional and stable for academic and normal-use environments, although it could be optimized to handle higher loads in a real production environment.
Tools Used
During the development and testing process, the following tools were used:
- PHPUnit: Main testing framework for the backend (Laravel)
- Vitest: Testing framework for the frontend (React)
- React Testing Library: Component behavior validation
- JSDOM: Browser environment simulation for testing
- Postman / Thunder Client: Manual endpoint testing
- Browser (Chrome) + Console (F12): Debugging and response analysis
- Automated scripts (Bash / PowerShell): Test environment execution
- In-memory SQLite: Test database to avoid affecting production
Identified Errors
During the testing process, several critical errors were identified and resolved:
- Namespace Error (Class not found)
The system failed when executing tests due to incorrect configurations in Laravel factories.
Solution:
The Country model was correctly linked with UserFactory, and relationships were adjusted using HasFactory.
- SQLite and MySQL Incompatibility
Tests used in-memory SQLite, but some commands were exclusive to MySQL (such as DELETE JOIN or ALTER TABLE ... ENUM).
Solution:
Conditional validations were implemented:
to execute specific instructions only in the appropriate environment.
- HTTP Response Code Error (200 vs 201)
Tests expected a 201 Created response, but the backend returned 200 OK.
Solution:
Tests were adjusted to accept the 200 response code, aligning with the real system logic without affecting functionality.
Results
- Full coverage of functional tests for the main system features was achieved
- All automated tests were successfully passed
- System stability in real usage scenarios was ensured
- Critical errors were fixed before deployment
Test Users
These credentials are intended only for testing in development or demonstration environments.
For functional testing and validation of different system roles, the following users were used:
| Role | Password | |
|---|---|---|
| Admin | [email protected] | ecorisaralda123 |
| Operator | [email protected] | password123 |
| Tourist | [email protected] | password123 |
Role Description
- Admin: Full system access, user management, and general configuration
- Operator: Content management such as events and tourist sites
- Tourist: End user who browses, consults information, and uses system functionalities