Sobes.tech
Junior

Proqramlaşdırma və test kontekstində idempotentlik nədir?

sobes.tech Süni İntellekt

AI-dan cavab

İdempotentlik, bir əməliyyatın və ya funksiyanın təkrarlanmasının, yalnız bir dəfə tətbiq edilmə ilə eyni nəticəyə gətirib çıxardığını ifadə edən xüsusiyyətdir. İdempotent əməliyyatın təkrarlanması sonrası sistem vəziyyəti, ilk icra ilə müqayisədə dəyişmir.

Proqramlaşdırma kontekstində:

İdempotent əməliyyatlara nümunələr:

  • Məlumatların bazadan oxunması (GET sorğusu), əgər bu məlumatların vəziyyətini dəyişmirsə.
  • Müəyyən bir dəyər ilə bazada qeyd yeniləmək (tam vəziyyətlə xüsusi resursa PUT sorğusu).
  • Resursu silmək (DELETE sorğusu). Artıq silinmiş resursun təkrarlanması, eyni vəziyyətə gətirir (resurs mövcud deyil).
  • Dəyişəni müəyyən bir dəyərlə başlatmaq.

İdempotent olmayan əməliyyatlara nümunələr:

  • Yeni qeyd əlavə etmək (POST sorğusu). Təkrarlanması yeni qeyd əlavə edəcək.
  • Sayğacı bir artırmaq.
  • E-poçt göndərmək.

Test kontekstində:

İdempotentliyin testi, API-lərlə işləyən, paylanmış sistemlər və ya mesajlaşma sistemləri kimi, əməliyyatların təkrarlanmasının mümkün olduğu sistemlər üçün vacibdir.

  • Testin məqsədi: İdempotent əməliyyatın təkrarlanmasının, ilk icra sonrası istənməyən yan təsirlər və ya sistem vəziyyətində dəyişikliklər yaratmamasını təmin etmək.
  • Test metodları:
    • Əməliyyatı N dəfə (N > 1) icra etmək və hər icradan sonra sistem vəziyyətini və nəticəni yoxlamaq.
    • Əməliyyatın təkrarlanmasından əvvəl və sonra sistem vəziyyətini müqayisə etmək.
    • Loglar və metrikləri yoxlamaq, təkrarlanan çağırışlarda anomaliyaların olmamasını təmin etmək.
  • Test nümunələri:
    • Resursa 5 dəfə GET sorğusu göndərmək. Cavabda olan məlumatların eyni olduğunu və serverdə resurs vəziyyətinin dəyişmədiyini təmin etmək.
    • Qeyd yeniləmək üçün PUT sorğusu göndərmək. Sorğunu təkrarlamaq. İkinci sorudan sonra qeyd bazada ilk vəziyyətdə qalmasını təmin etmək.
    • Resursu silmək üçün DELETE sorğusu göndərmək. Sorğunu təkrarlamaq. Birinci sorudan sonra resursun mövcud olmadığını və ikinci sorğunun gözlənilən statusu (məsələn, 404 Not Found) qaytardığını təmin etmək.

İdempotentlik, səhvlərin idarə olunmasını və təkrarlanan cəhdləri sadələşdirir, sistemləri daha etibarlı və proqnozlaşdırıla bilən edir ki, bu da keyfiyyətin əsas aspektidir.