Кто занимался тестированием на прошлой работе?

«Кто занимался тестированием на прошлой работе?» — вопрос из категории Тестирование, который задают на 25% собеседований C/C++ Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

На моих предыдущих проектах на C++ тестирование было распределенной ответственностью по принципу «тестирует тот, кто пишет код».

  1. Разработчики (включая меня): Мы были ответственны за модульное (unit) и интеграционное тестирование своего кода. Для этого использовался Google Test (GTest) и Google Mock (GMock). Каждая фича или исправление бага сопровождалось соответствующими тестами.

    // Пример unit-теста для класса Parser
    TEST(ParserTest, ParsesValidInteger) {
        Parser parser;
        EXPECT_EQ(parser.parseInt("42"), 42);
    }
    
    TEST(ParserTest, ThrowsOnInvalidInput) {
        Parser parser;
        EXPECT_THROW(parser.parseInt("abc"), std::invalid_argument);
    }
  2. QA-инженеры: Они фокусировались на системном тестировании, регрессионных проверках и тестировании пользовательских сценариев (E2E). Они писали автоматизированные скрипты (часто на Python) для проверки работы всего приложения, а также выполняли ручное исследовательское тестирование.
  3. Непрерывная интеграция (CI): Вся кодовая база собиралась и прогонялась через полную suite тестов (unit, integration) на сервере CI (например, Jenkins или GitLab CI) при каждом пулл-реквесте. Мерж был возможен только при «зеленом» статусе всех тестов.

Такой подход обеспечивал высокое качество кода и позволял быстро находить регрессии.