Задача про трёх тестировщиков на собеседовании
Декомпозируем и считаем баги вместе с репетитором Анной Никитиной.
Иллюстрация: Альберто Блинчиков для Skillbox Media
Анна Никитина
Преподаватель математики, автор YouTube-канала «Математика с Аней» и соавтор учебников и методических рекомендаций к учебникам по математике.
Анна готовит учеников к ЕГЭ в школе «Топскул» и консультирует онлайн-школы по вопросам эффективного обучения.
Условие
Компания открыла вакансию тестировщика. Чтобы получить работу, кандидат должен сдать теорию и пройти тест. К практической части интервьюер допускал только тех кандидатов, которые безошибочно ответили на все вопросы теоретической части. Остальные получали отказ. Команда подбирала человека, который найдёт все баги.
На второй этап собеседования прошли три тестировщика:
- Первый работал с программами на Python, JavaScript, PHP, С# и Go.
- Второй — на JavaScript, PHP, Python, Ruby, Go и Swift.
- Третий — на C++, Ruby, Swift, Python, PHP, JavaScript и С#.
Каждый кандидат должен протестировать четыре программы, которые написаны на разных языках программирования: образовательную платформу, приложение для знакомств, десктопную версию мессенджера и мобильную версию игры под iOS. Всего нужно определить 20 ошибок в коде.
Никто из участников полностью не справился с заданием: один кандидат не смог точно протестировать образовательную платформу и мобильную игру; другой — мобильную игру, приложение для знакомств и десктопную версию мессенджера; ещё один — приложение для знакомств и десктопную версию мессенджера.
Кто и какие баги пропустил — неизвестно. Есть таблица с количеством ошибок, которые обнаружил каждый из тестировщиков:
Посчитайте, сколько ошибок в каждой программе, и попробуйте понять, кому компания сделает оффер.
Подсказка
В условии задачи множество вводных, и на первый взгляд непонятно, все ли они нужны для решения. Чтобы это проверить — используем метод декомпозиции. Для этого начертим таблицу и разделим информацию из условия задачи на три части:
Метод декомпозиции позволяет отсеять лишние данные или наоборот — убедиться, что задача многослойная и каждая фраза в условии имеет какое-то значение.
В нашем случае применить метод декомпозиции несложно, поскольку текст задачи структурирован и разбит на логические блоки. Так бывает не всегда. Некоторые задачи на декомпозицию специально составлены в виде сплошного текстового полотна, в котором кусочки важной информации хаотично разбросаны по всем условиям. Это особенно актуально в ситуациях, когда задачу нужно решить за ограниченное время.
Если вы разделите информацию на части и визуализируете её с помощью таблицы, то быстро определите единственную программу, которую неправильно протестировал только один из трёх кандидатов — это исходная точка для распутывания условий задания.
Решение
Шаг №1. Декомпозируем условие задачи и сократим вспомогательную информацию:
Шаг №2. Сравниваем результаты тестирования и замечаем, что по условию задачи только один тестировщик ошибся в поиске багов образовательной платформы. Третий тестировщик обнаружил четыре ошибки, а остальные участники — по две. Делаем вывод: первый и второй кандидаты ответили правильно, а третий — нет.
Шаг №3. Если третий кандидат неправильно проверил образовательную платформу, то, исходя из условий задачи, именно он — тот тестировщик, который ошибся в подсчёте багов образовательной платформы и мобильной игры. Следовательно, приложение для знакомств и десктопную версию мессенджера он протестировал верно.
Шаг №4. Пробуем выяснить, кто из тестировщиков ошибся при проверке сразу трёх программ. Чтобы получить подсказку — обращаем внимание на такую деталь: мобильная игра разработана под iOS. То есть написана на языке Swift.
Пересматриваем условие задачи и видим, что Swift изучали второй и третий участник. На предыдущем шаге мы отсеяли третьего кандидата, остаётся второй.
Получается, первый тестировщик неправильно посчитал ошибки в мобильной игре, приложении для знакомств и десктопной версии мессенджера.
Шаг №5. По остаточному принципу заполняем таблицу и фиксируем, что второй тестировщик ошибся при проверке приложения для знакомств и десктопной версии мессенджера.
Ответ
Сколько ошибок в каждой программе. На сайте образовательной платформы — две; в приложении для знакомств — три; в десктопной версии мессенджера — восемь; в мобильной игре — семь. Всего — 20 багов.
Кто из кандидатов получит работу. Компания искала тестировщика, который ответит на все вопросы по теории и выловит все баги в программах. С этим никто не справился.
Если всё-таки нужно кого-то нанять, то это второй участник — он неверно протестировал две программы, в которых пропустил две ошибки. Для сравнения: третий участник тоже неверно протестировал две программы, но допустил четыре ошибки; первый участник не справился с тремя программами и допустил четыре ошибки.
Размять мозги на других задачах
- Задача про бракованные аймаки: помогите наказать хитрого перекупщика.
- Три программиста и отпуск: запутанная задача на логику. Распутываем вместе с репетитором.
- Запутанная задача про поп-ит: считаем остаток от деления с репетитором Анной Никитиной.
- Задача про директора и график смен программистов: логическая задача на метод исключения. Разбираемся с репетитором.
Инфографика: Евгений Рыбкин / Skillbox Media