Saya memiliki pengakuan untuk dibuat: Pengujian otomatis yang diformalkan tidak pernah menjadi bagian dari latar belakang pemrograman saya. Saya sekarang bekerja di perusahaan yang sangat besar dengan banyak pengembang (kebanyakan dari mereka adalah pengembang web dari satu jenis atau lainnya), dan jelas bahwa sebagian besar dari mereka tidak menguji *. (* Saya tidak akan terus mengatakan secara formal ; tolong simpulkan.)
Jika saya menunggu untuk mendapat dukungan dari organisasi saya untuk memulai pengujian itu tidak akan pernah terjadi. Jika saya mencoba "mengubah sesuatu dari dalam" dengan mendorong pengujian pada manajemen, saya akan kehabisan tenaga sebelum perubahan terjadi. Saya perlu memulai pengujian sekarang.
Tetapi dengan TDD dan sejenisnya aku akan berakhir dengan banyak kode pengujian tepat bersama dengan kode produksi. Sistem kontrol versi kami (semua terpusat) tidak terorganisir untuk menyimpan kode pengujian. Saya harus menemukan tempat untuk semua itu di stasiun kerja saya.
Apakah mungkin untuk memulai praktik pribadi pengujian perangkat lunak dalam budaya yang tidak menghargai atau menyediakan alat untuknya? Teknik dan alat apa yang Anda gunakan untuk memungkinkan Anda menguji ketika alat dan organisasi resmi tidak memiliki tempat untuk pengujian, kerangka kerja dan otomatisasi?
src
direktori untuk kode produksi, akan mungkin untuk menambahkantest
direktori juga - atau apakah itu secara eksplisit dilarang karena alasan tertentu?src
direktori, kami memiliki root web. Untuk memeriksa kode saya ke VCS pusat saya akan memeriksanya ke root web.Jawaban:
Saya pribadi telah melakukan ini dengan cukup sukses. Faktor kunci untuk sukses:
sumber
Tanpa dukungan manajemen Anda mati di dalam air. Manajemen akan mengklaim bahwa Anda tidak melakukan pekerjaan yang layak, Anda akan dikenakan sanksi dalam ulasan Anda, dan akhirnya Anda akan dipecat. Ada cara untuk membawa manajemen untuk melihat bahwa pengujian awal lebih murah biayanya. Dimungkinkan untuk mengubah budaya tetapi Anda meletakkan leher Anda di blok memotong.
Saya sarankan membaca bab Machiavelli The Prince tentang cara memperkenalkan perubahan sebelum melakukan apa pun.
sumber
Dalam pengalaman saya jika budaya anti-pengujian, Anda tidak bisa memperkenalkannya secara wajar. Entah tes akan dilihat sebagai buang-buang waktu dan Anda akan ditegur karena "membuang-buang waktu" atau "terlalu lama", atau kode telah dirusak sejak bertahun-tahun karena tidak ditulis dengan cara yang dapat diuji (mis. Tanpa antarmuka, semuanya digabungkan dengan erat) dan Anda harus menghabiskan banyak waktu untuk refactoring dan / atau menulis ulang kode (sehingga berisiko "terlalu lama" dan "membuang-buang waktu") untuk membuatnya dapat diuji sehingga Anda dapat menulis tes di tempat pertama .
Anda mungkin memiliki kesempatan jika Anda melakukan hal-hal greenfield yang hanya harus berinteraksi dengan hal-hal yang ada (membuat pembungkus yang bagus di sekitar area buruk) atau jika Anda dapat melakukannya dalam jumlah kecil di mana itu tidak akan menyebabkan masalah atau mengharuskan Anda untuk "kerjakan tugas-tugas yang tidak ditugaskan kepadamu" yang dapat menempatkanmu di rumah anjing.
sumber
Saya tidak berpikir Anda akan melangkah terlalu jauh sampai Anda dapat membuat kasus yang cukup baik bahwa ada masalah (yang saat ini mungkin tidak dikenali) yang dapat diatasi dengan pengujian otomatis.
Jika ada budaya pengujian manual terhadap skrip yang ditetapkan, maka ada biaya untuk mengeksekusi skrip tersebut ditambah dengan risiko hasil yang tidak lengkap atau tidak akurat. Mungkin ada sejarah (didokumentasikan atau dalam bentuk "kisah perang") ini. Sarankan proyek percontohan untuk mengotomatisasi beberapa tes manual tersebut dengan maksud untuk memberikan penghematan biaya jangka panjang.
Jika bahkan tidak ada fungsi pengujian manual maka saya akan menyarankan bahwa bisnis tidak menganggap bahwa segala jenis pengujian formal, otomatis atau sebaliknya, memiliki nilai. Dalam hal ini saya akan menganggap jalan di depan panjang dan curam, tetapi sekali lagi itu mungkin memerlukan demonstrasi yang jelas bahwa bisnis dapat memperoleh manfaat dari mengadopsi pendekatan yang kurang kasual untuk kualitas perangkat lunak. Jika Anda tidak dapat melakukan itu maka sulit untuk melihat bagaimana mungkin ada dukungan untuk ide dengan alasan komersial.
sumber
Satu ide adalah bahwa Anda bertujuan untuk menulis tes yang membuktikan bahwa kode yang ditulis orang lain salah. Harus menjual konsep.
sumber