Professional Documents
Culture Documents
Ebook Jak Zacząć Z Test Driven Development W Systemach Embedded PDF
Ebook Jak Zacząć Z Test Driven Development W Systemach Embedded PDF
TDD
W SYSTEMACH
EMBEDDED?
Po co nam TDD?
Jeżeli tryb nocny jest aktywny, nasze urządzenie musi go aktywować o ustalonej
godzinie. Następnie po przekroczeniu godziny końca trybu nocnego - musi
aktywować z powrotem tryb dzienny. Tryb nocny możemy ustawiać oddzielnie na
dni pracy i weekendy. Szczegóły dotyczące działania trybu nocnego i w jaki
sposób zmienia działanie urządzeń wykonawczych są opisane w dokumentacji i w
wymaganiach projektowych.
zmiana
ustawień
urządzeń
wykonawczych
wykrycie
Nagrzewnice
aktywacja
trybu
trybu
update nocnego
nocnego
Data i Chłodnice
RTC Zarządzane Algorytm
godzina
Wentylatory
Ale możemy iść dużo dalej. Jak się zastanowimy nad zadaniami wykonywanymi
przez nasz program, możemy je podzielić na dwie kategorie:
Pomiary Panele
Algorytm sterowania BMS
i nastawy użytkowania
Czujnik
Nagrzewnica Wentylatory Filtry BACnet
wilgotności
granica
HW
Coil
Out 0 - 10V
DIN
In 0 - 10V
TEST INTEGRACYJNY
zmiana
ustawień
urządzeń
wykonawczych
wykrycie
Nagrzewnice
aktywacja
trybu
trybu
update nocnego
nocnego
Data i Chłodnice
RTC Zarządzane Algorytm
godzina
Wentylatory
TEST JEDNOSTKOWY
Zastępcza Zastępcza
implementacja na Kod produkcyjny implementacja na
potrzeby testów potrzeby testów
Nagrzewnice
Wentylatory
koszty
czas
TESTY
SYSTEMOWE
TESTY INTEGRACYJNE
UNIT TESTY
ilość
testów
Nie dodaliśmy tych testów żeby były, ani dlatego, że ktoś nam kazał. W ten
sposób rozwiązujemy konkretne problemy projektowe. Nawet jeżeli nie mamy
żadnej strategii testowania, tworzymy taką nieformalną strategię, bo to nam po
prostu ułatwia życie.
oszczędzamy czas
Poza tym jak widzieliśmy przed chwilą - testy idą w parze z dobrym projektem
systemu. Zależy nam na odpowiednim podziale systemu na moduły, czy na
stworzeniu odpowiednich funkcji API. To nam ułatwia późniejszą pracę.
Test powinien odbywać się automatycznie, zwracać od razu wynik i testować mały
fragment kodu w odosobnieniu. Nie jesteśmy w stanie tego zrealizować
wprowadzając małe modyfikacje w docelowym programie.
Czasem w ogóle nie mamy docelowego sprzętu, a jesteśmy w stanie rozwijać kod
używając unit testy. Jak to możliwe?
Nie musimy się zastanawiać, czy ta linijka jest ważna. Nie ma na nią testu,
więc nie jest!
Znamy już myśl jaka stoi za TDD - możemy więc przejść do szczegółów. Aby
pisać kod zgodnie z Test Driven Development wykonujemy w kółko trzy proste
kroki:
I tak w kółko :)
Pojedynczy test
Budujemy projekt
A ręka mnie świerzbi, żeby wybiec do przodu. Przecież wiem, że docelowo tam
będzie tablica, a nie zmienna. W głowie już widzę, jak będzie wyglądać logika
programu. Więc dlaczego mam tracić czas na bezsensowną implementację, którą i
tak potem zmienię?
Ano dlatego, żeby najpierw napisać test, który failuje. Jak napiszesz całą
implementację od razu, to nie wiesz, czy testy wyłapią ewentualny błąd. Możesz
też usunąć za dużo przy refactoringu. Najprostsza implementacja jest najlepsza
dopóki nie napiszesz testu, który ją obali.
Tak naprawdę nie musisz wiedzieć nic więcej, żeby zacząć. Całą resztę nabywasz
z praktyką. Musisz ćwiczyć i pilnować, żeby trzymać się cyklu TDD i wyrabiać
sobie nowe nawyki.
Pojedynczą iterację możesz zrobić w 1-2 minuty. Tylko czasem się zatniesz na
dłużej na jakimś nieprzechodzącym teście albo na większym refactorze.
Jest w nim dobra intencja. W końcu żeby się nauczyć potrzebujemy praktyki.
Dlatego znając polecany framework, możemy po prostu wziąć się do roboty. Ale
jest też druga strona medalu!
Mając te pliki w projekcie musimy jeszcze zmodyfikować plik main oraz dodać pliki
obsługujące naszą grupę testową oraz scenariusze testowe.
~ Mateusz Kupilas
There are two parts to learning craftsmanship: knowledge and work. You
must gain the knowledge of principles, patterns, practices, and heuristics
that a craftsman knows, and you must also grind that knowledge into your
fingers, eyes, and gut by working hard and practicing.
~ Robert Martin
Polecam również artykuł na stronie Embedded Artistry o tym jak TDD pomaga
poprawiać błędy mimo, że nie mamy dostępu do docelowego hardware’u.