Job Title: Senior SDET — Backend & Data
Location: New York City, NY
Type of hire: Contract or Full time
Job Description :
Role Overview
We build an in-house trading platform covering order management, execution, and data analysis. It runs on a distributed, event-driven backend.
We're hiring a hands-on SDET to own backend test automation: service, integration, contract, data, resilience and performance testing across the platform. You'll co-architect and co-own a unified testing framework with our UI SDET. It covers UI, API, messaging, data and performance tests in one place.
Responsibilities
• Co-architect and co-own, with our UI SDET, a unified testing framework that covers every area we test:
Shared foundations: fixtures, test data, configuration, environments and reporting are shared across REST, WebSocket, Kafka, database, performance and UI suites.
Cross-layer scenarios: one scenario can follow a workflow from the UI through services and events to the database.
One quality view: results from every suite feed a single view of release quality.
• Design and build automated service, integration and contract tests for REST APIs, WebSocket services, and Kafka producers and consumers.
• Test event-driven flows end to end: message ordering, idempotency, at-least-once and exactly-once semantics, replays, offset handling, dead-letter queues, and schema evolution (Avro, Protobuf, JSON Schema, Schema Registry).
• Build harnesses with controlled test data and service virtualization so suites run consistently and can be repeated.
• Design and build isolated, on-demand test environments on Linux and AWS:
Lifecycle: full service stacks (services, Kafka, databases) are created per branch or per run, start with seeded data and known state, and are torn down automatically.
Isolation: test runs don't interfere with each other or with shared environments.
Infrastructure: the environments are defined as code, with attention to cost.
• Write data-validation tests across relational and analytical databases. Cover reconciliation and aggregation correctness.
• Cover resilience and failure modes: broker and consumer outages, network partitions, timeouts, throttling, slow consumers and backpressure, reconnects, and authentication failures.
• Own backend performance testing:
Latency and throughput: design and run load, stress, soak and spike tests on services, messaging pipelines, streaming and query APIs.
Baselines and regressions: set baselines and service-level targets (p50/p99 latency, throughput, consumer lag), and catch regressions in CI.
Bottlenecks: profile them down to the CPU, query or network layer.
Database queries: track query performance on analytical stores. Know how query shape and data volume drive response time.
• Own backend test execution in CI/CD: parallel runs, scheduled regressions, environment setup and teardown, and release quality gates.
• Make failures diagnosable: structured logs, distributed traces (OpenTelemetry), correlation IDs across services, and clear reports.
• Work with backend engineers, infrastructure, business analysts and traders to define and automate critical business workflows.
• Use AI-assisted tools where they speed up writing tests and analysing failures.
Qualifications
• 5+ years of backend or service test automation, including framework design.
• Strong Python (pytest, requests, asyncio, confluent-kafka or similar) for test frameworks, tooling and data validation.
• Strong Java (JUnit 5, REST Assured, AssertJ, or similar) for testing JVM services.
• Working TypeScript and Node.js skills: contributing to UI and cross-layer suites in the shared framework, and Node-based tooling (k6 scripts, Playwright API tests).
• Hands-on Kafka experience: producing and consuming in tests, consumer groups, partitions and offsets, serialization and schema registry, and Kafka Streams or Connect.
• Solid networking fundamentals: TCP/IP, HTTP/1.1 and HTTP/2, WebSockets, TLS, DNS, load balancers, latency and packet loss. Able to debug with tcpdump/Wireshark, curl and similar tools.
• Strong SQL and database experience (PostgreSQL, SQL Server, or similar) for test data setup, verification and cleanup. Familiarity with columnar or analytical databases.
• Hands-on performance and load testing:
Tools: k6, Gatling, JMeter or Locust, including Kafka throughput benchmarking.
Profiling: JVM tuning and profiling ( JFR, async-profiler) or Python profiling.
Analysis: reading latency distributions and percentiles correctly, including coordinated omission.
• API, authentication and contract testing: OAuth/JWT flows, payload and schema validation, and service virtualization (WireMock, MockServer, Hoverfly).
• Experience building isolated test environments:
Linux: strong command-line skills, with shell scripting, systemd, processes, networking and performance troubleshooting.
Containers: Docker, Docker Compose and Testcontainers.
AWS: EC2, ECS or EKS, S3, IAM, VPC, MSK or RDS, and CloudWatch.
Infrastructure as code: Terraform, CloudFormation or CDK.
• CI/CD with Azure DevOps or Jenkins, and Git.
• Strong reliability habits: isolated tests, controlled retries, failure-mode testing, and triage of flaky tests.
• Clear communication and good documentation.
• Highly preferred - Trading or buy-side experience: OMS/EMS, the FIX protocol, market data, positions, allocations, or risk.
Nice to have
• kdb+/q, or other time-series databases used for tick data.
• Contract testing with Pact. Property-based testing (jqwik, Hypothesis).
• Kubernetes and Helm.
• Chaos and fault-injection tools (Toxiproxy, Chaos Mesh).
• Observability tools: OpenTelemetry, Grafana, Prometheus.
• Experience with large-scale distributed systems.