Sobes.tech
Middle+

Komponent və modullar səviyyəsində mikroxidmətlərin sınaq xüsusiyyətləri nələrdir və monolit tətbiqlərin sınağı ilə necə müqayisə olunur?

sobes.tech Süni İntellekt

AI-dan cavab

Komponent və modul səviyyəsində mikroservislərin test edilməsi ayrı-ayrılıqda xidmətlərin izolə olunması və qarşılıqlı əlaqəsinə diqqət yetirir, monolit tətbiqlərin testindən fərqli olaraq, burada bütün kod bazası yoxlanılır.

Mikroservis testlərinin xüsusiyyətləri:

  • Xidmətlərin izolə olunması: Hər bir mikroservisin ayrıca test edilməsi, digər xidmətlərdən müstəqil. Bu, konkret bir xidmətdə problemləri tez aşkar etməyə imkan verir.
  • Kontrakt Testi: Xidmətlər arasında qarşılıqlı əlaqənin düzgünlüyünü yoxlamaq, məlumatların düzgün mübadiləsini və əvvəlcədən müəyyən edilmiş API müqavilələrinə uyğunluğunu təmin etmək. Populyar alətlər: Pact.
  • İnteqrasiya testləri: Bir neçə mikroservisin və xarici asılılıqların (məlumat bazaları, mesaj növbələri) qarşılıqlı əlaqəsinin yoxlanması. Çətinlik çoxsaylı asılılıqların idarə olunmasında olur.
  • Test məlumatlarının idarə olunması: Hər bir xidmət üçün ayrıca test məlumatlarının yaradılması və saxlanması, digər xidmətlərin məlumatlarına olan asılılıqları nəzərə alaraq.
  • Testlərin orkestrasiya olunması: Müxtəlif mikroservislər üçün testlərin işə salınmasının koordinasiyası, xüsusən inteqrasiya testlərində.
  • Xidmətlərin dayanıqlığı və elastikliyi testləri: Digər xidmətlərin uğursuzluğu və ya yüksək yüklənmə zamanı xidmətlərin davranışını yoxlamaq.
  • Test infrastrukturunun qurulması: Bir çox mikroservis və onların mühitlərinin yerləşdirilməsi və idarə olunması üçün daha mürəkkəb test infrastrukturu tələb olunur.
  • Təhlükəsizlik testləri: Hər bir xidmət səviyyəsində autentifikasiya, avtorizasiya və digər təhlükəsizlik aspektlərinin yoxlanması.

Monolit ilə müqayisədə:

Aspekt Monolit tətbiqi Mikroservislər
Testin həcmi Bütün kod bazasının bütöv şəkildə test edilməsi. Hər bir xidməti izolyasiya olunmuş şəkildə test etmək və sonra onların inteqrasiyasını yoxlamaq.
Asılılıqlar Bir kod bazası daxilində daxili asılılıqlar. Müstəqil xidmətlər arasında xarici şəbəkə asılılıqları.
Test məlumatları Mərkəzləşdirilə bilər. Hər bir xidmət üçün ayrıca idarə olunmalı, asılılıqları nəzərə alaraq.
İnteqrasiya Modul inteqrasiyasının test edilməsi, eyni proses daxilində. Xidmətlər arasında şəbəkə vasitəsilə qarşılıqlı əlaqənin test edilməsi.
Uğursuzluğa davamlılıq Modullar səviyyəsində daha az aktual, bütün tətbiq səviyyəsində daha çox. Ayrı-ayrı xidmətlərin uğursuzluğu zamanı davranışın test edilməsi çox vacibdir.
Çətinlik İnfrastruktur baxımından test daha sadə ola bilər, lakin izolasiya baxımından çətinliklər var. İnfrastruktur və asılılıqların idarə olunması baxımından daha mürəkkəb, lakin xidmətlərin izolasyonu daha asandır.

Pact istifadə edilən Contract Test nümunəsi:

// pact_broker/pacts/consumer-producer/latest.json
{
  "consumer": {
    "name": "MyConsumer"
  },
  "provider": {
    "name": "MyProducer"
  },
  "interactions": [
    {
      "description": "İstifadəçi ID ilə sorğu",
      "request": {
        "method": "GET",
        "path": "/users/123",
        "headers": {
          "Accept": "application/json"
        }
      },
      "response": {
        "status": 200,
        "headers": {
          "Content-Type": "application/json"
        },
        "body": {
          "id": 123,
          "name": "John Doe"
        }
      }
    }
  ],
  "metadata": {
    "pactRust": {
      "version": "1.0.0"
    },
    "pactSpec": {
      "version": "3.0.0"
    }
  }
}

Bu JSON nümunəsi, istifadəçi ID ilə istifadəçi məlumatını almaq üçün gözlənilən sorğu və cavabı təsvir edən müqaviləni göstərir. İstifadəçi tərəfi oxşar müqavilə yaradacaq, təminatçı isə API-nin bu müqaviləyə uyğun olub-olmadığını yoxlayacaq.