( VaZso | 2018. 07. 18., sze – 17:49 )

Az ember igyekszik az egyes logikailag különálló funkciókat szétválasztani, ez igaz.
Más kérdés, mit is akarunk csinálni.

Pl. van egy szenzorunk, amivel I²C interfészen kommunikálunk.
Vannak az eszköznek regiszterei, amivel beállítani lehet néhány dolgot és vannak regiszterei, amiből ki tudsz olvasni hőmérséklet értékeket.

Van egy kijelződ is, ami SPI interfészen kommunikál, szintén megvannak a maga regiszterei és beállításai.

Csinálsz egy logikát, ami a kiolvasott számokat színkombinációvá alakítja.

Van egy olyan logikád is, ami a hőmérsékletek kiolvasásait indítja, beállítja a megjelenítési (színhőmérséklet) tartományt és a megfelelő képpontokat megfelelő színűre állítja a kijelzőn.

Az alap logikát - milyen legyen a szín, mi alapján állítjuk be a limiteket, tudod tesztelni.
Az alap vezérlés könnyen átlátható.

...de a kijelzőt és a szenzort pl. hogyan szeretnéd emulálni?
Nem lehetetlen, de nem éri meg a ráfordítást.

Hogyan deríted ki egy szimulációval, hogy a kijelző valóban azt mutatja, amit szeretnél, vagy a szenzorból valóban ki tudtad olvasni ezeket az adatokat?
Nem arra gondolok, hogy elméletileg mit kellene mutatnia, hanem arra, hogy mi van rajt a valóságban.
Esetleg azt, hogy elég-e a kijelzőt az áramkör éledése után x vagy y idővel táp alá helyezni, esetleg a reset láb állapotát bekapcsolást követően mekkora ráhagyással váltsd át.
...vagy valamelyik kijelző vezérlője módosult annyit, hogy szétesik rajt a kép, esetleg két azonos hardver mégsem annyira azonos.

Megvan ugyanakkor a kijelzőt és szenzort kezelő, alacsonyabb szintű kód is, egészen az interfészek vezérléséig. Ezek egyrészt kontrollerspecifikusak lehetnek, másrészt nemigen tudod őket máshol tesztelni mint a konkrét hardveren, amelyiken fejleszted.

Annak nincs értelme, hogy két alapvető funkciót teljesen újraírj szoftverből azért, hogy az "üzleti logikát" teszteld, ha azt a teljes rendszerhez képes viszonylag kis kódrészletet amúgy le tudod tesztelni külön.
A fenti példának viszonylag kis része az, ami PC-n is tesztelhető.

...de hiába működik jól a program, ha pl. az I²C kommunikáció le tud akadni vagy nem képes arra a sebességre, amit szeretnél elvárni tőle.
Ezt nem PC-s szimulációval fogod kideríteni.

A fenti gondolatot nem azért írtam, mert annyira bonyolult lenne a megvalósítás, de van egy olyan sanda gyanúm, hogy azok a kritikák, amit az egyik fél megkap a másik rálátásával kapcsolatban az adott problémakörre, azt a másik fél is megkaphatná egész nyugodtan a másik részről, hasonlóan jogosan.

Mindegy is, valójában teljesen fölösleges volt ezt ideírnom.