W skrócie
- Zadania: Twórz i rozwijaj automatyzację testów backendowych w nowoczesnej platformie handlowej.
- Firma: Innowacyjna firma technologiczna z dynamiczną kulturą pracy.
- Benefity: Atrakcyjne wynagrodzenie, benefity zdrowotne, praca zdalna oraz możliwości rozwoju zawodowego.
- Pozostałe informacje: Dynamiczne środowisko z doskonałymi możliwościami rozwoju kariery.
- Dlaczego ta praca: Pracuj z najnowszymi technologiami i wpływaj na innowacyjne projekty.
- Kwalifikacje: Doświadczenie w automatyzacji testów oraz umiejętności współpracy w zespole.
Przewidywane wynagrodzenie mieści się w przedziale 54000 - 66000 zł za rok.
Opis projektu: Budujemy wewnętrzną platformę handlową obejmującą zarządzanie zamówieniami, realizację i analizę danych. Działa ona na rozproszonym, zdarzeniowym backendzie.
Szukamy praktycznego SDET, który przejmie odpowiedzialność za automatyzację testów backendowych: testy usług, integracji, kontraktów, danych, odporności i wydajności w całej platformie. Będziesz współprojektować i współwłaszczyć z naszym UI SDET zintegrowany framework testowy, który obejmuje testy UI, API, komunikacji, danych i wydajności w jednym miejscu.
Obowiązki:
- Współprojektowanie i współwłaszczenie z naszym UI SDET zintegrowanego frameworku testowego, który obejmuje wszystkie obszary, które testujemy:
- Wspólne fundamenty: fixture, dane testowe, konfiguracja, środowiska i raportowanie są wspólne dla REST, WebSocket, Kafka, baz danych, wydajności i zestawów UI.
- Scenariusze międzywarstwowe: jeden scenariusz może śledzić przepływ od UI przez usługi i zdarzenia do bazy danych.
- Jedna perspektywa jakości: wyniki z każdego zestawu zasilają jedną perspektywę jakości wydania.
- Projektowanie i budowanie zautomatyzowanych testów usług, integracji i kontraktów dla REST API, usług WebSocket oraz producentów i konsumentów Kafka.
- Testowanie przepływów zdarzeniowych end-to-end: porządek wiadomości, idempotencja, semantyka co najmniej raz i dokładnie raz, powtórki, obsługa offsetów, kolejki martwych listów i ewolucja schematu (Avro, Protobuf, JSON Schema, Schema Registry).
- Budowanie harnessów z kontrolowanymi danymi testowymi i wirtualizacją usług, aby zestawy działały konsekwentnie i mogły być powtarzane.
- Projektowanie i budowanie izolowanych, na żądanie środowisk testowych na Linuxie i AWS:
- Cykl życia: pełne stosy usług (usługi, Kafka, bazy danych) są tworzone na podstawie gałęzi lub uruchomienia, zaczynają się z zasianymi danymi i znanym stanem, a następnie są automatycznie usuwane.
- Izolacja: uruchomienia testów nie zakłócają się nawzajem ani nie wpływają na wspólne środowiska.
- Infrastruktura: środowiska są definiowane jako kod, z uwagą na koszty.
- Pisanie testów walidacji danych w bazach danych relacyjnych i analitycznych. Pokrycie poprawności uzgadniania i agregacji.
- Pokrycie odporności i trybów awarii: awarie brokera i konsumenta, partycje sieciowe, przekroczenia czasu, ograniczenia, wolni konsumenci i ciśnienie zwrotne, ponowne połączenia i błędy uwierzytelniania.
- Posiadanie testów wydajności backendu: opóźnienia i przepustowość: projektowanie i uruchamianie testów obciążeniowych, stresowych, wytrzymałościowych i szczytowych na usługach, pipeline'ach komunikacyjnych, streamingowych i API zapytań.
- Podstawy i regresje: ustalanie podstaw i celów poziomu usług (p50/p99 opóźnienia, przepustowość, opóźnienie konsumenta) oraz wychwytywanie regresji w CI.
- Wąskie gardła: profilowanie ich aż do CPU, GC, zapytania lub warstwy sieciowej.
- Zapytania do baz danych: śledzenie wydajności zapytań w magazynach analitycznych. Wiedza o tym, jak kształt zapytania i objętość danych wpływają na czas odpowiedzi.
- Posiadanie wykonania testów backendowych w CI/CD: równoległe uruchomienia, zaplanowane regresje, konfiguracja i usuwanie środowisk oraz bramy jakości wydania.
- Uczynienie awarii diagnozowalnymi: strukturalne logi, rozproszone ślady (OpenTelemetry), identyfikatory korelacji między usługami i jasne raporty.
- Współpraca z inżynierami backendowymi, infrastrukturą, analitykami biznesowymi i traderami w celu zdefiniowania i zautomatyzowania krytycznych przepływów pracy biznesowej.
- Używanie narzędzi wspomaganych AI tam, gdzie przyspieszają pisanie testów i analizowanie awarii.
Umiejętności:
- Musisz mieć:
- 5+ lat doświadczenia w automatyzacji testów backendowych lub usług, w tym projektowaniu frameworków.
- Silne umiejętności w Pythonie (pytest, requests, asyncio, confluent-kafka lub podobne) do frameworków testowych, narzędzi i walidacji danych.
- Silne umiejętności w Javie (JUnit 5, REST Assured, AssertJ lub podobne) do testowania usług JVM.
- Umiejętności w TypeScript i Node.js: wkład w zestawy UI i międzywarstwowe w wspólnym frameworku oraz narzędzia oparte na Node (skrypty k6, testy API Playwright).
- Praktyczne doświadczenie z Kafka: produkcja i konsumpcja w testach, grupy konsumentów, partycje i offsety, serializacja i rejestracja schematów oraz Kafka Streams lub Connect.
- Solidne podstawy sieciowe: TCP/IP, HTTP/1.1 i HTTP/2, WebSockets, TLS, DNS, load balancery, opóźnienia i utrata pakietów. Umiejętność debugowania za pomocą tcpdump/Wireshark, curl i podobnych narzędzi.
- Silne umiejętności SQL i doświadczenie z bazami danych (PostgreSQL, SQL Server lub podobne) do konfiguracji danych testowych, weryfikacji i czyszczenia.
- Znajomość baz danych kolumnowych lub analitycznych.
- Praktyczne doświadczenie w testach wydajności i obciążenia: Narzędzia: k6, Gatling, JMeter lub Locust, w tym benchmarking przepustowości Kafka.
- Profilowanie: dostrajanie i profilowanie JVM (GC, JFR, async-profiler) lub profilowanie Pythona.
- Analiza: poprawne odczytywanie rozkładów opóźnień i percentyli, w tym skoordynowane pominięcie.
- Testowanie API, uwierzytelniania i kontraktów: przepływy OAuth/JWT, walidacja ładunków i schematów oraz wirtualizacja usług (WireMock, MockServer, Hoverfly).
- Doświadczenie w budowaniu izolowanych środowisk testowych: Linux: silne umiejętności w obsłudze wiersza poleceń, skrypty powłoki, systemd, procesy, sieci i rozwiązywanie problemów z wydajnością.
- Kontenery: Docker, Docker Compose i Testcontainers.
- AWS: EC2, ECS lub EKS, S3, IAM, VPC, MSK lub RDS oraz CloudWatch.
- Infrastruktura jako kod: Terraform, CloudFormation lub CDK.
- CI/CD z Azure DevOps lub Jenkins oraz Git.
- Silne nawyki dotyczące niezawodności: izolowane testy, kontrolowane ponowienia, testowanie trybów awarii i triage niestabilnych testów.
- Jasna komunikacja i dobra dokumentacja.
- Miło widziane:
- Doświadczenie w handlu lub po stronie kupującego: OMS/EMS, protokół FIX, dane rynkowe, pozycje, alokacje lub ryzyko.
- kdb+/q lub inne bazy danych czasowych używane do danych tickowych.
- Testowanie kontraktów z Pact.
- Testowanie oparte na właściwościach (jqwik, Hypothesis).
- Kubernetes i Helm.
- Narzędzia do chaosu i wstrzykiwania błędów (Toxiproxy, Chaos Mesh).
- Narzędzia do obserwowalności: OpenTelemetry, Grafana, Prometheus.
- Doświadczenie z dużymi rozproszonymi systemami.
Senior Software Development Engineer in Test in Katowice – pracodawca: Luxoft
Nasza firma to doskonały pracodawca, który oferuje dynamiczne środowisko pracy w sercu innowacji technologicznych. Wspieramy rozwój zawodowy naszych pracowników poprzez mentoring oraz dostęp do najnowszych technologii, a także promujemy kulturę współpracy i otwartości. Pracując z nami, będziesz miał okazję uczestniczyć w projektach, które mają realny wpływ na branżę, a lokalizacja w centrum miasta zapewnia wygodny dostęp do licznych udogodnień.