Alur kerja saya selalu menulis satu langkah logis dan kemudian menjalankan program dan memeriksa hasilnya. Proses ini telah membantu saya dengan sangat baik untuk tugas-tugas di universitas. Namun, ketika saya melakukan lebih banyak pengembangan, sering kali hanya dengan mengkompilasi dan menjalankan kode Anda membutuhkan 1 hingga 2 menit. Contohnya termasuk mengunggah program ke mikrokontroler, memerlukan interaksi dengan server eksternal, dan tidak dapat mengimplementasikan otomatisasi karena otentikasi, arsitektur perangkat lunak, atau kompleksitas.
Jenis tugas ini sangat tidak sesuai dengan cara saya biasanya memprogram, dan saya mengalami kesulitan pengkodean secara efektif. Saya biasanya membuat banyak kesalahan sintaksis dan kesalahan logika, yang sebagian besar mudah saya tangkap dengan pengujian. Namun, dengan waktu tunggu yang lama, metode ini terlalu memakan waktu.
sumber
Jawaban:
Pertama, semua jenis debugging interaktif sangat bagus. Anda menginginkan itu di toolkit Anda, karena jika belum, maka suatu hari Anda akan sangat diuntungkan dengan memilikinya. (Detail bervariasi menurut bahasa, platform, dan IDE.)
Saya akan melihat beberapa kerangka kerja untuk digunakan benda tiruan . Ini memungkinkan Anda untuk mengelilingi komponen yang sedang diuji dengan ekosistem palsu dari komponen lain, sehingga pengujian Anda lebih spesifik dan Anda dapat menghindari pengujian semuanya secara keseluruhan.
Selain itu, objek tiruan itu sendiri dapat diprogram dengan pernyataan, sehingga Anda dapat memeriksa apakah komponen yang diuji benar-benar melakukan panggilan tertentu.
sumber
Saya akan bekerja keras untuk mengurangi waktu ujian. Saya telah bekerja di beberapa perusahaan yang mengembangkan kode tertanam, dan pengujiannya menyakitkan, membutuhkan perjalanan ke ruang server dan FTP manual dan reboot dan beberapa perintah ke perangkat keras uji. Kemudian saya bergabung dengan grup yang sangat bagus, di mana saya cukup mengetik 'tes' di meja saya dan mendapatkan hasil kembali dalam waktu kurang dari satu menit. Dalam satu menit itu:
Butuh beberapa waktu untuk menyelesaikan semua ini, tetapi upaya untuk mengotomatiskan semua langkah ini dikembalikan seratus kali lipat ketika staf pengembangan tumbuh.
sumber
Tes otomatis bukan pengganti untuk ditinjau dan dipahami.
Mungkin Anda menggunakan pengujian sebagai penopang. Jika Anda melakukan ini, Anda akan menghambat pembelajaran Anda. Saya tidak menganjurkan Anda tidak menguji. Sebagai gantinya saya akan merekomendasikan Anda bahwa sebelum Anda menjalankan tes Anda memeriksa apa yang Anda tulis. Pahami apa yang Anda tulis, pastikan itu masuk akal dan pastikan sintaksnya terlihat benar.
sumber
Anda sudah memberikan jawabannya:
I usually make a lot of syntax errors and logic errors
Jadi, bekerja keras untuk meningkatkan itu, Anda harus dapat mengurangi waktu pengujian. Kesalahan sintaksis harus menjadi yang pertama yang harus Anda kurangi. Tidak pernah menjalani tes pemrograman dengan kertas dan pensil di ruang belajar Anda?
Saya memiliki hal yang sama ketika saya beralih dari PHP ke Java. Saya harus belajar debug bukan hanya mencetak beberapa variabel dan menekan F5 di browser ...
sumber
make a lot of
sepertinya dia harus menginvestasikan energinya untuk memperbaikinyaAnda memerlukan platform tes Unit atau Fungsional yang baik yang dapat secara otomatis menjalankan tes untuk Anda, terutama di latar belakang. Ini akan membutuhkan penggunaan Mock seperti disebutkan di atas dan tergantung pada bahasa yang Anda gunakan semacam suntikan ketergantungan.
Dengan membuat objek Anda sebebas mungkin dan kemudian menggunakan metode injeksi untuk menambahkan kendala luar tidak sulit untuk membuat platform uji untuk kode Anda.
sumber
Kegembiraan yang sebenarnya datang ketika Anda tidak bisa menguji kode Anda kecuali dengan menggunakannya dalam kemarahan. Ini terjadi cukup banyak pada sistem perdagangan, karena simulator pertukaran yang tersedia seringkali buruk, tidak ada, atau bahkan tidak mematuhi apa yang dikatakan pemasok perangkat lunak pertukaran itu. Ini adalah bagian dari permadani yang kaya dalam hidup. Pendekatan saya adalah memastikan setidaknya sisi transaksi saya ditulis dengan baik dan terdokumentasi dengan baik, sehingga dapat dengan mudah diubah dengan cepat.
sumber
Pengujian Unit; Aplikasi tiruan / simulator.
Ini akan memakan waktu, diberikan, dan Anda mungkin perlu mengumpulkan dan memijat data sampel untuk membuat mock-up yang sesuai, tetapi pada akhirnya akan membuahkan hasil: Anda akan menghemat waktu dan masalah yang Anda temui saat mencoba menguji terhadap eksternal sistem.
Digunakan dengan benar, alat-alat ini akan memastikan bahwa sebelum Anda mendekati sistem eksternal, Anda 99,9% yakin bahwa jika kode Anda gagal, itu adalah sesuatu dalam sistem eksternal / perubahan lingkungan yang menyebabkannya, bukan bug dalam kode Anda sendiri.
Saya bekerja secara profesional selama beberapa waktu seperti yang Anda lakukan di sekolah, dan dalam banyak kasus itu sangat efektif. Akhirnya saya bekerja di bawah beberapa orang yang memaksa saya untuk meninggalkan metodologi itu dan menggunakan pengujian unit dan mock-up sebagai gantinya.
Sekarang, saya tidak memulai proyek apa pun tanpa memikirkan terlebih dahulu pelaksanaan fase pengujian - pengujian unit, mock-up, simulator, data sampel, dll.
sumber
Mungkin menggunakan Linter dapat sedikit membantu Anda di sini.
Saya berada dalam situasi yang sama dengan majikan saya sebelumnya. Basis kode kami sangat besar dan untuk membuat perubahan apa pun yang saya harus kode, kompilasi kemudian ganti
.class
file di server-dev kemudian restart dev-sever dengan skrip restart. Dan yang membuatku cemas, butuh sekitar setengah jam untuk mengaktifkan dev-server lagi.Kemudian saya mengetahui bahwa Remote debugging dev-server juga memungkinkan.
Jadi, inilah yang saya lakukan untuk mengoptimalkan proses saya
Putaran awal pertama dari debugging jarak jauh, ini memungkinkan saya melihat aliran kode yang tepat dan nilai / status variabel yang tepat.
Merencanakan bagaimana dan perubahan apa yang akan saya buat.
Membuat Perubahan dan kemudian membandingkan perbedaan
Caching kesalahan dengan menggunakan linter atau dengan kompilasi.
Memberikan perbaikan terbaru dengan mengganti
.class
file dan memulai kembali.Kadang-kadang saya juga akan memasukkan banyak sekali pernyataan log untuk memeriksa kembali aliran kode dan memeriksa memeriksa nilai / status. Ini memang banyak membantu saya.
Juga menggunakan IDE dengan komplikasi otomatis yang baik dapat sangat membantu dalam mengurangi kesalahan ketik.
Semoga ini membantu.
sumber