Aniqrog'i, boshida shunday o'ylagandik. Lekin keyin savol tug'ildi: aslida funksionallik o'zgarib, lekin testlardan baribir o'tsachi? Ya'ni bizdagi testcaselar kichkina o'zgarishni ham seza oladigan darajada aniqmi? Masalan, bir koddagi
if a < b joyi refactoringda if a <= b ga o'zgarib ketsa testlarimiz bu o'zgarish sabab fail bo'ladimi yoki o'tkazib yuboradimi?Odatda, dasturchilar kodni test qilishadi. Lekin biz oldin testlarning o'zini test qilishimiz kerak edi. Biroz izlanganimizdan keyin bir jamoadoshimiz mutation test haqida gapirib qoldi (shunday test turi borligini o'sha vaqt bildim). Mutation test bu kodda kichkina o'zgarish (mutation)lar qilib, yozilgan testcaselardan qayta-qayta o'tkazish. Bundan maqsad kodni emas, testcaselarning o'zini tekshirish. Agar testlar yaxshi yozilgan bo'lsa, kod funksionalligi ozgina o'zgarganda ham qaysidir testcase fail bo'lishi kerak. O'zgartirilgan (mutant) kod hamma testlardan o'ta olsa mutation test fail bo'ladi. Dasturchilar natijani analiz qilib, testcaselarni o'zgartirishi, yangi testcase yozishi yoki shunchaki hech narsa qilmasligi mumkin.
Oldik☕️