Sobes.tech
Junior
193

Интеграциялық тестілеу дегеніміз не?

AI-дан жауап

sobes.tech AI

Интеграциялық тестілеу — бұл бағдарламалық қамтамасыз етудің тестілеу түрі, онда бағдарламаның жеке модулдері біріктіріліп, топ ретінде тестіленеді. Мақсаты — компоненттердің бір-бірімен және сыртқы жүйелермен қалай әрекеттесетінін тексеру.

Негізгі тәсілдер:

  • Төменнен жоғары қарай (Top-Down): Тестілеу жоғарғы модульдерден басталады, ал төменгі модульдер қондырмалармен (stubs) ауыстырылады.
  • Жоғарыдан төмен қарай (Bottom-Up): Тестілеу төменгі модульдерден басталады, ал жоғарғы модульдер драйверлермен (drivers) ауыстырылады.
  • Сэндвич-тәсіл (Hybrid): Төменнен жоғары және жоғарыдан төмен тәсілдерді біріктіреді.

Java-да интеграцияның мысалдары:

  • Қызметтің дерекқормен өзара әрекеттесуін тексеру.
  • Бір REST API-дің басқа REST API-ді шақыруын тестілеу.
  • Хабарламалар кезегі жүйесімен (мысалы, Kafka) компоненттің жұмысын тексеру.

JVM-қосымшалары үшін жиі Spring Boot Test, JUnit 5 кеңейтулері (мысалы, Testcontainers), Mockito (тәуелділіктерді имитациялау үшін) сияқты фреймворктер пайдаланылады.

// Spring Boot Test қолдану арқылы интеграциялық тест мысалы
@SpringBootTest
@AutoConfigureMockMvc
public class UserControllerIntegrationTest {

    @Autowired
    private MockMvc mockMvc;

    @Autowired
    private UserRepository userRepository; // Дерекқормен жұмыс істеу репозиториясы

    @BeforeEach
    void setup() {
        userRepository.deleteAll(); // Тест алдында дерекқорды тазалау
    }

    @Test
    void testCreateUser() throws Exception {
        String userJson = "{\"username\": \"testUser\", \"email\": \"test@example.com\"}";

        mockMvc.perform(post("/users") // Контроллер шақыруын тексеру
                        .contentType(MediaType.APPLICATION_JSON)
                        .content(userJson))
                .andExpect(status().isCreated()) // 201 статусты күту
                .andExpect(jsonPath("$.username").value("testUser")); // Жауап мазмұнын тексеру

        assertThat(userRepository.findByUsername("testUser")).isPresent(); // Дерекқорда сақтауын тексеру
    }
}
Артықшылықтары Кемшіліктері
Модульдер арасындағы қателерді анықтайды. Модульдік тестілеуге қарағанда қиынырақ жазылады және қолдау көрсетіледі.
Сыртқы жүйелермен жұмыс істеуді тексеруге көмектеседі. Орындау уақыты ұлғаяды.
Шынайы сценарийлерге жақын. Ортаны баптауды талап етеді (Дерекқор, қызметтер және т.б.).