Di tempat kerja kami memiliki sistem yang cukup rumit. Sebut saja sistem ini, System_A. Tim QA kami telah membuat sistem lain, panggil sistem ini, System_B, untuk menguji System_A.
Cara System_B digunakan adalah sebagai berikut. Kami menghasilkan input (menggunakan System_B sendiri), IN, memproses input tersebut kembali melalui System_B dan menghasilkan output, O_B. Jadi prosesnya adalah sebagai berikut:
System_B(IN) -> O_B
.
Kami kemudian melakukan hal yang sama untuk System_A untuk menghasilkan output sendiri, O_A:
System_A(IN) -> O_A
.
Kapan saja, diasumsikan bahwa O_B adalah output yang diharapkan, dan O_A adalah output yang diamati / aktual. Tersirat adalah bahwa O_B adalah sumber "emas" (kebenaran). Namun, kami telah mengalami kombinasi masalah.
- O_A salah, O_B benar
- O_A benar, O_B benar
- O_A salah, O_B salah
- O_A benar, O_B salah
Siapa yang menentukan apa yang benar jika O_B diasumsikan selalu benar (atau apa yang diharapkan)? Ya, ternyata O_B kadang-kadang (atau sering) salah dengan inspeksi dan analisis manusia. Banyak hal akan berlalu QA menggunakan proses ini, dan pengguna nyata akan mengeluh, dan kami kembali menemukan bahwa O_B salah.
Pertanyaannya adalah ini: apakah ini praktik yang buruk untuk membuat "sistem pengujian" untuk menguji sistem yang sebenarnya?
- Bagaimana dengan lereng yang licin? Lalu, tidak bisakah kita berdebat bahwa kita membutuhkan sistem lain untuk menguji "sistem pengujian"?
- Biayanya tentu saja mahal, karena pengembang sekarang perlu mempelajari setidaknya 2 basis kode, dengan kompleksitas System_B mungkin lebih besar daripada System_A. Bagaimana kita mengukur seberapa baik atau buruk memiliki System_B di sekitar untuk organisasi?
- Salah satu alasan "menarik" asli untuk membuat System_B adalah untuk "mengotomatisasi" pengujian. Sekarang kami sangat bangga bahwa kami sepenuhnya otomatis (karena System_B menghasilkan input untuk mem-bootstrap proses menggunakan sendiri untuk juga menghasilkan output). Tetapi saya pikir kami telah melakukan lebih banyak kerusakan dan memperkenalkan lebih banyak kerumitan, dengan cara yang tidak dapat dikenali. Apakah pekerjaan QA sepenuhnya otomatis? Apakah alasan itu cukup untuk membenarkan membuat sistem paralel?
- Kekhawatiran saya yang sebenarnya adalah ini, meskipun kita semua tahu bahwa System_B salah (cukup sering). Jika System_B sangat bagus dalam memproses input dan outputnya adalah sumber emas, mengapa tidak mengganti System_A dengan System_B? Untuk itu, tidak ada seorang pun di tempat kerja yang mampu memberikan respons yang memuaskan.
Setiap panduan tentang masalah ini dihargai.