1.6 KiB
1.6 KiB
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.gotươ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
- Write tests first (TDD approach)
- Keep tests independent và idempotent
- Sử dụng fixtures cho test data
- Tránh hard-coding external dependencies
- Tách common test code thành helper functions