Какое-то время назад мы опубликовали тренажер, имитирующий одну из стандартных задач на собеседовании тестировщика: тестирование утилиты, которая выводит данные о треугольниках. Мы решили дать коллегам возможность потренироваться — и не прогадали. Посещаемость сайта в определенные моменты доходила до 400 rps, а всего нашим тренажером воспользовалось больше 7000 уникальных пользователей.
Если Вам не удалось самостоятельно найти все баги, не стоит расстраиваться. У нас есть небольшой, но очень детальный курс по основам тестирования. Подробнее можно узнать по ссылке.
А теперь, как и обещали, выкладываем ответы к этой задаче. Внимание, дальше будут спойлеры. Если вы хотели пройти этот тренажер самостоятельно, пока что дальше лучше не читать.
В тренажере было два типа задач: проверить 12 тест-кейсов из тех, что мы задумали, и найти 4 спрятанных бага.
Как это обычно и бывает, багов оказалось больше, и многие их нашли и прислали репорты. Спасибо вам! Но обо всем по порядку.
Кейсов у нас было задумано 12.
1
Первое, что стоит сделать, увидев любую форму, попробовать просто по ней жмакнуть (засабмитить). Что ожидаем увидеть? Если кнопка сабмита не деактивирована (как в нашем случае), то самое ожидаемое поведение — форма выведет ошибки, сообщая, что не все обязательные поля для ввода были заполнены. Один кейс найден.
2
Второй кейс чем-то похож на предыдущий. Только в этом случае мы не заполняем одно поле (А или B). А остальные заполняем. Почему нельзя оставить пустым только поле C? Расскажем чуть ниже 🙂
3-7
Далее у нас идут позитивные кейсы. Вспоминаем уроки по геометрии, сколько существует треугольников? Нам удалось выделить пять видов: прямоугольный (3, 4, 5), тупоугольный (2, 3, 4), остроугольный (66, 67, 68), равнобедренный (3, 3, 5) и равносторонний (6, 6, 6). Все их можно перебрать, добавив себе пять очков к кейсам.
8
Снова возвращаемся к урокам геометрии. А какого треугольника быть не может? Верно, такого, у которого сумма двух маленьких сторон короче большой стороны (2, 3, 10). Все потому, что стороны в таком случае просто не смогут соединиться. Итак, еще один кейс: «не выполнились условия треугольника».
9
Очередной кейс, попробовать ввести в форму что-то, что никак не может являться сторонами треугольника. Например, буквы q, w, e. Итак, новые кейс найден: это не треугольник.
10
Далее начинается специфика тестирования в целом, и тестирование веб-приложения в частности. Тут, для начала, мы проверяем слишком большое число. Большим числом называем такое, которое больше максимального значения INT. Например, число 4294967295.
11
Два оставшихся кейса посвящены тестированию безопасности. Первый кейс, это проверка на SQL-инъекцию. На самом деле, конечно, писать настоящую инъекцию не надо, главное вообще подумать в эту сторону. Это уже будет означать, что о таком типе уязвимости вы помните. В нашем случае достаточно было ввести в поле такие ключевые слова, как select, or или where.
12
И последний кейс: XSS-уязвимость. О том, что это, можно почитать в нашей группе. Для того, чтобы кейс засчитался, необходимо было ввести тег для JS-кода. Т.е.
- Часть 2: Тестирование простого приложения (Тестирование ПО)
- Записная книжка рассеянного [в пространстве и времени] программиста
- Часть 2: Тестирование простого приложения (Тестирование ПО)
- Оглавление
- Первое приложение
- Тестируем
- Литература
- Исходные тексты программ
- Оглавление
- 10 логических задач с собеседований, которые заставят застрелиться
- Автомат с напитками
- Инопланетяне и десяток храбрецов
- Поездки на мотоциклах
- 3 лампы и 3 выключателя
- Два стражника
- Пьяные кролики
- Голодные белки
- Треугольник муравьёв
- Котлета, котлета и ещё одна котлета
- Необычная оплата
- Заключение
Видео:Тестовое задание на собеседовании тестировщикаСкачать
Часть 2: Тестирование простого приложения (Тестирование ПО)
Видео:Разработчик vs ТестировщикСкачать
Записная книжка рассеянного [в пространстве и времени] программиста
Видео:Тестирование треугольникаСкачать
Часть 2: Тестирование простого приложения (Тестирование ПО)
Видео:Задача на подобие треугольников. А ты сможешь решить? | TutorOnline | МатематикаСкачать
Оглавление
Видео:Эксперт (Короткометражка, Русский дубляж)Скачать
Первое приложение
Программа считывает три целочисленных значения из консоли. Эти значения интерпретируются как длины сторон треугольника. Программа выводит сообщение о том, каким является данный треугольник — разносторонним, равнобедренным или равносторонним.
Напишем, функцию, которая принимает на вход три стороны треугольника, которые заданы целыми числами и возвращает тип треугольника. Сохраним написанный код в файле triangle.php.
Функция достаточно тривиальна, поэтому мы не будем останавливаться на ее реализации. Нас будет интересовать, как найти в ней ошибки.
Для начала потребуется реализовать механизм, который позволит вводить данные с консоли и получать результат. Сохраним следующий код в файле main.php. Чуть позже вы поймете, почему мы используем разные файлы для самой функции и для кода, который обрабатывает пользовательский ввод.
Код также достаточно тривиален. Теперь мы можем запустить полученное приложение (да, это именно приложение — последовательность инструкций, определяющих процедуру решения конкретной задачи компьютером).
Откроем терминал, перейдем в каталог, с проектом и выполним следующую команду (для того, чтобы все сработало у вас должен быть установлен интерпретатор php в системе).
Программа будет ожидать ввод трех чисел, разделенных пробелами.
И вот что мы можем увидеть на экране.
Поэкспериментируйте немного с программой вводя разные наборы чисел.
А теперь рассмотрим эту программу с точки зрения разработчика, которому досталось ее тестировать. Какие наборы тестов он должен разработать, чтобы отыскать все возможные баги? Прежде чем читать дальше подумайте и попробуйте посчитать то количество, которое придумали вы.
Итак. Ниже приведен набор тестовых сценариев, которые должны быть написаны для нашей функции.
- тест для проверки действительно неравностороннего треугольника (наборы [1, 2, 3], [2, 5, 10] треугольниками не являются).
- проверка на действительно равносторонний треугольник
- проверка на равнобедренный треугольник (наборы вида [2, 2, 4] треугольником не являются)
- как минимум три теста для проверки равнобедренного треугольника, которые представляют собой перестановки одного и того же набора чисел ([3, 3, 4], [3, 4, 3], [4, 3, 3])
- тест на нулевую длину одной из сторон
- тест на сторону, имеющую длину меньше нуля
- проверка набора чисел, в котором сумма длин двух сторон равна третьей
- тест перестановок для троек чисел из теста 7
- проверка набора чисел, в котором сумма длин двух сторон меньше третьей ([12, 15, 30])
- тест перестановок для троек чисел из теста 9
- проверка на нулевую длину всех трех сторон
- проверка на передачу нецелочисленных значений
- проверка на передачу неполного набора значений
- проверка не только входных данных, но и ожидаемого выходного значения в каждом из тестов 1-13
Если вы не смогли назвать все кейсы, то не пугайтесь. Среднее число тестов, которые называли в разное время опытные разработчики составило 7,8.
Конечно нет никаких гарантий того, что набор тестов, удовлетворяющих перечисленным условиям, обнаружит все возможные ошибки. Но поскольку случаи 1-13 представляют ошибки, реально встречающиеся в различных версиях данной программы, адекватное тестирование должно обнаружить хотя бы их.
Это упражнение должно было продемонстрировать вам, что тестирование простых программ наподобие вышеприведенной является отнюдь не тривиальной задачей. А теперь попытайтесь представить себе, насколько трудоемким окажется тестирование, скажем, бухгалтерской программы крупного предприятия, компилятора или же системы управления воздушным движением, объем кода которых может достигать сотен тысяч строк. Еще большие трудности возникают с приложениями, которые написаны с использованием объектно-ориентированных языков (куда входит и php) и подходов. В частности, тесты для подобных приложений должны выявлять ошибки с созданием экземпляров объектов и взаимодействия между ними.
Однако, какой бы устрашающей ни казалась задача, адекватное (достаточно полное) тестирование программ является ключевой и, как вы убедитесь далее, вполне реализуемой частью процесса разработки программного обеспечения.
Видео:Практика и опыт для QA / Тестируем треугольники / Что ответили с WG??? Тестировщик 2.0Скачать
Тестируем
Конечно же самым простым решением будет просто закодировать все тестовые случаи для нашего проекта и написать нечто вроде следующего кода (файл triangle_test_simple.php).
И такое часто практикуется. Особенно в среде разработчиков на CC++. На каждый логически связанный набор тестовых случаев создается свой файл. Который содержит множество функций обрабатывающих по одному сценарию каждая.
В этом нет ничего плохого. Единственный минус такого подхода — отсутствие готового инструментария, который реализует все необходимые операции по обслуживанию и запуску тестов. Весь инструментарий приходится для каждого проекта реализовывать заново. Либо изготавливать свою собственную обвязку, которая будет кочевать из проекта в проект.
Один из вариантов создания инструмента для работы с подобными тестами вы можете увидеть в файле triangle_test.php. Запустите его и увидите на экране подробный лог тестирования проекта.
Видео:Тест-дизайн в тестировании ПО. Задача "Треугольник" (Илья Комендантов)Скачать
Литература
Видео:ТЕСТОВОЕ ЗАДАНИЕ ТЕСТИРОВЩИКА / Какие бывают тестовые задания для QA, как делать тестовоеСкачать
Исходные тексты программ
Видео:Задача, которую исключили из экзамена в АмерикеСкачать
Оглавление
RSS feed This page was generated by GitHub Pages.
Видео:Подобие треугольников. Признаки подобия треугольников (часть 1) | МатематикаСкачать
10 логических задач с собеседований, которые заставят застрелиться
Некоторые логические задачи с собеседований вгоняют в недоумение: зачем такое спрашивать? Чтобы создать сложную ситуацию и посмотреть, как быстро вы примете решение.
Разобраться и ответить правильно поможет наша подборка логических задач с собеседований.
Видео:Самый короткий тест на интеллект Задача Массачусетского профессораСкачать
Автомат с напитками
Начнём с простой логической задачи.
На склад привезли три машины для напитков. Одна из них выдаёт чай, вторая выдаёт кофе, а третья — чай или кофе (определяется случайно). Любой автомат продаст стакан напитка за одну монету. На каждом автомате приклеена этикетка с выдаваемым напитком. Но на заводе произошла ошибка, из-за чего на всех автоматах наклеены не те этикетки, которые должны быть.
Вопрос: сколько потребуется денег, чтобы определить, где какие автоматы?
Видео:HFLabs Education Day. Тест-дизайн на примере треугольникаСкачать
Инопланетяне и десяток храбрецов
В нашу планету вторглась инопланетная раса, чтобы уничтожить всё человечество. Но перед этим они решили дать нам возможность проявить свои интеллектуальные способности. Они отобрали десять умнейших людей планеты, построив их в ряд в полностью тёмной комнате. Каждому они надели чёрную или белую шляпу. После этого свет включился.
Инопланетянин просит стоящего в конце ряда человека назвать цвет своей шляпы. Если ответ правильный — этот человек остаётся жить, если нет — погибает. Подсмотреть цвет своей шляпы нельзя, однако можно обсудить с остальными определённый принцип ответа, которого будут придерживаться все. Распределение цветов шляп случайное, но вам виден цвет шляп всех остальных людей.
Вопрос: каким должен быть ответ, чтобы в живых осталось как можно больше людей?
Видео:Тестирование для дегенератовСкачать
Поездки на мотоциклах
У вас есть 50 мотоциклов с полным баком, которого хватает на 100 км езды.
Вопрос: используя все мотоциклы, какое максимальное расстояние вы сможете проехать? Все мотоциклы в начале пути находятся условно в одной точке.
Видео:Задача, которая поставила маму первоклассника в тупикСкачать
3 лампы и 3 выключателя
Эта логическая задача особенно полюбилась на собеседованиях. Есть 2 комнаты. Первая комната закрыта дверью, в ней низкие потолки и висят 3 лампы накаливания. Во второй комнате есть 3 выключателя, подсоединённых к каждой из ламп. Можно как угодно переключать выключатели, но перейти из второй комнаты в первую можно лишь один раз.
Вопрос: как узнать, за какую лампу отвечает каждый из выключателей?
Видео:Что такое билд? #тестирование #qa #тестировщик #itСкачать
Два стражника
А такая логическая задача часто встречается на интервью от Apple. Игрок дошёл до финального задания в квесте. Перед ним оказались две двери. Первая приведёт к богатству и победе, другая — к поражению. Под дверьми стоит по одному стражнику. Они знают, куда ведут их двери. Но один из них скажет неправду. Не известно, кто именно солжёт. Игрок может спросить одного стражника всего один раз.
Вопрос: что нужно спросить у стража, чтобы выйти к богатству и выиграть квест?
Видео:Математика это не ИсламСкачать
Пьяные кролики
Как-то раз один наследник захотел убить своего короля, чтобы власть скорей перешла в его руки. У короля была 1000 бутылок вина его любимого сорта. Наследник послал убийцу, чтобы тот отравил любимое вино короля. Но убийцу поймали после того, как он успел отправить лишь одну бутылку. Правитель был умным, поэтому решил использовать десяток кроликов, чтобы определить, куда именно был подсыпан яд. От отравы погибали спустя 1 день.
Вопрос: сколько минимум потребуется времени, чтобы найти отравленную бутылку? Как именно это сделать?
- 1-я бутылка = 0000000001
- 2-я бутылка = 0000000010
- 3-я бутылка = 0000000011
- …
- 999-я бутылка = 1111100111
- 1000-я бутылка = 1111101000
Кроликов нужно пронумеровать от 1 до 10. Каждый из них будет соответствовать одному из 10 разрядов числа. Кроликов нужно поить из тех бутылок, где в соответствующем кролику разряде есть единица. Например, из первой бутылки пьёт только первый кролик; из третьей — первый и второй. Напоив кроликов из всех бутылок, нужно подождать один день. Номера кроликов, которые погибли, подскажут разряды числа, в которых должны быть единицы. Таким образом, если погибли только 3-й и 1-й кролики, то отравлена 5-я бутылка (0000000101 = 5).
Видео:Разбор тестового задания на API для QA Engineer - тестировщика ПО.Скачать
Голодные белки
Данная логическая задача нередко задаётся на собеседованиях и выделяется среди прочих своей неординарностью. В её решении важны не особые математические способности, а умение абстрагироваться от странного условия. Полюбившаяся интервьюерам задача звучит так: 1,5 белки за 1,5 минуты поедают 1,5 жёлудя.
Вопрос: сколько желудей за 9 минут съедят 9 белок?
- 9 / 1,5 = 6 — во столько больше раз нам даётся времени;
- 9 * 6 = 54 — столько желудей съедят 9 белок за 9 минут.
Видео:Как тестировать лифт. QA задачи.Скачать
Треугольник муравьёв
Есть треугольник с равными углами. На углах стоят по одному муравью. В какой-то момент муравьи начинают идти в другой угол вдоль стороны треугольника. В какой именно — определяется случайно.
Вопрос: каков шанс того, что ни один муравей не столкнётся с другим муравьём?
Видео:Найдите угол: задача по геометрииСкачать
Котлета, котлета и ещё одна котлета
У вас есть 2 сковородки и 3 котлеты. На приготовление 1 котлеты с одной стороны уходит 1 минута. На одной сковороде вмещается лишь 1 котлета.
Вопрос: за какое минимальное время вы сможете полностью обжарить все 3 котлеты?
- положите жариться по 1 котлете на две сковороды;
- через минуту переверните первую котлету, а вторую уберите. На место второй котлеты положите третью;
- ещё через минуту первая котлета будет полностью готова. На её место положите дожариваться вторую котлету, которую вы убрали, а третью котлету переверните;
- спустя минуту все 3 котлеты будут полностью обжарены.
Видео:Тестировщик с нуля за 6 часов / QA / Тестирование по полный курсСкачать
Необычная оплата
В поместье пришёл путник. В кармане — ни гроша, лишь одна золотая цепь из 6 звеньев. Хозяин поместья предложил брать плату в виде одного кольца с цепочки за один день проживания, при условии, что будет распилено только одно звено. Хозяин должен получать плату каждый день. Он не хочет принимать предоплату или давать в долг.
Вопрос: как путник должен распилить цепочку, чтобы вносить оплату за жильё каждый день в течение 5 дней?
Заключение
Возможно, вы уже сталкивались с подобными логическими задачами на собеседованиях. Если так, поделитесь своим опытом: что это были за задачки и удалось ли их решить?
А для любителей поломать голову мы подготовили тест на проверку логики и математики.