#lesson #unit_testing #mutation_testing
O'tgan yili vaqtinchalik ishxonadagi bir boshqa projectda ishlashga to'g'ri keldi. Men qo'shilgan paytda, bizda buglar juda ham ko'p edi va biz buni bir nechta sabablarini ko'rdik, ya'ni project qisqa vaqtda qilinganligi, unga company tomonidan katta e'tibor berilmaganligi va shuning uchun code sifatsiz yozilganligi. O'sha paytda bizda unit test coverage 70% edi va biz o'yladik unit test coverageni oshirish ya'ni code ni ko'proq qismlarini testlash buglar sonini kamaytiradi deb.
Va shu o'yda men code coverage ni 95% ga olib chiqdim, hamma stakeholderlar xursand, sababi bu number chiroyli ko'rinardi. Lekin bu nima berdi bizga? Menga test coverage ni 25% ga oshirdi degan recognition va project ga HECH NARSA. Test coverage ni oshirish buglar sonini umuman kamaytirmadi, bu faqat menga va managerimga shuncha improvement qildi degan bluffy obro' olib keldi.
Bu degani unit test yozmaslik kerak deganimi? Yo'q albatta, faqat unit test bu mutlaqo deterministic emas, ya'ni hamma line test bilan cover qilindi degani test sifatini belgilab bermaydi.
Xo‘sh, unda muammo nimada edi?
Muammo shundaki, coverage faqatgina kodning qaysi qatorlari ishga tushganini ko‘rsatadi, xolos. Lekin o‘sha qatorlar to‘g‘ri tekshirilayotganini, ya’ni testning sifatini zarracha ham belgilab bermaydi. Biz shunchaki assertion’larsiz yoki yuzaki check’lar bilan coverage foizini sun’iy ravishda shishirgan edik.
Aynan shu nuqtada biz o‘zimizga bitta savolni berishimiz kerak: "Biz yozgan testlarning sifatini qanday baholaymiz? Bizni kim test qiladi?"
Mana shu muammoni hal qilish uchun dasturlashda Mutation Testing degan tushuncha bor.
Bu usul quruq coverage foiziga ishonmasdan, kodingizni vaqtinchalik xotirada ataylab buzib ko‘radi (masalan, if (a > b) ni if (a >= b) ga o‘zgartiradi yoki mantiqiy operatorlarni teskarisiga aylantiradi). Keyin esa siz yozgan testlarni shu buzilgan kodga qarshi ishga tushiradi.
Agar kodingiz buzilganda testlaringiz xatolik berib, buni payqasa - demak testingiz sifatli.
Agar kod o‘zgarib, buzilib ketsa-yu, lekin testlaringiz hech narsa bo‘lmagandek "yashil" bo‘lib o‘tib ketaversa - demak o‘sha joydagi coverage shunchaki quruq raqam xolos.
Loyihadagi tajribamdan chiqargan eng katta xulosam shu bo‘ldiki: chiroyli raqamlar ortidan quvish kerak emas. 95% lik sifatsiz va yuzaki coverage’dan ko‘ra, real xatolarni tuta oladigan 50% lik sifatli test suite loyihaga ming marta ko‘proq foyda keltirishi mumkin.
O'tgan yili vaqtinchalik ishxonadagi bir boshqa projectda ishlashga to'g'ri keldi. Men qo'shilgan paytda, bizda buglar juda ham ko'p edi va biz buni bir nechta sabablarini ko'rdik, ya'ni project qisqa vaqtda qilinganligi, unga company tomonidan katta e'tibor berilmaganligi va shuning uchun code sifatsiz yozilganligi. O'sha paytda bizda unit test coverage 70% edi va biz o'yladik unit test coverageni oshirish ya'ni code ni ko'proq qismlarini testlash buglar sonini kamaytiradi deb.
Va shu o'yda men code coverage ni 95% ga olib chiqdim, hamma stakeholderlar xursand, sababi bu number chiroyli ko'rinardi. Lekin bu nima berdi bizga? Menga test coverage ni 25% ga oshirdi degan recognition va project ga HECH NARSA. Test coverage ni oshirish buglar sonini umuman kamaytirmadi, bu faqat menga va managerimga shuncha improvement qildi degan bluffy obro' olib keldi.
Bu degani unit test yozmaslik kerak deganimi? Yo'q albatta, faqat unit test bu mutlaqo deterministic emas, ya'ni hamma line test bilan cover qilindi degani test sifatini belgilab bermaydi.
Xo‘sh, unda muammo nimada edi?
Muammo shundaki, coverage faqatgina kodning qaysi qatorlari ishga tushganini ko‘rsatadi, xolos. Lekin o‘sha qatorlar to‘g‘ri tekshirilayotganini, ya’ni testning sifatini zarracha ham belgilab bermaydi. Biz shunchaki assertion’larsiz yoki yuzaki check’lar bilan coverage foizini sun’iy ravishda shishirgan edik.
Aynan shu nuqtada biz o‘zimizga bitta savolni berishimiz kerak: "Biz yozgan testlarning sifatini qanday baholaymiz? Bizni kim test qiladi?"
Mana shu muammoni hal qilish uchun dasturlashda Mutation Testing degan tushuncha bor.
Bu usul quruq coverage foiziga ishonmasdan, kodingizni vaqtinchalik xotirada ataylab buzib ko‘radi (masalan, if (a > b) ni if (a >= b) ga o‘zgartiradi yoki mantiqiy operatorlarni teskarisiga aylantiradi). Keyin esa siz yozgan testlarni shu buzilgan kodga qarshi ishga tushiradi.
Agar kodingiz buzilganda testlaringiz xatolik berib, buni payqasa - demak testingiz sifatli.
Agar kod o‘zgarib, buzilib ketsa-yu, lekin testlaringiz hech narsa bo‘lmagandek "yashil" bo‘lib o‘tib ketaversa - demak o‘sha joydagi coverage shunchaki quruq raqam xolos.
Loyihadagi tajribamdan chiqargan eng katta xulosam shu bo‘ldiki: chiroyli raqamlar ortidan quvish kerak emas. 95% lik sifatsiz va yuzaki coverage’dan ko‘ra, real xatolarni tuta oladigan 50% lik sifatli test suite loyihaga ming marta ko‘proq foyda keltirishi mumkin.
🔥2❤1
I don't know if AI is going to take my job, but I know if AI is gone now, I will lose my job))
😁3👍1🔥1
Uber is acquiring Delivery Hero!
https://www.deliveryhero.com/newsroom/delivery-hero-and-uber-to-join-forces-to-deliver-more-for-customers-vendors-and-riders/
https://www.deliveryhero.com/newsroom/delivery-hero-and-uber-to-join-forces-to-deliver-more-for-customers-vendors-and-riders/
Deliveryhero
Delivery Hero and Uber to Join Forces to Deliver More for Customers, Vendors and Riders | Delivery Hero
Always delivering an amazing experience.
❤1
Forwarded from Uzbekonomics
Hayot qiziq. Hamma narsani joy-joyiga qo'yib qo'yadi.
Bir necha hafta oldin ispaniyaliklarni umidsiz, yomon odamlar deb ular bilan hech qanday aloqada bo'lishni istamasligini aytib Ispaniya bilan barcha savdo-sotiqni to'xtatishga, ular bilan gaplashmaslikka chaqirgandi.
Mana, bugun butun dunyoning oldida Ispaniyani Jahon chempionligi kubogi bilan taqdirlamoqda. Juda majoziy bo’ldi.
@uzbekonomics
Bir necha hafta oldin ispaniyaliklarni umidsiz, yomon odamlar deb ular bilan hech qanday aloqada bo'lishni istamasligini aytib Ispaniya bilan barcha savdo-sotiqni to'xtatishga, ular bilan gaplashmaslikka chaqirgandi.
Mana, bugun butun dunyoning oldida Ispaniyani Jahon chempionligi kubogi bilan taqdirlamoqda. Juda majoziy bo’ldi.
@uzbekonomics
❤1👏1🎉1
Forwarded from Uzbekonomics
AI ish o'rinlarini yo'q qiladi, odamlarni ishsiz qoldiradi degan narrativ hozir hamma joyda. Hatto nufuzli iqtisodchilar ham (Acemoglu misol), Kremniy vodiysidagi tech hamjamiyat, senatorlar ham shu gapni takrorlaydi. AI ni to'xtataylik, ishchilarni AIdan himoya qilaylik deb ochiq xatlar yozishadi, hukumatga ham, ommaga ham.
Lekin AIning mehnat bozoriga ta'siri haqidagi bu qo'rquvlar ishonarli emas, hozircha.
WSJda biroz tanaffusdan so'ng ko'p tech, transport va mudofaa kompaniyalari AI bilan birga ishlaydigan odam ko'proq kerak deb yana ishga olishni boshlashgani haqida maqola chiqibdi.
Ha, AI code agentlar ayrim vazifalarning o'rnini bosayotgani rostdir. Lekin xodimlarni yoppasiga bo'shatayotgan kompaniyalar ko'proq bozor kon'yunkturasiga qarab ish tutmoqda desa bo'ladi: COVID va nol foiz stavka davrida ortiqcha yollangan odamlar qisqartirilyapti, urush ta'sirida ba'zi sanoatlarda faollik qisqaryapti vhkz.
AIni bahona qilib ko'proq odamni bo'shatish osonroq, kamroq odam norozi bo'ladi. Vaholanki, mehnat bozorida shundoq ham har kuni o'n minglab kishi ish yo'qotadi va yangi ish topadi.
Xullas, WSJdagi bu maqola narrative violationga misol ekan.
@uzbekonomics
Lekin AIning mehnat bozoriga ta'siri haqidagi bu qo'rquvlar ishonarli emas, hozircha.
WSJda biroz tanaffusdan so'ng ko'p tech, transport va mudofaa kompaniyalari AI bilan birga ishlaydigan odam ko'proq kerak deb yana ishga olishni boshlashgani haqida maqola chiqibdi.
Ha, AI code agentlar ayrim vazifalarning o'rnini bosayotgani rostdir. Lekin xodimlarni yoppasiga bo'shatayotgan kompaniyalar ko'proq bozor kon'yunkturasiga qarab ish tutmoqda desa bo'ladi: COVID va nol foiz stavka davrida ortiqcha yollangan odamlar qisqartirilyapti, urush ta'sirida ba'zi sanoatlarda faollik qisqaryapti vhkz.
AIni bahona qilib ko'proq odamni bo'shatish osonroq, kamroq odam norozi bo'ladi. Vaholanki, mehnat bozorida shundoq ham har kuni o'n minglab kishi ish yo'qotadi va yangi ish topadi.
Xullas, WSJdagi bu maqola narrative violationga misol ekan.
@uzbekonomics
🔥1
Github va nihoyat men anchadan beri xohlab kelgan feature'ni chiqaribdi
https://www.youtube.com/watch?v=3Z1xcfF2xlY&t=302s
https://www.youtube.com/watch?v=3Z1xcfF2xlY&t=302s
YouTube
Github's Biggest Release In Years. Stacked PRs.
Stacked pull requests are now built into GitHub, and they change how you ship anything big. Instead of one giant PR nobody wants to review, you get a chain of smaller dependent branches that merge independently. Worth knowing if you're pushing large changes…