Python Test Architecture Engineer - IT Contracting
Tech Stack / Keywords
Firma i stanowisko
Klient z branży technologicznej (IT / elektronika użytkowa). Zespół odpowiedzialny za tę rekrutację tworzy i rozwija framework testowy wspierający różnorodne platformy sprzętowe oraz kolejne generacje produktów. Stanowisko zostało utworzone z myślą o dalszym rozwoju wspólnych komponentów architektonicznych wykorzystywanych przez inżynierów testów i programistów pracujących przy środowiskach emulacyjnych oraz automatyzacji testów. Osoba zatrudniona na tym stanowisku będzie współtworzyć fundamenty techniczne, na których opiera się rozwój kolejnych narzędzi i implementacji. Środowisko pracy obejmuje ścisłą współpracę z komponentami związanymi z emulacją sprzętu, obsługą sygnałów analogowych i cyfrowych oraz definiowaniem uniwersalnych kontraktów dla wielu implementacji sprzętowych.
Wymagania
- Minimum 5 lat doświadczenia komercyjnego w programowaniu w Python.
- Doświadczenie w tworzeniu bibliotek, frameworków lub komponentów architektonicznych wykorzystywanych przez innych programistów.
- Bardzo dobra znajomość mechanizmów opartych na
abc.ABCMetaoraz@abstractmethod. - Praktyczne doświadczenie w projektowaniu kontraktów i abstrakcyjnych interfejsów.
- Bardzo dobra znajomość
dataclasses, w szczególności konfiguracjifrozen=True,kw_only=True, walidacji w__post_init__oraz bezpiecznej pracy z obiektami niemutowalnymi. - Doświadczenie w projektowaniu rozwiązań wykorzystujących wielodziedziczenie oraz kompozycję interfejsów.
- Dobra znajomość zagadnień związanych z metaklasami i mechanizmem C3 linearization (MRO).
- Praktyczne wykorzystanie
enum.IntFlagi operacji bitowych do modelowania funkcjonalności oraz możliwości systemu. - Znajomość
functools.cached_property, jego ograniczeń związanych z bezpieczeństwem wielowątkowym oraz interakcji z niemutowalnymi obiektami. - Doświadczenie w projektowaniu testów kontraktowych dla interfejsów abstrakcyjnych.
- Bardzo dobra znajomość pytest.
- Doświadczenie w pracy z testami jednostkowymi oraz integracyjnymi.
- Gotowość do pracy w środowisku związanym z emulacją sprzętu oraz systemami hardware-adjacent.
- Umiejętność tworzenia czytelnej dokumentacji technicznej i skutecznej komunikacji pisemnej.
Nice to have:
- Doświadczenie związane z testowaniem urządzeń HID.
- Znajomość systemów hardware-in-the-loop.
- Doświadczenie z urządzeniami wykorzystującymi DAC/ADC oraz układami analogowymi.
- Praktyczna znajomość hypothesis i metodologii property-based testing.
- Doświadczenie w obszarze mutation testing.
- Wiedza z zakresu systemów embedded lub środowisk firmware.
Obowiązki
- Projektowanie i rozwijanie abstrakcyjnych interfejsów definiujących kontrakty dla komponentów odpowiedzialnych za emulację sprzętu oraz generowanie bodźców testowych.
- Tworzenie spójnych warstw abstrakcji wykorzystywanych przez wiele implementacji i rodzin produktów.
- Projektowanie niemutowalnych modeli konfiguracji wraz z walidacją reguł biznesowych i technicznych już na etapie tworzenia obiektów.
- Definiowanie rozszerzalnych wzorców architektonicznych wspierających rozwój frameworku testowego.
- Łączenie interfejsów w oparciu o wielodziedziczenie przy zachowaniu poprawnej struktury architektonicznej, zgodności metaklas oraz jednoznacznego porządku rozwiązywania metod.
- Projektowanie i implementacja mechanizmów opisujących możliwości sprzętu oraz cechy poszczególnych komponentów z wykorzystaniem flag i kompozycji funkcjonalności.
- Opracowywanie logiki filtrowania i doboru implementacji na podstawie dostępnych funkcji oraz charakterystyk urządzeń.
- Tworzenie współdzielonych testów kontraktowych weryfikujących zgodność wszystkich implementacji z wymaganiami interfejsów.
- Rozwijanie testów jednostkowych, integracyjnych oraz opartych o podejście property-based testing.
- Implementacja mechanizmów leniwego obliczania i buforowania kosztownych operacji związanych ze stanem sprzętu lub emulatorów.
- Dokumentowanie kontraktów programistycznych, zachowań interfejsów oraz zasad związanych z cache'owaniem i bezpieczeństwem wielowątkowym.
- Współpraca z zespołem odpowiedzialnym za rozwój środowiska testowego dla systemów embedded.
Benefity
- Praca hybrydowa - 3 dni w tygodniu z biura w Krakowie, 2 dni zdalnie
- Umowa B2B via Michael Page
- Współpraca długoterminowa
- Private healthcare
Michael Page
81 aktywnych ofert