API Testing & Data Validation
Postman-driven API testing backed by SQL and Snowflake validation.
Problem
API responses and backend data were being verified inconsistently — some checks lived in ad hoc Postman requests, others were manual SQL queries — with no consistent way to confirm the UI, API, and database agreed with each other.
Challenge
Build a repeatable approach to validating both API behavior and underlying data across two different contexts: a live e-commerce platform's feature flags and checkout flow, and a contract data-quality engagement validating retail and CRM datasets.
Architecture
API testing runs through Postman collections covering GrowthBook feature-flag responses and core endpoints, backed by SQL queries against the application database and Snowflake to cross-check that what the API returns matches what's actually stored.
Technical Decisions
Validate flags at the data layer, not just the UI
GrowthBook experiment configurations, goal metrics, and rollout percentages were checked directly against experiment data, not just by observing which variant rendered — catching misconfigurations the UI alone wouldn't reveal.
Snowflake as the source of truth for reconciliation
For the Victoria's Secret contract, Salesforce records were validated against Snowflake with SQL queries designed to catch row-level mismatches, not just aggregate counts.
Implementation
- Built Postman collections covering core API endpoints, authentication, and GrowthBook feature-flag responses.
- Wrote SQL queries to cross-check API and UI output against the underlying application database.
- Validated GrowthBook A/B experiment configuration, goal metrics, and user segmentation against actual rollout behavior.
- For the Victoria's Secret engagement, wrote Snowflake SQL queries to reconcile Amazon Canada and Salesforce datasets.
Results
- Delivered 100% accuracy and consistency on Amazon Canada dataset validation.
- Delivered 100% data integrity on Salesforce validation against Snowflake.
- Caught feature-flag misconfigurations at the data layer before they affected rollout decisions.
Lessons Learned
- Checking a feature flag's rendered UI state isn't enough — validating the underlying experiment configuration catches a different class of bugs.
- Row-level SQL reconciliation is slower to write than aggregate checks but catches issues aggregate counts hide.
Future Improvements
- Automate the SQL reconciliation queries into a scheduled validation job instead of running them manually.
- Extend Postman collections into a CI-run contract test suite.