Test Piramidası
Test piramidası müxtəlif növ testlərin ideal paylanmasını müəyyən edən testləmə strategiyasıdır.
Piramida Strukturu
/\
/ \ E2E Tests (Few)
/____\
/ \ Integration Tests (Some)
/_______\
| | Unit Tests (Many)
|________|
Test Səviyyələri
Vahid Testlər (Əsas)
- Miqdar: Çox (70-80%)
- Sürət: Çox sürətli
- Əhatə: Ayrı komponentlər
- Dəyər: Aşağı
İnteqrasiya Testləri (Orta)
- Miqdar: Bəzi (15-20%)
- Sürət: Orta
- Əhatə: Komponent qarşılıqlı əlaqələri
- Dəyər: Orta
End-to-End Testlər (Yuxarı)
- Miqdar: Az (5-10%)
- Sürət: Yavaş
- Əhatə: Tam istifadəçi iş prosesləri
- Dəyər: Yüksək
Java Nümunəsi
Koda bax
// Unit Test (Base of pyramid)
@Test
void calculateTotal_WithValidItems_ReturnsSum() {
Calculator calc = new Calculator();
assertEquals(15, calc.add(10, 5));
}
// Integration Test (Middle)
@Test
@SpringBootTest
void userController_SavesUser_ToDatabase() {
User user = new User("john");
userController.createUser(user);
assertTrue(userRepository.existsByName("john"));
}
// E2E Test (Top of pyramid)
@Test
void userRegistration_CompleteFlow_Success() {
driver.get("/register");
driver.findElement(By.id("username")).sendKeys("john");
driver.findElement(By.id("submit")).click();
assertTrue(driver.findElement(By.id("welcome")).isDisplayed());
}
Faydalar
- Dəyər effektivliyi: Daha çox vahid test, daha az bahalı E2E testlər
- Sürətli geri əlaqə: Vahid testlər inkişaf zamanı tez işləyir
- Etibarlılıq: Vahid testlər daha sabit və proqnozlaşdırıla biləndir
- Daha yaxşı əhatə: Çoxsaylı kiçik testlər sərhəd hallarını effektiv əhatə edir
Ən Yaxşı Təcrübələr
- Biznes məntiqi üçün vahid testlərə diqqət yetirin
- Komponent qarşılıqlı əlaqələri üçün inteqrasiya testlərindən istifadə edin
- E2E testləri kritik istifadəçi səyahətləri ilə məhdudlaşdırın
- Piramida formasını saxlayın - tərs piramidadan çəkinin
- CI/CD kanalında müvafiq səviyyələrdə testlər işlədin