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-ն համապատասխանում է այդ կոնտրակտին։