HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-02-21
1 <p><a>#Тесты</a></p>
1 <p><a>#Тесты</a></p>
2 <ul><li>24 ноя 2021</li>
2 <ul><li>24 ноя 2021</li>
3 <li>0</li>
3 <li>0</li>
4 </ul><h2>Задача про трёх тестировщиков на собеседовании</h2>
4 </ul><h2>Задача про трёх тестировщиков на собеседовании</h2>
5 <p>Декомпозируем и считаем баги вместе с репетитором Анной Никитиной.</p>
5 <p>Декомпозируем и считаем баги вместе с репетитором Анной Никитиной.</p>
6 <p>Иллюстрация: Альберто Блинчиков для Skillbox Media</p>
6 <p>Иллюстрация: Альберто Блинчиков для Skillbox Media</p>
7 <p>Автор статей о программировании. Изучает Python, разбирает сложные термины и объясняет их на пальцах новичкам. Если что-то непонятно - возможно, вы ещё не прочли его следующую публикацию.</p>
7 <p>Автор статей о программировании. Изучает Python, разбирает сложные термины и объясняет их на пальцах новичкам. Если что-то непонятно - возможно, вы ещё не прочли его следующую публикацию.</p>
8 <p>Преподаватель математики, автор YouTube-канала "Математика с Аней" и соавтор учебников и методических рекомендаций к учебникам по математике.</p>
8 <p>Преподаватель математики, автор YouTube-канала "Математика с Аней" и соавтор учебников и методических рекомендаций к учебникам по математике.</p>
9 <p>Анна готовит учеников к ЕГЭ в школе "<a>Топскул</a>" и консультирует онлайн-школы по вопросам эффективного обучения.</p>
9 <p>Анна готовит учеников к ЕГЭ в школе "<a>Топскул</a>" и консультирует онлайн-школы по вопросам эффективного обучения.</p>
10 <p>Компания открыла вакансию тестировщика. Чтобы получить работу, кандидат должен сдать теорию и пройти тест. К практической части интервьюер допускал только тех кандидатов, которые безошибочно ответили на все вопросы теоретической части. Остальные получали отказ. Команда подбирала человека, который найдёт все баги.</p>
10 <p>Компания открыла вакансию тестировщика. Чтобы получить работу, кандидат должен сдать теорию и пройти тест. К практической части интервьюер допускал только тех кандидатов, которые безошибочно ответили на все вопросы теоретической части. Остальные получали отказ. Команда подбирала человека, который найдёт все баги.</p>
11 <p>На второй этап собеседования прошли три тестировщика:</p>
11 <p>На второй этап собеседования прошли три тестировщика:</p>
12 <ul><li>Первый работал с программами на Python, JavaScript, PHP, С# и Go.</li>
12 <ul><li>Первый работал с программами на Python, JavaScript, PHP, С# и Go.</li>
13 <li>Второй - на JavaScript, PHP, Python, Ruby, Go и Swift.</li>
13 <li>Второй - на JavaScript, PHP, Python, Ruby, Go и Swift.</li>
14 <li>Третий - на C++, Ruby, Swift, Python, PHP, JavaScript и С#.</li>
14 <li>Третий - на C++, Ruby, Swift, Python, PHP, JavaScript и С#.</li>
15 </ul><p>Каждый кандидат должен протестировать четыре программы, которые написаны на разных языках программирования: образовательную платформу, приложение для знакомств, десктопную версию мессенджера и мобильную версию игры под iOS. Всего нужно определить 20 ошибок в коде.</p>
15 </ul><p>Каждый кандидат должен протестировать четыре программы, которые написаны на разных языках программирования: образовательную платформу, приложение для знакомств, десктопную версию мессенджера и мобильную версию игры под iOS. Всего нужно определить 20 ошибок в коде.</p>
16 <p>Никто из участников полностью не справился с заданием: один кандидат не смог точно протестировать образовательную платформу и мобильную игру; другой - мобильную игру, приложение для знакомств и десктопную версию мессенджера; ещё один - приложение для знакомств и десктопную версию мессенджера.</p>
16 <p>Никто из участников полностью не справился с заданием: один кандидат не смог точно протестировать образовательную платформу и мобильную игру; другой - мобильную игру, приложение для знакомств и десктопную версию мессенджера; ещё один - приложение для знакомств и десктопную версию мессенджера.</p>
17 <p>Кто и какие баги пропустил - неизвестно. Есть таблица с количеством ошибок, которые обнаружил каждый из тестировщиков:</p>
17 <p>Кто и какие баги пропустил - неизвестно. Есть таблица с количеством ошибок, которые обнаружил каждый из тестировщиков:</p>
18 <p>Посчитайте, сколько ошибок в каждой программе, и попробуйте понять, кому компания сделает оффер.</p>
18 <p>Посчитайте, сколько ошибок в каждой программе, и попробуйте понять, кому компания сделает оффер.</p>
19 <p><strong>Подсказка</strong></p>
19 <p><strong>Подсказка</strong></p>
20 <p>В условии задачи множество вводных, и на первый взгляд непонятно, все ли они нужны для решения. Чтобы это проверить - используем метод декомпозиции. Для этого начертим таблицу и разделим информацию из условия задачи на три части:</p>
20 <p>В условии задачи множество вводных, и на первый взгляд непонятно, все ли они нужны для решения. Чтобы это проверить - используем метод декомпозиции. Для этого начертим таблицу и разделим информацию из условия задачи на три части:</p>
21 <p>Метод декомпозиции позволяет отсеять лишние данные или наоборот - убедиться, что задача многослойная и каждая фраза в условии имеет какое-то значение.</p>
21 <p>Метод декомпозиции позволяет отсеять лишние данные или наоборот - убедиться, что задача многослойная и каждая фраза в условии имеет какое-то значение.</p>
22 <p>В нашем случае применить метод декомпозиции несложно, поскольку текст задачи структурирован и разбит на логические блоки. Так бывает не всегда. Некоторые задачи на декомпозицию специально составлены в виде сплошного текстового полотна, в котором кусочки важной информации хаотично разбросаны по всем условиям. Это особенно актуально в ситуациях, когда задачу нужно решить за ограниченное время.</p>
22 <p>В нашем случае применить метод декомпозиции несложно, поскольку текст задачи структурирован и разбит на логические блоки. Так бывает не всегда. Некоторые задачи на декомпозицию специально составлены в виде сплошного текстового полотна, в котором кусочки важной информации хаотично разбросаны по всем условиям. Это особенно актуально в ситуациях, когда задачу нужно решить за ограниченное время.</p>
23 Условие задачи про трёх тестировщиков на собеседовании в виде неструктурированного текстового полотна - специальный приём для усложнения задания. Скриншот: Александр Бабаскин / Skillbox Media<p>Если вы разделите информацию на части и визуализируете её с помощью таблицы, то быстро определите единственную программу, которую неправильно протестировал только один из трёх кандидатов - это исходная точка для распутывания условий задания.</p>
23 Условие задачи про трёх тестировщиков на собеседовании в виде неструктурированного текстового полотна - специальный приём для усложнения задания. Скриншот: Александр Бабаскин / Skillbox Media<p>Если вы разделите информацию на части и визуализируете её с помощью таблицы, то быстро определите единственную программу, которую неправильно протестировал только один из трёх кандидатов - это исходная точка для распутывания условий задания.</p>
24 <p><strong>Решение</strong></p>
24 <p><strong>Решение</strong></p>
25 <p><strong>Шаг №1.</strong>Декомпозируем условие задачи и сократим вспомогательную информацию:</p>
25 <p><strong>Шаг №1.</strong>Декомпозируем условие задачи и сократим вспомогательную информацию:</p>
26 <p><strong>Шаг №2.</strong>Сравниваем результаты тестирования и замечаем, что по условию задачи только один тестировщик ошибся в поиске багов образовательной платформы. Третий тестировщик обнаружил четыре ошибки, а остальные участники - по две. Делаем вывод: первый и второй кандидаты ответили правильно, а третий - нет.</p>
26 <p><strong>Шаг №2.</strong>Сравниваем результаты тестирования и замечаем, что по условию задачи только один тестировщик ошибся в поиске багов образовательной платформы. Третий тестировщик обнаружил четыре ошибки, а остальные участники - по две. Делаем вывод: первый и второй кандидаты ответили правильно, а третий - нет.</p>
27 <p><strong>Шаг №3.</strong>Если третий кандидат неправильно проверил образовательную платформу, то, исходя из условий задачи, именно он - тот тестировщик, который ошибся в подсчёте багов образовательной платформы и мобильной игры. Следовательно, приложение для знакомств и десктопную версию мессенджера он протестировал верно.</p>
27 <p><strong>Шаг №3.</strong>Если третий кандидат неправильно проверил образовательную платформу, то, исходя из условий задачи, именно он - тот тестировщик, который ошибся в подсчёте багов образовательной платформы и мобильной игры. Следовательно, приложение для знакомств и десктопную версию мессенджера он протестировал верно.</p>
28 <p><strong>Шаг №4.</strong>Пробуем выяснить, кто из тестировщиков ошибся при проверке сразу трёх программ. Чтобы получить подсказку - обращаем внимание на такую деталь: мобильная игра разработана под iOS. То есть написана на языке Swift.</p>
28 <p><strong>Шаг №4.</strong>Пробуем выяснить, кто из тестировщиков ошибся при проверке сразу трёх программ. Чтобы получить подсказку - обращаем внимание на такую деталь: мобильная игра разработана под iOS. То есть написана на языке Swift.</p>
29 <p>Пересматриваем условие задачи и видим, что Swift изучали второй и третий участник. На предыдущем шаге мы отсеяли третьего кандидата, остаётся второй.</p>
29 <p>Пересматриваем условие задачи и видим, что Swift изучали второй и третий участник. На предыдущем шаге мы отсеяли третьего кандидата, остаётся второй.</p>
30 <p>Получается, первый тестировщик неправильно посчитал ошибки в мобильной игре, приложении для знакомств и десктопной версии мессенджера.</p>
30 <p>Получается, первый тестировщик неправильно посчитал ошибки в мобильной игре, приложении для знакомств и десктопной версии мессенджера.</p>
31 <p><strong>Шаг №5.</strong>По остаточному принципу заполняем таблицу и фиксируем, что второй тестировщик ошибся при проверке приложения для знакомств и десктопной версии мессенджера.</p>
31 <p><strong>Шаг №5.</strong>По остаточному принципу заполняем таблицу и фиксируем, что второй тестировщик ошибся при проверке приложения для знакомств и десктопной версии мессенджера.</p>
32 <p><strong>Ответ</strong></p>
32 <p><strong>Ответ</strong></p>
33 <p><strong>Сколько ошибок в каждой программе.</strong>На сайте образовательной платформы - две; в приложении для знакомств - три; в десктопной версии мессенджера - восемь; в мобильной игре - семь. Всего - 20 багов.</p>
33 <p><strong>Сколько ошибок в каждой программе.</strong>На сайте образовательной платформы - две; в приложении для знакомств - три; в десктопной версии мессенджера - восемь; в мобильной игре - семь. Всего - 20 багов.</p>
34 <p><strong>Кто из кандидатов получит работу.</strong>Компания искала тестировщика, который ответит на все вопросы по теории и выловит все баги в программах. С этим никто не справился.</p>
34 <p><strong>Кто из кандидатов получит работу.</strong>Компания искала тестировщика, который ответит на все вопросы по теории и выловит все баги в программах. С этим никто не справился.</p>
35 <p>Если всё-таки нужно кого-то нанять, то это второй участник - он неверно протестировал две программы, в которых пропустил две ошибки. Для сравнения: третий участник тоже неверно протестировал две программы, но допустил четыре ошибки; первый участник не справился с тремя программами и допустил четыре ошибки.</p>
35 <p>Если всё-таки нужно кого-то нанять, то это второй участник - он неверно протестировал две программы, в которых пропустил две ошибки. Для сравнения: третий участник тоже неверно протестировал две программы, но допустил четыре ошибки; первый участник не справился с тремя программами и допустил четыре ошибки.</p>
36 <p><strong>Размять мозги на других задачах</strong></p>
36 <p><strong>Размять мозги на других задачах</strong></p>
37 <p><strong>Инфографика</strong>: Евгений Рыбкин / Skillbox Media</p>
37 <p><strong>Инфографика</strong>: Евгений Рыбкин / Skillbox Media</p>
38 <a><b>Бесплатный курс по Python ➞</b>Мини-курс для новичков и для опытных кодеров. 4 крутых проекта в портфолио, живое общение со спикером. Кликните и узнайте, чему можно научиться на курсе. Смотреть программу</a>
38 <a><b>Бесплатный курс по Python ➞</b>Мини-курс для новичков и для опытных кодеров. 4 крутых проекта в портфолио, живое общение со спикером. Кликните и узнайте, чему можно научиться на курсе. Смотреть программу</a>