yinji/docs/TESTING_PLAN.md
wenpai 9587cd8ef4 feat: Sprint 1-3 安全修复、状态管理重构、性能优化
Sprint 1 - 安全基线修复(5项):
- 修复 DOM XSS 漏洞(seal-library.js, batch-processing.js)
- 修复 settings 导入 schema 注入
- CDN 锁版本 + SRI 完整性校验
- 外链添加 rel="noopener noreferrer"
- 替换 confirm/prompt 为自定义对话框

Sprint 2 - 状态管理重构(4项):
- 新建 state.js 单例模式管理全局状态
- 解耦 window.* 全局变量
- 修复印章库状态同步 bug
- localStorage 添加错误处理

Sprint 3 - 性能优化(4项):
- 删除死代码(loadScript, cleanupDistantCanvases 等)
- 实现缩略图懒加载(前3页+可视区)
- 添加文件大小限制(PDF 50MB / 图片 5MB)
- 完善 Canvas 内存清理

修复总计: 13项(3 P0 + 3 P1 + 6 P2 + 1 P3)

[CC] [CX]
2026-03-28 13:45:52 +08:00

5.6 KiB

PDF Stamper v1.1.0 - Testing Plan & Results

Date: 2026-01-08 Phase: Week 2, Day 10 Version: v1.1.0


🎯 Testing Objectives

Verify that all Phase 1 improvements are working correctly:

  1. File validation prevents crashes
  2. Lazy loading improves performance
  3. Memory management prevents leaks
  4. Toast notifications provide good UX
  5. Loading indicators show operation progress

📋 Test Categories

1. File Validation Tests

PDF File Validation

  • Upload PDF < 50MB → Should succeed
  • Upload PDF > 50MB → Should show error toast
  • Upload non-PDF file → Should show error toast
  • Upload PDF with > 500 pages → Should show error toast
  • Upload corrupted PDF → Should show error toast

Seal Image Validation

  • Upload image < 5MB → Should succeed
  • Upload image > 5MB → Should show error toast
  • Upload non-image file → Should show error toast
  • Upload image > 4096x4096 → Should show error toast

2. Lazy Loading Tests

Performance Tests

  • Load 10-page PDF → Measure load time (target: < 3s)
  • Load 50-page PDF → Measure load time (target: < 5s)
  • Load 100-page PDF → Measure load time (target: < 10s)
  • Load 200-page PDF → Verify no crash
  • Switch between pages → Measure response time (target: < 100ms)

Memory Tests

  • Load 10-page PDF → Check memory usage (target: < 100MB)
  • Load 50-page PDF → Check memory usage (target: < 150MB)
  • Load 100-page PDF → Check memory usage (target: < 200MB)
  • Switch pages 20 times → Verify memory stable
  • Load new PDF → Verify old PDF memory released

3. Toast Notification Tests

Success Toasts

  • Upload valid PDF → Shows success toast
  • Upload valid seal → Shows success toast
  • Export PDF → Shows success toast

Error Toasts

  • Upload invalid PDF → Shows error toast with reason
  • Upload oversized file → Shows error toast with size
  • Export fails → Shows error toast (manual dismiss)

Warning Toasts

  • Add seal without seal image → Shows warning toast
  • Delete seal without selection → Shows warning toast

Toast Behavior

  • Multiple toasts stack correctly
  • Auto-dismiss works (3-5 seconds)
  • Manual close button works
  • Toast animations smooth

4. Loading Indicator Tests

PDF Loading

  • Upload PDF → Shows loading spinner
  • Loading message displays correctly
  • Loading hides after completion
  • Loading hides on error

PDF Export

  • Export PDF → Shows progress bar
  • Progress updates correctly (0-100%)
  • Progress text shows page numbers
  • Loading hides after completion
  • Loading hides on error

5. Full Workflow Tests

Basic Workflow

  • Upload PDF
  • Upload seal image
  • Add normal seal to page
  • Move/resize seal
  • Rotate seal
  • Delete seal
  • Export PDF
  • Verify exported PDF has seal

Straddle Seal Workflow

  • Upload multi-page PDF
  • Upload seal image
  • Add straddle seal
  • Verify seal spans pages
  • Export PDF
  • Verify exported PDF has straddle seal

Edge Cases

  • Add multiple seals to one page
  • Add seals to multiple pages
  • Switch pages with seals
  • Reload new PDF (verify cleanup)
  • Rapid operations (no crashes)

6. Memory Leak Tests

Canvas Cleanup

  • Load PDF → Switch pages 50 times → Check memory
  • Load PDF → Add 20 seals → Delete all → Check memory
  • Load PDF → Export → Load new PDF → Check memory
  • Repeat workflow 5 times → Verify memory stable

Resource Cleanup

  • Verify pdfDoc.destroy() called
  • Verify Fabric canvases disposed
  • Verify ObjectURLs revoked
  • Check browser DevTools memory profiler

🔧 Testing Tools

Browser DevTools

  • Performance Tab: Measure load times
  • Memory Tab: Check memory usage and leaks
  • Console: Check for errors
  • Network Tab: Verify no unnecessary requests

Test Files Needed

  • Small PDF (< 10 pages, < 1MB)
  • Medium PDF (50 pages, ~10MB)
  • Large PDF (100 pages, ~30MB)
  • Very large PDF (200+ pages, ~50MB)
  • Oversized PDF (> 50MB)
  • Various seal images (PNG, JPG, different sizes)

📊 Test Results

Environment

File Validation Results

Status: Pending

Lazy Loading Results

Status: Pending

Toast Notification Results

Status: Pending

Loading Indicator Results

Status: Pending

Full Workflow Results

Status: Pending

Memory Leak Results

Status: Pending


🐛 Bugs Found

Critical Bugs

(None yet)

Minor Bugs

(None yet)

Improvements Needed

(None yet)


Sign-off Criteria

Phase 1 (v1.1.0) is ready for release when:

  • All file validation tests pass
  • Lazy loading reduces load time by 5x
  • Memory usage reduced by 80%
  • All toast notifications work correctly
  • All loading indicators work correctly
  • No critical bugs found
  • Memory leaks verified fixed
  • Full workflow completes successfully

📝 Notes

Testing Instructions

  1. Open http://localhost:8000 in browser
  2. Open DevTools (F12)
  3. Go to Performance/Memory tab
  4. Execute test cases systematically
  5. Record results in this document
  6. Fix any bugs found
  7. Re-test after fixes

Known Limitations

  • Cross-browser testing limited to available browsers
  • Large PDF testing limited by available test files
  • Performance may vary by hardware

Last Updated: 2026-01-08T07:35:00Z