Bu proje, Selenium WebDriver ile test otomasyonu yaparken Prometheus, Grafana , cAdvisor ve PushGateway kullanarak gerçek zamanlı monitoring sağlar.
- Test Executions: Toplam test çalıştırma sayısı
- Test Successes: Başarılı test sayısı
- Test Failures: Başarısız test sayısı (hata türüne göre)
- Test Success Rate: Başarı oranı yüzdesi
- Test Duration: Test çalışma süreleri
- Active Tests: Şu anda çalışan test sayısı
- Page Load Time: Sayfa yükleme süreleri
- Page Loads Total: Toplam sayfa yükleme sayısı
- Browser Memory Usage: Browser memory kullanımı
- Node Exporter: CPU, Memory, Disk, Network kullanımı
- cAdvisor: Container metrikleri ve Docker stats
- Prometheus: Kendi metrikleri
👉 Bu projenin detaylı kurulumunu, konfigürasyonunu ve kullanımını adım adım anlattığım blog yazım için aşağıdaki bağlantıdan inceleyebilirsiniz:
🔗 Metrik Tabanlı Test Otomasyonu: Prometheus + Grafana ile Gerçek Zamanlı Gözlem
- Java 8+
- Maven
- Docker & Docker Compose
- Projeyi klonlayın:
git clone <repository-url>
cd TestAuto_MonitoringStack- Dependencies'leri yükleyin:
mvn clean compile- Monitoring stack'i başlatın:
docker-compose up -d- URL: http://localhost:3000
- Kullanıcı: admin
- Şifre: admin123
# 1. Monitoring stack'i başlat
docker-compose up -d
# 2. IDE'de testleri çalıştır
# IntelliJ IDEA veya Eclipse'de:
# src/test/java/com/testautomation/tests/LoginTest.java
# src/test/java/com/testautomation/tests/ProductTest.java
# 3. Grafana'ya eriş
# http://localhost:3000 (admin/admin123)- Amaç: Test suite'inizin ne kadar başarılı olduğunu gösterir
- Hesaplama: (Başarılı Test Sayısı / Toplam Test Sayısı) × 100
- Örnek: %85 = 17 başarılı test / 20 toplam test
- Kullanım: Test kalitesini ve güvenilirliğini değerlendirmek için
- Amaç: Belirli bir zaman diliminde kaç test çalıştırıldığını gösterir
- Örnek: 42 test çalıştırıldı
- Kullanım: Test throughput'unu ve performansını ölçmek için
- Amaç: Her testin ne kadar sürdüğünü gösterir
- Birim: Saniye
- Örnek: Ortalama 2.5 saniye
- Kullanım: Yavaş testleri tespit etmek ve optimizasyon için
- Amaç: Başarısız testlerin sayısını ve türünü gösterir
- Hata Türleri: assertion_error, timeout_error, element_not_found
- Kullanım: Hangi tür hataların daha sık olduğunu analiz etmek için
- Amaç: Şu anda çalışan test sayısını gösterir
- Kullanım: Paralel test çalıştırma durumunu izlemek için
- Amaç: Web sayfalarının ne kadar sürede yüklendiğini gösterir
- Birim: Saniye
- Örnek: Login sayfası 1.2s, Inventory sayfası 2.8s
- Kullanım: Web uygulamasının performansını değerlendirmek için
- Amaç: Tarayıcının ne kadar bellek kullandığını gösterir
- Birim: MB (Megabyte)
- Örnek: 45 MB
- Kullanım: Memory leak'leri tespit etmek için
- Amaç: Docker container'larının CPU kullanımını gösterir
- Birim: CPU yüzdesi
- Kullanım: Sistem kaynaklarının kullanımını izlemek için
- Amaç: Docker container'larının bellek kullanımını gösterir
- Birim: MiB (Mebibyte)
- Kullanım: Memory kullanımını optimize etmek için
monitoring/prometheus/prometheus.yml dosyasında:
- Scrape interval: 15s
- Test automation metrics: PushGateway (localhost:9091)
- Node Exporter: node-exporter:9100
- cAdvisor: cadvisor:8080
- Datasource: Prometheus (http://prometheus:9090)
- Dashboard:
monitoring/grafana/dashboards/complete-dashboard.json
# PushGateway'ın çalışıp çalışmadığını kontrol edin
docker-compose ps pushgateway
# PushGateway loglarını kontrol edin
docker-compose logs pushgateway# Docker servislerini kontrol edin
docker-compose ps
# Logları kontrol edin
docker-compose logs prometheus
docker-compose logs grafana- Prometheus'ta targets'ları kontrol edin: http://localhost:9090/targets
- PushGateway target'ının UP olduğundan emin olun
- 2-5 dakika bekleyin (ilk scrape için)
@Test
public void testExample() {
String testName = "testExample";
try {
MetricsExporter.recordTestExecution(testName);
// Test logic here
// ...
MetricsExporter.recordTestSuccess(testName);
} catch (Exception e) {
MetricsExporter.recordTestFailure(testName, "assertion_error");
throw e;
} finally {
double duration = getTestDuration();
MetricsExporter.recordTestDuration(testName, duration);
}
}MetricsExporter.recordPageLoadTime("pageName", 2.5);Runtime runtime = Runtime.getRuntime();
long memoryUsage = runtime.totalMemory() - runtime.freeMemory();
MetricsExporter.recordBrowserMemoryUsage(memoryUsage);- Test Success Rate: Yüzde olarak başarılı test oranı
- Test Execution Count: Belirli zaman diliminde çalışan test sayısı
- Test Duration: Test süreleri histogramı
- Page Load Times: Sayfa yükleme süreleri
- Browser Memory Usage: Tarayıcı bellek kullanımı (MB)
- Failed Tests Count: Başarısız test sayısı
- Container CPU/Memory: Sistem kaynak kullanımı
- Test Success Rate: Başarı oranı trendi (%)
- Test Execution Count: Test çalıştırma sayısı
- Test Duration: Test süreleri (saniye)
- Page Load Times: Sayfa yükleme süreleri (saniye)
- Browser Memory Usage: Tarayıcı bellek kullanımı (MB)
- Container CPU Usage: CPU kullanımı (%)
- Container Memory Usage: Bellek kullanımı (MiB)
-
Monitoring stack'i başlatın:
docker-compose up -d
-
IDE'de testleri çalıştırın:
- IntelliJ IDEA veya Eclipse açın
LoginTest.javaveyaProductTest.javaçalıştırın
-
Grafana'da izleyin:
- http://localhost:3000 (admin/admin123)
- Testlerin gerçek zamanlı çalışmasını görün
- Başarı oranını takip edin
- Test sürelerini analiz edin
-
Performans Analizi:
- Hangi testlerin yavaş olduğunu tespit edin
- Başarısızlık nedenlerini analiz edin
- Sayfa yükleme performansını değerlendirin
PushGateway test suite tamamlandıktan sonra da çalışmaya devam eder. Bu sayede:
- Sürekli monitoring yapabilirsiniz
- Geçmiş metrikleri karşılaştırabilirsiniz
- Trend analizi yapabilirsiniz
Sorun yaşarsanız:
- Docker servislerinin çalıştığını kontrol edin
- PushGateway'ın çalıştığını kontrol edin
- Test loglarını inceleyin
- Prometheus targets'larını kontrol edin
Not: Bu proje Windows ortamında test edilmiştir. Linux/Mac için script'leri uyarlamanız gerekebilir.