Sobes.tech
Senior

Paylanmış sistemi necə sınaqdan keçirirsiniz?

sobes.tech Süni İntellekt

AI-dan cavab

Paylanmış sistemdə testlərin keçirilməsi komponentlərin qarşılıqlı əlaqə xüsusiyyətlərini və mümkün nasazlıqları nəzərə alan kompleks yanaşma tələb edir.

Əsas mərhələlər:

  1. Fərdi xidmətlərin testləri (Unit/Integration Testing):

    • Hər bir mikroxidmətin məntiqinin izolə olunması.
    • Eyni xidmətdəki modullar arasında qarşılıqlı əlaqənin test edilməsi.
    func TestMyServiceLogic(t *testing.T) {
        // Xidmətin müəyyən funksiyasının testi
        result := calculateTotal(10, 20)
        if result != 30 {
            t.Errorf("Gözlənilən 30, lakin alınan %d", result)
        }
    }
    
  2. Xidmətlərin inteqrasiya testləri:

    • Müxtəlif xidmətlər arasında düzgün qarşılıqlı əlaqənin yoxlanması.
    • Həqiqi mühiti simulyasiya edən test mühitlərindən istifadə.
    // HTTP qarşılıqlı əlaqə test nümunəsi
    resp, err := http.Get("http://order-service/api/orders/123")
    // Cavabın statusu və bədəninin yoxlanması
    
  3. API testləri:

    • Xarici istifadəçilər və ya digər xidmətlər üçün açıq olan ümumi API-nin yoxlanması.
    • Postman, Swagger Codegen kimi alətlərdən istifadə.
  4. Performans və miqyaslandırma testləri:

    • Yük altında ötürmə qabiliyyəti, gecikmələr və resurs istifadəsinin qiymətləndirilməsi.
    • Gatling, JMeter kimi alətlərdən istifadə. Sistemin yük artdıqca davranışını yoxlama.
  5. Chaos Engineering ilə nasazlıq və etibarlılıq testləri:

    • Xidmətlərin deaktivləşdirilməsi, şəbəkə gecikmələri, aşırı yüklənmə kimi vəziyyətlərin simulyasiyası.
    • Chaos Monkey kimi alətlərdən istifadə.
    Nasazlıq növü Nümunə
    Xidmətin deaktivləşdirilməsi Mikroxidmət nümunəsinin dayandırılması
    Şəbəkə gecikməsi Şəbəkə paketlərinə gecikmə daxil edilməsi
    Paket itkisi Şəbəkə paketlərinin itkisinin simulyasiyası
    Yüksək CPU istifadəsi Serverdə 100% CPU istifadəsi
  6. Təhlükəsizlik testləri:

    • İcazə, autentifikasiya və ümumi hücumlara qarşı qoruma (CSRF, XSS) yoxlanması.
    • Penetrasiya testlərindən istifadə.
  7. İzləmə və qeydiyyat:

    • Test və istehsal mühitlərində sistemin davranışını anlamaq və səhvləri tapmaq üçün vacibdir.
    • Prometheus, Grafana, ELK Stack kimi alətlərdən istifadə.
    // Xidmət daxilində qeydiyyat nümunəsi
    log.Printf("INFO: Sifariş %d işlənir", orderID)
    
  8. Yerləşdirmə və konfiqurasiya testləri:

    • Xidmətlərin düzgün yerləşdirilməsini və konfiqurasiya fayllarının müxtəlif mühitlərdə tətbiq olunmasını yoxlama.

CI/CD çərçivəsində, inkişafın bütün mərhələlərində testlərin avtomatlaşdırılmasını təmin edən Continuous Testing prosesi vacibdir.