Ana içeriğe geç

Test Stratejisi

Proje dört katmanlı bir test stratejisi kullanır: backend birim/smoke, frontend birim, uçtan uca (Playwright) ve k6 ile performans/güvenlik doğrulaması.

Backend

cd iqvflex/backend
npm test

node --test ile 5 dosyada birim/entegrasyon testleri (ERP mapping, ERP auth, upsert, Go proxy, Go auth) çalışır; ardından test/smoke.mjs gerçek bir Express uygulaması ayağa kaldırıp temel uç noktaları (health, hata kodları, 404) MongoDB olmadan doğrular.

Frontend

cd dashboard
npm test

node --test ile normalizasyon ve format dönüşüm mantığının Node-RED ile birebir aynı davrandığını doğrulayan birim testleri çalışır.

Uçtan uca (E2E)

cd dashboard && npm run build && npx vite preview --port 4173 &
cd iqvflex/backend && npm install
cd iqvflex/e2e && npm install && npx playwright install chromium
npm test

Tarayıcı → Node.js backend → (sahte) Go Integration API → backend → tarayıcı zincirini baştan sona doğrular. MongoDB repository katmanı mock'lanır, bu yüzden çalışan bir mongod gerekmez; Go servisi de test içinde ayağa kaldırılan sahte bir HTTP sunucusudur. Kapsam: JSON/XML akışları, hata durumlarının kaybolmaması ve frontend bundle'ında secret bulunmaması.

k6 (smoke ve yük testi)

k6 testleri iqvflex/backend/test/k6/ altındadır:

Dosya Amaç
common.js Ortak yardımcılar, assertNonProductionTarget güvenlik kapısı
smoke.js 1 VU / 1 iterasyon — hiçbir kontrol başarısız olmamalı
load.js Kontrollü, saldırgan olmayan yük profili (varsayılan 5 VU)

Güvenlik kapısı: testler yalnızca localhost / *.test / *.local / *staging* / *.internal adreslerini hedefleyebilir; üretim adresine karşı çalıştırılırsa test fail() ile durur.

cd iqvflex/backend
npm install
K6_BASE_URL=http://127.0.0.1:3199 PORT=3199 node server.js &
k6 run test/k6/smoke.js

K6_TEST_IDENTIFIER / K6_TEST_PASSWORD verilirse tryLogin() gerçek bir girişi de dener; verilmezse bu adım atlanır — sahte üretim kimliği üretilmez.

CI'da smoke testi backend'in gerçek MongoDB'ye ihtiyaç duymadan ayağa kalkabilmesinden yararlanır (bkz. CI/CD).