unit-test-yazmiram-ve-ya-xyak-xyak-i-v-prodakshn

Unit test yazmıram və ya “Х*як-х*як, и в продакшн”

Proqram təminatı hazırlayarkən ilk şərt proqramın istifadəçinin tələblərinə cavab verməsi və düzgün işləməsi olsa da, bu proqram təminatına qoyulan tək və son tələb deyil. Təəssüf ki, proqram yazarkən bəzən bunu nəzərdən qaçırırıq.

PS: Məqalə müəllifin şəxsi fikirlərinə əsaslanır. Kimisə alçaltmaq və ya kimlərisə göyə qaldırmaq məqsədi güdmür. Kruqom-mruqom, söhbətdida danışıram , dinlə..

PSS: Yaxşı yazılmış proqram hansıdır?

-Rahat müşayiət olunan, rahat genişlənən, dəyişikliyə rahatlıqla cavab verən proqram yaxşı proqram sayılır.

“Deadline-a az qalıb, mən hələ taskın yarısını tamamlamamışam.”

-Tanış cümlədir elə deyilmi?!

Bu məqalədə Unit testi niyə az layihələrdə yazmağımızdan və ya ümumiyyətlə yazmamağımızdan, həmçinin yazsaq nə kimi üstünlüklər qazanacağımızdan danışacam.

Təbii ki, haqlı olaraq deyə bilərsinizki, proqramın keyfiyyətli olması təkcə unit testdən asılı deyil. Mən unit test olmadan çox yaxşı yazılmış kodlar görmüşəm. İnan mənə öz təcrübəmdən deyirəm ))

Məqalədə məqsəd insanları arada-sırada unit test yazmağa səsləməkdir.

Davam edək...

Niyə çox vaxt unit test yazmırıq?


1)”Deadline-a az qalıb” .

- Tasklar qoyularkən ölkəmizdə bir çox şirkətlərdə deadline vaxtı qeyri-real olaraq qısa qoyulur. Mən öz gözümlə 30 günlük işi 1 həftəyə tələb müdir görmüşəm, nəyi qoyub nəyi axtarırsan.. Bir çox halda bunun əsas səbəbi işə cavabdeh olan insanın taskı düzgün qiymətləndirməməsindən, taskı qəbul edənin isə bu “zülmə” susmasından qaynaqlanır.

Məsələni düzgün şəkildə aidiyyəti şəxslərlə oturub analiz etmək, meet up-lar vaxtı öz fikrini əsaslandıraraq düzgün deadline qoparmaq lazımdır.

2) “Х*як-х*як, и в продакшн”

Bəzi şirkətlərdə ümumiyyətlə heç bir metodologiya tətbiq olunmur.Təəssüf ki, əksər şirkətlərimiz belədir. Metodologiya olmaması proqram təminatı hazırlanma prosesini və keyfiyyətini çox aşağı salır. Burda söhbət defakto metodologiyalardan getmir təkcə. Taskların yazılmasına ayrılan vaxtın düzgün qiymətləndirilməməsi, proqramçı işinin keyfiyyətinə nəzarətin olmaması və proqramçının “yazım əsas odu işləsin, sonra refaktor edərəm deyib production-a zəif kod çıxartması”. Nəinki modul test, integration test və End-to-end testin olmaması.

3)Proqramçı unit test yaza bilmir.

-Əksər şirkətlər işçini işə qəbul edən zaman sadəcə texnologiya biliklərini yoxlayır. Amma mənim fikrimcə default olan bəzi biliklər var ki onu da mütləq bilməlidir hər proqramçı. Misalçün unit testlərin yazılması..

4)Proqramçı zəif unit test yazır, axırda production kod əvəzinə unit testin dalın başını yığmaqla məşğul olur. Unit test production kodu kimidir, əgər pis kodla bəsləsən axırı fırlanıb sənə g*rəcək. Qısa və konkret..

5)Şirkət işi minumum vaxta görüdürürki, minimum xərc çəksin. Normalda 8-9 ay çəkməli olan proyektlərə bizdə çox hallarda 3-4-5 ay vaxt qoyulur. Çünki misalçün kiçik komandada 3-5 nəfər varsa və onlara aylıq misalçün 8min toplamda pul verilirsə, proyektin vaxtını 3-4 ay kəsməklə büdcəyə əməlli qənaət etmiş olurlar.

6) Analiz, proyektləşdirməyə az əhəmiyyət verilir və ya ümumiyyətlə proqram yazılması prosesinin sadəcə kodlaşdırmaqdan ibarət olduğu zənn edilir.

Bu zaman proqramın testdən keçirilməsi, analiz olunması, unit testinin yazılması, proyektləşdirilməsi kimi mərhələlərə ya az vaxt ayrılır, ya da heç ayrılmır. Bəzi developerlərimiz niyəsə proqram yazmağın elə kodlaşdırmadan başladığını düşünürlər. Halbuki , analiz ,proyektləşdirmə kimi prosesləri unudurlar.

Və.s

Bəs unit test bizə nə qazandırır?

1)Unit test proqram arxutekturasına xidmət edir. Deməli belə bir söhbət var: Test Driven Development. Proqram hissələrini yazmamışdan əvvəl ilk öncə test yazırıq(Test First approach), daha sonra testin uğurlu keçməsi üçün proqramı yazır. TDD Unit test deyil, amma unit test vasitəsilə realizə edib dəyişikliyə cavab verən, bir biriylə zəif asılı modulyar strukturu(loosely coupled) qurmağımıza köməklik edir.

2)Unit test zamanda qazandırır. Proqram bir neçə səhifədən, formdan ibarət olarsa onları dənə dənə test etmək, həmin mərhələyə çatıb real test etməkdənsə, sadəcə həmin biznes qaydaya yazılmış modul testi qısa zaman kəsiyində işə salaraq (saniyələr ərzində) həmin biznes prosesin ,kodun işləyib işləmədiyini yoxlaya bilirik. Bu isə hər səhifəyə, forma keçib manual testdən dəfələrlə sürətli və zaman qazandıran prosesdir.

3)Unit test özümüzü güvəndə hiss etməyimizə səbəb olur. Əgər unit test düzgün yazlıbsa və uğurlu keçirsə tam arxayın ola bilərikki, yazdığımız kod da düzgün işləyir.

4)Unit test ssenarilər bizdən sonra işə təhvil alan developerlərin proyektdə nə baş verib vermədiyini anlamasına köməklik edir, bir növ documentation rolunu oynayır.

5)Proqramda səhvləri minimuma endirir və ya səhv olarsa daha rahat səhvin tapılmasına xidmət edir.


Tural

Tural Süleymani

Süleymani Tural Microsoft-un MCSD statuslu mütəxəssisidir, 2008-ci ildən bu yana proqramlaşdırma üzrə tədris aparır

Müəllifin bu dildə ən son postları

Bu yazıları da bəyənə bilərsiniz