Летняя школа Яндекс задание 6 Стажировка в группе исследовательских проектов в тестировании (Санкт-Петербург)

Здание № 6 из списка предложенных для отбора на летнюю школу от Яндекс. Общий список опубликован здесь. Для простоты обсуждения каждое задание публикуется отдельно.

Наша группа занимается исследованиями в области тестирования.  В данный момент мы разрабатываем и внедряем робота для тестирования  веб-интерфейсов. Его основная функция — взять на себя рутинную часть работы в «ручном» тестировании. Наш робот грамотно взаимодействует со страницей, делит ее  на формы, распознает поля ввода (и вводит туда разумные значения) и понимает (иногда:)), когда в результате его действий возникает ошибка. Требования: java, хорошие знания математики и алгоритмов. Приветсвуется склонность к проектированию и разработке больших систем, отсутствие страха перед новыми технологиями.

 

Задание. Решите одну из предложенных задач с использованием языка java. Желательно помимо решения прислать еще описание алгоритма  и инструкцию по сборке и запуску.

1. Задача про книги.

Есть программа, которая подбирает интересную книгу для человека, руководствуясь данными о нем. Для подбора книги пользователь должен заполнить данные о себе. Ему задаются несколько вопросов с вариантами ответов, например, «ваш пол?» (2 варианта), «возраст?» (скажем, 5 промежутков), «профессия?» (10 вариантов) и так далее.

Необходимо проверить, что программа корректно отрабатывает для любого возможного пользователя (т.е. выдает какой-то разумный ответ, а не падает с исключением). Понятно, что общее количество комбинаций, которое необходимо проверить, равно произведению A1A2An, где Ai  количество вариантов в i-том вопросе, а n количество вопросов.

Предположим также, что количество проверок, которые можно провести за данный промежуток времени с данными ресурсами равно B << A1A2An.  Какие именно проверки тогда стоит провести?

Чтобы сформулировать задачу более строго, введем дополнительные предположения:

(a) Варианты  1, 2, …, Ai  для признака i равновероятны (т.е. количество мужчин равно количеству женщин).

(b)  Распределения  по группам по признакам 1..n независимы (т.е. количество мужчин от 20 до 30 равно количеству женщин от 30 до 40).

(c) Количество вариантов для каждого вопроса примерно одинаково.

Требуется написать программу, генерящую  тестовые наборы, удовлетворяющие следующим условиям:

(a) Количество наборов не превосходит наперед заданного числа.

(b)  Проверка всех этих наборов позволит отловить все баги наибольшей критичности (критичность бага определяется долей людей, которые на него натолкнутся при использовании этой программы).

(c) Количество вариантов для каждого вопроса примерно одинаково.

Формальное условие: на вход программе будет подаваться  текстовый файл input.txt (находится в каталоге с исполняемым файлом). В первой строчке написано число n, равное количеству признаков. В следующих n строчках написаны количества  вариантов для признаков 1..n. В последней строчке написано число

, равное ограничению на количество тестовых наборов. В результате программа должна сгенерить набор из не более, чем строк, в каждой из которых записан

тестовый набор через пробелы (должен быть создан файл output.txt в том же каталоге).

Оцениваться результат будет как степень критичности бага, который данный набор тестов может пропустить (более конкретный критерий участнику не сообщается).

2. Инструкция  для тестировщика.

На вход программе  подается адрес веб-страницы.  Программа должна составить инструкцию для тестировщика (для проверки этой страницы) в читабельном формате. Например:

Тест 1: Кликнуть  по ссылке /имя ссылки/ Тест 2: Ввести в поле /имя поля/

значение /значение/ и нажать кнопку /наименование кнопки/.  … Оцениваться будут:

(a) Читаемость инструкции (желательны понятные названия элементов).

(b)  Тестовое  покрытие предоставленного  набора (как  минимум все элементы на странице должны использоваться, желательно,  чтобы в поле для ввода email’а программа предлагала ввести именно адрес электронной почты и так далее).

(c) Сложность страниц, для которых программа должна работать. Предлагаемая технология WebDriver.

Share

Tags: , ,

Leave a Reply