డెవలపర్‌ల కోసం CI సేవగా లోడ్ టెస్టింగ్

డెవలపర్‌ల కోసం CI సేవగా లోడ్ టెస్టింగ్

బహుళ-ఉత్పత్తి సాఫ్ట్‌వేర్ విక్రేతలు తరచుగా ఎదుర్కొనే సమస్యలలో ఒకటి ఇంజనీర్ల - డెవలపర్‌లు, టెస్టర్‌లు మరియు ఇన్‌ఫ్రాస్ట్రక్చర్ అడ్మినిస్ట్రేటర్‌లు - దాదాపు ప్రతి బృందంలోని సామర్థ్యాల నకిలీ. ఇది ఖరీదైన ఇంజనీర్లకు కూడా వర్తిస్తుంది - లోడ్ టెస్టింగ్ రంగంలో నిపుణులు.

లోడ్ టెస్టింగ్ ప్రక్రియను రూపొందించడానికి వారి ప్రత్యక్ష విధులను మరియు వారి ప్రత్యేక అనుభవాన్ని ఉపయోగించకుండా, ఒక పద్దతి, అనుకూలమైన కొలమానాలను ఎంచుకోండి మరియు లోడ్ ప్రొఫైల్‌లకు అనుగుణంగా ఆటోటెస్ట్‌లను వ్రాయండి, ఇంజనీర్లు తరచుగా పరీక్ష మౌలిక సదుపాయాలను మొదటి నుండి అమలు చేయాలి, లోడ్ సాధనాలను కాన్ఫిగర్ చేయాలి మరియు వాటిని పొందుపరచాలి. CI వ్యవస్థలలో తమను తాము పర్యవేక్షించడం మరియు నివేదికల ప్రచురణను ఏర్పాటు చేయడం.

మేము పాజిటివ్ టెక్నాలజీస్‌లో ఉపయోగించే పరీక్షలో మీరు కొన్ని సంస్థాగత సమస్యలకు పరిష్కారాలను కనుగొనవచ్చు మరొక వ్యాసం. మరియు ఇందులో, "లోడ్ టెస్టింగ్ యాజ్ ఏ సర్వీస్" (ఒక సేవగా లోడ్ టెస్టింగ్) అనే భావనను ఉపయోగించి సాధారణ CI పైప్‌లైన్‌లో లోడ్ పరీక్షలను ఏకీకృతం చేసే అవకాశం గురించి నేను మాట్లాడతాను. CI పైప్‌లైన్‌లో లోడ్ మూలాల యొక్క డాకర్ చిత్రాలను ఎలా మరియు ఏ విధంగా ఉపయోగించవచ్చో మీరు నేర్చుకుంటారు; బిల్డ్ టెంప్లేట్‌ని ఉపయోగించి మీ CI ప్రాజెక్ట్‌కి లోడ్ మూలాలను ఎలా కనెక్ట్ చేయాలి; లోడ్ పరీక్షలను అమలు చేయడానికి మరియు ఫలితాలను ప్రచురించడానికి డెమో పైప్‌లైన్ ఎలా ఉంటుంది. CIలోని సాఫ్ట్‌వేర్ టెస్టింగ్ ఇంజనీర్‌లు మరియు ఆటోమేషన్ ఇంజనీర్‌లకు వారి లోడ్ సిస్టమ్ నిర్మాణం గురించి ఆలోచిస్తున్న వారికి ఈ కథనం ఉపయోగకరంగా ఉండవచ్చు.

భావన యొక్క సారాంశం

లోడ్ టెస్టింగ్ అనేది ఒక సేవ వలె లోడ్ టూల్స్ Apache JMeter, Yandex.Tank మరియు మీ స్వంత ఫ్రేమ్‌వర్క్‌లను ఏకపక్ష నిరంతర ఏకీకరణ వ్యవస్థలోకి అనుసంధానించే సామర్థ్యాన్ని సూచిస్తుంది. డెమో GitLab CI కోసం ఉంటుంది, అయితే సూత్రాలు అన్ని CI సిస్టమ్‌లకు సాధారణం.

ఒక సేవగా లోడ్ పరీక్ష అనేది లోడ్ పరీక్ష కోసం కేంద్రీకృత సేవ. లోడ్ పరీక్షలు డెడికేటెడ్ ఏజెంట్ పూల్స్‌లో అమలు చేయబడతాయి, ఫలితాలు స్వయంచాలకంగా GitLab పేజీలు, Influx DB మరియు Grafana లేదా టెస్ట్ రిపోర్టింగ్ సిస్టమ్‌లలో (TestRail, ReportPortal, మొదలైనవి) ప్రచురించబడతాయి. GitLab CI ప్రాజెక్ట్‌లో సాధారణ gitlab-ci.yml టెంప్లేట్‌ని జోడించడం మరియు పారామితి చేయడం ద్వారా - ఆటోమేషన్ మరియు స్కేలింగ్ వీలైనంత సరళంగా అమలు చేయబడతాయి.

ఈ విధానం యొక్క ప్రయోజనం ఏమిటంటే, మొత్తం CI ఇన్‌ఫ్రాస్ట్రక్చర్, లోడ్ ఏజెంట్లు, లోడ్ మూలాల డాకర్ చిత్రాలు, టెస్టింగ్ పైప్‌లైన్‌లు మరియు ప్రచురణ నివేదికలు కేంద్రీకృత ఆటోమేషన్ విభాగం (DevOps ఇంజనీర్లు)చే నిర్వహించబడతాయి, అయితే లోడ్ టెస్టింగ్ ఇంజనీర్లు తమ ప్రయత్నాలను పరీక్ష అభివృద్ధిపై కేంద్రీకరించవచ్చు. మరియు మౌలిక సమస్యలతో వ్యవహరించకుండా, వాటి ఫలితాల విశ్లేషణ.

వివరణ యొక్క సరళత కోసం, పరీక్షలో ఉన్న టార్గెట్ అప్లికేషన్ లేదా సర్వర్ ఇప్పటికే అమలు చేయబడిందని మరియు ముందుగానే కాన్ఫిగర్ చేయబడిందని మేము ఊహిస్తాము (దీని కోసం పైథాన్, సాల్ట్‌స్టాక్, అన్సిబుల్ మొదలైన వాటిలో ఆటోమేటెడ్ స్క్రిప్ట్‌లను ఉపయోగించవచ్చు). అప్పుడు సేవగా లోడ్ పరీక్ష యొక్క మొత్తం భావన మూడు దశల్లోకి సరిపోతుంది: తయారీ, పరీక్ష, నివేదికల ప్రచురణ. రేఖాచిత్రంపై మరిన్ని వివరాలు (అన్ని చిత్రాలు క్లిక్ చేయదగినవి):

డెవలపర్‌ల కోసం CI సేవగా లోడ్ టెస్టింగ్

లోడ్ పరీక్షలో ప్రాథమిక భావనలు మరియు నిర్వచనాలు

లోడ్ పరీక్షలను నిర్వహిస్తున్నప్పుడు, మేము కట్టుబడి ఉండటానికి ప్రయత్నిస్తాము ISTQB ప్రమాణాలు మరియు పద్దతి, తగిన పదజాలం మరియు సిఫార్సు చేసిన కొలమానాలను ఉపయోగించండి. నేను లోడ్ పరీక్షలో ప్రధాన భావనలు మరియు నిర్వచనాల యొక్క చిన్న జాబితాను ఇస్తాను.

లోడ్ ఏజెంట్ - అప్లికేషన్ ప్రారంభించబడే వర్చువల్ మెషీన్ - లోడ్ మూలం (Apache JMeter, Yandex.Tank లేదా స్వీయ-వ్రాతపూర్వక లోడ్ మాడ్యూల్).

పరీక్ష లక్ష్యం (లక్ష్యం) - సర్వర్‌లో ఇన్‌స్టాల్ చేయబడిన సర్వర్ లేదా అప్లికేషన్ లోడ్‌కు లోబడి ఉంటుంది.

పరీక్ష దృశ్యం (పరీక్ష కేసు) - పారామితి చేయబడిన దశల సమితి: నిర్దేశిత పారామితులపై ఆధారపడి స్థిర నెట్‌వర్క్ అభ్యర్థనలు మరియు ప్రతిస్పందనలతో వినియోగదారు చర్యలు మరియు ఈ చర్యలకు ఆశించిన ప్రతిచర్యలు.

ప్రొఫైల్ లేదా లోడ్ ప్లాన్ (ప్రొఫైల్) - లో ISTQB పద్దతి (విభాగం 4.2.4, పేజి 43) లోడ్ ప్రొఫైల్‌లు నిర్దిష్ట పరీక్షకు కీలకమైన కొలమానాలను మరియు పరీక్ష సమయంలో లోడ్ పారామితులను మార్చే ఎంపికలను నిర్వచించాయి. మీరు చిత్రంలో ప్రొఫైల్స్ యొక్క ఉదాహరణలను చూడవచ్చు.

డెవలపర్‌ల కోసం CI సేవగా లోడ్ టెస్టింగ్

పరీక్ష — ముందుగా నిర్ణయించిన పారామితుల సమితితో కూడిన స్క్రిప్ట్.

పరీక్ష ప్రణాళిక (పరీక్ష ప్రణాళిక) - పరీక్షల సమితి మరియు లోడ్ ప్రొఫైల్.

టెస్ట్రాన్ (టెస్ట్రన్) - పూర్తిగా అమలు చేయబడిన లోడ్ దృశ్యం మరియు అందుకున్న నివేదికతో ఒక పరీక్షను అమలు చేయడంలో ఒక పునరావృతం.

నెట్‌వర్క్ అభ్యర్థన (అభ్యర్థన) — HTTP అభ్యర్థన ఏజెంట్ నుండి లక్ష్యానికి పంపబడింది.

నెట్‌వర్క్ ప్రతిస్పందన (ప్రతిస్పందన) — లక్ష్యం నుండి ఏజెంట్‌కు HTTP ప్రతిస్పందన పంపబడింది.
HTTP ప్రతిస్పందన కోడ్ (HTTP ప్రతిస్పందనల స్థితి) - అప్లికేషన్ సర్వర్ నుండి ప్రామాణిక ప్రతిస్పందన కోడ్.
లావాదేవీ అనేది పూర్తి అభ్యర్థన-ప్రతిస్పందన చక్రం. అభ్యర్థన (అభ్యర్థన) పంపడం ప్రారంభమైనప్పటి నుండి ప్రతిస్పందన (ప్రతిస్పందన) స్వీకరించడం పూర్తయ్యే వరకు లావాదేవీ లెక్కించబడుతుంది.

లావాదేవీ స్థితి - అభ్యర్థన-ప్రతిస్పందన చక్రాన్ని విజయవంతంగా పూర్తి చేయడం సాధ్యమేనా. ఈ చక్రంలో ఏదైనా లోపం ఉన్నట్లయితే, మొత్తం లావాదేవీ విఫలమైనట్లు పరిగణించబడుతుంది.

ప్రతిస్పందన సమయం (జాప్యం) - అభ్యర్థన (అభ్యర్థన) పంపిన ముగింపు నుండి ప్రతిస్పందన (ప్రతిస్పందన) స్వీకరించడం ప్రారంభమయ్యే సమయం.

కొలమానాలను లోడ్ చేయండి - లోడ్ చేయబడిన సేవ యొక్క లక్షణాలు మరియు లోడ్ పరీక్ష ప్రక్రియలో నిర్ణయించబడిన లోడ్ ఏజెంట్.

లోడ్ పారామితులను కొలిచే ప్రాథమిక కొలమానాలు

పద్దతిలో సాధారణంగా ఉపయోగించే మరియు సిఫార్సు చేయబడిన కొన్ని ISTQB (పే. 36, 52) కొలమానాలు క్రింది పట్టికలో చూపబడ్డాయి. ఏజెంట్ మరియు లక్ష్యం కోసం ఇలాంటి కొలమానాలు ఒకే లైన్‌లో జాబితా చేయబడ్డాయి.

లోడ్ ఏజెంట్ కోసం కొలమానాలు
లక్ష్య సిస్టమ్ లేదా అప్లికేషన్ యొక్క కొలమానాలు లోడ్ కింద పరీక్షించబడుతున్నాయి

సంఖ్య  vCPU మరియు జ్ఞాపకశక్తి RAM,
డిస్క్ - లోడ్ ఏజెంట్ యొక్క "ఇనుము" లక్షణాలు
CPU, మెమరీ, డిస్క్ వినియోగం - CPU యొక్క డైనమిక్స్, మెమరీ మరియు డిస్క్ లోడింగ్
పరీక్ష ప్రక్రియలో. సాధారణంగా శాతంగా కొలుస్తారు
గరిష్టంగా అందుబాటులో ఉన్న విలువలు

నెట్వర్క్ నిర్గమాంశ (లోడ్ ఏజెంట్‌పై) - నిర్గమాంశ
సర్వర్‌లో నెట్‌వర్క్ ఇంటర్‌ఫేస్,
లోడ్ ఏజెంట్ వ్యవస్థాపించబడిన చోట.
సాధారణంగా సెకనుకు బైట్‌లలో కొలుస్తారు (bps)
నెట్వర్క్ నిర్గమాంశ(లక్ష్యంపై) - నెట్‌వర్క్ ఇంటర్‌ఫేస్ బ్యాండ్‌విడ్త్
లక్ష్య సర్వర్‌లో. సాధారణంగా సెకనుకు బైట్‌లలో కొలుస్తారు (bps)

వర్చువల్ వినియోగదారులు- వర్చువల్ వినియోగదారుల సంఖ్య,
లోడ్ దృశ్యాలను అమలు చేయడం మరియు
నిజమైన వినియోగదారు చర్యలను అనుకరించడం
వర్చువల్ వినియోగదారుల స్థితి, ఉత్తీర్ణత/విఫలమైంది/మొత్తం — విజయవంతమైన వారి సంఖ్య మరియు
వర్చువల్ వినియోగదారుల యొక్క విజయవంతం కాని స్థితిగతులు
లోడ్ దృశ్యాలు, అలాగే వాటి మొత్తం సంఖ్య కోసం.

వినియోగదారులందరూ పూర్తి చేయగలరని సాధారణంగా భావిస్తున్నారు
లోడ్ ప్రొఫైల్‌లో పేర్కొన్న మీ అన్ని పనులు.
ఏదైనా లోపం నిజమైన వినియోగదారు చేయలేరని అర్థం
సిస్టమ్‌తో పని చేస్తున్నప్పుడు మీ సమస్యను పరిష్కరించండి

సెకనుకు అభ్యర్థనలు (నిమిషం)- సెకనుకు నెట్‌వర్క్ అభ్యర్థనల సంఖ్య (లేదా నిమిషం).

లోడ్ ఏజెంట్ యొక్క ముఖ్యమైన లక్షణం అది ఎన్ని అభ్యర్థనలను సృష్టించగలదు.
వాస్తవానికి, ఇది వర్చువల్ వినియోగదారుల ద్వారా అప్లికేషన్‌కు యాక్సెస్‌ను అనుకరించడం
సెకనుకు ప్రతిస్పందనలు (నిమిషం)
- సెకనుకు నెట్‌వర్క్ ప్రతిస్పందనల సంఖ్య (లేదా నిమిషం).

లక్ష్య సేవ యొక్క ముఖ్యమైన లక్షణం: ఎంత
తో ప్రశ్నలకు ప్రతిస్పందనలను రూపొందించండి మరియు పంపండి
లోడ్ చేసే ఏజెంట్

HTTP ప్రతిస్పందన స్థితి- వివిధ ప్రతిస్పందన కోడ్‌ల సంఖ్య
లోడ్ ఏజెంట్ అందుకున్న అప్లికేషన్ సర్వర్ నుండి.
ఉదాహరణకు, 200 సరే అంటే విజయవంతమైన కాల్,
మరియు 404 - వనరు కనుగొనబడలేదు

అంతర్గతాన్ని (ప్రతిస్పందన సమయం) - చివరి నుండి సమయం
ప్రతిస్పందన (ప్రతిస్పందన) స్వీకరించడం ప్రారంభించే ముందు అభ్యర్థన (అభ్యర్థన) పంపడం.
సాధారణంగా మిల్లీసెకన్లలో (మిసె) కొలుస్తారు

లావాదేవీ ప్రతిస్పందన సమయం- ఒక పూర్తి లావాదేవీ సమయం,
అభ్యర్థన-ప్రతిస్పందన చక్రం పూర్తి.
అభ్యర్థన (అభ్యర్థన) పంపడం ప్రారంభించిన సమయం ఇది
ప్రతిస్పందన (ప్రతిస్పందన) స్వీకరించడం పూర్తయ్యే వరకు

లావాదేవీ సమయాన్ని సెకన్లలో (లేదా నిమిషాల్లో) కొలవవచ్చు
అనేక విధాలుగా: కనిష్టంగా పరిగణించండి,
గరిష్ట, సగటు మరియు, ఉదాహరణకు, 90వ శాతం.
కనిష్ట మరియు గరిష్ట రీడింగ్‌లు విపరీతంగా ఉన్నాయి
సిస్టమ్ పనితీరు స్థితి.
తొంభైవ శాతం సాధారణంగా ఉపయోగించేది,
ఇది చాలా మంది వినియోగదారులను చూపుతుంది,
సిస్టమ్ పనితీరు యొక్క థ్రెషోల్డ్ వద్ద సౌకర్యవంతంగా పనిచేస్తుంది

సెకనుకు లావాదేవీలు (నిమిషం) - పూర్తి సంఖ్య
సెకనుకు లావాదేవీలు (నిమిషం),
అంటే, అప్లికేషన్ ఎంత వరకు ఆమోదించగలిగింది మరియు
అభ్యర్థనలను ప్రాసెస్ చేయండి మరియు ప్రతిస్పందనలను జారీ చేయండి.
వాస్తవానికి, ఇది సిస్టమ్ యొక్క నిర్గమాంశం

లావాదేవీ స్థితి , ఉత్తీర్ణత / విఫలమైంది / మొత్తం - సంఖ్య
విజయవంతమైన, విఫలమైన మరియు మొత్తం లావాదేవీల సంఖ్య.

నిజమైన వినియోగదారుల కోసం విజయవంతం కాలేదు
లావాదేవీ వాస్తవానికి అర్థం అవుతుంది
లోడ్లో ఉన్న సిస్టమ్తో పని చేయలేకపోవడం

లోడ్ టెస్టింగ్ స్కీమాటిక్ రేఖాచిత్రం

లోడ్ టెస్టింగ్ యొక్క భావన చాలా సులభం మరియు నేను ఇప్పటికే పేర్కొన్న మూడు ప్రధాన దశలను కలిగి ఉంటుంది: ప్రిపేర్-టెస్ట్-రిపోర్ట్, అంటే, పరీక్ష లక్ష్యాలను సిద్ధం చేయడం మరియు లోడ్ మూలాల కోసం పారామితులను సెట్ చేయడం, ఆపై లోడ్ పరీక్షలను అమలు చేయడం మరియు చివరికి, పరీక్ష నివేదికను రూపొందించడం మరియు ప్రచురించడం.

డెవలపర్‌ల కోసం CI సేవగా లోడ్ టెస్టింగ్

స్కీమాటిక్ నోట్స్:

  • QA.టెస్టర్ లోడ్ టెస్టింగ్‌లో నిపుణుడు,
  • టార్గెట్ అనేది లోడ్‌లో ఉన్న దాని ప్రవర్తనను మీరు తెలుసుకోవాలనుకునే లక్ష్య అప్లికేషన్.

రేఖాచిత్రంలో ఎంటిటీలు, దశలు మరియు దశల వర్గీకరణ

దశలు మరియు దశలు
ఏం జరుగుతోంది
ప్రవేశద్వారం వద్ద ఏముంది
అవుట్‌పుట్ ఎంత

సిద్ధం: పరీక్ష కోసం తయారీ దశ

లోడ్ పారామితులు
సెట్టింగ్ మరియు ప్రారంభించడం
వినియోగదారు ద్వారా
లోడ్ పారామితులు,
కొలమానాల ఎంపిక మరియు
పరీక్ష ప్రణాళిక తయారీ
(లోడ్ ప్రొఫైల్)
కోసం అనుకూల ఎంపికలు
లోడ్ ఏజెంట్ ప్రారంభించడం
పరీక్ష ప్రణాళిక
పరీక్ష యొక్క ఉద్దేశ్యం

VM
క్లౌడ్ విస్తరణ
వర్చువల్ మిషన్ తో
అవసరమైన లక్షణాలు
లోడ్ ఏజెంట్ కోసం VM సెట్టింగ్‌లు
కోసం ఆటోమేషన్ స్క్రిప్ట్‌లు
VM సృష్టి
VM కాన్ఫిగర్ చేయబడింది
మేఘం

ENV
OS సెటప్ మరియు తయారీ
పర్యావరణం కోసం
లోడ్ ఏజెంట్ పని
కోసం పర్యావరణ సెట్టింగ్‌లు
లోడ్ ఏజెంట్
కోసం ఆటోమేషన్ స్క్రిప్ట్‌లు
పర్యావరణ సెట్టింగులు
సిద్ధం చేసిన వాతావరణం:
OS, సేవలు మరియు అప్లికేషన్లు,
పని కోసం అవసరం
లోడ్ ఏజెంట్

లోడ్ ఏజెంట్లు
ఇన్‌స్టాలేషన్, కాన్ఫిగరేషన్ మరియు పారామిటరైజేషన్
లోడ్ చేసే ఏజెంట్.
లేదా దీని నుండి డాకర్ చిత్రాన్ని డౌన్‌లోడ్ చేయడం
ముందుగా కాన్ఫిగర్ చేయబడిన లోడ్ మూలం
సోర్స్ డాకర్ చిత్రాన్ని లోడ్ చేయండి
(YAT, JM లేదా స్వీయ-వ్రాత ఫ్రేమ్‌వర్క్)
సెట్టింగ్‌లు
లోడ్ ఏజెంట్
సెటప్ చేసి సిద్ధంగా ఉంది
పని లోడ్ ఏజెంట్

పరీక్ష: లోడ్ పరీక్షల అమలు దశ. మూలాధారాలు GitLab CI కోసం అంకితమైన ఏజెంట్ పూల్స్‌లో మోహరించిన లోడ్ ఏజెంట్లు

లోడ్
లోడ్ ఏజెంట్‌ను ప్రారంభిస్తోంది
ఎంచుకున్న పరీక్ష ప్రణాళికతో
మరియు లోడ్ పారామితులు
వినియోగదారు ఎంపికలు
ప్రారంభించడం కోసం
లోడ్ ఏజెంట్
పరీక్ష ప్రణాళిక
పరీక్ష యొక్క ఉద్దేశ్యం
అమలు లాగ్‌లు
లోడ్ పరీక్షలు
సిస్టమ్ లాగ్‌లు
గోల్ మెట్రిక్స్ మరియు లోడ్ ఏజెంట్‌లో మార్పుల డైనమిక్స్

ఏజెంట్లను అమలు చేయండి
ఏజెంట్ అమలు
పరీక్ష స్క్రిప్ట్‌ల లోడ్లు
అనుగుణంగా
లోడ్ ప్రొఫైల్
లోడ్ ఏజెంట్ ఇంటరాక్షన్
పరీక్ష ప్రయోజనం కోసం
పరీక్ష ప్రణాళిక
పరీక్ష యొక్క ఉద్దేశ్యం

చిట్టాలు
"ముడి" లాగ్ల సేకరణ
లోడ్ పరీక్ష సమయంలో:
లోడ్ ఏజెంట్ కార్యాచరణ రికార్డులు,
పరీక్ష లక్ష్యం యొక్క స్థితి
మరియు ఏజెంట్‌ను నడుపుతున్న VM

అమలు లాగ్‌లు
లోడ్ పరీక్షలు
సిస్టమ్ లాగ్‌లు

కొలమానాలు
పరీక్ష సమయంలో "రా" మెట్రిక్‌లను సేకరిస్తోంది

గోల్ మెట్రిక్‌లలో మార్పుల డైనమిక్స్
మరియు లోడ్ ఏజెంట్

నివేదిక: పరీక్ష నివేదిక తయారీ దశ

జనరేటర్
ప్రాసెసింగ్ సేకరించబడింది
లోడ్ వ్యవస్థ మరియు
పర్యవేక్షణ వ్యవస్థ "రా"
కొలమానాలు మరియు లాగ్‌లు
లో ఒక నివేదిక ఏర్పాటు
మానవ చదవగలిగే రూపం
అంశాలతో సాధ్యం
విశ్లేషకులు
అమలు లాగ్‌లు
లోడ్ పరీక్షలు
సిస్టమ్ లాగ్‌లు
కొలమానాలలో మార్పుల డైనమిక్స్
లక్ష్యం మరియు లోడ్ ఏజెంట్
ప్రాసెస్ చేయబడిన "ముడి" లాగ్‌లు
తగిన ఆకృతిలో
బాహ్య నిల్వకు అప్‌లోడ్ చేస్తుంది
స్టాటిక్ లోడ్ నివేదిక,
మానవుడు చదవగలిగే

ప్రచురించు
నివేదిక ప్రచురణ
లోడ్ గురించి
బాహ్య పరీక్ష
సేవ
ప్రాసెస్ చేయబడిన "ముడి"
తగిన ఆకృతిలో లాగ్స్
బాహ్యంగా అన్‌లోడ్ చేయడానికి
రిపోజిటరీలు
బాహ్యంగా సేవ్ చేయబడింది
నిల్వ నివేదికలు
లోడ్, సరిఅయిన
మానవ విశ్లేషణ కోసం

CI టెంప్లేట్‌లో లోడ్ సోర్స్‌లను కనెక్ట్ చేస్తోంది

ఆచరణాత్మక భాగానికి వెళ్దాం. కంపెనీలోని కొన్ని ప్రాజెక్ట్‌లలో ఎలా ఉంటుందో నేను చూపించాలనుకుంటున్నాను సానుకూల సాంకేతికతలు మేము లోడ్ టెస్టింగ్ భావనను సేవగా అమలు చేసాము.

ముందుగా, మా DevOps ఇంజనీర్ల సహాయంతో, లోడ్ పరీక్షలను అమలు చేయడానికి మేము GitLab CIలో ప్రత్యేక ఏజెంట్ల సమూహాన్ని సృష్టించాము. అసెంబ్లీ పూల్‌ల వంటి టెంప్లేట్‌లలో వాటిని తికమక పెట్టకుండా ఉండటానికి, మేము ఈ ఏజెంట్‌లకు ట్యాగ్‌లను జోడించాము, టాగ్లు: లోడ్. మీరు ఏవైనా ఇతర అర్థమయ్యే ట్యాగ్‌లను ఉపయోగించవచ్చు. అని అడుగుతారు నమోదు సమయంలో GitLab CI రన్నర్స్.

హార్డ్‌వేర్ ద్వారా అవసరమైన శక్తిని ఎలా కనుగొనాలి? లోడ్ ఏజెంట్ల లక్షణాలు - తగినంత సంఖ్యలో vCPU, RAM మరియు డిస్క్ - ఏజెంట్‌పై డాకర్, పైథాన్ (Yandex.Tank కోసం), GitLab CI ఏజెంట్, Java (Apache JMeter కోసం) రన్ అవుతున్నాయనే వాస్తవం ఆధారంగా లెక్కించవచ్చు. . JMeter కింద జావా కోసం, కనీసం 512 MB RAMని ఉపయోగించాలని మరియు గరిష్ట పరిమితిగా, 80% మెమరీ అందుబాటులో ఉంది.

కాబట్టి, మా అనుభవం ఆధారంగా, లోడ్ ఏజెంట్ల కోసం కనీసం 4 vCPUలు, 4 GB RAM, 60 GB SSDని ఉపయోగించమని మేము సిఫార్సు చేస్తున్నాము. నెట్‌వర్క్ కార్డ్ యొక్క నిర్గమాంశ లోడ్ ప్రొఫైల్ యొక్క అవసరాల ఆధారంగా నిర్ణయించబడుతుంది.

మేము ప్రధానంగా రెండు లోడ్ మూలాలను ఉపయోగిస్తాము - Apache JMeter మరియు Yandex.Tank డాకర్ చిత్రాలు.

Yandex.Tank లోడ్ పరీక్ష కోసం Yandex నుండి ఓపెన్ సోర్స్ సాధనం. దీని మాడ్యులర్ ఆర్కిటెక్చర్ ఫాంటమ్ యొక్క అధిక-పనితీరు గల అసమకాలిక హిట్-ఆధారిత HTTP అభ్యర్థన జనరేటర్‌పై ఆధారపడి ఉంటుంది. ట్యాంక్ SSH ప్రోటోకాల్ ద్వారా పరీక్షలో ఉన్న సర్వర్ యొక్క వనరులను అంతర్నిర్మిత పర్యవేక్షణను కలిగి ఉంది, పేర్కొన్న పరిస్థితులలో స్వయంచాలకంగా పరీక్షను నిలిపివేయవచ్చు, ఫలితాలను కన్సోల్‌లో మరియు గ్రాఫ్‌ల రూపంలో ప్రదర్శించవచ్చు, మీరు మీ మాడ్యూల్‌లను దీనికి కనెక్ట్ చేయవచ్చు ఇది కార్యాచరణను విస్తరించడానికి. మార్గం ద్వారా, ట్యాంక్ ఇంకా ప్రధాన స్రవంతిలో లేనప్పుడు మేము దానిని ఉపయోగించాము. వ్యాసంలో "Yandex.Tank మరియు లోడ్ టెస్టింగ్ ఆటోమేషన్» 2013లో మేము దానితో లోడ్ పరీక్షను ఎలా నిర్వహించాము అనే కథనాన్ని మీరు చదువుకోవచ్చు PT అప్లికేషన్ ఫైర్‌వాల్ మా కంపెనీ ఉత్పత్తులలో ఒకటి.

అపాచీ జెమెటర్ Apache నుండి ఓపెన్ సోర్స్ లోడ్ టెస్టింగ్ టూల్. ఇది స్టాటిక్ మరియు డైనమిక్ వెబ్ అప్లికేషన్‌లను పరీక్షించడానికి సమానంగా ఉపయోగించబడుతుంది. JMeter భారీ సంఖ్యలో ప్రోటోకాల్‌లు మరియు అప్లికేషన్‌లతో పరస్పర చర్య చేసే మార్గాలకు మద్దతు ఇస్తుంది: HTTP, HTTPS (జావా, NodeJS, PHP, ASP.NET, మొదలైనవి), SOAP / REST వెబ్‌సర్వీసెస్, FTP, TCP, LDAP, SMTP(S), POP3( S) ) మరియు IMAP(S), JDBC ద్వారా డేటాబేస్‌లు, షెల్ ఆదేశాలను అమలు చేయగలవు మరియు జావా వస్తువులతో పని చేయగలవు. JMeter పరీక్ష ప్రణాళికలను సృష్టించడం, డీబగ్గింగ్ చేయడం మరియు అమలు చేయడం కోసం IDEని కలిగి ఉంది. ఏదైనా జావా అనుకూల ఆపరేటింగ్ సిస్టమ్‌లో (Linux, Windows, Mac OS X) కమాండ్ లైన్ ఆపరేషన్ కోసం CLI కూడా ఉంది. సాధనం డైనమిక్‌గా HTML పరీక్ష నివేదికను రూపొందించగలదు.

మా కంపెనీలో వాడుకలో సౌలభ్యం కోసం, టెస్టర్లు తమను తాము మార్చుకునే మరియు పర్యావరణాన్ని జోడించే సామర్థ్యం కోసం, మేము అంతర్గత ప్రచురణతో GitLab CIలో లోడ్ మూలాల డాకర్ చిత్రాలను రూపొందించాము. ఆర్టిఫ్యాక్టరీలో డాకర్ రిజిస్ట్రీ. ఇది లోడ్ పరీక్షల కోసం వాటిని పైప్‌లైన్‌లలో కనెక్ట్ చేయడం వేగవంతం మరియు సులభం చేస్తుంది. GitLab CI ద్వారా రిజిస్ట్రీకి డాకర్ పుష్ ఎలా చేయాలో - చూడండి సూచనలను.

Yandex.Tank కోసం మేము ఈ ప్రాథమిక డాకర్ ఫైల్‌ని తీసుకున్నాము:

Dockerfile 
1 | FROM direvius/yandex-tank
2 | ENTRYPOINT [""]

మరియు Apache JMeter కోసం ఇది:

Dockerfile 
1 | FROM vmarrazzo/jmeter
2 | ENTRYPOINT [""]

మా నిరంతర ఇంటిగ్రేషన్ సిస్టమ్ ఎలా పనిచేస్తుందో మీరు వ్యాసంలో చదువుకోవచ్చు "అభివృద్ధి ప్రక్రియల ఆటోమేషన్: మేము పాజిటివ్ టెక్నాలజీస్‌లో DevOps ఆలోచనలను ఎలా అమలు చేసాము".

టెంప్లేట్ మరియు పైప్‌లైన్

లోడ్ పరీక్షలను నిర్వహించడానికి టెంప్లేట్ యొక్క ఉదాహరణ ప్రాజెక్ట్‌లో అందుబాటులో ఉంది డెమో లోడ్. ది readme ఫైల్ మీరు టెంప్లేట్‌ను ఉపయోగించడం కోసం సూచనలను చదవవచ్చు. టెంప్లేట్‌లోనే (ఫైల్ .gitlab-ci.yml) ప్రతి దశకు బాధ్యత వహించే దాని గురించి గమనికలు ఉన్నాయి.

టెంప్లేట్ చాలా సులభం మరియు పైన ఉన్న రేఖాచిత్రంలో వివరించిన లోడ్ పరీక్ష యొక్క మూడు దశలను ప్రదర్శిస్తుంది: నివేదికలను సిద్ధం చేయడం, పరీక్షించడం మరియు ప్రచురించడం. దీనికి బాధ్యులు ఇంటర్న్ షిప్: సిద్ధం చేయండి, పరీక్షించండి మరియు నివేదించండి.

  1. స్టేజ్ సిద్ధం పరీక్ష లక్ష్యాలను ముందుగా కాన్ఫిగర్ చేయడానికి లేదా వాటి లభ్యతను తనిఖీ చేయడానికి ఉపయోగించాలి. లోడ్ మూలాల కోసం పర్యావరణాన్ని కాన్ఫిగర్ చేయవలసిన అవసరం లేదు, అవి డాకర్ ఇమేజ్‌ల వలె ముందే నిర్మించబడ్డాయి మరియు డాకర్ రిజిస్ట్రీలో పోస్ట్ చేయబడతాయి: పరీక్ష దశలో కావలసిన సంస్కరణను పేర్కొనండి. కానీ మీరు వాటిని పునర్నిర్మించవచ్చు మరియు మీ స్వంత సవరించిన చిత్రాలను తయారు చేయవచ్చు.
  2. స్టేజ్ పరీక్ష లోడ్ మూలాన్ని పేర్కొనడానికి, పరీక్షలను అమలు చేయడానికి మరియు పరీక్ష కళాఖండాలను నిల్వ చేయడానికి ఉపయోగిస్తారు. మీరు ఏదైనా లోడ్ మూలాన్ని ఎంచుకోవచ్చు: Yandex.Tank, Apache JMeter, మీ స్వంతం లేదా అన్నీ కలిపి. అనవసరమైన మూలాధారాలను నిలిపివేయడానికి, వ్యాఖ్యానించండి లేదా ఉద్యోగాన్ని తొలగించండి. లోడ్ మూలాల కోసం ఎంట్రీ పాయింట్లు:
    • Yandex.Tank కోసం లాంచ్ పారామితులు లో పేర్కొనబడ్డాయి./tests/yandextank.sh,
    • Apache JMeter ప్రారంభ పారామితులు ఫైల్‌లో పేర్కొనబడ్డాయి ./tests/jmeter.sh.

    గమనిక: CI సిస్టమ్‌తో ఇంటరాక్షన్‌ని సెటప్ చేయడానికి అసెంబ్లీ కాన్ఫిగరేషన్ టెంప్లేట్ ఉపయోగించబడుతుంది మరియు దానిలో టెస్ట్ లాజిక్ ప్లేస్‌మెంట్‌ను సూచించదు. పరీక్షల కోసం, కంట్రోల్ బాష్ స్క్రిప్ట్ ఉన్న ఎంట్రీ పాయింట్ పేర్కొనబడింది. పరీక్షలను అమలు చేసే పద్ధతి, నివేదికలను రూపొందించడం మరియు పరీక్ష స్క్రిప్ట్‌లు తప్పనిసరిగా QA ఇంజనీర్లచే అమలు చేయబడాలి. డెమోలో, రెండు లోడ్ మూలాల కోసం, Yandex ప్రధాన పేజీ అభ్యర్థన సరళమైన పరీక్షగా ఉపయోగించబడుతుంది. స్క్రిప్ట్‌లు మరియు పరీక్ష పారామితులు డైరెక్టరీలో ఉన్నాయి ./పరీక్షలు.

  3. వేదిక వద్ద నివేదిక పరీక్ష దశలో పొందిన పరీక్ష ఫలితాలను బాహ్య నిల్వలకు ఎలా ప్రచురించాలో మీరు వివరించాలి, ఉదాహరణకు, GitLab పేజీలు లేదా ప్రత్యేక రిపోర్టింగ్ సిస్టమ్‌లకు. GitLab పేజీలకు ./public డైరెక్టరీ ఖాళీగా ఉండకూడదు మరియు పరీక్షలు పూర్తయిన తర్వాత కనీసం index.html ఫైల్‌ని కలిగి ఉండాలి. మీరు GitLab పేజీల సేవ యొక్క సూక్ష్మ నైపుణ్యాల గురించి చదువుకోవచ్చు. లింక్.

    డేటాను ఎలా ఎగుమతి చేయాలో ఉదాహరణలు:

    సెటప్ సూచనలను పోస్ట్ చేస్తోంది:

డెమో ఉదాహరణలో, లోడ్ పరీక్షలు మరియు రెండు లోడ్ మూలాధారాలతో పైప్‌లైన్ (మీరు అనవసరమైనదాన్ని నిలిపివేయవచ్చు) ఇలా కనిపిస్తుంది:

డెవలపర్‌ల కోసం CI సేవగా లోడ్ టెస్టింగ్

Apache JMeter ఒక HTML నివేదికను స్వయంగా రూపొందించగలదు, కాబట్టి ప్రామాణిక సాధనాలను ఉపయోగించి GitLab పేజీలలో సేవ్ చేయడం మరింత లాభదాయకంగా ఉంటుంది. Apache JMeter నివేదిక ఇలా కనిపిస్తుంది:

డెవలపర్‌ల కోసం CI సేవగా లోడ్ టెస్టింగ్

Yandex.Tank కోసం డెమో ఉదాహరణలో, మీరు మాత్రమే చూస్తారు నకిలీ వచన నివేదిక GitLab పేజీల విభాగంలో. పరీక్ష సమయంలో, ట్యాంక్ ఫలితాలను ఇన్‌ఫ్లక్స్‌డిబి డేటాబేస్‌కు సేవ్ చేయగలదు మరియు అక్కడ నుండి వాటిని ప్రదర్శించవచ్చు, ఉదాహరణకు, గ్రాఫానాలో (ఫైల్‌లో కాన్ఫిగరేషన్ జరుగుతుంది ./tests/example-yandextank-test.yml) గ్రాఫానాలో ట్యాంక్ నివేదిక ఇలా కనిపిస్తుంది:

డెవలపర్‌ల కోసం CI సేవగా లోడ్ టెస్టింగ్

సారాంశం

వ్యాసంలో, నేను "ఒక సేవగా లోడ్ పరీక్ష" (ఒక సేవగా లోడ్ పరీక్ష) అనే భావన గురించి మాట్లాడాను. లోడ్ ఏజెంట్లు, లోడ్ మూలాల డాకర్ చిత్రాలు, రిపోర్టింగ్ సిస్టమ్‌లు మరియు వాటిని సాధారణ .gitlab-ci.yml టెంప్లేట్ (ఉదాహరణకు ఉదాహరణ) ఆధారంగా GitLab CIలో మిళితం చేసే పైప్‌లైన్‌ల యొక్క ముందుగా కాన్ఫిగర్ చేయబడిన పూల్‌ల మౌలిక సదుపాయాలను ఉపయోగించడం ప్రధాన ఆలోచన. లింక్) వీటన్నింటికీ ఆటోమేషన్ ఇంజనీర్ల చిన్న బృందం మద్దతు ఇస్తుంది మరియు ఉత్పత్తి బృందాల అభ్యర్థన మేరకు ప్రతిరూపం పొందింది. మీ కంపెనీలో ఇలాంటి పథకాన్ని సిద్ధం చేయడంలో మరియు అమలు చేయడంలో ఇది మీకు సహాయపడుతుందని నేను ఆశిస్తున్నాను. శ్రద్ధ గా ఉన్నందుకు కృతజ్ఞతలు!

PS మా కంపెనీలో ఒక సేవగా లోడ్ టెస్టింగ్ భావనను అమలు చేయడంలో సాంకేతిక సహాయం కోసం నా సహచరులు, సెర్గీ కుర్బనోవ్ మరియు నికోలాయ్ యుసేవ్‌లకు నేను చాలా ధన్యవాదాలు చెప్పాలనుకుంటున్నాను.

రచయిత: తైమూర్ గిల్ముల్లిన్ - డిప్యూటీ పాజిటివ్ టెక్నాలజీస్‌లో టెక్నాలజీస్ అండ్ డెవలప్‌మెంట్ ప్రాసెసెస్ (DevOps) హెడ్

మూలం: www.habr.com

ఒక వ్యాఖ్యను జోడించండి