Infrastruktur sebagai kode memberi tahu kami untuk menggunakan alat yang mengotomatiskan bangunan Anda. Bagus. Alat-alat seperti ansible , chef , boneka , tumpukan garam , dan lainnya mendorong kita untuk menulis bagaimana infrastruktur terlihat, sambil menyelesaikan perbedaan.
Dalam Salt Stack bit-bit itu disebut state . Jika negara tidak sesuai dengan kenyataan, alat itu akan menyelesaikannya untuk kita. Dengan kata lain - kami menulis tes untuk infrastruktur kami dan jika tes gagal, alat akan memperbaikinya sendiri. Setidaknya itulah idenya.
XP mengajarkan kita untuk menggunakan TDD dan pertanyaannya adalah apakah itu berlaku untuk infrastruktur? Tooling menyarankan itu.
Saya bisa membayangkan beberapa jenis tes yang bisa sangat berguna.
Kami menulis tes asap yang digabungkan dengan layanan yang digunakan untuk memastikan bahwa end-to-end layanan yang dikerahkan berfungsi dan berjalan seperti yang diharapkan. Ini akan menjadi panggilan API atau / dan pemeriksaan sistemctl untuk memastikan apa yang baru saja kami gunakan berfungsi. Banyak fungsi ini dapat dicakup dalam status yang sama karena alat seperti ansible memiliki status untuk memastikan layanan berjalan.
Ada Molekul proyek yang memungkinkan menjalankan peran individu (seperti yang dimungkinkan oleh statusnya) terhadap buruh pelabuhan atau mesin virtualisasi sementara lainnya. Hal ini memaksa untuk memisahkan peran dan memungkinkan untuk menjalankannya secara terpisah dari buku pedoman saat mengerjakannya. Tes sebagian besar memungkinkan mengejek variabel yang seharusnya berfungsi dengan peran. Contoh-contoh lain tampak seperti duplikasi dari mesin yang mungkin (menegaskan file milik pengguna ...).
ThoughtWorks radar berteknologi sekarang memuji alat-alat seperti inspeksi , serverspec atau goss untuk memvalidasi bahwa server memenuhi spec. Tapi kami sedang menulis spec, bukan?
Jadi apakah ada titik dalam pengujian infrastruktur lebih lanjut jika kita menggambarkan infrastruktur di negara bagian / peran? Saya dapat menduga ini menjadi lebih diperlukan dalam organisasi yang lebih besar di mana satu tim memberikan spek dan yang lainnya mengikuti, atau jika ada serangkaian peran yang besar, mungkin Anda ingin menjalankan subset dari mereka dan mendapatkan manfaat cepat dari tes? Saya berjuang untuk melihat mengapa Anda akan menulis ujian jika Anda dapat memiliki peran / negara untuk pertanyaan yang sama dalam pikiran.
goss
. Jadi untuk misalnya, RPM diinstal (mungkin) dan kemudian diuji jika file default yang diharapkan diberlakukan, atau layanan berjalan dan mendengarkan port tertentu. Saya tidak ingin memperbaiki masalah seperti itu secara otomatis, tetapi diberitahu dan hentikan progresnya. Tentu Ansible dapat menguji sistem untuk Anda juga, Anda hanya perlu secara eksplisit tentang hal itu, tetapi dalam kasus kami, kami gunakangoss
untuk menguji perilaku layanan dalam sebuah wadah