Какие основные виды тестирования программного обеспечения вы знаете?

«Какие основные виды тестирования программного обеспечения вы знаете?» — вопрос из категории Основы тестирования, который задают на 70% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Виды тестирования классифицируются по различным критериям. Вот ключевые категории:

По объекту проверки:

  • Функциональное: Проверка соответствия функциональности заявленным требованиям (например, работа кнопки "Отправить" в форме).
  • Нефункциональное: Оценка характеристик системы:
    • Нагрузочное/Производительности: Проверка поведения под нагрузкой.
    • Безопасности: Выявление уязвимостей.
    • Юзабилити: Оценка удобства интерфейса.

По уровню/области:

  • Модульное (Unit): Тестирование отдельных функций или классов.
  • Интеграционное: Проверка взаимодействия между модулями или системами (например, приложение и БД).
  • Системное (End-to-End, E2E): Тестирование полностью собранной системы.

По времени проведения и целям:

  • Дымовое (Smoke): Базовая проверка работоспособности ключевых функций после сборки.
  • Регрессионное: Проверка, что новые изменения не сломали существующий функционал.
  • Приемочное (UAT): Финальная проверка заказчиком перед выпуском.

Пример модульного теста на Java (JUnit 5):

import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;

public class CalculatorTest {
    @Test
    void additionShouldReturnCorrectSum() {
        Calculator calculator = new Calculator();
        int result = calculator.add(2, 3);
        assertEquals(5, result, "2 + 3 должно равняться 5");
    }
}