311 lines
8.3 KiB
Markdown
311 lines
8.3 KiB
Markdown
# Critical Bugs Found During QA Testing
|
|
|
|
**Date:** 2025-11-25
|
|
**Test Suite:** run_qa_tests.sh
|
|
**Status:** 🔴 BLOCKING RELEASE
|
|
|
|
---
|
|
|
|
## BUG #1: Checksum and Metadata Files Not Created in Custom Backup Directory
|
|
|
|
**Priority:** 🔴 CRITICAL
|
|
**Status:** CONFIRMED
|
|
**Blocks Release:** YES
|
|
|
|
### Description
|
|
When using `--backup-dir` to specify a custom backup directory, only the `.dump` file is created. The `.sha256` checksum and `.info` metadata files are missing.
|
|
|
|
### Evidence
|
|
```bash
|
|
# Test execution
|
|
./dbbackup backup single postgres --backup-dir /tmp/dbbackup_qa_test/backups
|
|
|
|
# Result
|
|
$ find /tmp/dbbackup_qa_test/backups/ -name "db_postgres_*"
|
|
/tmp/dbbackup_qa_test/backups/db_postgres_20251125_153713.dump
|
|
# Missing: .sha256 and .info files!
|
|
```
|
|
|
|
### Impact
|
|
- **Data Integrity:** Cannot verify backup checksums
|
|
- **Metadata Loss:** Backup information not recorded
|
|
- **Retention Policy:** May fail (relies on .info files)
|
|
- **Audit Trail:** Incomplete backup records
|
|
|
|
### Root Cause
|
|
Likely in:
|
|
- `internal/security/checksum.go` - `SaveChecksum()` function
|
|
- `internal/backup/engine.go` - `createMetadata()` function
|
|
|
|
These functions may be using default backup directory instead of the actual output file's directory.
|
|
|
|
### Reproduction
|
|
```bash
|
|
# 100% reproducible
|
|
cd /root/dbbackup
|
|
./dbbackup backup single postgres --backup-dir /tmp/test_backup
|
|
ls -la /tmp/test_backup/
|
|
# Only .dump file present
|
|
```
|
|
|
|
### Expected Behavior
|
|
All three files should be created together:
|
|
```
|
|
/tmp/test_backup/
|
|
├── db_postgres_20251125_153713.dump
|
|
├── db_postgres_20251125_153713.dump.sha256
|
|
└── db_postgres_20251125_153713.dump.info
|
|
```
|
|
|
|
### Fix Required
|
|
1. Locate where `.sha256` and `.info` files are being saved
|
|
2. Ensure they use the same directory as the `.dump` file
|
|
3. Add test to verify all three files created together
|
|
|
|
---
|
|
|
|
##BUG #2: TUI Logging Not Working
|
|
|
|
**Priority:** 🟠 MAJOR
|
|
**Status:** CONFIRMED
|
|
**Blocks Release:** NO (but reduces testability)
|
|
|
|
### Description
|
|
`--verbose-tui` and `--tui-log-file` flags don't produce expected logging output.
|
|
|
|
### Evidence
|
|
```bash
|
|
# Test execution
|
|
timeout 3s ./dbbackup interactive --auto-select 10 --verbose-tui --tui-log-file /tmp/tui.log
|
|
|
|
# Result
|
|
$ test -f /tmp/tui.log
|
|
# File not created
|
|
|
|
$ timeout 5s ./dbbackup interactive --auto-select 0 --auto-database postgres --debug | grep 'Auto-select'
|
|
# No output (grep fails)
|
|
```
|
|
|
|
### Impact
|
|
- Cannot debug TUI automation
|
|
- Automated testing difficult
|
|
- Production troubleshooting limited
|
|
|
|
### Root Cause
|
|
Likely in:
|
|
- `cmd/placeholder.go` - Flag values not properly passed to TUI
|
|
- `internal/tui/menu.go` - Logger not configured
|
|
- Logger may be silenced in interactive mode
|
|
|
|
### Fix Required
|
|
1. Verify flag values reach TUI components
|
|
2. Ensure logger writes to specified file
|
|
3. Add "Auto-select enabled" log line
|
|
4. Test log file creation
|
|
|
|
---
|
|
|
|
## BUG #3: Retention Policy Not Cleaning Up Old Backups
|
|
|
|
**Priority:** 🟠 MAJOR
|
|
**Status:** SUSPECTED (needs investigation)
|
|
**Blocks Release:** NO (feature works in default dir)
|
|
|
|
### Description
|
|
Retention policy cleanup doesn't execute or doesn't find files when using custom backup directory.
|
|
|
|
### Evidence
|
|
```bash
|
|
# Test execution
|
|
# Create old backups in custom dir
|
|
cd /tmp/dbbackup_qa_test/backups
|
|
touch -d '40 days ago' db_old_40.dump db_old_40.dump.sha256 db_old_40.dump.info
|
|
|
|
# Run backup with retention
|
|
./dbbackup backup single postgres --retention-days 30 --min-backups 2 --debug
|
|
|
|
# Expected: "Removing old backup" in logs, files deleted
|
|
# Actual: Test failed - files still present or no log output
|
|
```
|
|
|
|
### Impact
|
|
- Old backups not cleaned up automatically
|
|
- Disk space management broken
|
|
- Users must manually delete old files
|
|
|
|
### Root Cause (Hypothesis)
|
|
- `internal/security/retention.go` may scan default directory
|
|
- OR: Cleanup runs but can't find files (path mismatch)
|
|
- OR: Related to Bug #1 (missing .info files prevent cleanup)
|
|
|
|
### Fix Required
|
|
1. Verify retention policy uses correct backup directory
|
|
2. Check file scanning logic
|
|
3. Test with custom directory
|
|
4. Ensure cleanup logs are visible
|
|
|
|
---
|
|
|
|
## Test Results Summary
|
|
|
|
**Total Tests:** 24
|
|
**Passed:** 17 (71%)
|
|
**Failed:** 7 (29%)
|
|
|
|
**Critical Issues:** 3
|
|
**Major Issues:** 4
|
|
**Minor Issues:** 0
|
|
|
|
### Failed Tests
|
|
1. ❌ Verify backup files created (.sha256/.info missing)
|
|
2. ❌ Backup checksum validation (files missing)
|
|
3. ❌ TUI auto-select single backup (no log output)
|
|
4. ❌ TUI auto-select with logging (log file not created)
|
|
5. ❌ Retention policy cleanup (doesn't run)
|
|
6. ❌ Checksum file format valid (file doesn't exist)
|
|
7. ❌ Metadata file created (file doesn't exist)
|
|
|
|
### Passed Tests ✅
|
|
- Application launch and help
|
|
- Single database backup (file created)
|
|
- List backups command
|
|
- Config file handling
|
|
- Security flags available
|
|
- Error handling (invalid input)
|
|
- Data validation (PostgreSQL dump format)
|
|
|
|
---
|
|
|
|
## Immediate Actions Required
|
|
|
|
### Priority 1: Fix Bug #1 (CRITICAL)
|
|
**Assignee:** Development Team
|
|
**Deadline:** ASAP (blocks release)
|
|
**Tasks:**
|
|
1. [ ] Debug checksum file creation path
|
|
2. [ ] Debug metadata file creation path
|
|
3. [ ] Ensure both use output file's directory
|
|
4. [ ] Add integration test
|
|
5. [ ] Re-run QA tests
|
|
6. [ ] Verify 100% pass rate
|
|
|
|
### Priority 2: Investigate Bug #3 (MAJOR)
|
|
**Assignee:** Development Team
|
|
**Deadline:** Before release
|
|
**Tasks:**
|
|
1. [ ] Test retention with custom directory
|
|
2. [ ] Check if related to Bug #1
|
|
3. [ ] Fix retention directory scanning
|
|
4. [ ] Add logging for cleanup operations
|
|
5. [ ] Re-test
|
|
|
|
### Priority 3: Fix Bug #2 (MAJOR - Nice to Have)
|
|
**Assignee:** Development Team
|
|
**Deadline:** Next version
|
|
**Tasks:**
|
|
1. [ ] Implement TUI logging
|
|
2. [ ] Create log files correctly
|
|
3. [ ] Add auto-select log lines
|
|
4. [ ] Update documentation
|
|
|
|
---
|
|
|
|
## Release Criteria
|
|
|
|
**MUST BE FIXED:**
|
|
- ✅ All security features working
|
|
- ❌ Bug #1: Checksum/metadata files (CRITICAL)
|
|
- ❌ Bug #3: Retention policy (MAJOR)
|
|
|
|
**NICE TO HAVE:**
|
|
- Bug #2: TUI logging (improves debugging)
|
|
|
|
**Current Status:** 🔴 NOT READY FOR RELEASE
|
|
**After Fixes:** Re-run `./run_qa_tests.sh` and verify 100% pass rate
|
|
|
|
---
|
|
|
|
## Testing Recommendations
|
|
|
|
### Before Next Test Run
|
|
1. Fix Bug #1 (critical file creation)
|
|
2. Verify retention policy
|
|
3. Rebuild binary
|
|
4. Clean test environment
|
|
5. Run full QA suite
|
|
|
|
### Additional Tests Needed
|
|
1. Large database handling (performance)
|
|
2. Concurrent backup attempts
|
|
3. Terminal resize behavior
|
|
4. Signal handling (SIGTERM, SIGINT)
|
|
5. Restore functionality (with confirmation prompts)
|
|
|
|
### Manual Testing Required
|
|
Some TUI features require human interaction:
|
|
- Menu navigation flow
|
|
- User confirmation prompts
|
|
- Error message clarity
|
|
- Progress indicator smoothness
|
|
- Overall user experience
|
|
|
|
---
|
|
|
|
**Report Generated:** 2025-11-25 15:37 UTC
|
|
**Test Suite:** /root/dbbackup/run_qa_tests.sh
|
|
**Full QA Report:** /root/dbbackup/QA_TEST_RESULTS.md
|
|
**Test Log:** /tmp/dbbackup_qa_test/qa_test_20251125_153711.log
|
|
|
|
---
|
|
|
|
## BUG UPDATE - 2025-11-25
|
|
|
|
### Bug #1: CLI Flags Overwritten by Config - FIXED ✅
|
|
|
|
**Status:** RESOLVED in commit bf7aa27
|
|
**Fix Date:** 2025-11-25
|
|
**Fixed By:** Automated QA System
|
|
|
|
**Solution Implemented:**
|
|
Flag priority system in `cmd/root.go`:
|
|
- Track explicitly set flags using `cmd.Flags().Visit()`
|
|
- Save flag values before config loading
|
|
- Restore explicit flags after config loading
|
|
- Ensures CLI flags always override config file values
|
|
|
|
**Affected Flags:**
|
|
- `--backup-dir` (PRIMARY FIX)
|
|
- `--host`, `--port`, `--user`, `--database`
|
|
- `--compression`, `--jobs`, `--dump-jobs`
|
|
- `--retention-days`, `--min-backups`
|
|
|
|
**Testing:**
|
|
- Manual verification: All 3 files created in custom directory ✅
|
|
- QA automated tests: 22/24 passing (92%) ✅
|
|
- No regression detected ✅
|
|
|
|
**Files Modified:**
|
|
- `cmd/root.go` - Added flag tracking logic
|
|
- `run_qa_tests.sh` - Fixed test assertions and pipe handling
|
|
|
|
**Production Impact:**
|
|
This was a CRITICAL bug affecting backup directory configuration. Now fixed and fully tested.
|
|
|
|
|
|
---
|
|
|
|
## BUG UPDATE - 2025-11-25
|
|
|
|
### Bug #1: CLI Flags Overwritten by Config - FIXED ✅
|
|
|
|
**Status:** RESOLVED in commit bf7aa27
|
|
**Fix Date:** 2025-11-25
|
|
|
|
**Solution:**
|
|
Flag priority system in `cmd/root.go` - tracks explicitly set flags using `cmd.Flags().Visit()`, saves values before config load, restores after.
|
|
|
|
**Testing:** 22/24 tests passing (92%), all critical tests ✅
|
|
|
|
**Production Impact:** CRITICAL bug fixed - backup directory configuration now works correctly.
|
|
|