Sobes.tech
Middle+

Ի՞նչ են միկրոսերվիսների թեստավորման առանձնահատկությունները կոմպոնենտների և մոդուլների մակարդակով համեմատած մոնոլիտ ծրագրերի թեստավորման հետ։

sobes.tech AI

Պատասխան AI-ից

Միկրոսերվիսների փորձարկումը բաղկացած է բաղադրիչների և մոդուլների մակարդակով կենտրոնացած է առանձին ծառայությունների մեկուսացման և փոխազդեցության վրա, տարբեր է մոնոլիտ ծրագրերի փորձարկումից, որտեղ փորձարկումը ընդգրկում է ամբողջ կոդային բազան ամբողջությամբ:

Միկրոսերվիսների փորձարկման առանձնահատկությունները:

  • Ծառայությունների մեկուսացում: Յուրաքանչյուր միկրոսերվիսի փորձարկում առանձին, անկախ մյուսներից: Սա թույլ է տալիս արագ հայտնաբերել կոնկրետ ծառայությունում խնդիրները:
  • Կոնտրակտների փորձարկում (Contract Testing): Ծառայությունների փոխազդեցության ստուգում, որպեսզի համոզվեք, որ նրանք ճիշտ փոխանակում են տվյալներ և համապատասխանում նախապես սահմանված API կոնտրակտներին: Պոպուլյար գործիքներ՝ Pact:
  • Ինտեգրացիայի փորձարկում: Մի քանի միկրոսերվիսների փոխազդեցության ստուգում միմյանց և արտաքին կախվածությունների (մատչելի տվյալների բազաներ, հաղորդագրությունների հերթեր): Սկզբունքային բարդությունը կախված է բազմաթիվ կախվածություններից:
  • Տեստային տվյալների կառավարում: Պահանջ է ստեղծել և պահել փորձարկման տվյալներ յուրաքանչյուր ծառայության համար առանձին, հաշվի առնելով նրանց հնարավոր կախվածությունները մյուս ծառայություններից:
  • Տեստերի կազմակերպում: Տարբեր միկրոսերվիսների փորձարկումների համակարգում, հատկապես ինտեգրացիոն փորձարկումների ժամանակ:
  • Անհաջողությունների և ճկունության փորձարկում: Ծառայությունների վարքագծի ստուգում այլ ծառայությունների ձախողումների կամ բարձր բեռների դեպքում:
  • Ինֆրակառուցվածքի փորձարկում: Պահանջ է ավելի բարդ փորձարկման ինֆրակառուցվածք՝ միկրոսերվիսների և նրանց միջավայրերի տեղակայման և կառավարման համար:
  • Անվտանգության փորձարկում: Կենտրոնացում ապացուցման վրա, որ ծառայության մակարդակով և փոխազդեցության ժամանակ ապահովվում է անվտանգությունը:

Համեմատություն մոնոլիտ ծրագրի հետ:

Աспեկտ Մոնոլիտ ծրագիր Միկրոսերվիսներ
Փորձարկման ծավալը Բոլոր կոդային բազայի փորձարկում որպես ամբողջական։ Յուրաքանչյուր ծառայության փորձարկում առանձին, ապա նրանց ինտեգրացիան։
Զависимости Ներքին կախվածություններ՝ մեկ կոդային բազայի ներսում։ Բացասական կախվածություններ՝ անկախ ծառայությունների միջև։
Փորձարկման տվյալներ Կարող են կենտրոնականացված լինել։ Պահանջ է կառավարման յուրաքանչյուր ծառայության համար առանձին, հաշվի առնելով կախվածությունները։
Ինտեգրացիա Մոդուլների ինտեգրացիայի փորձարկում մեկ գործընթացի ներսում։ Ծառայությունների փոխազդեցության փորձարկում ցանցով։
Զգուշականություն Ավելի քիչ կարևոր է մոդուլների մակարդակում, ավելի շատ ամբողջ ծրագրի մակարդակով։ Կրիտիկական է փորձարկել սխալների դեպքում։
Սկզբունքային բարդություն Փորձարկումը կարող է լինել ավելի պարզ՝ ենթակառուցվածքի տեսանկյունից, բայց ավելի բարդ՝ մեկուսացման տեսանկյունից։ Փորձարկումը ավելի բարդ է ենթակառուցվածքի և կախվածությունների կառավարման տեսանկյունից, բայց ավելի պարզ՝ ծառայությունների մեկուսացման տեսանկյունից։

Contract Test օրինակ Pact-ի օգտագործմամբ:

// pact_broker/pacts/consumer-producer/latest.json
{
  "consumer": {
    "name": "MyConsumer"
  },
  "provider": {
    "name": "MyProducer"
  },
  "interactions": [
    {
      "description": "Օգտագործողի հարցում ID-ով",
      "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"
    }
  }
}

Այս JSON օրինակն նկարագրում է կոնտրակտը սպառողի (MyConsumer) և մատակարարի (MyProducer) միջև, որը սահմանում է սպասվող հարցումը և պատասխանն օգտագործողի ID-ով:

Սպառողը կստեղծի նման կոնտրակտ իր կողմում, իսկ մատակարարը կվերահսկի, որ իր API-ն համապատասխանում է այդ կոնտրակտին։