Шағын балықшы кемесіндегі жылдар бойғы қызмет маған палубадағы әрбір сызатты жатқа білуді, қозғалтқышты өз бетімше жөндеуді және балықтың қайда жүргенін түйсікпен сезуді үйретті. Бірақ енді бұл тәжірибе мүлдем басқа деңгейді талап етеді: мен жүздеген экипаж мүшесі бар, автоматтандырылған навигациялық жүйелері күрделі және әр түрлі уақыт белдеуіндегі порттарға байланған алып контейнер тасығыш кеменің көпірінде тұрмын.
Дәл осылай шағын студиядан үлкен энтерпрайзға ауысу сезіледі.
Мұнда «баг тапты – түзетті – әрі қарай кетті» принципі жұмыс істемейді. Корпорацияда сен миллиондаған адам қолданатын өнімнің сапасын басқарасың. Ал сенің басты құралың – техникалық дағдылар емес, жүйелік ойлау.
Шағын жобаларда сен бүкіл көріністі толық көресің. Бір күнде қосымшаның барлық қабаттарынан өтіп, заглушкаларды көтеріп, тестілік деректерді енгізіп: «Міне, мына жерде бұзылды, түзетіңдер» деп айта аласың.
Корпорациядағы көрініс басқаша. Сенің міндетің – жай ғана ақау табу емес, оның бар екенін дәлелдеу, оны қажетті ортада қайта шығару, дұрыс жіктеу және әзірлеу тобын бұның ортадан жоғары басымдық екеніне сендіру.
Жауапкершілік ауқымындағы айырмашылық. Түпкі себепті қаншалықты дұрыс анықтайтының релиз уақыты мен өнімнің беделіне байланысты.
Үлкен компанияда жаңадан бастаушыдан тестілік шешімдер архитекторына дейінгі жол күрделі RPG ойынының деңгейлерін меңгеруге ұқсайды. Әр деңгейде өз монстрлары және өз бонустары бар.
Бұл кезеңде сен чек-парақтар жазып, регрессиялық тестілеу жүргізесің. Сен – команданың көзісің. Сенің міндетің – аномалияны байқап, баг-репортты сауатты рәсімдеу.
Бірақ бұл жерде тұзақ бар. Осылайша үш жыл жұмыс істеп, сол деңгейде қалуың мүмкін, жай ғана механикалық түрде қосымшаны баса бересің. Компанияларға бұл тиімді – сен тұрақты жұмыс істейсің. Саған – жоқ.
💡 Кеңес: Егер сен бұл деңгейде бір жылдан астам уақыт болсаң – шұғыл түрде автоматтандыруды үйрене баста. Күрделі фреймворктер жазу үшін емес, өз рутинаңды автоматтандыру үшін. Кез келген қайталанатын тексеруді алып, оған Python скриптін жаз. Бұл сенің ойлау тәсіліңді өзгертеді.
Мұнда сен багтарды қолмен іздемейсің – сен мұны сенің орныңа жасайтын инфрақұрылымды құрасың. Сен API тесттерін жазасың, CI/CD баптайсың, тестілік орталармен жұмыс істейсің.
Бұл деңгейдегі ең жиі кездесетін қателік – бәрін автоматтандыруға тырысу. «Бізде 1000 қолмен тест бар – олардың барлығын автоматтандырайық!» – бұл ешқайда апаратпайтын жол. Автоматтандыру үшін автоматтандыру уақыт пен ресурстарды өлтіреді.
Бұл код жазу туралы емес, жалпы тестілеу жүйесін жобалау туралы. Сен қандай құралдарды қолдану керектігін, тестілік деректерді қалай ұйымдастыруды, өнім сапасын объективті бағалау үшін қандай метрикаларды жинау керектігін шешесің.
Архитектордың «баг табу» міндеті жоқ. Оның міндеті – багтардың байқалмай өте алмайтынына көз жеткізу. Ол сапа қауіпсіздігі жүйесін құрады.
Корпорациялардағы HR-лардың ең жиі сұранысы – «дамыған софт-скиллдері бар кандидат». Және бұл қыңырлық емес. Энтерпрайзда сен вакуумда жұмыс істемейсің.
Сенің баг-репортыңды келесілер оқиды: әзірлеуші (ол басқа уақыт белдеуінде болуы мүмкін), продакт-менеджер (ол техникалық детальдарды түсінбейді), команда жетекшісі (ол релиз тәуекелдерін бағалайды).
Егер сен «Авторизация жұмыс істемейді» деп жазсаң – сені түсінбейді. Егер «iOS 17.2 жүйесінде жарамсыз телефон нөмірін енгізгенде EXC_BAD_ACCESS қате кодымен қосымша жабылады, бұл тек iPhone 15 Pro Max нақты құрылғысында болады» деп жазсаң – сені естиді, түсінеді және шара қолданады.
Мұндағы құпия – әзірлеушілердің де жүктемесі жоғары. Олардың өз бэклогы, өз міндеттері бар. Сенің жұмысың – олардың жұмысын жеңілдету: дайын ақпарат беру, оларға қайта тексерудің қажеті болмауы үшін.
Үлкен өнімнің архитектурасын алғаш рет көргенде – ондаған микросервистер, хабарлар кезегі, әртүрлі аймақтарда орналасқан бірнеше дерекқорлар, жүздеген джобтары бар CI/CD пайплайндары – ноутбукті жауып, таксиде жұмыс істеуге кеткің келетін табиғи тілек пайда болады.
Бірақ жақсы жаңалық бар: бұл жүйені толық ешкім білмейді.
Осы жүйені жазған архитектор оны 70% біледі. Әзірлеу тобы – 30%. Сен – тестілеуші. Саған бәрін білудің қажеті жоқ. Саған кез келген ақпаратты қалай табу керектігін білу керек.
💡 Кеңес: Жеке «шпаргалка» жаса. Notion немесе Confluence-де келесілерді жинайтын бет аш: - әрбір микросервис бойынша құжаттамаға сілтемелер; - әрбір ішкі жүйеге жауаптылардың байланыстары; - өзара әрекеттесу схемалары; - типтік мәселелер және олардың шешімдері. Бұл құжат сенімен бірге өседі және бір жылдан кейін компаниядағы ең құнды артефактқа айналады.
Күйіп қалу артық жұмыстан емес, шеңбер бойымен мағынасыз жүгіруден келеді.
Корпорацияда тұзаққа түсу оңай: сен релиздерді шығарасың, тикеттерді жабасың, митингтерге қатысасың – ал прогресс сезімі жоқ. Себебі өнім үлкен, сенің үлесің массада «ериді».
Бұдан аулақ болудың жалғыз жолы – ағымдағы міндеттермен қатар жүргізетін ұзақ мерзімді жобаларды алу.
Қазір сен 1–2 жыл тәжірибесі бар қолмен тестілеуші делік. Қайда жүгіру керек?
Про-программист болудың қажеті жоқ. Төмендегілерді білу жеткілікті:
Саған қосымшаның қайда баратынын көру керек. Charles, Fiddler, Postman – біреуін таңдап, оны «сұранысты ұстап алу, жауапты ауыстыру, заголовоктарды тексеру» деңгейінде біл.
SQL – бұл суперкүш. Әзірлеуші «бәрі жұмыс істейді» дегенде, сен SELECT жазып, жазбаның сақталмағанын көресің. Бұл даулардың 80% жабады.
Jenkins, GitLab CI, GitHub Actions – тесттерді жүргізу және есеп
