Saya bekerja dengan sistem berikut:
Network Data Feed -> Third Party Nio Library -> My Objects via adapter pattern
Kami baru-baru ini memiliki masalah di mana saya memperbarui versi perpustakaan yang saya gunakan, yang, antara lain, menyebabkan cap waktu (yang dikembalikan oleh perpustakaan pihak ketiga long
), diubah dari milidetik setelah zaman ke zaman nanodetik setelah zaman.
Masalah:
Jika saya menulis tes yang mengejek objek perpustakaan pihak ketiga, tes saya akan salah jika saya telah membuat kesalahan tentang objek perpustakaan pihak ketiga. Sebagai contoh, saya tidak menyadari bahwa stempel waktu berubah presisi, yang mengakibatkan perlunya perubahan dalam tes unit, karena tiruan saya mengembalikan data yang salah. Ini bukan bug di perpustakaan , itu terjadi karena saya melewatkan sesuatu di dokumentasi.
Masalahnya adalah, saya tidak bisa yakin tentang data yang terkandung dalam struktur data ini karena saya tidak bisa menghasilkan yang nyata tanpa umpan data nyata. Objek-objek ini besar dan rumit dan memiliki banyak potongan data yang berbeda di dalamnya. Dokumentasi untuk perpustakaan pihak ketiga buruk.
Pertanyaan:
Bagaimana saya bisa mengatur tes saya untuk menguji perilaku ini? Saya tidak yakin dapat menyelesaikan masalah ini dalam unit test, karena tes itu sendiri dapat dengan mudah salah. Selain itu, sistem terintegrasinya besar dan rumit dan mudah untuk melewatkan sesuatu. Misalnya, dalam situasi di atas, saya telah menyesuaikan penanganan stempel waktu dengan benar di beberapa tempat, tetapi saya melewatkan satu di antaranya. Sistem tampaknya melakukan sebagian besar hal yang benar dalam pengujian integrasi saya, tetapi ketika saya menggunakannya untuk produksi (yang memiliki lebih banyak data), masalahnya menjadi jelas.
Saya tidak memiliki proses untuk tes integrasi saya sekarang. Pengujian pada dasarnya adalah: cobalah untuk menjaga unit tes tetap bagus, tambahkan lebih banyak tes saat ada masalah, kemudian gunakan ke server pengujian saya dan pastikan semuanya tampak waras, kemudian gunakan untuk produksi. Masalah stempel waktu ini lulus uji unit karena tiruan dibuat salah, lalu lulus uji integrasi karena tidak menyebabkan masalah langsung yang jelas. Saya tidak punya departemen QA.
Timestamp
kelas (mengandung representasi yang mereka inginkan) dan menyediakan metode bernama ( .seconds()
, .milliseconds()
, .microseconds()
, .nanoseconds()
) dan tentu saja bernama konstruktor. Maka tidak akan ada masalah.