starter-kit/current/testing.md
ulflow_phattt2901 9a8c40eee2
All checks were successful
CI Pipeline / Lint (push) Successful in 3m49s
CI Pipeline / Security Scan (push) Successful in 5m16s
CI Pipeline / Test (push) Successful in 2m21s
CI Pipeline / Build (push) Successful in 1m17s
CI Pipeline / Notification (push) Successful in 2s
fix: implement resource access middleware and router setup with auth integration
2025-06-05 13:30:08 +07:00

46 lines
1.6 KiB
Markdown

# Testing
## Tổng quan
Testing là một phần quan trọng trong quy trình phát triển, đảm bảo chất lượng mã nguồn và giảm thiểu bugs. Dự án này sử dụng các công cụ và phương pháp testing tiêu chuẩn trong Golang.
## Unit Testing
### Công cụ sử dụng
- Testify: Framework unit testing cho Go
- Table-driven tests: Thiết kế test cases linh hoạt
- Mocking: Giả lập dependencies
### Quy ước và cấu trúc
- Mỗi package cần có file `*_test.go` tương ứng
- Các test functions có format `Test{FunctionName}`
- Test cases nên bao gồm cả happy path và error cases
- Coverage yêu cầu tối thiểu: 80%
- Sử dụng t.Run() để chạy các subtest
## Integration Testing
### Approach
- Test containers: Chạy dependent services (database, caching, etc) trong Docker containers
- API testing: Kiểm tra endpoints và responses
- DB testing: Kiểm tra queries và migrations
### Setup và Teardown
- Sử dụng `TestMain` để setup và teardown test environment
- Cấu hình Docker containers cho testing
- Cleanup sau khi chạy tests
## E2E Testing
- API black-box testing
- Sequence testing cho business flows
- Performance testing
## CI/CD Integration
- Chạy tests trên mỗi commit và PR
- Lưu test results và coverage
- Chỉ merge khi tests pass
## Best Practices
1. **Write tests first (TDD approach)**
2. **Keep tests independent và idempotent**
3. **Sử dụng fixtures cho test data**
4. **Tránh hard-coding external dependencies**
5. **Tách common test code thành helper functions**