GH GambleHub

Ýadro synag strategiýasy

1) Ýörelgeler

Piramidal-kubok balansy. Baza - çalt modul we şertnama synaglary; ýokarda - komponent we integrasiýa; üstünde - iň az, ýöne gymmatly gatlak e2e.
Shift-left. Kemçiligi näçe ir tutsak (linter, statiki derňew, property-based), şonça arzan.
Deterministic by design. Wagty, tory, randomy we daşarky garaşlylygy dolandyrýarys.
Hil ykdysadyýeti. Islendik synag - "ätiýaçlandyryş": maksat - jemi çykdajylary azaltmak (kemçilikler + synaglary goldamak).
Töwekgelçilik ugry. Örtük iş-invariantlara we teswirnamalara (şertnamalara, idempotentlige, yzygiderlilige) jemlenýär.

2) Synag derejeleri we jogapkärçilik zolaklary

2. 1 Unit (modully)

Arassa logikany I/O bolmasa barlaýarlar.
Diňe serhetleri ýuwýarys (port/adapter), maglumatlar üçin zawodlary ulanýarys.
Çalt (50-100 ms/synag ≤), paralel.

2. 2 Contract (sarp ediji üpjün ediji)

Hyzmatlaryň arasynda API-şertnamalary (HTTP/gRPC/event) ýazýarlar.
Consumer-driven çemeleşmesini ulanýarys: şertnamalar VCS-de saklanýar, üpjün edijiniň CI-de barlanýar.
Integrasiýa e2e gowşaklygyny azaldýar.

2. 3 Component (modulyň üstünde, hakyky ammar bilen)

Konteýnerde hakyky DB/keş bilen hyzmatyň bir bölegini açýarys (Testcontainers).
Shemalaryň, indeksleriň, amallaryň, blokirlemeleriň göçmegini tassyklaýarys.

2. 4 Integration/System (hyzmatlaryň arasyndaky ýollar)

Izolirlenen gurşawda hyzmatlar toplumyny ýokarlandyrýarys.
Tranzaksiýa, retra, idempotent, ýalňyşlyklaryň gaýtadan işlenmegi ýaly üýtgewsizlikleri barlaýarys.

2. 5 E2E (iň az "gymmatly" gatlak)

Hakyky teswirnamalar we gurşaw "önümdäki ýaly", ýöne çäkli ssenariýa toplumy: töleg → tassyklama → geçiriş; hasaba alyş → barlamak → giriş.
Relizleri çykarmak we regress üçin ýokary töwekgelçilikli şekilleri ulanýarys.

3) Hamyr taýýar arhitektura

Portlar/adapterler (Hexagonal). Iş özeni HTTP/SQL hakda bilmeýär; endikler interfeýsler arkaly girizilýär.
Wagt/random sanjymy. 'Clock', 'Random' - garaşlylyk; synaglarda belleýäris.
Konfigurasiýa I/O abstraksiýa. Nobatlar, DB, KMS - synag ýerine ýetirişleri bolan interfeýsler arkaly.
Funksional üýtgemeler. Post şertleri we predikatlary aç-açan düzýäris - olary barlamak we gözegçilik etmek has aňsat.

4) Synaglar üçin maglumatlar

Statiki JSON-fiksturalaryň ýerine zawodlar/bilderler: az gowşaklyk.
Synagdan öň idempotent sidler we reset-huk BD (migrations → truncate → seed).
Ýagdaýlaryň kataloglary: "kadalar", "gyralar", "ýalňyşlyklar", "bulam-bujarlyk".
Hakyky PD-leriň ýerine sintetika: generatorlar, gizlemek, gizlinlik profilleri.

5) Bäsdeşlik we idempotentlik

Ýaryşlar üçin synaglar (race): bäsdeşlik ýazgylary/ätiýaçlyklar/blokirlemeler.
Idempotent açarlaryny barlamak (mysal üçin '(operation, external_id)'): gaýtalanýan jaňlar ýagdaýy üýtgetmeýär.
Retraýlar we wagtlar: Wagtlaýyn ýalňyşlyklar ýüze çykan halatynda dogrulygy kepillendirýäris.

Pseudokod (idempotentlik):

dedupe_key = hash(op + external_id)
if exists(executions, dedupe_key): return previous_result else:
reserve(dedupe_key)
result = do_operation()
store(executions, dedupe_key, result)
return result

6) Wagt, wagt, wagt zolaklary

Ähli saklanylýan döwürler - UTC; synaglarda 'FixedClock' ulanýarys.
DST-wakalary (goşa/sagat geçişleri), "ýerli günüň" penjirelerini synagdan geçirýäris.
Wagtlary monoton sagatlar bilen barlaýarys; NTP titremesini simulýasiýa edýäris.

7) Durnuklylyk we bulam-bujarlyk

"Fault-injection": ulgam ýalňyşlyklary, 5xx, gijikdirmeler, bölekleýin pese gaçmak (keş elýeterli däl).
Pre-prod gurşawynda Chaos synaglary: düwünleri öçürmek, nobatlara aşa ýüklemek, BGP/Anycast arakesmeleri (emulasiýa).
Fallback-syýasatlar we UX pese gaçmagy: synaglar dogry "graceful degradation" -ny tassyklamaly.

8) Öndürijilik

Kritiki algoritmler üçin mikro-bençmarkalar (CPU/alloc bilen).
Ýük profilleri: baseline (p50/p95), stres (iň ýokary), ýadyň syzmagy üçin uzaldylan (soak).
Regress geýtleri: p95 latentlik baseline> X% -den erbet bolsa, build şowsuz bolýar.

9) Howpsuzlyk we laýyklyk

SAST/Lint: gowşaklygy/anti-patterni gözlemek.
DAST/IAST: stenddäki esasy ssenariýalar (XSS/SQLi/SSRF-nusgalar).
Secrets-scan: kodda we artefaktlarda açar/parollaryň ýoklugy.
Privacy-testler: ýazgylarda/yzarlamalarda PD ýoklugy, "ylalaşyklary dolandyrmak" berjaý edilmegi, düşürmek üçin anonimleşdiriş profilleri.

10) Hil ölçegleri we SLO

Test pass rate we flaky index (durnuksyz synaglaryň sany/hepde).

Coverage-maksat:
  • 90-100% möhüm ýadro modullary üçin,
  • Periferiýa üçin 70-80% (invariantlara ünsi jemleýär).
  • Release risk score: jemi: möhüm faýllardaky üýtgeşmeler × bahalaryň düşmegi × täze flaky.
  • Nädogry býudjet: synag we goýberiş ýygylygy bilen bir topar prod-SLO (aptime/ýalňyşlyk).

11) CI/CD we geýtlar

Tapgyrlar matrisi:

1. Lint/Format/TypeCheck

2. Unit + Property-based

3. Contract provider/consumer

4. Component (Testcontainers)

5. Integration + Perf smoke

6. Security (SAST/Secrets)

7. Build/Package + SBOM

8. Deploy to pre-prod + e2e + chaos smoke

Geýtlar: şertnamalaryň pese gaçmagy, gizlinligiň ýokarlanmagy, täze möhüm gowşaklyklar.

Kesh we şarding: pipeline paralellik we inkremental geçişler arkaly çaltlaşdyrýarys (üýtgedilen modullar boýunça).

12) Flaky-synaglar: tapmak we bejermek

Awtopovtor + kworum (2/3 pogon).
Flake-pattern detektory: wagtyna/randoma/düşnüksiz garaşmalara baglylyk.
SLA bilen karantin: Synag goýberilişleri petiklemeýär, ýöne N gün düzedilmeli/täzeden ýazylmalydyr.
Möhüm ýoluň "ýadrosynda" çydamlylyga çydamlylyk.

13) Property-based, mutasiýa we fazz-synag

Property-based: häsiýetleri (kommutatiwlik, idempotentlik, monotonlyk), serhet maglumatlary generatorlaryny düzýäris.
Mutation testing: synaglaryň "güýjüni" ölçeýäris (girizilen mutasiýalary öldürýärmi).
Fuzzing: protokollar/parserler/formatlar (JSON, Protobuf, CSV), esasanam howpsuzlyk çäklerinde.

Häsiýet mysaly (psevdokod):

prop "serialize/deserialize roundtrip":
forAll(randomModel()):
decode(encode(model)) == model

14) Synlamak we synaglar bilen baglanyşyk

Synaglaryň yzarlamalary (loglarda trace-id): pre-prod-a göçürmek amatly.
Spektakl-geçişde metrikleriň snapshotlaryny artefakt hökmünde saklaýarys.
Loglara gözegçilik etmek: duýgur meýdanlaryň ýoklugy, SLO çäklerindäki loglaryň ululygy.

15) Resminamalar we amallar

Test Handbook: haýsy synaglary nirede başlamaly, zawodlary nädip ýazmaly, şertnamalary nädip täzelemeli.
Runbooks: wakanyň sesi, çalt diagnostika, goýberilişiň yza gaýdyp gelmegi.
Invariantlaryň katalogy: ulgamlaýyn kepillikleriň we degişli synaglara/alertlere baglanyşyklaryň sanawy.

16) Arhitektoryň çek-sanawy

1. Ýadro üýtgemeleri we möhüm ýollar beýan edilýärmi?
2. Synaglaryň derejeleriniň we olaryň SLO (wagt, durnuklylyk) matrisi barmy?
3. Şertnamalar üpjün edijide we sarp edijide CI görnüşinde wersiýa edilýärmi?
4. Wagt/duşuşyk/ulgam synaglarda dolandyrylýarmy (FixedClock, Fault-injector)?
5. Testcontainers/izolirlenen DB sazlandy, göçmek barlanýar?
6. Regressiýa üçin spektakl-bazline we gapy barmy?
7. SAST/Secrets-scan we privacy-log barlagy açykmy?
8. Flaky hasaba alynýar we düzediş üçin SLA barmy?
9. Synaglaryň prod-SLO we nädogry býudjet bilen baglanyşygy aç-açan düzüldimi?
10. Runbook 'we invariantlar katalogy resminamalaşdyryldymy?

Netije

Ýadro synagynyň strategiýasy gurallaryň sanawy däl-de, arhitektura ukybydyr: synag ukyply dizaýn, berk dereje iýerarhiýasy, dolandyrylýan maglumatlar, şowsuzlyga çydamlylyk we CI/CD-de gurlan metrikler. Beýan edilen amallara eýerip, topar çalt we ygtybarly seslenme alýar we goýberilişler öňünden aýdyp boljak we howpsuz bolýar.

Contact

Biziň bilen habarlaşyň

Islendik sorag ýa-da goldaw boýunça bize ýazyp bilersiňiz.Biz hemişe kömek etmäge taýýar.

Telegram
@Gamble_GC
Integrasiýany başlamak

Email — hökmany. Telegram ýa-da WhatsApp — islege görä.

Adyňyz obýýektiw däl / islege görä
Email obýýektiw däl / islege görä
Tema obýýektiw däl / islege görä
Habar obýýektiw däl / islege görä
Telegram obýýektiw däl / islege görä
@
Eger Telegram görkezen bolsaňyz — Email-den daşary şol ýerden hem jogap bereris.
WhatsApp obýýektiw däl / islege görä
Format: ýurduň kody we belgi (meselem, +993XXXXXXXX).

Düwmäni basmak bilen siz maglumatlaryňyzyň işlenmegine razylyk berýärsiňiz.