Saya sedang mempertimbangkan untuk menulis driver level rendah atau komponen OS / kernel.
Orang- orang osdev.org tampaknya berpikir bahwa bit-bit penting tidak dapat diuji secara bermakna dengan cara ini, tetapi saya telah membaca beberapa diskusi di mana orang-orang berpikir secara berbeda. Saya telah melihat-lihat, tetapi gagal menemukan contoh nyata dari TDD pada komponen tingkat rendah.
Apakah ini sesuatu yang sebenarnya dilakukan orang, atau hanya sesuatu yang dibicarakan orang dalam teori karena tidak ada cara yang baik untuk melakukannya dalam praktik?
Jawaban:
Jika Anda berinteraksi dengan atau mengendalikan perangkat keras, maka sulit untuk menguji tanpa itu. Anda dapat mencoba meniru perangkat keras, tetapi itu seringkali lebih sulit daripada menulis driver, jadi Anda akhirnya tidak tahu apakah bug ada di driver atau emulator Anda.
sumber
Saya pribadi cenderung percaya bahwa seseorang dapat memperoleh banyak manfaat dari TDD (tanpa benar-benar mematuhi TDD), dengan:
TDD tampaknya mengharuskan Anda untuk memiliki pemahaman yang cukup jelas tentang fungsi apa yang Anda rencanakan untuk implementasikan, atau persyaratan apa yang Anda rencanakan untuk dipenuhi dengan mengimplementasikan kode. Dalam beberapa situasi, hanya ada sedikit pemahaman tentang masalahnya. Ini akan membutuhkan solusi Spike . Dalam ruang lingkup solusi Spike ini, TDD dapat diterapkan karena masalahnya telah dipersempit ke tingkat yang dapat dikelola. Setelah beberapa Spike selesai, masing-masing mencakup beberapa aspek dari masalah asli, seseorang dapat mulai bekerja pada solusi lengkap, dan menerapkan TDD pada titik itu mungkin layak karena peningkatan pemahaman.
Diedit:
Setelah membaca halaman lebih hati-hati,
Mereka jelas mengatakan bahwa sebagian besar dapat diuji, dan bahwa beberapa bagian memerlukan jenis pengujian yang berbeda: Pengujian Stres .
sumber
Bukan saya. Dalam kode tertanam Guru saya, saya hanya menulis kode dan menghabiskan waktu untuk berpikir tentang apa yang dilakukannya (dan tidak). Saya tidak yakin itu bisa dilakukan dalam kasus saya, saya semakin mendekati batas fisik memori tanpa menyuntikkan kode pengujian.
Saya pikir untuk sistem yang cukup besar (mis. Memiliki memori MB, bukan KB), itu bisa dilakukan untuk beberapa komponen jika Anda punya cukup waktu dan tenaga. Menguji kode membaca pin dengan mengolok-olok pin adalah ... er ... tidak terlalu berarti. Jika Anda sudah cukup memisahkan logika Anda, Anda dapat menguji logika di tempat lain.
FWIW, saya tidak membeli TDD dalam kasus umum - ini berfungsi dengan baik untuk tumpukan sistem yang cukup besar dengan sumber daya yang cukup dengan perilaku deterministik yang cukup, di luar itu tampaknya bukan praktik yang masuk akal.
sumber