Ich denke darüber nach, einen Low-Level-Treiber oder Betriebssystemkomponenten / Kernel zu schreiben.
Die Leute von osdev.org scheinen zu denken, dass die wichtigen Teile auf diese Weise nicht sinnvoll testbar sind, aber ich habe einige Diskussionen gelesen, in denen die Leute anders dachten. Ich habe mich umgesehen, aber keine realen Beispiele für TDD auf Low-Level-Komponenten gefunden.
Ist dies etwas, was die Leute tatsächlich tun, oder nur etwas, worüber die Leute theoretisch sprechen, weil es in der Praxis keinen guten Weg gibt, dies zu tun?
Antworten:
Wenn Sie mit Hardware interagieren oder diese steuern, ist es schwierig, ohne sie zu testen. Sie können versuchen, die Hardware zu emulieren, aber das ist oft schwieriger als das Schreiben des Treibers. Sie wissen also nicht, ob der Fehler in Ihrem Treiber oder in Ihrem Emulator liegt.
quelle
Ich persönlich neige dazu zu glauben, dass man viele der Vorteile von TDD nutzen kann (ohne sich tatsächlich an TDD zu halten), indem:
TDD scheint Sie benötigen eine ziemlich klar haben, zu verstehen , welche Funktion Sie planen , zu implementieren, oder welche Anforderungen Sie planen, durch die Umsetzung des Codes zu erfüllen. In einigen Situationen gibt es einfach zu wenig Verständnis für das Problem. Dies hätte eine Spike- Lösung erforderlich gemacht . Im Rahmen dieser Spike-Lösung kann TDD angewendet werden, da das Problem auf ein überschaubares Maß eingegrenzt wurde. Sobald einige Spikes fertig sind, die jeweils einige Aspekte des ursprünglichen Problems abdecken, kann mit der Arbeit an der vollständigen Lösung begonnen werden, und die Anwendung von TDD an diesem Punkt könnte aufgrund des verbesserten Verständnisses möglich sein.
Bearbeitet:
Nachdem Sie die Seite genauer gelesen haben,
Sie sagen eindeutig, dass die meisten Teile überprüfbar sind und dass einige Teile eine andere Art von Prüfung erfordern: Stresstests .
quelle
Ich nicht. Im eingebetteten Code meines Masters schreibe ich einfach den Code und verbringe meine Zeit damit, darüber nachzudenken, was er tut (und was nicht). Ich bin mir nicht sicher, ob dies in meinem Fall möglich ist. Ich nähere mich störend der physischen Speichergrenze, ohne Testcode einzufügen.
Ich denke, dass für Systeme, die groß genug sind (dh MB Arbeitsspeicher, nicht KB), dies für einige Komponenten möglich ist, wenn Sie genügend Zeit und Mühe haben. Das Testen des Pin-Lese-Codes durch Verspotten der Pins ist ... ähm ... nicht sehr aussagekräftig. Wenn Sie Ihre Logik ausreichend getrennt haben, können Sie die Logik an anderer Stelle testen.
FWIW, ich kaufe TDD im Allgemeinen nicht - es funktioniert gut für Systemstapel, die groß genug sind und über genügend Ressourcen mit genügend deterministischem Verhalten verfügen. Abgesehen davon scheint es keine vernünftige Praxis zu sein.
quelle