Test yozish (testing) haqida gapirilganda quyidagi savollar ko'p beriladi:
- "Automated test" yozishga ko'p vaqt ketib qoladi, bu tajriba o'zini oqlaydi mi?
- "Manual test" yetarli emas mi?
- Qanday qilib implementation yozmasdan unga test yozish mumkin?
Bular juda asosli savollar va bejiz berilmagan.
Birinchidan, "manual testing" va "automated testing" bir-birining o'rnini bosmaydi, bu ikkalasi ham "software testing"ning tajribada ishlatiladigan "branch"lari hisoblanadi.
Ikkinchidan, ha, "automated test" yozishga ko'proq vaqt ketadi, ayniqsa bu tajribani yangi boshlagan paytda bularga ketadigan vaqt nisbati juda katta bo'ladi, tajriba shakllanishi bilan bu nisbat kamayishni boshlaydi.
Lekin bitta fakt bor, "automated test"lar yozilgandan keyin ularning "run" qilishga ketadigan vaqt "manual testing"ga ketadigan vaqtdan ancha kam.
Va bu "process" ko'p marta qaytarilganda bu farqdan yutilgan vaqt ortib boradi va bora-bora test yozishga ketgan vaqtni "compensate" qilib "foyda" (vaqt hisobida) ham keltirishni boshlaydi.
Endi, hop, test yozishni boshladik, TDD ishlatishimiz shart mi?
Bu test yozishning keyingi darajasi, agar test yozish tajribasi yangi boshlangan bolsa maslahat bermayman, chunki dasturchida bu tajribaga nisbatan "frustration" paydo qilishi mumkin.
Testing APIlar, toollar, tajribalar bilan tanishgandan keyin, terminologiyasiga yaxshiroq kirishgandan keyin TDDga switch qilish maqsadga muvofiq deb oylayman.
Bu tajriba dasturchidan biznes talablarni oldindan ko'ra bilish, kod yozmasdan oldin miyyasida "dasturlash"ni o'rganishni talab qiladi.
Mana shu instinktlar ozgina "develop" qilingandan keyin TDD dasturchi uchun intuitiv tuyulishni boshlaydi va bir muddatdan keyin voz kechilmas tajribaga aylanadi.
Umuman olganda, bu tajriba xalqaro kompaniyalarda dasturchining "invaluable skill"laridan deb baholanadi. Shu skill yetishmasligidan xatto interviewni fail qilish ehtimoli ham bor.
- "Automated test" yozishga ko'p vaqt ketib qoladi, bu tajriba o'zini oqlaydi mi?
- "Manual test" yetarli emas mi?
- Qanday qilib implementation yozmasdan unga test yozish mumkin?
Bular juda asosli savollar va bejiz berilmagan.
Birinchidan, "manual testing" va "automated testing" bir-birining o'rnini bosmaydi, bu ikkalasi ham "software testing"ning tajribada ishlatiladigan "branch"lari hisoblanadi.
Ikkinchidan, ha, "automated test" yozishga ko'proq vaqt ketadi, ayniqsa bu tajribani yangi boshlagan paytda bularga ketadigan vaqt nisbati juda katta bo'ladi, tajriba shakllanishi bilan bu nisbat kamayishni boshlaydi.
Lekin bitta fakt bor, "automated test"lar yozilgandan keyin ularning "run" qilishga ketadigan vaqt "manual testing"ga ketadigan vaqtdan ancha kam.
Va bu "process" ko'p marta qaytarilganda bu farqdan yutilgan vaqt ortib boradi va bora-bora test yozishga ketgan vaqtni "compensate" qilib "foyda" (vaqt hisobida) ham keltirishni boshlaydi.
Endi, hop, test yozishni boshladik, TDD ishlatishimiz shart mi?
Bu test yozishning keyingi darajasi, agar test yozish tajribasi yangi boshlangan bolsa maslahat bermayman, chunki dasturchida bu tajribaga nisbatan "frustration" paydo qilishi mumkin.
Testing APIlar, toollar, tajribalar bilan tanishgandan keyin, terminologiyasiga yaxshiroq kirishgandan keyin TDDga switch qilish maqsadga muvofiq deb oylayman.
Bu tajriba dasturchidan biznes talablarni oldindan ko'ra bilish, kod yozmasdan oldin miyyasida "dasturlash"ni o'rganishni talab qiladi.
Mana shu instinktlar ozgina "develop" qilingandan keyin TDD dasturchi uchun intuitiv tuyulishni boshlaydi va bir muddatdan keyin voz kechilmas tajribaga aylanadi.
Umuman olganda, bu tajriba xalqaro kompaniyalarda dasturchining "invaluable skill"laridan deb baholanadi. Shu skill yetishmasligidan xatto interviewni fail qilish ehtimoli ham bor.
👍15
Yangi dars boshladik
https://www.youtube.com/playlist?list=PLn8TR1nMED9bapVTZrouMB988Tf9fN9HA
https://www.youtube.com/playlist?list=PLn8TR1nMED9bapVTZrouMB988Tf9fN9HA
🔥4
Testing boyicha birinchi darsimiz
https://youtu.be/PzPZxJkP7rc
https://youtu.be/PzPZxJkP7rc
YouTube
Test yozishga kirish
Intro into testing
Sources: https://github.com/ravshansbox/testing-demo
Sources: https://github.com/ravshansbox/testing-demo
👍12
Test yozish darslaridagi project sourcelarini shu joyga joylab boramiz:
https://github.com/ravshansbox/testing-demo
https://github.com/ravshansbox/testing-demo
GitHub
GitHub - ravshansbox/testing-demo
Contribute to ravshansbox/testing-demo development by creating an account on GitHub.
🔥9👍2😁1
Interviewlarda "React element" va "React node" farqlari so'ralganda shunga qarab javob bersak boladi
👍4
Looplarda shu yol bilan bitta callbackni hamma elementlar uchun ishlatsa boladi.
Birinchi misolda har element uchun yangi callback yaratilyapti, ikkinchisida esa hammasi uchun bitta ishlatilyapti
Birinchi misolda har element uchun yangi callback yaratilyapti, ikkinchisida esa hammasi uchun bitta ishlatilyapti
👍24
Pair programming
Dasturlashda ishlatiladigan foydali uslublardan biri "pair programming" hisoblanadi.
Bir qarashda unumsiz tuyulsa ham (ikki dasturchi bir ishni ustida ishlayotgani uchun) aslida unday emas.
Bu uslubning quyidagi foydalari bor:
1) Tajriba almashish - dasturlashda eng muhim ruknlardan hisoblanadi, ayniqsa boshlovchilar orasida, bunda ikki dasturchi bir-birining bilmagan tomonlarini to'ldiradi, o'rgangan bilimlarini esa mustahkamlaydi
2) Masalaga taklif qilingan yechimlar sonini ko'pligi togriroq yechimga kelishga sabab bo'ladi va kelib chiqishi mumkin bo'lgan buglarning ehtimolini kamaytiradi
3) Komandadagi dasturchilarning yozilayotgan dastur haqida koproq bilishlarini taminlaydi
4) Komanda azolari orasidagi munosabatlarga ijobiy tasir korsatadi
5) Jamoaviy kod egalik (code ownership) hissini oshiradi
6) Real-time code reviewni taminlaydi
Dasturlashda ishlatiladigan foydali uslublardan biri "pair programming" hisoblanadi.
Bir qarashda unumsiz tuyulsa ham (ikki dasturchi bir ishni ustida ishlayotgani uchun) aslida unday emas.
Bu uslubning quyidagi foydalari bor:
1) Tajriba almashish - dasturlashda eng muhim ruknlardan hisoblanadi, ayniqsa boshlovchilar orasida, bunda ikki dasturchi bir-birining bilmagan tomonlarini to'ldiradi, o'rgangan bilimlarini esa mustahkamlaydi
2) Masalaga taklif qilingan yechimlar sonini ko'pligi togriroq yechimga kelishga sabab bo'ladi va kelib chiqishi mumkin bo'lgan buglarning ehtimolini kamaytiradi
3) Komandadagi dasturchilarning yozilayotgan dastur haqida koproq bilishlarini taminlaydi
4) Komanda azolari orasidagi munosabatlarga ijobiy tasir korsatadi
5) Jamoaviy kod egalik (code ownership) hissini oshiradi
6) Real-time code reviewni taminlaydi
👍15