Nima uchun DevOps Shift-Left testing tamoyillarini tavsiya qiladi?
Nima uchun DevOps bug'larni erta aniqlash, xarajatlarni kamaytirish va release sikllarini yaxshilash uchun shift-left testing'ga urg'u berishini tushunib oling.
Muallif: William Imoh

Agar DevOps dasturiy ta'minotni yetkazib berishni soddalashtirishga qaratilgan bo'lsa, nega testlash metodologiyalari haqida shuncha ko'p bahs-munozaralar bor? Nega biz hamon shift-left, shift-right va hatto shift-down testing kabi yondashuvlarga duch kelamiz? Hamma tomonidan qabul qilingan yagona strategiya bo'lishi kerak emasmi?
DevOps tezkor development sikllari, continuous integration va delivery'ga urg'u beradi, ammo loyihalaringiz yoki jamoalaringizning ehtiyojlari, maqsadlari yoki qiyinchiliklari har xil bo'lishi mumkin. Ilova turi, infratuzilma, jamoa hajmi, legacy tizimlar va release jadvallari kabi omillar sizni turli testlash strategiyalarini tanlashga undashi mumkin.
Bu turli ehtiyoj va qiyinchiliklarga qaramay, DevOps shift-left testing tamoyillarini tavsiya qiladi, chunki u muammolarni erta aniqlash degan asosiy masalani hal qiladi. Testlarni erta integratsiya qilish orqali muammolar ularni tuzatish qimmatroq va murakkabroq bo'lib qolishidan oldin tezda hal qilinadi.
Ushbu qo'llanmada siz Shift-Left testing nima ekanini, uning afzalliklarini, uni joriy qilishda nimalarni hisobga olish kerakligini va best practice'larni bilib olasiz.
Shift-Left testing nima?
Shift-Left testing — bu software development lifecycle'da (SDLC) quality assurance va boshqa testlash faoliyatlarini ertaroq bosqichga olib kirishni nazarda tutadigan DevOps tamoyili.
Yillar davomida testlash ishlab chiqish jarayonida qandaydir ikkinchi darajali, keyinroq o'ylanadigan ish deb hisoblanib kelgan. An'anaviy yondashuvda ilovani testlashdan oldin development sikli tugashi yoki hech bo'lmaganda ishlab chiqish jarayonining 50% qismi bajarilishi kutiladi. Bu yondashuv sekin va qimmat bo'lishi mumkin hamda resurslardan to'liq foydalanmaydi, chunki testlar davomida topilgan bug'larni development sikli davomida osongina tuzatib bo'lmaydi.

Asosiy g'oya testlashni ishlab chiqish jarayonining chap tomoniga surishdir, shunda u design va development bosqichida ertaroq va tez-tez amalga oshirilishi mumkin bo'ladi.
Shift-Left testing DevOps'ning continuous integration va continuous delivery (CI/CD) tamoyiliga mos keladi, chunki avtomatlashtirilgan testlar kod bilan birga yozilishi va development pipeline'ining bir qismi sifatida ishga tushirilishi mumkin. Bu yondashuv muammolarning erta aniqlanishini, dasturchilarning darhol feedback olishini va dasturiy ta'minotning umumiy sifati oshishini ta'minlaydi.
Shift-Left testing'ni joriy qilish uchun tashkilotlar ko'pincha turli avtomatlashtirilgan testlash vositalariga tayanadi. Vositalarni tanlash jamoaning afzal ko'rishi va aniq loyihalarga qarab farq qilishi mumkin bo'lsa-da, quyida Shift-Left testing'ni amalga oshirish uchun ba'zi mashhur vositalar keltirilgan:
- Jenkins
- Selenium
- Cucumber
- SonarCube
- JMeter
DevOps'da Shift-Left testing'ning afzalliklari
Keling, Shift-Left nima uchun DevOps jarayonlaringizda muhim ekanining ba'zi sabablarini ko'rib chiqaylik:

- Xarajatlarning kamayishi: Har bir tashkilotning maqsadi o'zining operatsion xarajatlarini kamaytirish va foydani maksimal darajaga yetkazishdir. Shift-Left testing ishlab chiqish jarayoningizga kiritilganda bug'lar erta aniqlanadi va tuzatiladi, bu esa ularni deployment'dan keyin hal qilishga qaraganda ancha arzonga tushadi. Bu yondashuv qayta ishlash minimal bo'lgani uchun sizning vaqtingizni ham, resurslaringizni ham tejaydi.
- Tezroq feedback va erta aniqlash: Shift-Left testing kodingiz sifati haqida tezroq feedback beradi, chunki siz ishlab chiqish jarayonining boshida testlaysiz. Bu siz va jamoangiz bug'larni ushlab qolishingiz va muammolarni ular kuchayib ketishidan oldin aniqlashingiz mumkinligini anglatadi. Bundan tashqari, u defect'larni development'ning keyingi bosqichlarida yoki production'da topish va tuzatish ehtimolini kamaytiradi.
- Sifatning yaxshilanishi: Ilovangizning umumiy ishlashi ishonchliroq va barqarorroq bo'ladi, chunki siz bug'larni ular foydalanuvchilaringiz tajribasiga ta'sir qilishidan oldin, ertaroq topib tuzatishingiz ehtimoli yuqori.
- Bozorga tezroq chiqish: Defect'lar kamaygani va ishlab chiqish jarayoni optimallashtirilgani sababli siz tezroq iteratsiya qila olasiz va dasturiy ta'minotni uzluksiz release qila olasiz.
- Hamkorlikning yaxshilanishi va uzluksiz o'rganish: Shift-Left testing dasturchilar, tester'lar va boshqa stakeholder'lar o'rtasidagi hamkorlik haqidagi DevOps tamoyiliga amal qiladi. Bu jamoada mas'uliyat va ownership hissi paydo bo'lishini hamda a'zolar bir-biridan ko'proq narsa o'rganishini anglatadi.
Shift-Left testing ertaroq testlashni yoqlaydi va e'tiborni ishlab chiqish jarayonining chap tomoniga suradi. Siz bu testlash design va development bosqichlaridan keyin tugashini anglatadimi yoki live'ga chiqishga tayyorlanayotganda o'ng tomondagi testlashga o'xshash narsa ham bormi, deb hayron bo'lishingiz mumkin.
Xo'sh, to'g'ri topdingiz, haqiqatan ham Shift-Right testing mavjud. Keling, endi uni ko'rib chiqaylik.
Shift-Right testing nima?
Shift-Right testing — bu software development lifecycle'da (SDLC) quality assurance va boshqa testlash faoliyatlarini keyinroq bosqichga olib kirishni nazarda tutadigan DevOps tamoyili. Bu odatda dasturiy ta'minot release qilinganida yoki production'da foydalanilayotganida amalga oshiriladi.
Ishlab chiqish jarayonining boshida amalga oshiriladigan Shift-Left testing'dan farqli o'laroq, Shift-Right testing ilova production'ga deploy qilinganidan keyin amalga oshiriladi. U quyidagilarni o'z ichiga oladi:
- Bug'lar va muammolarni aniqlash uchun ilovaning production muhitidagi unumdorligini diqqat bilan monitoring qilish.
- To'liq rollout qilishdan oldin yangi feature'larning ta'sirini sinab ko'rish uchun ularni tanlangan foydalanuvchilarga asta-sekin release qilish.
- Foydalanuvchilarning umumiy tajribasini tushunish va continuous improvement talab qilinadigan sohalarni aniqlash uchun foydalanuvchilardan feedback yig'ish.
- Foydalanuvchilar xatti-harakati va natijalarni aniqlash maqsadida dasturiy ta'minot yoki feature'larning turli versiyalarini solishtirish uchun A/B testing o'tkazish.

Asosiy g'oya system testing'ni ishlab chiqish jarayonining o'ng tomoniga surish, ilovaning real hayotiy stsenariylarda yaxshi ishlashini ta'minlash va Shift-Left testing paytida ko'zga tashlanmasligi mumkin bo'lgan muammolarni ushlab qolishdir.
Shift-Right testing production'ga xos muammolar bilan ishlashda o'zining afzalliklariga ega bo'lsa-da, u xavfli bo'lishi mumkin. Bug'larni production'da tuzatish yondashuvi downtime'ga olib kelishi, foydalanuvchi tajribasiga salbiy ta'sir qilishi va tashkilotingiz obro'siga putur yetkazishi mumkin.
Shift-Left testing'ni joriy qilishdagi qiyinchiliklar
Shift-Left testing barcha testlash muammolaringizni hal qiladigan "sehrli tayoqcha" emasligini tushunish muhim. Uning ham o'ziga xos qiyinchiliklari bor. Quyida uni joriy qilishda duch kelishingiz mumkin bo'lgan ba'zi qiyinchiliklar keltirilgan:
- Talab qilinadigan ko'nikmalar: Dasturchilar, tester'lar va boshqa stakeholder'lar test avtomatlashtirish, continuous integration va boshqa yangi ko'nikmalarni egallashlari kerak bo'lishi mumkin. Resurslari cheklangan jamoalar uchun o'qitish qiyin bo'lishi mumkin.
- Madaniy o'zgarish: Ishlab chiqish jarayonining chap tomonida continuous testing'ni qo'llash barcha stakeholder'lar uchun madaniy o'zgarishni talab qiladi. Dasturchilar qo'shimcha testlash mas'uliyatlarini o'z zimmasiga olishi, tester'lar esa yangi ko'nikmalarni egallashi kerak bo'lishi mumkin. Bu ularning ish yuki va mas'uliyatini oshirib, qarshilikka olib kelishi mumkin.
- Xarajat oqibatlari: Joriy qilish jarayoni yangi vositalar to'plamlari va avtomatlashtirish freymvorklarini talab qiladi, ularni sozlash esa ko'p vaqt va mablag' talab qilishi mumkin. Bundan tashqari, jamoalar bu vositalar bilan bog'liq learning curve'ni yengib o'tishi kerak.
- Integratsiya murakkabligi: Testlashni SDLC'ning dastlabki bosqichiga integratsiya qilish, ayniqsa legacy va yirik tizimlarda murakkab bo'lishi mumkin. Buning sababi, u barcha jamoa a'zolarining hamfikr bo'lishini hamda yangi testlash yondashuviga moslashish uchun o'z rollari va mas'uliyatlarini o'zgartirishga tayyor bo'lishini talab qiladi.
- Risk management: Erta testlash jamoalar erta testlash bilan bog'liq risk'larni kamaytirish strategiyalarini ishlab chiqishi hamda erta testlash va potensial risk'lar o'rtasida muvozanat topishi kerakligini anglatadi.
Qiyinchiliklarni yengish va shift-left testing'ni joriy qilish
Ishlab chiqish jarayoningizda Shift-Left testing'ni qo'llash, ayniqsa resurslar va madaniy qarshilik bilan bog'liq bir qancha qiyinchiliklarga ega bo'lib, ular u taqdim etadigan afzalliklarni soya ostida qoldirishi mumkin. Shift-Left testing'ni muvaffaqiyatli joriy qilish uchun quyidagi strategiyalarni ko'rib chiqing:
- Testing-first mindset'ni targ'ib qiling va mahsulotga umumiy ownership'ga urg'u bergan holda jamoalaringiz o'rtasida cross-functional hamkorlikni rag'batlantiring.
- Test automation, CI/CD va boshqa DevOps'dagi best practice'larga qaratilgan o'qitish va ko'nikmalarni rivojlantirishga sarmoya kiriting.
- Tashkilotingiz ehtiyojlariga mos keladigan va byudjetingizga muammosiz sig'adigan DevOps vositalarini tanlang.
- Bitta feature yoki pilot loyihadan kichikdan boshlang, keyin asta-sekin butun mahsulot zanjiri bo'ylab kengaytiring. Bu yondashuv jamoangizga strategiyalarni o'rganish va takomillashtirish uchun moslashuvchanlik va vaqt beradi.
- Yaxshilash kerak bo'lgan sohalarni aniqlash va tegishli mitigation strategiyalarini joriy qilish uchun muntazam ravishda risk assessment o'tkazing.
Shift-Left testing tamoyillarini joriy qilish bo'yicha best practice'lar
Quyida e'tiborga olish kerak bo'lgan ba'zi best practice'lar keltirilgan:

- Erta test rejalarini qabul qiling: Loyihaning testlash maqsadlari va qamrovini aniq belgilab beradigan reja tuzing. Shuningdek, testlash SDLC'ingizning dastlabki bosqichlariga integratsiya qilinganiga ishonch hosil qiling.
- Test automation: Unit test'lar, integration test'lar, functional test'lar va boshqa zarur test case'larni avtomatlashtirish uchun test avtomatlashtirish vositalaridan foydalaning. Bundan tashqari, CI/CD pipeline'ni ishga tushirishda test skriptlari dolzarb va aniq bo'lib qolishi uchun ularni muntazam yangilab va qo'llab-quvvatlab boring.
- Hamkorlik va muloqot: Dasturchilar, tester'lar va boshqa stakeholder'lar o'rtasidagi muloqot va hamkorlikni osonlashtirish uchun Jira va Linear kabi loyiha boshqaruvi vositalaridan, shuningdek, yig'ilishlar, check-in'lar va stand-up'lar kabi an'anaviy usullardan foydalaning.
- Uzluksiz o'rganish: Jamoangizni eng so'nggi testlash texnikalari va vositalaridan xabardor bo'lib borishga, mutaxassislardan o'rganish uchun soha tadbirlarida qatnashishga hamda jamoa ichida bilim va best practice'lar bilan bo'lishishga undang.
Real hayotda Shift-Left testing
Jamoalar yaxshiroq ilovalar yaratish uchun Shift-Left testing'dan qanday foydalanayotganini yaxshiroq tushunish uchun keling, ikkita real misolni ko'rib chiqaylik: Microsoft va Uber.
Microsoft
Ikki yarim yil davomida Microsoft jamoasi 27 000 ta legacy testni zamonaviy DevOps unit test'lari va shift-left jarayoni bilan muvaffaqiyatli almashtirdi. Bu yondashuv ularga dasturiy ta'minot sifati va unumdorlik maqsadlarini yaxshilash imkonini berdi.

Bundan tashqari, Azure DevOps platformasi turli Shift-Left testing amaliyotlarini o'z ichiga oladi va jamoa ulardan o'z mijozlariga ishonchli cloud servislar va vositalarni yetkazib berish uchun foydalanadi. Microsoft'dagi Shift-Left testing'ning asosida quyidagilar yotadi:
- Testlarni imkon qadar eng quyi darajada yozish.
- Istalgan joyda ishlay oladigan functional test'larni yozish.
- Test kodiga mahsulot kodi kabi munosabatda bo'lish.
Uber
Uber'ning testlashni dasturiy ta'minot ishlab chiqish jarayonining birinchi o'rniga qo'yadigan Shift-Left testing tamoyilini qabul qilgani unga risk'larni minimallashtirish va ride-sharing platformasining ishonchliligi hamda xavfsizligini ta'minlashga yordam berdi.

Uber amalga oshirgan asosiy o'zgarishlardan biri production'ga deploy qilmasdan testlay olishni ta'minlash bo'ldi. Bu jarayon on-demand continuous deployment va test sandbox'lariga routing qilish imkonini beradigan backend integration testing strategiyasini (BITS) ishga tushirishni talab qiladi. BITS'ning asosida quyidagilar yotadi:
- Production va test muhiti o'rtasida ma'lumotlarni izolyatsiya qilish.
- Workflow state, retry'lar va resource teardown uchun timer'larni belgilashda open-source workflow engine bo'lgan Cadence'dan foydalanish.
Asosiy xulosalar
Biznes rivojlangan sari u hal qilinishi kerak bo'lgan yangi qiyinchiliklar va use case'larni olib keladi. Bu shuni anglatadiki, DevOps engineer sifatida siz mahsulot sifati va tezlik o'rtasidagi muvozanatni saqlash uchun testlarni ishlab chiqish jarayoniga erta kiritishingiz kerak. Bundan tashqari, ishonchli ilovalar yaratishga yordam beradigan eng so'nggi DevOps trendlari va toolchain'laridan xabardor bo'lib borishingiz kerak.
DevOps ekotizimidagi eng so'nggi o'zgarishlar va kengaytmalardan xabardor bo'lib borish uchun DevOps roadmap'idan foydalaning.