Quality Assurance (QA) & Testing Architecture
xlsxrb is designed to be an enterprise-grade, highly reliable, and highly performant library for reading and writing Excel spreadsheets. To achieve and maintain this standard, we have implemented a comprehensive Quality Assurance matrix that covers everything from static code analysis and dynamic runtime validation to performance benchmarking and visual regression testing.
Below is an overview of the inspection mechanisms, when they run, the quality attributes they guarantee, and the specific bugs they prevent.
QA Matrix
| Inspection Mechanism / Tool | Execution Command / Mechanism | Local | CI (PR/Push) | Scheduled (Weekly) | Target Quality Attribute | Validation Method | Prevented Bugs / Issues |
|---|---|---|---|---|---|---|---|
| RuboCop | rake rubocop |
â• | â• | - | Readability / Maintainability | Static Analysis (Syntax/Linting) | Overly complex methods, non-standard syntax, unused variables. |
| Steep & RBS | rake typecheck |
â• | â• | - | Type Safety (Static) | Static Analysis (Type Check) | NoMethodError, passing incorrect arguments, method typo bugs. |
| Bundler Audit | rake audit |
- | â• | - | Security | Dependency Scanning | Inclusion of external gems with known vulnerabilities (CVEs). |
| Dependabot | .github/dependabot.yml |
- | - | â• | Currency / Maintenance | Repository Monitoring | Outdated dependencies or CI actions. |
| Unit & Contract Tests | rake test:unit test:contract |
â• | â• | - | Accuracy / Functional Reqs | Dynamic Analysis (Assertions) | Method specification violations, unexpected return values, edge-case failures. |
| Runtime Type Validation (RBS::Test) | rake test:rbs |
â–ł (Opt-in) | â• | - | Type Safety (Dynamic) | Dynamic Analysis (Runtime Hooks) | Type errors slipping past static checks, divergence between RBS docs and implementation. |
| Property-Based Testing (PBT) | rake test:pbt |
╠| ╠| - | Robustness / Exhaustiveness | Automated Random Generation | Crashes caused by “unexpected inputs” (e.g., empty strings, huge numbers, special symbols like =). |
| Security Validation (DoS Protection) | Included in rake test:unit |
â• | â• | - | Availability / Safety | Dynamic Analysis (Malicious Input) | Memory/disk exhaustion from ZIP bombs, infinite parsing loops from malformed files. |
| Concurrency Validation (Thread/Ractor) | Included in rake test:unit |
â• | â• | - | Thread Safety | Dynamic Analysis (Parallel Execution) | Global variable pollution, data mixing during concurrent request processing. |
| XSD Schema Validation | Included in rake test:unit |
╠| ╠| - | Compatibility / Compliance | Structural Validation | “We found a problem with some content in it” errors when opening in Excel. |
| E2E Interoperability Tests | rake test:e2e |
â–ł (Opt-in) | â• | - | Compatibility (Real-world) | 3rd-party SDK Execution | Structural defects so severe that the official .NET SDK cannot read them. |
| Memory & Performance Tests | rake test:perf / Action: performance.yml |
â• | â• | - | Performance / Stability | Continuous Profiling (10k+ rows) | Out of Memory (OOM) leaks or unbounded memory retention in streaming mode. |
| Ecosystem Benchmarks | ruby benchmark.rb |
â• | - | - | Performance Comparison | Multi-Gem Isolated Profiling (1M cells) | Throughput and allocation comparison against competing libraries. |
| Visual Regression Testing (VRT) | rake test:visual |
- | ╠| - | Visual Accuracy (UI/UX) | Headless Rendering / Pixel Diff | Visual bugs like “cell background colors dropping” or “chart layouts breaking” after code changes. |