Saya sedang mempelajari TDD dan saya membaca bahwa itu juga membantu Anda menentukan desain aplikasi, benar?
Jadi saya memutuskan untuk mulai membuat proyek baru untuk membantu saya memahaminya dengan lebih baik.
Saya ingin membuat sistem pendaftaran pengguna sederhana yang akan menanyakan nama, alamat email, negara (akan memilih satu dari daftar) dan nomor telepon.
Jadi pertanyaannya adalah ...
Saya menciptakan solusi baru di VS 2010, menambahkan proyek Uji baru dan saya tidak tahu tes apa yang harus ditulis!
Karena itu akan membantu saya menentukan desain, tes apa yang bisa saya tulis di sini?
Terima kasih atas bantuannya!
Jawaban:
Saat Anda menulis tes unit, Anda sedang menguji perilaku aplikasi Anda sehingga pertanyaan penting untuk ditanyakan adalah apa yang dilakukan aplikasi Anda ? Inilah awalnya:
sumber
Hanya membuat proyek uji dan menulis beberapa metode uji adalah semacam TDD, tetapi dalam pengalaman saya itu tidak banyak membantu kecuali Anda bekerja di perpustakaan di mana ada API yang dikenal dan panggilan metode berhubungan langsung dengan sesuatu yang diharapkan oleh pengguna . Anda perlu membuat daftar tes yang tepat, dan untuk aplikasi non-sepele, itu bisa sangat sulit dilakukan.
Saya sarankan mencoba SpecFlow - itu membuat tes mendefinisikan baik dipisahkan dari implementasi dan struktur file fitur memaksa Anda untuk berpikir tentang apa yang sebenarnya Anda uji.
Ketika Anda mendefinisikan fitur Anda hanya menulis sesuatu seperti
Karena Anda tidak berada dalam file kode pada titik ini, Anda tidak tergoda untuk memikirkan detail implementasi seperti metode mana yang dipanggil untuk membuat pengguna atau bahkan kelas yang menerapkannya. Anda dapat menggunakan tag untuk memilih implementasi yang berbeda, jadi pada level ini tidak masalah apakah "pengguna diselamatkan" berarti panggilan ke CreateUser atau membuka browser dan mengirimkan formulir.
Setelah Anda memiliki fitur yang ditentukan, semua tes dihasilkan dan akan mulai lulus saat Anda menerapkan definisi langkah dan kode aplikasi yang sebenarnya sedang diuji.
Untuk aplikasi sederhana, Anda hanya dapat membuat file fitur, tetapi untuk hal yang lebih kompleks, berguna untuk menyatukan spesifikasi yang lebih lengkap sebelumnya. Saya menggunakan aplikasi pemetaan pikiran iPad untuk ini, tetapi Anda dapat menggunakan alat apa pun yang paling nyaman bagi Anda.
Mulailah dengan daftar fitur tingkat tinggi seperti "Registrasi pengguna". Ini cenderung terlalu luas untuk menulis tes secara langsung, jadi bagi mereka menjadi subfitur yang dapat didefinisikan dengan jelas dan umumnya dipetakan ke tindakan pengguna tertentu seperti "Simpan pengguna" atau "Lihat pengguna yang ada".
Masing-masing subfitur ini akan memerlukan daftar skenario yang bersama-sama sepenuhnya menentukan apakah fitur tersebut berfungsi, hal-hal seperti "Dapat menyimpan pengguna yang valid" dan "Tidak dapat menyimpan pengguna dengan nama pengguna duplikat".
Ketika Anda membangun daftar ini, umumnya akan menjadi jelas di mana struktur perlu disesuaikan - jika Anda tidak dapat membuat tes skenario untuk fitur, atau Anda berakhir dengan terlalu banyak dalam satu fitur maka fitur itu mungkin ditentukan pada level yang salah dan perlu dipisah atau diubah.
sumber
Saya merasa baik untuk mendukung percobaan pertama saya ke TDD dengan membaca dan memotong kode. The Artikel wikipedia pada subjek sangat baik dan akan membawa Anda berbagai sumber lainnya. Carilah hal-hal oleh Kent Beck khususnya - semacam bapak TDD.
Hal-hal lain yang mungkin dapat membantu Anda melakukannya adalah melakukan beberapa katas - sederhana, latihan latihan yang hampir tanpa pikiran. Roy Osherove punya beberapa yang bagus.
Di luar itu, perlu diingat ide-ide kunci TDD - tulis satu tes pada satu waktu dan jangan terus sampai itu dan semua tes sebelumnya lulus. Cukup tulis kode yang cukup untuk memenuhi tes saat ini, hindari godaan untuk menulis lebih banyak. Ketika Anda pergi, hentikan setiap sekarang dan lagi dan pikirkan apakah Anda dapat membersihkan kode atau tes. Selalu berkembang dalam siklus merah (gagal tes), hijau (lulus), siklus refactor.
Dan untuk memulai, mungkin mulai dengan persyaratan nama Anda. Apa yang akan Anda butuhkan?
Anda mungkin perlu kelas. Tulis tes untuk itu (beberapa orang lewati ini tetapi ketika mulai melakukannya untuk latihan) dan menulis kelas.
Selanjutnya kelas Anda perlu menyimpan nama. Tulis tes yang membuktikan bahwa kelas Anda memang bisa. Kemudian lagi tulis kode untuk lulus ujian.
Maka mungkin Anda memiliki beberapa aturan bisnis lagi. Mungkin Anda ingin nama Anda menjadi jumlah minimum karakter. Tulis tes, lihat gagal, tulis kode.
Dan seterusnya...
sumber
Saya pikir itu tidak mungkin untuk memberi Anda gagasan TDD dalam jawaban singkat. Anda perlu "melihat" sombody mempraktikkannya, untuk merasakannya. Sumber daya terbaik yang pernah saya temukan tentang topik itu adalah http://pragprog.com/titles/achbd/the-rspec-book . Sebelum Anda memberi tahu saya, Ruby itu bukan bahasa Anda: Baca kata pengantar oleh Paman Bob! ;-)
sumber
Anda mungkin ingin mengatur tes yang mencoba menambahkan beberapa nilai berbeda ke dalam bidang email, beberapa valid dan lainnya tidak. Jangan berhenti berkembang sampai semua tes memberikan nilai yang diharapkan. Hal-hal seperti itu.
sumber
Seperti yang telah Anda jelaskan sistemnya, hanya ada satu tes di level aplikasi:
[Test] public void Save_and_retrieve_user (Nama string, Email string, ...) {// Simpan // Ambil // Verifikasi}
Saat Anda memperbaiki persyaratan, tambahkan lebih banyak tes.
sumber