В портфолио собраны проекты, выполненные во время обучения по специальности Инженер по тестированию в Яндекс.Практикуме.
Проектирование тестов
Тест-анализ | Ассоциативные карты | Блок-схемы
Тест-дизайн | Классы эквивалентности | Граничные значения
Тестовая документация | Чек-листы | Тест-кейсы
Тестирование веб-приложений
Пользовательский интерфейс | Формы | DevTools | Charles
Таблицы принятия решений | Парное тестирование | Баг-репорты
Тестирование мобильных приложений
Матрица устройств | Эмуляторы | Android Studio
Тестирование API
REST API | JSON | Postman
Тестирование баз данных
Консоль | SQL | PostgreSQL
Основы автоматизации тестирования
JavaScript | NodeJS | Puppeteer
1. Визуализируй требования
Проанализируй требования к сервису Яндекс.Маршруты и нарисуй mindmap.
2. Выдели классы эквивалентности и граничные значения
Проверь: «Время начала поездки», «Откуда», «Куда».
- Выдели объекты тестирования.
- Определи классы эквивалентности. Укажи тип ограничений: диапазон или набор значений.
- Определи граничные значения каждого класса, если применимо.
- Выбери тестовые значения, которые проверят каждый класс; и границы, если они есть.
Не забудь проверить негативные сценарии.
Требования к сервису Яндекс.Маршруты
Яндекс.Маршруты — сервис, который строит маршруты для транспорта разных видов. Рассчитывает время и стоимость поездки.
Интерфейс
В интерфейсе есть поля «Время начала поездки», «Откуда», «Куда». Переключатели режимов маршрута: оптимальный, быстрый и свой, а также переключатели видов транспорта: свой автомобиль, каршеринг, такси, самокат, велосипед и пешком.
Пользователь вводит время отправления. Чтобы построить маршрут, нужно ввести улицу и номер дома в поля «Откуда» и «Куда». В начале и конце адреса могут быть пробелы: они допустимы, но при снятии фокуса система удалит их.
Описание работы интерфейса
В стартовом состоянии поля «Время начала поездки», «Откуда» и «Куда» пустые. Режимы маршрутов «Оптимальный», «Быстрый и «Свой» не выбраны; панель переключения видов транспорта неактивна.
Логика работы полей «Откуда» и «Куда»
Если поля адреса заполнены корректно, на карте отображаются точки А и В. Если поле «Откуда» заполнено некорректно, точка А не отображается. Если поле «Куда» заполнено некорректно, точка В не отображается. При некорректном значении поле подсвечивается красным; появляется сообщение об ошибке.
Примеры тестовых адресов есть в таблице.
Режим «Оптимальный» и «Быстрый»
Если выбрать режим «Оптимальный» или «Быстрый», система автоматически назначит вид транспорта; построится маршрут; отобразится время и стоимость поездки. Выбрать транспорт в этих режимах нельзя — панель видов транспорта неактивна.
Режим «Свой»
Если выбрать режим «Свой», панель видов транспорта активна — можно переключать. Под каждый вид транспорта строится маршрут; рассчитывается время и стоимость поездки.
Если сменить вид транспорта или поменять значение в любом поле, маршрут перестроится; время и стоимость поездки пересчитается.
Ограничения
Элементы системы | Требования |
---|---|
Поле ввода часов | Формат 24 часа. Нули перед однозначным числом обязательны. Корректны только целые числа от 0 до 23 включительно. При некорректном вводе подсвечивается красным, ошибка «Вы ввели некорректное время». |
Поле ввода минут | Только целые числа. Нули перед однозначным числом обязательны. При некорректном вводе подсвечивается красным, ошибка «Вы ввели некорректное время». |
Поле ввода адреса | Только русские буквы, цифры, пробел, тире, точка, запятая. Длина не более 50 символов. Пробелы до и после адреса удаляются при снятии фокуса. При некорректном вводе подсвечивается красным, ошибка «Вы ввели некорректный адрес». |
Переключатели режима | Оптимальный, Быстрый и Свой. Состояние каждого переключателя — активен, выбран. |
Переключатели видов транспорта | Пешком, самокат, велосипед, каршеринг, такси, собственный автомобиль. Состояние каждого переключателя — активен, неактивен, выбран. |
Макеты
Логика расчёта
Система получает данные о начале поездки, точке А и точке В. После этого рассчитывает продолжительность и стоимость поездки по определённому алгоритму.
Расстояние, скорость и стоимость за минуту или километр можно получить из таблиц. Этих данных достаточно, чтобы рассчитать время и стоимость поездки для каждого вида транспорта.
Вид транспорта | Как расчитать время | Стоимость на км |
---|---|---|
Пешком | Средняя скорость 4 км/ч | 0 р / км |
Шеринг самокатов | Средняя скорость | 10 км/ч |
Шеринг велосипедов | Средняя скорость | 12 км/ч |
Каршеринг | см. Таблицу «Средняя скорость автомобиля» | 9 р / мин |
Такси | см. Таблицу «Средняя скорость такси» | 11 р / мин |
Собственное авто | см. Таблицу «Средняя скорость автомобиля» | 20 р / км |
Средняя скорость автомобиля
Время суток | Средняя скорость автомобиля |
---|---|
00:01-08:00 | 45 км/ч |
08:01-12:00 | 30 км/ч |
12:01-18:00 | 40 км/ч |
18:01-22:00 | 25 км/ч |
22:01-00:00 | 45 км/ч |
Средняя скорость такси с учётом движения по выделенным полосам
Время суток | Средняя скорость такси |
---|---|
00:01-08:00 | 50 км/ч |
08:01-12:00 | 35 км/ч |
12:01-18:00 | 42 км/ч |
18:01-22:00 | 30 км/ч |
22:01-00:00 | 50 км/ч |
Матрица расстояний между адресами для автомобильных дорог, в километрах
Адрес | Усачева, 3 | Комсомольский проспект, 18 | Зубовский бульвар, 37 | М. Пироговская, 25 | Хамовнический Вал, 34 | Фрунзенская набережная, 46 | 3-я Фрунзенская улица, 12 |
---|---|---|---|---|---|---|---|
Усачева, 3 | 0 | 1,4 | 1,5 | 0,89 | 2,6 | 2,6 | 2,6 |
Комсомольский проспект, 18 | 1,4 | 0 | 2,9 | 2,3 | 2,3 | 2,3 | 2,3 |
Зубовский бульвар, 37 | 1,4 | 1,5 | 0 | 1,9 | 3,8 | 3 | 3,3 |
М. Пироговская, 25 | 1,5 | 3 | 2,4 | 0 | 1,2 | 3,4 | 2,3 |
Хамовнический Вал, 34 | 1,5 | 3,7 | 3,7 | 1,2 | 0 | 1,7 | 1,7 |
Фрунзенская набережная, 46 | 3,2 | 3,9 | 4,7 | 2,7 | 1,7 | 0 | 2,2 |
3-я Фрунзенская улица, 12 | 1,4 | 2,4 | 3,5 | 2,3 | 1,4 | 1,3 | 0 |
Матрица расстояний между адресами для пешеходов, в километрах
Адрес | Усачёва, 3 | Комсомольский проспект, 18 | Зубовский бульвар, 37 | М. Пироговская, 25 | Хамовнический Вал, 34 | Фрунзенская набережная, 46 | 3-я Фрунзенская улица, 12 |
---|---|---|---|---|---|---|---|
Усачёва, 3 | 0 | 0,96 | 1,4 | 0,91 | 1,4 | 1,7 | 1,1 |
Комсомольский проспект, 18 | 1 | 0 | 1,3 | 1,9 | 2 | 1,7 | 1,2 |
Зубовский бульвар, 37 | 1,4 | 1,3 | 0 | 1,9 | 2,7 | 2,7 | 2,3 |
М. Пироговская, 25 | 0,91 | 1,9 | 1,9 | 0 | 0,75 | 1,5 | 1,2 |
Хамовнический Вал, 34 | 1,4 | 2 | 2,7 | 0,75 | 0 | 1,4 | 1,2 |
Фрунзенская набережная, 46 | 1,7 | 1,7 | 2,7 | 1,5 | 1,4 | 0 | 0,57 |
3-я Фрунзенская улица, 12 | 1,1 | 1,2 | 2,3 | 1,2 | 1,2 | 0,57 | 0 |
Обрати внимание: для подсчёта времени и стоимости маршрута тебе доступны таблицы со скоростью движения разных видов транспорта. Они показывают скорость движения автомобиля в разное время суток. Если ты берёшь такие тестовые значения, что поездка захватывает несколько временных интервалов, алгоритм выбирает скорость автомобиля из того диапазона, в котором поездка началась.
1. Ассоциативная карта
Ассоциативная карта в большом разрешении
2. Классы эквивалентности и граничные значения
Поле ввода часов
Длина поля
Название класса | Тип класса | Границы | Тестовые данные внутри класса | Тестовые данные на границах |
---|---|---|---|---|
2 цифры | диапазон | 2 | 2 цифры: 12 | |
от 0 до 1 цифры | диапазон | 0, 1 | 0 цифр: пустое поле | 1 цифра: 0 |
от 3 цифр до +∞ | диапазон | 3 | 50 цифр: 1234567890123456789012345 6789012345678901234567890 |
3 цифры: 222 |
Обязательность заполнения
Название класса | Тип класса | Границы | Тестовые данные внутри класса | Тестовые данные на границах |
---|---|---|---|---|
Поле заполнено | диапазон | |||
Поле пустое | диапазон |
Вводимые значения
Название класса | Тип класса | Границы | Тестовые данные внутри класса | Тестовые данные на границах |
---|---|---|---|---|
Цифры от 00 до 23 | диапазон | 00, 23 | 00, 01, 22, 23 | |
от -∞ до -01 | диапазон | |||
от 24 до +∞ | диапазон | 24 | 99 | 24, 25 |
Курсивом выделены повторяющиеся проверки, зачёркнутые значения - оптимизация проверок
Поле ввода минут
Длина поля
Название класса | Тип класса | Границы | Тестовые данные внутри класса | Тестовые данные на границах |
---|---|---|---|---|
2 цифры | диапазон | 2 | 2 цифры: 30 | |
от 0 до 1 цифры | диапазон | 0, 1 | 0 цифр: пустое поле | 1 цифра: 0 |
от 3 цифр до +∞ | диапазон | 3 | 50 цифр: 1234567890123456789012345 6789012345678901234567890 |
3 цифры: 123, 4 цифры: 1234 |
Обязательность заполнения
Название класса | Тип класса | Границы | Тестовые данные внутри класса | Тестовые данные на границах |
---|---|---|---|---|
Поле заполнено | диапазон | |||
Поле пустое | диапазон |
Вводимые значения
Название класса | Тип класса | Границы | Тестовые данные внутри класса | Тестовые данные на границах |
---|---|---|---|---|
Цифры от 00 до 59 | диапазон | 00, 59 | 00, 01, 58, 59 | |
от -∞ до -01 | диапазон | |||
от 24 до +∞ | диапазон | 60 | 99 | 60, 61 |
Курсивом выделены повторяющиеся проверки, зачёркнутые значения - оптимизация проверок
Поля ввода адреса (Откуда, Куда)
Длина поля
Название класса | Тип класса | Границы | Тестовые данные внутри класса | Тестовые данные на границах |
---|---|---|---|---|
от 1 до 50 символов | диапазон | 1, 50 | 25 символов: "3-я Фрунзенская улица, 12" | 1 символ: "У" |
1 символ: "У" | ||||
2 символа: "Ус" | ||||
49 символов: "3-я Фрунзенская улица, 123-я Фрунзенская улица, 1" | ||||
50 символов: "3-я Фрунзенская улица, 123-я Фрунзенская улица, 12" | ||||
от -∞ до 0 | диапазон | 0 | 0 символов: пустая строка | |
от 51 до +∞ | диапазон | 51 | 100 символов: "3-я Фрунзенская улица, 123-я Фрунзенская улица, 123-я Фрунзенская улица, 123-я Фрунзенская улица, 12" | 51 символ: "3-я Фрунзенская улица, 123-я Фрунзенская улица, 123" |
52 символа: "3-я Фрунзенская улица, 123-я Фрунзенская улица, 1234" |
Обязательность заполнения
Название класса | Тип класса | Границы | Тестовые данные внутри класса | Тестовые данные на границах |
---|---|---|---|---|
Поле заполнено | набор | " |
||
Поле пустое | набор |
Вводимые значения
Название класса | Тип класса | Границы | Тестовые данные внутри класса |
---|---|---|---|
Строка, содержащая русские буквы | набор | Корректный | "Усачёва" |
Строка, содержащая цифры | набор | Корректный | "Усачёва3" |
Строка, содержащая пробел в середине текста | набор | Корректный | "Фрунзенская набережная 46" |
Строка, содержащая пробел в начале текста | набор | Корректный | " Усачёва 3" |
Строка, содержащая пробел в конце текста | набор | Корректный | "Усачёва 3 " |
Строка, содержащая запятую | набор | Корректный | "Комсомольский проспект, 18" |
Строка, содержащая тире | набор | Корректный | " |
Строка, содержащая точку | набор | Корректный | "М. Пироговская, 25" |
Строка, содержащая латинские буквы | набор | Некорректный | "Usacheva" |
Строка, содержащая символы других языков | набор | Некорректный | "通り" |
Строка, содержащая спецсимволы | набор | Некорректный | "%;$#?&*!" |
Курсивом выделены повторяющиеся проверки, зачёркнутые значения - оптимизация проверок
1. Спроектируй тесты расчёта времени и стоимости
Выбери один вид транспорта для тестирования: собственный автомобиль, каршеринг или такси.
- Определи, какие требования описывают логику расчёта времени и стоимости выбранного транспорта.
- Напиши формулу, по которой рассчитывается время и стоимость поездки.
- Нарисуй блок-схему, которая визуализирует алгоритм выбора скорости транспорта в зависимости от времени начала поездки.
- Определи классы эквивалентности. И граничные значения каждого класса, к которому это применимо.
- Выбери тестовые значения, которые проверят каждый класс; и границы, если они есть.
- Напиши тест-кейсы на основе тестовых значений. Тест-кейсы должны проверять корректность логики расчёта.
2. Напиши выводы
Поразмышляй о результатах первого спринта:
- Как ты думаешь, какую часть функциональности удалось покрыть тестами?
- Как ты думаешь, какие новые навыки позволили тебе выполнить проект?
Выбери один вид транспорта для тестирования: собственный автомобиль, каршеринг или такси.
Свой автомобиль.
Определи, какие требования описывают логику расчёта времени и стоимости выбранного транспорта.
Поля "Начало поездки", "Откуда", "Куда"
Переключатель режима ("Свой")
Переключатель вида транспорта ("Свой автомобиль")
Средняя скорость автомобиля в зависимости от времени суток
Стоимость на км
Расстояние между адресами для автомобильных дорог
Напиши формулу, по которой рассчитывается время и стоимость поездки.
Время поездки = расстояние / скорость * 60
Стоимость поездки = расстояние * стоимость 1 км
Нарисуй блок-схему, которая визуализирует алгоритм выбора скорости транспорта в зависимости от времени начала поездки.
Блок-схема в большом разрешении
В соответствии с требованиями, если поездка захватывает несколько временных интервалов, алгоритм выбирает скорость автомобиля из того диапазона, в котором поездка началась. Так как для алгоритма выбора скорости транспорта время окончания поездки, которое зависит от расстояния между адресами, несущественно, в блок-схему не был добавлен ввод адресов Откуда и Куда, а также расчёт времени и стоимости поездки.
Определи классы эквивалентности. И граничные значения каждого класса, к которому это применимо. Выбери тестовые значения, которые проверят каждый класс; и границы, если они есть.
Время начала поездки
Название класса | Тип класса | Границы | Тестовые данные внутри класса | Тестовые данные на границах | Пояснение |
---|---|---|---|---|---|
00:01-08:00 | диапазон | 00:01, 08:00 | 04:00 | 00:01, 00:02, 07:59, 08:00 | Скорость автомобиля 45 км/ч |
08:01-12:00 | диапазон | 08:01, 12:00 | 10:00 | 08:01, 08:02, 11:59, 12:00 | Скорость автомобиля 30 км/ч |
12:01-18:00 | диапазон | 12:01, 18:00 | 15:00 | 12:01, 12:02, 17:59, 18:00 | Скорость автомобиля 40 км/ч |
18:01-22:00 | диапазон | 18:01, 22:00 | 20:00 | 18:01, 18:02, 21:59, 22:00 | Скорость автомобиля 25 км/ч |
22:01-00:00 | диапазон | 22:01, 00:00 | 23:00 | 22:01, 22:02, 23:59, 00:00 | Скорость автомобиля 45 км/ч |
Напиши тест-кейсы на основе тестовых значений. Тест-кейсы должны проверять корректность логики расчёта.
Расчёт времени и стоимости поездки на своём автомобиле:
Входные данные:
Время начала поездки (25 тестовых значений)
Точка А (Откуда): ул. Усачёва, 3
Точка Б (Куда): Зубовский бульвар, 37
Расчёт:
Время поездки, формула: расстояние (1,5 км) / средняя скорость автомобиля * 60
Стоимость поездки, формула: расстояние (1,5 км) * стоимость 1 км (20 руб.)
Выходные данные:
Время в пути
Стоимость поездки
Тест-кейсы
ID-001: Расчёт времени и стоимости поездки на своём автомобиле (начало поездки в 04:00)
Предусловие:
- Открыть страницу сервиса Яндекс Маршруты.
Шаги:
- Ввести время начала поездки: 04:00.
- Ввести адрес в поле "Откуда": ул. Усачёва, 3.
- Ввести адрес в поле "Куда": Зубовский бульвар, 37.
- Выбрать режим "Свой".
- Выбрать вид транспорта "Свой автомобиль".
ОР: В панели результата отображаются следующие данные:
- Время в пути: 2 мин.
- Стоимость поездки: 30 руб.
- Кнопка действия
Окружение: Google Chrome не ниже версии 72, Yandex.Browser не ниже 18.1.0
ID-002: Расчёт времени и стоимости поездки на своём автомобиле (начало поездки в 00:01)
Предусловие:
- Открыть страницу сервиса Яндекс Маршруты.
Шаги:
- Ввести время начала поездки: 00:01.
- Ввести адрес в поле "Откуда": ул. Усачёва, 3.
- Ввести адрес в поле "Куда": Зубовский бульвар, 37.
- Выбрать режим "Свой".
- Выбрать вид транспорта "Свой автомобиль".
ОР: В панели результата отображаются следующие данные:
- Время в пути: 2 мин.
- Стоимость поездки: 30 руб.
- Кнопка действия
Окружение: Google Chrome не ниже версии 72, Yandex.Browser не ниже 18.1.0
ID-003: Расчёт времени и стоимости поездки на своём автомобиле (начало поездки в 00:02)
Предусловие:
- Открыть страницу сервиса Яндекс Маршруты.
Шаги:
- Ввести время начала поездки: 00:02.
- Ввести адрес в поле "Откуда": ул. Усачёва, 3.
- Ввести адрес в поле "Куда": Зубовский бульвар, 37.
- Выбрать режим "Свой".
- Выбрать вид транспорта "Свой автомобиль".
ОР: В панели результата отображаются следующие данные:
- Время в пути: 2 мин.
- Стоимость поездки: 30 руб.
- Кнопка действия
Окружение: Google Chrome не ниже версии 72, Yandex.Browser не ниже 18.1.0
ID-004: Расчёт времени и стоимости поездки на своём автомобиле (начало поездки в 07:59)
Предусловие:
- Открыть страницу сервиса Яндекс Маршруты.
Шаги:
- Ввести время начала поездки: 07:59.
- Ввести адрес в поле "Откуда": ул. Усачёва, 3.
- Ввести адрес в поле "Куда": Зубовский бульвар, 37.
- Выбрать режим "Свой".
- Выбрать вид транспорта "Свой автомобиль".
ОР: В панели результата отображаются следующие данные:
- Время в пути: 2 мин.
- Стоимость поездки: 30 руб.
- Кнопка действия
Окружение: Google Chrome не ниже версии 72, Yandex.Browser не ниже 18.1.0
ID-005: Расчёт времени и стоимости поездки на своём автомобиле (начало поездки в 08:00)
Предусловие:
- Открыть страницу сервиса Яндекс Маршруты.
Шаги:
- Ввести время начала поездки: 08:00.
- Ввести адрес в поле "Откуда": ул. Усачёва, 3.
- Ввести адрес в поле "Куда": Зубовский бульвар, 37.
- Выбрать режим "Свой".
- Выбрать вид транспорта "Свой автомобиль".
ОР: В панели результата отображаются следующие данные:
- Время в пути: 2 мин.
- Стоимость поездки: 30 руб.
- Кнопка действия
Окружение: Google Chrome не ниже версии 72, Yandex.Browser не ниже 18.1.0
ID-006: Расчёт времени и стоимости поездки на своём автомобиле (начало поездки в 10:00)
Предусловие:
- Открыть страницу сервиса Яндекс Маршруты.
Шаги:
- Ввести время начала поездки: 10:00.
- Ввести адрес в поле "Откуда": ул. Усачёва, 3.
- Ввести адрес в поле "Куда": Зубовский бульвар, 37.
- Выбрать режим "Свой".
- Выбрать вид транспорта "Свой автомобиль".
ОР: В панели результата отображаются следующие данные:
- Время в пути: 3 мин.
- Стоимость поездки: 30 руб.
- Кнопка действия
Окружение: Google Chrome не ниже версии 72, Yandex.Browser не ниже 18.1.0
ID-007: Расчёт времени и стоимости поездки на своём автомобиле (начало поездки в 08:01)
Предусловие:
- Открыть страницу сервиса Яндекс Маршруты.
Шаги:
- Ввести время начала поездки: 08:01.
- Ввести адрес в поле "Откуда": ул. Усачёва, 3.
- Ввести адрес в поле "Куда": Зубовский бульвар, 37.
- Выбрать режим "Свой".
- Выбрать вид транспорта "Свой автомобиль".
ОР: В панели результата отображаются следующие данные:
- Время в пути: 3 мин.
- Стоимость поездки: 30 руб.
- Кнопка действия
Окружение: Google Chrome не ниже версии 72, Yandex.Browser не ниже 18.1.0
ID-008: Расчёт времени и стоимости поездки на своём автомобиле (начало поездки в 08:02)
Предусловие:
- Открыть страницу сервиса Яндекс Маршруты.
Шаги:
- Ввести время начала поездки: 08:02.
- Ввести адрес в поле "Откуда": ул. Усачёва, 3.
- Ввести адрес в поле "Куда": Зубовский бульвар, 37.
- Выбрать режим "Свой".
- Выбрать вид транспорта "Свой автомобиль".
ОР: В панели результата отображаются следующие данные:
- Время в пути: 3 мин.
- Стоимость поездки: 30 руб.
- Кнопка действия
Окружение: Google Chrome не ниже версии 72, Yandex.Browser не ниже 18.1.0
ID-009: Расчёт времени и стоимости поездки на своём автомобиле (начало поездки в 11:59)
Предусловие:
- Открыть страницу сервиса Яндекс Маршруты.
Шаги:
- Ввести время начала поездки: 11:59.
- Ввести адрес в поле "Откуда": ул. Усачёва, 3.
- Ввести адрес в поле "Куда": Зубовский бульвар, 37.
- Выбрать режим "Свой".
- Выбрать вид транспорта "Свой автомобиль".
ОР: В панели результата отображаются следующие данные:
- Время в пути: 3 мин.
- Стоимость поездки: 30 руб.
- Кнопка действия
Окружение: Google Chrome не ниже версии 72, Yandex.Browser не ниже 18.1.0
ID-010: Расчёт времени и стоимости поездки на своём автомобиле (начало поездки в 12:00)
Предусловие:
- Открыть страницу сервиса Яндекс Маршруты.
Шаги:
- Ввести время начала поездки: 12:00.
- Ввести адрес в поле "Откуда": ул. Усачёва, 3.
- Ввести адрес в поле "Куда": Зубовский бульвар, 37.
- Выбрать режим "Свой".
- Выбрать вид транспорта "Свой автомобиль".
ОР: В панели результата отображаются следующие данные:
- Время в пути: 3 мин.
- Стоимость поездки: 30 руб.
- Кнопка действия
Окружение: Google Chrome не ниже версии 72, Yandex.Browser не ниже 18.1.0
ID-011: Расчёт времени и стоимости поездки на своём автомобиле (начало поездки в 15:00)
Предусловие:
- Открыть страницу сервиса Яндекс Маршруты.
Шаги:
- Ввести время начала поездки: 15:00.
- Ввести адрес в поле "Откуда": ул. Усачёва, 3.
- Ввести адрес в поле "Куда": Зубовский бульвар, 37.
- Выбрать режим "Свой".
- Выбрать вид транспорта "Свой автомобиль".
ОР: В панели результата отображаются следующие данные:
- Время в пути: 2 мин 15 с.
- Стоимость поездки: 30 руб.
- Кнопка действия
Окружение: Google Chrome не ниже версии 72, Yandex.Browser не ниже 18.1.0
ID-012: Расчёт времени и стоимости поездки на своём автомобиле (начало поездки в 12:01)
Предусловие:
- Открыть страницу сервиса Яндекс Маршруты.
Шаги:
- Ввести время начала поездки: 12:01.
- Ввести адрес в поле "Откуда": ул. Усачёва, 3.
- Ввести адрес в поле "Куда": Зубовский бульвар, 37.
- Выбрать режим "Свой".
- Выбрать вид транспорта "Свой автомобиль".
ОР: В панели результата отображаются следующие данные:
- Время в пути: 2 мин 15 с.
- Стоимость поездки: 30 руб.
- Кнопка действия
Окружение: Google Chrome не ниже версии 72, Yandex.Browser не ниже 18.1.0
ID-013: Расчёт времени и стоимости поездки на своём автомобиле (начало поездки в 12:02)
Предусловие:
- Открыть страницу сервиса Яндекс Маршруты.
Шаги:
- Ввести время начала поездки: 12:02.
- Ввести адрес в поле "Откуда": ул. Усачёва, 3.
- Ввести адрес в поле "Куда": Зубовский бульвар, 37.
- Выбрать режим "Свой".
- Выбрать вид транспорта "Свой автомобиль".
ОР: В панели результата отображаются следующие данные:
- Время в пути: 2 мин 15 с.
- Стоимость поездки: 30 руб.
- Кнопка действия
Окружение: Google Chrome не ниже версии 72, Yandex.Browser не ниже 18.1.0
ID-014: Расчёт времени и стоимости поездки на своём автомобиле (начало поездки в 17:59)
Предусловие:
- Открыть страницу сервиса Яндекс Маршруты.
Шаги:
- Ввести время начала поездки: 17:59.
- Ввести адрес в поле "Откуда": ул. Усачёва, 3.
- Ввести адрес в поле "Куда": Зубовский бульвар, 37.
- Выбрать режим "Свой".
- Выбрать вид транспорта "Свой автомобиль".
ОР: В панели результата отображаются следующие данные:
- Время в пути: 2 мин 15 с.
- Стоимость поездки: 30 руб.
- Кнопка действия
Окружение: Google Chrome не ниже версии 72, Yandex.Browser не ниже 18.1.0
ID-015: Расчёт времени и стоимости поездки на своём автомобиле (начало поездки в 18:00)
Предусловие:
- Открыть страницу сервиса Яндекс Маршруты.
Шаги:
- Ввести время начала поездки: 18:00.
- Ввести адрес в поле "Откуда": ул. Усачёва, 3.
- Ввести адрес в поле "Куда": Зубовский бульвар, 37.
- Выбрать режим "Свой".
- Выбрать вид транспорта "Свой автомобиль".
ОР: В панели результата отображаются следующие данные:
- Время в пути: 2 мин 15 с.
- Стоимость поездки: 30 руб. -Кнопка действия
Окружение: Google Chrome не ниже версии 72, Yandex.Browser не ниже 18.1.0
ID-016: Расчёт времени и стоимости поездки на своём автомобиле (начало поездки в 20:00)
Предусловие:
- Открыть страницу сервиса Яндекс Маршруты.
Шаги:
- Ввести время начала поездки: 20:00.
- Ввести адрес в поле "Откуда": ул. Усачёва, 3.
- Ввести адрес в поле "Куда": Зубовский бульвар, 37.
- Выбрать режим "Свой".
- Выбрать вид транспорта "Свой автомобиль".
ОР: В панели результата отображаются следующие данные:
- Время в пути: 3 мин 36 с.
- Стоимость поездки: 30 руб.
- Кнопка действия
Окружение: Google Chrome не ниже версии 72, Yandex.Browser не ниже 18.1.0
ID-017: Расчёт времени и стоимости поездки на своём автомобиле (начало поездки в 18:01)
Предусловие:
- Открыть страницу сервиса Яндекс Маршруты.
Шаги:
- Ввести время начала поездки: 18:01.
- Ввести адрес в поле "Откуда": ул. Усачёва, 3.
- Ввести адрес в поле "Куда": Зубовский бульвар, 37.
- Выбрать режим "Свой".
- Выбрать вид транспорта "Свой автомобиль".
ОР: В панели результата отображаются следующие данные:
- Время в пути: 3 мин 36 с.
- Стоимость поездки: 30 руб.
- Кнопка действия
Окружение: Google Chrome не ниже версии 72, Yandex.Browser не ниже 18.1.0
ID-018: Расчёт времени и стоимости поездки на своём автомобиле (начало поездки в 18:02)
Предусловие:
- Открыть страницу сервиса Яндекс Маршруты.
Шаги:
- Ввести время начала поездки: 18:02.
- Ввести адрес в поле "Откуда": ул. Усачёва, 3.
- Ввести адрес в поле "Куда": Зубовский бульвар, 37.
- Выбрать режим "Свой".
- Выбрать вид транспорта "Свой автомобиль".
ОР: В панели результата отображаются следующие данные:
- Время в пути: 3 мин 36 с.
- Стоимость поездки: 30 руб.
- Кнопка действия
Окружение: Google Chrome не ниже версии 72, Yandex.Browser не ниже 18.1.0
ID-019: Расчёт времени и стоимости поездки на своём автомобиле (начало поездки в 21:59)
Предусловие:
- Открыть страницу сервиса Яндекс Маршруты.
Шаги:
- Ввести время начала поездки: 21:59.
- Ввести адрес в поле "Откуда": ул. Усачёва, 3.
- Ввести адрес в поле "Куда": Зубовский бульвар, 37.
- Выбрать режим "Свой".
- Выбрать вид транспорта "Свой автомобиль".
ОР: В панели результата отображаются следующие данные:
- Время в пути: 3 мин 36 с.
- Стоимость поездки: 30 руб.
- Кнопка действия
Окружение: Google Chrome не ниже версии 72, Yandex.Browser не ниже 18.1.0
ID-020: Расчёт времени и стоимости поездки на своём автомобиле (начало поездки в 22:00)
Предусловие:
- Открыть страницу сервиса Яндекс Маршруты.
Шаги:
- Ввести время начала поездки: 22:00.
- Ввести адрес в поле "Откуда": ул. Усачёва, 3.
- Ввести адрес в поле "Куда": Зубовский бульвар, 37.
- Выбрать режим "Свой".
- Выбрать вид транспорта "Свой автомобиль".
ОР: В панели результата отображаются следующие данные:
- Время в пути: 3 мин 36 с.
- Стоимость поездки: 30 руб.
- Кнопка действия
Окружение: Google Chrome не ниже версии 72, Yandex.Browser не ниже 18.1.0
ID-021: Расчёт времени и стоимости поездки на своём автомобиле (начало поездки в 23:00)
Предусловие:
- Открыть страницу сервиса Яндекс Маршруты.
Шаги:
- Ввести время начала поездки: 23:00.
- Ввести адрес в поле "Откуда": ул. Усачёва, 3.
- Ввести адрес в поле "Куда": Зубовский бульвар, 37.
- Выбрать режим "Свой".
- Выбрать вид транспорта "Свой автомобиль".
ОР: В панели результата отображаются следующие данные:
- Время в пути: 2 мин.
- Стоимость поездки: 30 руб.
- Кнопка действия
Окружение: Google Chrome не ниже версии 72, Yandex.Browser не ниже 18.1.0
ID-022: Расчёт времени и стоимости поездки на своём автомобиле (начало поездки в 22:01)
Предусловие:
- Открыть страницу сервиса Яндекс Маршруты.
Шаги:
- Ввести время начала поездки: 22:01.
- Ввести адрес в поле "Откуда": ул. Усачёва, 3.
- Ввести адрес в поле "Куда": Зубовский бульвар, 37.
- Выбрать режим "Свой".
- Выбрать вид транспорта "Свой автомобиль".
ОР: В панели результата отображаются следующие данные:
- Время в пути: 2 мин.
- Стоимость поездки: 30 руб.
- Кнопка действия
Окружение: Google Chrome не ниже версии 72, Yandex.Browser не ниже 18.1.0
ID-023: Расчёт времени и стоимости поездки на своём автомобиле (начало поездки в 22:02)
Предусловие:
- Открыть страницу сервиса Яндекс Маршруты.
Шаги:
- Ввести время начала поездки: 22:02.
- Ввести адрес в поле "Откуда": ул. Усачёва, 3.
- Ввести адрес в поле "Куда": Зубовский бульвар, 37.
- Выбрать режим "Свой".
- Выбрать вид транспорта "Свой автомобиль".
ОР: В панели результата отображаются следующие данные:
- Время в пути: 2 мин.
- Стоимость поездки: 30 руб.
- Кнопка действия
Окружение: Google Chrome не ниже версии 72, Yandex.Browser не ниже 18.1.0
ID-024: Расчёт времени и стоимости поездки на своём автомобиле (начало поездки в 23:59)
Предусловие:
- Открыть страницу сервиса Яндекс Маршруты.
Шаги:
- Ввести время начала поездки: 23:59.
- Ввести адрес в поле "Откуда": ул. Усачёва, 3.
- Ввести адрес в поле "Куда": Зубовский бульвар, 37.
- Выбрать режим "Свой".
- Выбрать вид транспорта "Свой автомобиль".
ОР: В панели результата отображаются следующие данные:
- Время в пути: 2 мин.
- Стоимость поездки: 30 руб.
- Кнопка действия
Окружение: Google Chrome не ниже версии 72, Yandex.Browser не ниже 18.1.0
ID-025: Расчёт времени и стоимости поездки на своём автомобиле (начало поездки в 00:00)
Предусловие:
- Открыть страницу сервиса Яндекс Маршруты.
Шаги:
- Ввести время начала поездки: 00:00.
- Ввести адрес в поле "Откуда": ул. Усачёва, 3.
- Ввести адрес в поле "Куда": Зубовский бульвар, 37.
- Выбрать режим "Свой".
- Выбрать вид транспорта "Свой автомобиль".
ОР: В панели результата отображаются следующие данные:
- Время в пути: 2 мин.
- Стоимость поездки: 30 руб.
- Кнопка действия
Окружение: Google Chrome не ниже версии 72, Yandex.Browser не ниже 18.1.0
Как ты думаешь, какую часть функциональности удалось покрыть тестами?
Фактически тестами покрыта только часть основной функциональности – логика расчёта времени и стоимости поездки на собственном автомобиле. Также подготовлены данные для составления тест-кейсов, проверяющих ввод полей времени и адресов.
Осталось подготовить данные и написать тест-кейсы для тестирования логики расчёта времени/стоимости других видов транспорта и способов передвижения: каршеринг, такси, велосипед, самокат, пешком; переключателей режимов и видов транспорта; отображения данных на карте; масштабирования карты; остальных элементов интерфейса: шапки, подвала.
Как ты думаешь, какие навыки позволили тебе выполнить проект?
Навыки тест-анализа: анализ и декомпозиция требований, составление ассоциативных карт и блок-схем.
Навыки тест-дизайна: выделение объектов и элементов тестирования, классов эквивалентности, подбор тестовых и граничных значений, оптимизация проверок.
Навыки написания тестовой документации: составление чек-листов и тест-кейсов.
1. Анализ требований
Изучи обновлённые требования к сервису Яндекс.Маршруты. Команда успела сделать первую версию продукта.
2. Выбор конфигураций для кроссбраузерного тестирования
Выбери операционные системы, браузеры и разрешения, в которых нужно провести тесты. В этой задаче примени парное тестирование, чтобы уменьшить количество комбинаций. Поддерживаемые ОС, браузеры и разрешения описаны в требованиях.
3. Тестовая документация для вёрстки
- Проанализируй требования к вёрстке и определи объекты тестирования: это все визуальные элементы на макете, у которых нужно проверить внешний вид и корректное расположение.
- Напиши чек-лист, чтобы протестировать вёрстку. Не забудь проверить: соответствие макетам (визуально — не «пиксель в пиксель»); как отображается результат расчёта стоимости и времени маршрута при длинных значениях; орфографию.
Напиши чек-лист в таблице «Чек-лист и результаты выполнения тестов: тестирование вёрстки и логики интерфейса».
4. Тестовая документация для логики интерфейса
Проанализируй требования к логике интерфейса и составь тестовую документацию.
- Напиши тест-кейсы на отображение результата расчёта стоимости и времени по всем видам транспорта. Чтобы составить тесты на отображение результатов, применяй технику «Таблица принятия решений». В тестировании используй только адреса из таблицы в уроке «Требования».
Важно: разработчики ещё не до конца реализовали расчёт стоимости поездки на бэкенде, поэтому логика расчёта суммы и времени может быть некорректной. Её тестировать не нужно.
- Составь чек-листы, которые помогут протестировать: отрисовку и скрытие точек на карте; отрисовку и скрытие маршрута на карте; масштабирование карты; перемещение карты. В требованиях есть ограниченный список адресов — тестировать можно только по ним.
Дополни чек-лист из задания 3. Оформи тест-кейсы в таблице «Тест-кейсы: логика интерфейса».
5. Тестирование и заведение баг-репортов
Протестируй сервис Яндекс.Маршруты.
У тебя уже есть набор конфигураций, в которых нужно проверить сервис. Но на тестирование осталось не так много времени, поэтому протестируй сервис на ограниченном наборе: в твоей текущей операционной системе в Яндекс.Браузере при разрешении экрана 800x600, а в Firefox — при 1280х720.
Чтобы проверить длинные строки в интерфейсе, примени DevTools — в нём можно заменить HTML; или Fiddler/Charles — в них можно изменить ответ от сервера.
В процессе тестирования отмечай результаты выполнения теста: PASSED или FAILED. Если тест со статусом FAILED, заведи баг-репорт в Яндекс.Трекере в очереди BUG и вписывай ID в соответствующую таблицу результатов.
Тестирование вёрстки нужно провести в обоих окружениях. Тесты на логику интерфейса можно сделать только в одном разрешении. В отчёте поставь статус N/A (Not Applicable, не применимо) около такого теста.
6. Подведение итогов
Представь, что тебе нужно рассказать команде о статусе протестированной части продукта:
- Какое впечатление оставил у тебя сервис как у пользователя?
- Расскажи, что именно тебе удалось протестировать в нескольких предложениях.
- Подведи итоги тестирования: например, тебе удалось провести все тесты и найти несколько багов. Приложи ссылки на них, чтобы коллеги могли их быстро открыть и посмотреть.
- Сделай вывод: как ты думаешь, можно ли отдать такой продукт пользователям, или его нужно доработать. Помни, тестировщик даёт рекомендации, а итоговое решение принимает команда менеджеров.
Требования 2.0
Яндекс.Маршруты — сервис, который строит маршруты для транспорта разных видов. Рассчитывает время и стоимость поездки.
Где поддерживается сервис
Поддерживаемые операционные системы: Win 7/8/10, macOS 10.14/10.15.
Поддерживаемые браузеры: Chrome, Yandex, Firefox, браузеры операционной системы (Edge / IE, Safari) последних и предпоследних версий.
Разрешения экрана: 800x600, 1280х720, 1920х1080.
Интерфейс
В интерфейсе есть поля «Время начала поездки», «Откуда», «Куда». Переключатели режимов маршрута: оптимальный, быстрый или свой, а также переключатели видов транспорта: свой автомобиль, каршеринг, такси, самокат, велосипед или пешком.
Пользователь вводит время отправления. Чтобы построить маршрут, нужно ввести начало маршрута, улицу и номер дома в поля «Откуда» и «Куда». В начале и конце адреса могут быть пробелы: они допустимы, но при снятии фокуса система удалит их.
Описание работы интерфейса
В стартовом состоянии поля «Время начала поездки», «Откуда» и «Куда» пустые. Режимы маршрутов «Оптимальный», «Быстрый» и «Свой» не выбраны; панель переключения видов транспорта неактивна.
Логика работы полей «Откуда» и «Куда»
Если поля адреса заполнены корректно, на карте отображаются точки A и B. Если поле «Откуда» заполнено некорректно, точка A не отображается. Если поле «Куда» заполнено некорректно, точка B не отображается. При некорректном значении поле подсвечивается красным; появляется сообщение об ошибке.
Примеры тестовых адресов есть в таблице.
Режим «Оптимальный» и «Быстрый»
Если выбрать режим «Оптимальный» или «Быстрый», система автоматически назначит вид транспорта; построится маршрут; отобразится время и стоимость поездки. Выбрать транспорт в этих режимах нельзя — панель видов транспорта неактивна.
Режим «Свой»
Если выбрать режим «Свой», панель видов транспорта активна — можно переключать. Под каждый вид транспорта строится маршрут; рассчитывается время и стоимость поездки.
Если сменить вид транспорта или поменять значение в любом поле, маршрут перестроится; время и стоимость поездки пересчитается.
Ограничения
Элементы системы | Требования |
---|---|
Поле ввода часов | Формат 24 часа. Нули перед однозначным числом обязательны. Корректны только целые числа от 0 до 23 включительно. При некорректном вводе подсвечивается красным, ошибка «Вы ввели некорректное время». |
Поле ввода минут | Только целые числа. Нули перед однозначным числом обязательны. При некорректном вводе подсвечивается красным, ошибка «Вы ввели некорректное время». |
Поле ввода адреса | Только русские буквы, цифры, пробел, тире, точка, запятая. Длина не более 50 символов. Пробелы до и после адреса удаляются при снятии фокуса. При некорректном вводе подсвечивается красным, ошибка «Вы ввели некорректный адрес». |
Переключатели режима | Оптимальный, Быстрый и Свой. Состояние каждого переключателя — активен, выбран. |
Переключатели видов транспорта | Пешком, самокат, велосипед, каршеринг, такси, собственный автомобиль. Состояние каждого переключателя — активен, неактивен, выбран. |
Карта
Карту можно перемещать, удерживая кнопку мыши, или тачпадом. Масштабировать карту можно кнопками «+» и «-», а также ползунком на карте, скроллом мыши или тачпадом.
Маршрут на карте
Маршрут можно построить только через форму слева. Маршруты работают только «в режиме чтения» — на карте передвигать или устанавливать маршрутные точки нельзя.
Макеты
Логика расчёта
Система получает данные о начале поездки, точке А и точке В. После этого рассчитывает продолжительность и стоимость поездки по определённому алгоритму.
Расстояние, скорость и стоимость за минуту или километр можно получить из таблиц. Этих данных достаточно, чтобы рассчитать время и стоимость поездки для каждого вида транспорта.
Вид транспорта | Как расчитать время | Стоимость на км |
---|---|---|
Пешком | Средняя скорость 4 км/ч | 0 р / км |
Шеринг самокатов | Средняя скорость | 10 км/ч |
Шеринг велосипедов | Средняя скорость | 12 км/ч |
Каршеринг | см. Таблицу «Средняя скорость автомобиля» | 9 р / мин |
Такси | см. Таблицу «Средняя скорость такси» | 11 р / мин |
Собственное авто | см. Таблицу «Средняя скорость автомобиля» | 20 р / км |
Средняя скорость автомобиля
Время суток | Средняя скорость автомобиля |
---|---|
00:01-08:00 | 45 км/ч |
08:01-12:00 | 30 км/ч |
12:01-18:00 | 40 км/ч |
18:01-22:00 | 25 км/ч |
22:01-00:00 | 45 км/ч |
Средняя скорость такси с учётом движения по выделенным полосам
Время суток | Средняя скорость такси |
---|---|
00:01-08:00 | 50 км/ч |
08:01-12:00 | 35 км/ч |
12:01-18:00 | 42 км/ч |
18:01-22:00 | 30 км/ч |
22:01-00:00 | 50 км/ч |
Матрица расстояний между адресами для автомобильных дорог, в километрах. В тестировании используй только адреса из таблицы.
Адрес | Усачева, 3 | Комсомольский проспект, 18 | Зубовский бульвар, 37 | М. Пироговская, 25 | Хамовнический Вал, 34 | Фрунзенская набережная, 46 | 3-я Фрунзенская улица, 12 |
---|---|---|---|---|---|---|---|
Усачева, 3 | 0 | 1,4 | 1,5 | 0,89 | 2,6 | 2,6 | 2,6 |
Комсомольский проспект, 18 | 1,4 | 0 | 2,9 | 2,3 | 2,3 | 2,3 | 2,3 |
Зубовский бульвар, 37 | 1,4 | 1,5 | 0 | 1,9 | 3,8 | 3 | 3,3 |
М. Пироговская, 25 | 1,5 | 3 | 2,4 | 0 | 1,2 | 3,4 | 2,3 |
Хамовнический Вал, 34 | 1,5 | 3,7 | 3,7 | 1,2 | 0 | 1,7 | 1,7 |
Фрунзенская набережная, 46 | 3,2 | 3,9 | 4,7 | 2,7 | 1,7 | 0 | 2,2 |
3-я Фрунзенская улица, 12 | 1,4 | 2,4 | 3,5 | 2,3 | 1,4 | 1,3 | 0 |
Матрица расстояний между адресами для пешеходов, в километрах. В тестировании используй только адреса из таблицы.
Адрес | Усачёва, 3 | Комсомольский проспект, 18 | Зубовский бульвар, 37 | М. Пироговская, 25 | Хамовнический Вал, 34 | Фрунзенская набережная, 46 | 3-я Фрунзенская улица, 12 |
---|---|---|---|---|---|---|---|
Усачёва, 3 | 0 | 0,96 | 1,4 | 0,91 | 1,4 | 1,7 | 1,1 |
Комсомольский проспект, 18 | 1 | 0 | 1,3 | 1,9 | 2 | 1,7 | 1,2 |
Зубовский бульвар, 37 | 1,4 | 1,3 | 0 | 1,9 | 2,7 | 2,7 | 2,3 |
М. Пироговская, 25 | 0,91 | 1,9 | 1,9 | 0 | 0,75 | 1,5 | 1,2 |
Хамовнический Вал, 34 | 1,4 | 2 | 2,7 | 0,75 | 0 | 1,4 | 1,2 |
Фрунзенская набережная, 46 | 1,7 | 1,7 | 2,7 | 1,5 | 1,4 | 0 | 0,57 |
3-я Фрунзенская улица, 12 | 1,1 | 1,2 | 2,3 | 1,2 | 1,2 | 0,57 | 0 |
Обрати внимание: для подсчёта времени и стоимости маршрута тебе доступны таблицы со скоростью движения разных видов транспорта. Они показывают скорость движения автомобиля в разное время суток. Если ты берёшь такие тестовые значения, что поездка захватывает несколько временных интервалов, алгоритм выбирает скорость автомобиля из того диапазона, в котором поездка началась.
1. Анализ требований
Что изменилось в требованиях?
Добавлена следующая информация:
- поддерживаемые ОС, браузеры и разрешения экрана;
- способы перемещения и масштабирования;
- построение маршрута на карте: его можно построить только через форму слева, на карте передвигать или устанавливать маршрутные точки нельзя.
Кто пользователь?
Человек, которому нужно переместиться из одной точки города в другую.
Какие задачи и проблемы он решает?
Получает информацию о том, как добраться из одной точки города в другую: на каком транспорте, сколько времени это займёт и сколько будет стоить.
Какое типичное поведение пользователя?
Пользователь вводит входные данные – время начала движения и адреса начала и конца маршрута, выбирает режим перемещения и вид транспорта (там, где возможно) и получает выходные данные – информацию о продолжительности и стоимости поездки на выбранном транспорте.
Чем он пользуется?
Компьютером/ноутбуком под управлением Windows 7/8/10 или macOs 10.14/10.15, браузером Chrome, Yandex, Firefox, Edge/IE или Safari последних и предпоследних версий. Разрешения экрана компьютера: 800x600, 1280х720 или 1920х1080.
2. Выбор конфигураций для кроссбраузерного тестирования
Сервис поддерживает:
- операционные системы: Win 7/8/10, macOS 10.14/10.15;
- браузеры: Chrome, Yandex, Firefox, браузеры операционной системы (Edge / IE, Safari) последних и предпоследних версий;
- разрешения экрана: 800x600, 1280х720, 1920х1080.
В интернете ищем информацию об особенностях работы поддерживаемых браузеров в ОС; смотрим статистику использования браузеров по визитам за последний месяц (1-31 марта 2020 года) на Яндекс.Радаре:
Windows
Google Chrome 42,43%
Яндекс.Браузер 32,82%
Firefox 7,24%
Edge 3,43%
Internet Explorer 2,36%
Safari <1%
*разработка Safari для Windows прекращена, последняя версия: 5.1.7 от 9 мая 2012
macOS
Safari 53,86%
Google Chrome 34,27%
Яндекс.Браузер 5,78%
Firefox 3,18%
Edge 0,02%
*IE для macOS не поддерживается с 2005 года
По заданию нужно протестировать все комбинации ОС, браузеров и разрешений экрана. Уменьшаем количество окружений, применяя парное тестирование с помощью сервиса https://pairwise.yuuniworks.com.
Входные данные:
os: Windows7, Windows8, Windows10, macOs1014, macOs1015
browser: Chrome81, Chrome80, Yandex20, Yandex19, Firefox75, Firefox74, Edge80, Edge79, IE11, IE10, Safari13, Safari12
size: 800600, 1280720, 19201080
if [os] = "macOs1014" OR [os] = "macOs1015"
then [browser] <> "IE11" AND [browser] <> "IE10";
if [os] = "Windows7" OR [os] = "Windows8" OR [os] = "Windows10"
then [browser] <> "Safari13" AND [browser] <> "Safari12";
Количество окружений для тестирования сократилось до 52 (см. таблицу «Конфигурации браузеров, ОС и разрешений»).
Конфигурации браузеров, ОС и разрешений
№ | ОС | Браузер | Разрешение |
---|---|---|---|
1 | Windows 7 | Chrome 80 | 800x600 |
2 | Windows 7 | Edge 80 | 1280x720 |
3 | Windows 7 | IE 10 | 1920x1080 |
4 | Windows 7 | Yandex 20 | 800x600 |
5 | Windows 7 | Yandex 19 | 1920x1080 |
6 | Windows 7 | Firefox 75 | 1920x1080 |
7 | Windows 7 | IE 11 | 1920x1080 |
8 | Windows 7 | Edge 79 | 800x600 |
9 | Windows 7 | Chrome 81 | 1280x720 |
10 | Windows 7 | Firefox 74 | 1920x1080 |
11 | Windows 8 | Yandex 20 | 1920x1080 |
12 | Windows 8 | IE 10 | 800x600 |
13 | Windows 8 | Chrome 80 | 1280x720 |
14 | Windows 8 | Firefox 74 | 800x600 |
15 | Windows 8 | Yandex 19 | 1280x720 |
16 | Windows 8 | Firefox 75 | 1280x720 |
17 | Windows 8 | Edge 80 | 1920x1080 |
18 | Windows 8 | Chrome 81 | 1280x720 |
19 | Windows 8 | Edge 79 | 800x600 |
20 | Windows 8 | IE 11 | 800x600 |
21 | Windows 10 | Yandex 19 | 800x600 |
22 | Windows 10 | Firefox 74 | 1920x1080 |
23 | Windows 10 | Edge 79 | 1920x1080 |
24 | Windows 10 | Edge 80 | 1280x720 |
25 | Windows 10 | IE 11 | 1280x720 |
26 | Windows 10 | Chrome 81 | 800x600 |
27 | Windows 10 | Yandex 20 | 1280x720 |
28 | Windows 10 | Chrome 80 | 800x600 |
29 | Windows 10 | IE 10 | 1280x720 |
30 | Windows 10 | Firefox 75 | 800x600 |
31 | macOs 10.14 | Edge 80 | 1920x1080 |
32 | macOs 10.14 | Edge 79 | 1280x720 |
33 | macOs 10.14 | Chrome 80 | 800x600 |
34 | macOs 10.14 | Chrome 81 | 1920x1080 |
35 | macOs 10.14 | Yandex 19 | 800x600 |
36 | macOs 10.14 | Safari 13 | 1920x1080 |
37 | macOs 10.14 | Firefox 74 | 800x600 |
38 | macOs 10.14 | Safari 12 | 1920x1080 |
39 | macOs 10.14 | Firefox 75 | 1280x720 |
40 | macOs 10.14 | Safari 12 | 1280x720 |
41 | macOs 10.14 | Yandex 20 | 1920x1080 |
42 | macOs 10.14 | Safari 13 | 800x600 |
43 | macOs 10.15 | Chrome 80 | 1920x1080 |
44 | macOs 10.15 | Edge 80 | 800x600 |
45 | macOs 10.15 | Firefox 74 | 1280x720 |
46 | macOs 10.15 | Safari 12 | 800x600 |
47 | macOs 10.15 | Firefox 75 | 800x600 |
48 | macOs 10.15 | Chrome 81 | 1280x720 |
49 | macOs 10.15 | Safari 13 | 1280x720 |
50 | macOs 10.15 | Yandex 19 | 1920x1080 |
51 | macOs 10.15 | Yandex 20 | 1920x1080 |
52 | macOs 10.15 | Edge 79 | 1920x1080 |
3. Тестовая документация для вёрстки
Чек-лист и результаты выполнения тестов: тестирование вёрстки и логики интерфейса
№ | Описание проверки | macOs 10.15.2, Yandex 20.3.0, 800x600 | macOs 10.15.2, Firefox 75.0, 1280x720 | ID баг-репорта |
---|---|---|---|---|
1 | После загрузки страницы в консоли отсутствуют ошибки и предупреждения | FAILED | FAILED | BUG-8316, BUG-8317 |
2 | Фавикон сайта отображается на вкладке браузера | FAILED | FAILED | BUG-8245 |
3 | Заголовок страницы корректно отображается на вкладке и в адресной строке браузера | FAILED | FAILED | BUG-8243 |
4 | Шапка сайта размещена согласно макету и полностью отображается; слова "Яндекс" и "Маршруты" в шапке являются ссылками, при нажатии на них открываются страницы соответствующих сервисов | FAILED | FAILED | BUG-8251 |
5 | Поля ввода времени размещены согласно макету и полностью отображаются | PASSED | PASSED | - |
6 | Поля ввода адреса размещены согласно макету и полностью отображаются | PASSED | PASSED | - |
7 | Значки слева от полей адреса размещены согласно макету, полностью отображаются и совпадают по цвету с соответствующими точками маршрута на карте | FAILED | FAILED | BUG-8331 |
8 | Панель режимов маршрутов размещена согласно макету и полностью отображается | PASSED | PASSED | - |
9 | Панель видов транспорта размещена согласно макету и полностью отображается | FAILED | FAILED | BUG-8299 |
10 | Панель результата расчёта времени и стоимости поездки размещена согласно макету и полностью отображается | FAILED | FAILED | BUG-8351, BUG-8368 |
11 | В стартовом состоянии все поля ввода пустые, режимы маршрутов не выбраны, панель видов транспорта неактивна | PASSED | PASSED | - |
12 | Шрифты формы соответствуют макету | FAILED | FAILED | BUG-8373 |
13 | Все тексты не содержат орфографических ошибок | FAILED | FAILED | BUG-8285 |
14 | Карта размещена согласно макету и полностью отображается | PASSED | PASSED | - |
15 | Ссылка "Открыть в Яндекс.Картах" размещена согласно макету, полностью отображается; при нажатии открывается страница Яндекс.Карт в новой вкладке | PASSED | PASSED | - |
16 | Копирайт Яндекса и ссылка "Условия использования" размещены согласно макету, полностью отображаются; при нажатии на ссылку в новой вкладке открывается страница условий использования сервиса Яндекс.Карты | PASSED | PASSED | - |
17 | Вёрстка не ломается при вводе длинных значений в полях времени и адреса и в панели результата | PASSED | PASSED | - |
18 | Сообщения об ошибках размещены согласно макету и полностью отображаются | PASSED | FAILED | BUG-8371 |
19 | При вводе некорректных значений в полях времени и перемещении фокуса отображается ошибка-подсказка: "Вы ввели некорректное время" | PASSED | PASSED | - |
20 | При вводе корректных значений в поля адресов на карте отображаются точки А и В; при некорректных значениях точки не отображаются | PASSED | PASSED | - |
21 | При вводе некорректного значения в поле Откуда и перемещении фокуса отображается ошибка-подсказка: "Вы ввели некорректный адрес" | FAILED | FAILED | BUG-8370 |
22 | При вводе некорректного значения в поле Куда и перемещении фокуса отображается ошибка-подсказка: "Вы ввели некорректный адрес" | PASSED | PASSED | - |
23 | При выборе режимов "Оптимальный" или "Быстрый" панель видов транспорта неактивна | PASSED | PASSED | - |
24 | При выборе режима "Свой" панель видов транспорта становится активной | PASSED | PASSED | - |
25 | При переключении видов транспорта в режиме "Свой" для каждого транспорта корректно строится маршрут, рассчитывается время и стоимость поездки | FAILED | FAILED | BUG-8355 |
26 | В режиме "Свой" при смене вида транспорта или значений в любом поле маршрут перестраивается, время и стоимость поездки пересчитывается | FAILED | FAILED | BUG-8367 |
27 | Всплывающие подсказки: для каждого элемента всплывает корректная надпись; она не должна перекрывать свой элемент | FAILED | FAILED | BUG-8314 |
28 | Контекстное меню: подсвечивается при наведении курсора; выполняется переход в указанное место или выполнение действия при выборе пункта меню | PASSED | FAILED | BUG-8384 |
29 | Поля ввода: обязательность заполнения полей формы; возможность редактировать введённые данные; название полей соответствует их логике; формат данных полей ввода соответствует требованиям | FAILED | FAILED | BUG-8369, BUG-8372 |
30 | Полосы прокрутки: их нет, если контент помещается на странице; можно двигаться по полосе прокрутки мышью, кнопками "Page up" и "Page down", "Home" и "End"; все полосы прокрутки формы должны быть одного размера и цвета | PASSED | FAILED | BUG-8393 |
31 | Кнопки (Оптимальный, Быстрый, Свой, иконки видов транспорта, кнопка действия в панели результата): название кнопки соответствует её логическому замыслу, при нажатии вид кнопки должен меняться; нажатие на кнопку вызывает одно действие; повторное нажатие не вызывает повторное действие; кнопки, которые не доступны для нажатия, не скрыты, а «засушены»; курсор мыши не меняется при наведении на неактивные кнопки; пространство между кнопками не вызывает никакого действия | FAILED | FAILED | BUG-8351, BUG-8397 |
32 | Ссылки: клик по ссылке вызывает действие, которое описано в требованиях; при наведении курсора на ссылку её вид меняется, так же как и вид курсора; ссылки одинаковые по дизайну | PASSED | PASSED | - |
33 | Плейсхолдеры: все поля ввода содержат плейсхолдеры; плейсхолдер исчезает, если вывести фокус в поле или начать вводить данные; плейсхолдер появляется, если очистить поле или убрать из него фокус; плейсхолдер в поле отличается внешним видом от данных, которые вводит пользователь; все плейсхолдеры формы выглядят одинаково | FAILED | FAILED | BUG-8374, BUG-8395 |
34 | На странице сервиса нет лишних элементов | FAILED | FAILED | BUG-8254 |
35 | Карта масштабируется кнопками «+» и «-», ползунком на карте, скроллом мыши и тачпадом | PASSED | N/A | - |
36 | Карта перемещается с помощью мыши и тачпада | PASSED | N/A | - |
37 | Точки адресов и маршрут отображаются на карте при вводе корректных значений в поля Откуда и Куда; при удалении значений или некорректном вводе точки и маршрут скрываются | FAILED | N/A | BUG-8334, BUG-8382 |
4. Тест-кейсы: логика интерфейса
ID-1: Отображение панели результата расчёта стоимости и времени поездки в режиме "Оптимальный"
Предусловие:
- Открыть Яндекс.Маршруты: [https://qa-routes.praktikum-services.ru].
Шаги:
- Ввести время начала поездки: 12:00.
- В поле "Откуда" ввести адрес: Усачева, 3.
- В поле "Куда" ввести адрес: Фрунзенская набережная, 46.
- Выбрать режим "Оптимальный".
ОР: В панели результата расчёта отображается информация о поездке.
В левой части панели:
- <Название вида транспорта> ~ <стоимость> руб.
- В пути <время> мин.
- Кнопка действия синего цвета с надписью, соответствующей виду транспорта; например, для такси: "Вызвать такси"
В правой части панели:
- Картинка вида транспорта
Окружение: Yandex.Browser не ниже 20.0, разрешение 800х600; Firefox не ниже 75.0, разрешение 1280х720
Результат: FAILED
ID баг-репорта: BUG-8351
ID-2: Отображение панели результата расчёта стоимости и времени поездки в режиме "Быстрый"
Предусловие:
- Открыть Яндекс.Маршруты: [https://qa-routes.praktikum-services.ru].
Шаги:
- Ввести время начала поездки: 12:00.
- В поле "Откуда" ввести адрес: Усачева, 3.
- В поле "Куда" ввести адрес: Фрунзенская набережная, 46.
- Выбрать режим "Быстрый".
ОР: В панели результата расчёта отображается информация о поездке.
В левой части панели:
- <Название вида транспорта> ~ <стоимость> руб.
- В пути <время> мин.
- Кнопка действия синего цвета с надписью, соответствующей виду транспорта; например, для такси: "Вызвать такси"
В правой части панели:
- Картинка вида транспорта
Окружение: Yandex.Browser не ниже 20.0, разрешение 800х600; Firefox не ниже 75.0, разрешение 1280х720
Результат: FAILED
ID баг-репорта: BUG-8351
ID-3: Отображение панели результата расчёта стоимости и времени поездки в режиме "Свой" для каршеринга
Предусловие:
- Открыть Яндекс.Маршруты: [https://qa-routes.praktikum-services.ru].
Шаги:
- Ввести время начала поездки: 12:00.
- В поле "Откуда" ввести адрес: Усачева, 3.
- В поле "Куда" ввести адрес: Фрунзенская набережная, 46.
- Выбрать режим "Свой".
- Выбрать вид транспорта "Каршеринг".
ОР: В панели результата расчёта отображается информация о поездке.
В левой части панели:
- Каршеринг ~ <стоимость> руб.
- В пути <время> мин.
- Кнопка действия синего цвета с надписью, соответствующей виду транспорта.
В правой части панели:
- Картинка каршеринга
Окружение: Yandex.Browser не ниже 20.0, разрешение 800х600; Firefox не ниже 75.0, разрешение 1280х720
Результат: FAILED
ID баг-репорта: BUG-8351, BUG-8368
ID-4: Отображение панели результата расчёта стоимости и времени поездки в режиме "Свой" для пешехода
Предусловие:
- Открыть Яндекс.Маршруты: [https://qa-routes.praktikum-services.ru].
Шаги:
- Ввести время начала поездки: 12:00.
- В поле "Откуда" ввести адрес: Усачева, 3.
- В поле "Куда" ввести адрес: Фрунзенская набережная, 46.
- Выбрать режим "Свой".
- Выбрать вид транспорта "Пешком".
ОР: В панели результата расчёта отображается информация о поездке.
В левой части панели:
- Пешеход Бесплатно.
- В пути <время> мин.
- Кнопка действия синего цвета с надписью, соответствующей виду транспорта.
В правой части панели:
- Картинка пешехода
Окружение: Yandex.Browser не ниже 20.0, разрешение 800х600; Firefox не ниже 75.0, разрешение 1280х720
Результат: FAILED
ID баг-репорта: BUG-8351
ID-5: Отображение панели результата расчёта стоимости и времени поездки в режиме "Свой" для такси
Предусловие:
- Открыть Яндекс.Маршруты: [https://qa-routes.praktikum-services.ru].
Шаги:
- Ввести время начала поездки: 12:00.
- В поле "Откуда" ввести адрес: Усачева, 3.
- В поле "Куда" ввести адрес: Фрунзенская набережная, 46.
- Выбрать режим "Свой".
- Выбрать вид транспорта "Такси".
ОР: В панели результата расчёта отображается информация о поездке.
В левой части панели:
- Такси ~ <стоимость> руб.
- В пути <время> мин.
- Кнопка действия синего цвета с надписью "Вызвать такси".
В правой части панели:
- Картинка такси
Окружение: Yandex.Browser не ниже 20.0, разрешение 800х600; Firefox не ниже 75.0, разрешение 1280х720
Результат: FAILED
ID баг-репорта: BUG-8351
ID-6: Отображение панели результата расчёта стоимости и времени поездки в режиме "Свой" для велосипеда
Предусловие:
- Открыть Яндекс.Маршруты: [https://qa-routes.praktikum-services.ru].
Шаги:
- Ввести время начала поездки: 12:00.
- В поле "Откуда" ввести адрес: Усачева, 3.
- В поле "Куда" ввести адрес: Фрунзенская набережная, 46.
- Выбрать режим "Свой".
- Выбрать вид транспорта "Велосипед".
ОР: В панели результата расчёта отображается информация о поездке.
В левой части панели:
- Велосипед ~ <стоимость> руб.
- В пути <время> мин.
- Кнопка действия синего цвета с надписью "Вызвать такси".
В правой части панели:
- Картинка велосипеда
Окружение: Yandex.Browser не ниже 20.0, разрешение 800х600; Firefox не ниже 75.0, разрешение 1280х720
Результат: FAILED
ID баг-репорта: BUG-8351
ID-7: Отображение панели результата расчёта стоимости и времени поездки в режиме "Свой" для самоката
Предусловие:
- Открыть Яндекс.Маршруты: [https://qa-routes.praktikum-services.ru].
Шаги:
- Ввести время начала поездки: 12:00.
- В поле "Откуда" ввести адрес: Усачева, 3.
- В поле "Куда" ввести адрес: Фрунзенская набережная, 46.
- Выбрать режим "Свой".
- Выбрать вид транспорта "Самокат".
ОР: В панели результата расчёта отображается информация о поездке.
В левой части панели:
- Самокат ~ <стоимость> руб.
- В пути <время> мин.
- Кнопка действия синего цвета с надписью "Вызвать такси".
В правой части панели:
- Картинка самоката
Окружение: Yandex.Browser не ниже 20.0, разрешение 800х600; Firefox не ниже 75.0, разрешение 1280х720
Результат: FAILED
ID баг-репорта: BUG-8351
ID-8: Отображение панели результата расчёта стоимости и времени поездки в режиме "Свой" для своего автомобиля
Предусловие:
- Открыть Яндекс.Маршруты: [https://qa-routes.praktikum-services.ru].
Шаги:
- Ввести время начала поездки: 12:00.
- В поле "Откуда" ввести адрес: Усачева, 3.
- В поле "Куда" ввести адрес: Фрунзенская набережная, 46.
- Выбрать режим "Свой".
- Выбрать вид транспорта "Свой автомобиль".
ОР: В панели результата расчёта отображается информация о поездке.
В левой части панели:
- Авто ~ <стоимость> руб.
- В пути <время> мин.
- Кнопка действия синего цвета с надписью "Вызвать такси".
В правой части панели:
- Картинка автомобиля
Окружение: Yandex.Browser не ниже 20.0, разрешение 800х600; Firefox не ниже 75.0, разрешение 1280х720
Результат: FAILED
ID баг-репорта: BUG-8351
5-6. Тестирование и заведение баг-репортов. Подведение итогов
Команда протестировала вёрстку и логику интерфейса. Мы проверили соответствие вёрстки макету и реализацию фронтенда: работу полей ввода, панелей выбора режимов и транспорта, а также отображение расчёта времени и стоимости поездки в панели результата и точек и линий маршрута на карте.
Среди найденных ошибок нет ни одного блокера и есть только два критических бага. Однако есть довольно много ошибок с низким и незначительным приоритетом, которые относятся к удобству использования сервиса и его имиджу. Команда рекомендует исправить ошибки перед передачей продукта пользователям.
Всего мы нашли 23 бага и дали одну рекомендацию по улучшению сервиса. Вот список баг-репортов:
BUG-8245: Не отображается фавикон Яндекс.Маршрутов во вкладке браузера
Шаги воспроизведения:
- Открыть Яндекс.Маршруты: [https://qa-routes.praktikum-services.ru].
Ожидаемый результат: во вкладке браузера открытой страницы сервиса отображается фавикон.
Фактический результат: фавикон не отображается.
Окружение:
macOs 10.15.2
Яндекс.Браузер 20.3.0.2220 (64-bit)
Разрешение экрана: 800x600
Firefox 75.0 (64-bit)
Разрешение экрана: 1280x720
Скриншот: [https://yadi.sk/i/CyFZgF25EuAA6g]
Приоритет: незначительный
BUG-8243: Некорректный заголовок страницы "Яндекс.Маршруты" на всплывающей подсказке во вкладке браузера
Предусловия:
- Открыть Яндекс.Маршруты: [https://qa-routes.praktikum-services.ru].
Шаги воспроизведения:
- Навести курсор мыши на вкладку браузера.
Ожидаемый результат: появляется всплывающая подсказка с заголовком страницы: "Яндекс.Практикум - Яндекс.Маршруты"
Фактический результат: появляется всплывающая подсказка с некорректным заголовком страницы: "Яндекс.Практикум - Яндекс.Маршрутыundefined"
Окружение:
macOs 10.15.2
Яндекс.Браузер 20.3.0.2220 (64-bit)
Разрешение экрана: 800x600
Firefox 75.0 (64-bit)
Разрешение экрана: 1280x720
Скриншот: [https://yadi.sk/d/l7mbS4BL6OPS3A]
Приоритет: незначительный
BUG-8251: Слова "Яндекс" и "Маршруты" в шапке не являются ссылками
Шаги воспроизведения:
- Открыть Яндекс.Маршруты: [https://qa-routes.praktikum-services.ru].
Ожидаемый результат: название сервиса в шапке должно состоять из двух ссылок: ссылка "Яндекс" ведёт на главную страницу Яндекса, ссылка "Маршруты" - на страницу сервиса Яндекс.Маршруты.
Фактический результат: слова "Яндекс" и "Маршруты" в шапке не являются ссылками.
Окружение:
macOs 10.15.2
Яндекс.Браузер 20.3.0.2220 (64-bit)
Разрешение экрана: 800x600
Firefox 75.0 (64-bit)
Разрешение экрана: 1280x720
Скриншот: [https://yadi.sk/i/7LEp6uxb9xar8Q]
Приоритет: низкий
BUG-8254: В шапке страницы Яндекс.Маршрутов присутствует лишний элемент
Шаги воспроизведения:
- Открыть Яндекс.Маршруты: [https://qa-routes.praktikum-services.ru].
Ожидаемый результат: в шапке отображается только название сервиса - "Яндекс Маршруты".
Фактический результат: в шапке справа от названия сервиса отображаются слова "Учебный тренажёр".
Окружение:
macOs 10.15.2
Яндекс.Браузер 20.3.0.2220 (64-bit)
Разрешение экрана: 800x600
Firefox 75.0 (64-bit)
Разрешение экрана: 1280x720
Скриншот: [https://yadi.sk/i/8dZ-azY9_FG0zw]
Приоритет: незначительный
BUG-8285: Орфографическая ошибка в названии полей времени
Шаги воспроизведения:
- Открыть Яндекс.Маршруты: [https://qa-routes.praktikum-services.ru].
Ожидаемый результат: все тексты не содержат орфографических ошибок.
Фактический результат: орфографическая ошибка в названии полей времени.
Окружение:
macOs 10.15.2
Яндекс.Браузер 20.3.0.2220 (64-bit)
Разрешение экрана: 800x600
Firefox 75.0 (64-bit)
Разрешение экрана: 1280x720
Скриншот: [https://yadi.sk/i/eLGKnSkcSZXmRQ]
Приоритет: незначительный
BUG-8299: Одинаковые иконки для каршеринга и своего авто в панели транспорта
Описание: Для удобства использования сервиса в панели переключения видов транспорта должны отображаться уникальные иконки для каждого вида транспорта. На макете иконка для своего авто отображается некорректно; в вёрстке отображаются одинаковые иконки для каршеринга и своего авто.
Шаги воспроизведения:
- Открыть Яндекс.Маршруты: [https://qa-routes.praktikum-services.ru].
Ожидаемый результат: в панели переключения видов транспорта отображаются уникальные иконки для каждого вида транспорта.
Фактический результат: отображаются одинаковые иконки для каршеринга и своего авто.
Окружение:
macOs 10.15.2
Яндекс.Браузер 20.3.0.2220 (64-bit)
Разрешение экрана: 800x600
Firefox 75.0 (64-bit)
Разрешение экрана: 1280x720
Скриншот: [https://yadi.sk/i/W-hhJYw7x98uQw]
Приоритет: низкий
BUG-8314: У элементов формы нет всплывающих подсказок
Предусловие:
- Открыть Яндекс.Маршруты: [https://qa-routes.praktikum-services.ru].
Шаги воспроизведения:
- Навести курсор мыши на элементы формы, для которых должны быть предусмотрены всплывающие подсказки: поля ввода, кнопки переключения режимов, иконки на панели выбора видов транспорта.
Ожидаемый результат: у элементов есть всплывающие подсказки.
Фактический результат: у элементов нет всплывающих подсказок.
Окружение:
macOs 10.15.2
Яндекс.Браузер 20.3.0.2220 (64-bit)
Разрешение экрана: 800x600
Firefox 75.0 (64-bit)
Разрешение экрана: 1280x720
Скринкаст: [https://yadi.sk/i/CGF0Hgf3MMmz-Q]
Приоритет: низкий
BUG-8316: После загрузки страницы в консоли появляются предупреждения о некорректно настроенных куках
Шаги воспроизведения:
- Очистить кэш и куки браузера.
- Открыть Яндекс.Маршруты:[хhttps://qa-routes.praktikum-services.ru].
- Открыть DevTools и перейти на вкладку Console.
Ожидаемый результат: в консоли нет сообщений об ошибках и предупреждений.
Фактический результат: в консоли есть предупреждения о некорректно настроенных куках.
Окружение:
macOs 10.15.2
Яндекс.Браузер 20.3.0.2220 (64-bit)
Разрешение экрана: 800x600
Скриншот: [https://yadi.sk/i/2eg7_QcaS9Qpsw]
Приоритет: незначительный
BUG-8317: После загрузки страницы в консоли появляется предупреждение об использовании нестандартного свойства
Шаги воспроизведения:
- Очистить кэш и куки браузера.
- Открыть Яндекс.Маршруты: [https://qa-routes.praktikum-services.ru].
- Открыть DevTools и перейти на вкладку Console.
Ожидаемый результат: в консоли нет сообщений об ошибках и предупреждений.
Фактический результат: в консоли есть предупреждение об использовании нестандартного свойства.
Окружение:
macOs 10.15.2
Firefox 75.0 (64-bit)
Разрешение экрана: 1280x720
Скриншот: [https://yadi.sk/i/RSP4xCZi0zKBvw]
Приоритет: незначительный
BUG-8331: Цвета значков полей адреса отличаются от цветов соответствующих точек маршрута на карте
Предусловия:
- Открыть Яндекс.Маршруты: [https://qa-routes.praktikum-services.ru].
Шаги воспроизведения:
- Ввести время начала поездки.
- Ввести адрес в поле Откуда: Усачева, 3.
- Ввести адрес в поле Куда: Фрунзенская набережная, 46.
- Выбрать один из режимов: Оптимальный, Быстрый, Свой.
- Если выбран режим Свой, выбрать вид транспорта.
Ожидаемый результат: цвета значков полей адреса совпадают с цветами соответствующих точек маршрута на карте.
Фактический результат: цвета отличаются (перепутаны).
Окружение:
macOs 10.15.2
Яндекс.Браузер 20.3.0.2220 (64-bit)
Разрешение экрана: 800x600
Firefox 75.0 (64-bit)
Разрешение экрана: 1280x720
Скриншот: [https://yadi.sk/i/6M7Iwkg5hskIRA]
Приоритет: низкий
BUG-8334: Точки адресов и маршрут на карте отображаются только после заполнения всей формы
Описание:
По требованиям, если поля адреса заполнены корректно, на карте отображаются точки A и B. Однако для того, чтобы точки отобразились на карте и простроился маршрут, приходится заполнять не только поля адреса, но и все остальные элементы формы.
Предусловия:
- Открыть Яндекс.Маршруты: [https://qa-routes.praktikum-services.ru].
Шаги воспроизведения:
- Ввести адрес в поле Откуда: Усачева, 3.
- Ввести адрес в поле Куда: Фрунзенская набережная, 46.
Ожидаемый результат: точки адресов и маршрут отображаются на карте.
Фактический результат: точки адресов и маршрут не отображаются.
Окружение:
macOs 10.15.2
Яндекс.Браузер 20.3.0.2220 (64-bit)
Разрешение экрана: 800x600
Скриншот: [https://yadi.sk/i/ia9ewomAdJoOWQ]
Приоритет: незначительный
BUG-8351: В панели результата расчёта поездки не отображаются иконка вида транспорта и кнопка действия
Предусловия:
- Открыть Яндекс.Маршруты: [https://qa-routes.praktikum-services.ru].
Шаги воспроизведения:
- Ввести время начала поездки.
- Ввести адрес в поле Откуда: Усачева, 3.
- Ввести адрес в поле Куда: Фрунзенская набережная, 46.
- Выбрать один из режимов: Оптимальный, Быстрый, Свой.
- Если выбран режим Свой, выбрать вид транспорта.
Ожидаемый результат: в панели результата расчёта поездки для каждого режима отображаются данные: название вида транспорта, стоимость и время поездки, картинка соответствующего вида транспорта и кнопка действия.
Фактический результат: картинка вида транспорта и кнопка действия не отображаются.
Окружение:
macOs 10.15.2
Яндекс.Браузер 20.3.0.2220 (64-bit)
Разрешение экрана: 800x600
Firefox 75.0 (64-bit)
Разрешение экрана: 1280x720
Скриншот: [https://yadi.sk/i/J4YykF5PZqgJQQ]
Приоритет: критичный
BUG-8355: В режимах Свой-Велосипед и Свой-Самокат на карте отображается иконка с пешеходом и некорректным расстоянием между адресами
Предусловия:
- Открыть Яндекс.Маршруты: [https://qa-routes.praktikum-services.ru].
Шаги воспроизведения:
- Ввести время начала поездки.
- Ввести адрес в поле Откуда: Усачева, 3.
- Ввести адрес в поле Куда: Фрунзенская набережная, 46.
- Выбрать режим Свой.
- Выбрать вид транспорта Велосипед.
Ожидаемый результат: на карте отображается иконка с изображением выбранного вида транспорта и корректным расстоянием между адресами (для указанных в шагах адресов - 2,6 км).
Фактический результат: на карте отображается иконка с пешеходом и некорректным расстоянием между адресами (1,8 км).
- Выбрать вид транспорта Самокат.
Ожидаемый результат: на карте отображается иконка с изображением выбранного вида транспорта и корректным расстоянием между адресами (для указанных в шагах адресов - 2,6 км).
Фактический результат: на карте отображается иконка с пешеходом и некорректным расстоянием между адресами (1,8 км).
Окружение:
macOs 10.15.2
Яндекс.Браузер 20.3.0.2220 (64-bit)
Разрешение экрана: 800x600
Firefox 75.0 (64-bit)
Разрешение экрана: 1280x720
Скриншот: [https://yadi.sk/i/qKS4rcmDhDOVAQ]
Приоритет: средний
BUG-8367: В режиме Свой-Пешком на карте не отображаются точки и линии маршрута и не появляется кнопка "Открыть маршрут"
Предусловия:
- Открыть Яндекс.Маршруты: [https://qa-routes.praktikum-services.ru].
Шаги воспроизведения:
- Ввести время начала поездки.
- Ввести адрес в поле Откуда: Усачева, 3.
- Ввести адрес в поле Куда: Фрунзенская набережная, 46.
- Выбрать режим Свой.
- Выбрать вид транспорта Пешком.
Ожидаемый результат: на карте построится маршрут, кнопка "Открыть в Яндекс.Картах" изменится на "Открыть маршрут".
Фактический результат: маршрут не отображается, кнопка не меняется.
Окружение:
macOs 10.15.2
Яндекс.Браузер 20.3.0.2220 (64-bit)
Разрешение экрана: 800x600
Firefox 75.0 (64-bit)
Разрешение экрана: 1280x720
Скриншот: [https://yadi.sk/i/8JrGL5dJ4JN6hw]
Приоритет: критичный
BUG-8368: Одинаковое название вида транспорта для каршеринга и своего авто в панели результата
Предусловия:
- Открыть Яндекс.Маршруты: [https://qa-routes.praktikum-services.ru].
Шаги воспроизведения:
- Ввести время начала поездки.
- Ввести адрес в поле Откуда: Усачева, 3.
- Ввести адрес в поле Куда: Фрунзенская набережная, 46.
- Выбрать режим Свой.
- Выбрать вид транспорта Каршеринг.
- Выбрать вид транспорта Свой автомобиль.
Ожидаемый результат: в панели результата расчёта поездки отобразится название выбранного вида транспорта.
Фактический результат: для разных видов транспорта - Каршеринг и Свой автомобиль - отображается одинаковое название вида транспорта - Авто.
Окружение:
macOs 10.15.2
Яндекс.Браузер 20.3.0.2220 (64-bit)
Разрешение экрана: 800x600
Firefox 75.0 (64-bit)
Разрешение экрана: 1280x720
Скриншоты: [https://yadi.sk/i/8fTKVNtNCmXwSA], [https://yadi.sk/i/g-l0KVPBffZFEA]
Приоритет: низкий
BUG-8369: В поле часов можно ввести некорректное значение "24"
Предусловия:
- Открыть Яндекс.Маршруты: [https://qa-routes.praktikum-services.ru].
Шаги воспроизведения:
- В поле часов ввести значение "24" и переместить фокус.
Ожидаемый результат: поле выделится красным, отобразится сообщение об ошибке.
Фактический результат: поле не выделяется, сообщение об ошибке не появляется.
Окружение:
macOs 10.15.2
Яндекс.Браузер 20.3.0.2220 (64-bit)
Разрешение экрана: 800x600
Firefox 75.0 (64-bit)
Разрешение экрана: 1280x720
Скриншот: [https://yadi.sk/i/C322eo13h1hSdw]
Приоритет: средний
BUG-8370: Некорректное сообщение об ошибке для поля адреса "Откуда"
Предусловия:
- Открыть Яндекс.Маршруты: [https://qa-routes.praktikum-services.ru].
Шаги воспроизведения:
- В поле адреса Откуда ввести некорректное значение: например, "Фаренгауэт, 451".
Ожидаемый результат: поле выделяется красным, появляется сообщение об ошибке "Вы ввели некорректный адрес".
Фактический результат: поле выделяется красным, появляется сообщение об ошибке "Вы ввели некорректное время".
Окружение:
macOs 10.15.2
Яндекс.Браузер 20.3.0.2220 (64-bit)
Разрешение экрана: 800x600
Firefox 75.0 (64-bit)
Разрешение экрана: 1280x720
Скриншот: [https://yadi.sk/i/uogNqswWgzX4sg]
Приоритет: средний
BUG-8371: Сообщения об ошибке наезжают на поля ввода
Предусловия:
- Открыть Яндекс.Маршруты: [https://qa-routes.praktikum-services.ru].
Шаги воспроизведения:
- В поля времени ввести некорректные значения.
- В поля адреса Откуда и Куда ввести некорректные значения: например, "Фаренгауэт, 451".
Ожидаемый результат: поле выделяется красным, сообщение об ошибке отображается в соответствии с макетом.
Фактический результат: поле выделяется красным, сообщение об ошибке наезжает на поля ввода.
Окружение:
macOs 10.15.2
Firefox 75.0 (64-bit)
Разрешение экрана: 1280x720
Скриншот: [https://yadi.sk/i/PnPeVE5kuE1EKQ]
Приоритет: незначительный
BUG-8372: Нет подсказок об обязательности заполнения полей ввода и выбора значений
Описание:
Расчёт стоимости и времени поездки, а также построение маршрута на карте, выполняется только после заполнения всей формы. Если поле не заполнено или не выбрано значение (режим и вид транспорта), ничего не происходит и пользователю нужна подсказка об обязательности заполнения пустого значения.
Предусловия:
- Открыть Яндекс.Маршруты: [https://qa-routes.praktikum-services.ru].
Шаги воспроизведения:
- Заполнить форму данными/выбрать значения, оставив одно из них пустым/не выбранным:
- Поле часов: 07.
- Поле минут: 45.
- Поле Откуда: Усачева, 3.
- Поле Куда: Фрунзенская набережная, 46.
- Выбрать один из режимов: Оптимальный, Быстрый, Свой.
- Если выбран режим Свой, выбрать вид транспорта.
Ожидаемый результат: при незаполненном поле или не выбранном значении появляется подсказка об обязательности заполнения/выбора.
Фактический результат: подсказка об обязательности заполнения/выбора не появляется.
Окружение:
macOs 10.15.2
Яндекс.Браузер 20.3.0.2220 (64-bit)
Разрешение экрана: 800x600
Firefox 75.0 (64-bit)
Разрешение экрана: 1280x720
Приоритет: низкий
BUG-8373: Шрифты формы не соответствуют макету
Шаги воспроизведения:
- Открыть Яндекс.Маршруты: [https://qa-routes.praktikum-services.ru].
- Сравнить шрифты с макетом (project-interface-fast.png).
Ожидаемый результат: шрифты соответствуют макету.
Фактический результат: шрифты немного отличаются.
Окружение:
macOs 10.15.2
Яндекс.Браузер 20.3.0.2220 (64-bit)
Разрешение экрана: 800x600
Firefox 75.0 (64-bit)
Разрешение экрана: 1280x720
Скриншоты: [https://yadi.sk/i/R6GNjYSTzYgIlQ] (макет), [https://yadi.sk/i/80qU8pwNMeluGw]
Приоритет: незначительный
BUG-8374: Текст плейсхолдеров полей ввода похож на заполненное значение
Текст плейсхолдеров полей адреса похож на заполненное значение (см. макет project-interface-fast.png). Для удобства пользователя можно указать, что это пример заполнения:
Пример: Усачева, 3
Скриншот: [https://yadi.sk/i/R6GNjYSTzYgIlQ] (макет)
Тип: задача
Приоритет: незначительный
BUG-8382: При пустом/некорректном значении одного поля адреса на карте скрываются точки обоих адресов
Предусловия:
- Открыть Яндекс.Маршруты: [https://qa-routes.praktikum-services.ru].
Шаги воспроизведения:
- Построить маршрут:
- Ввести время начала поездки.
- Ввести адрес в поле Откуда: Усачева, 3.
- Ввести адрес в поле Куда: Фрунзенская набережная, 46.
- Выбрать один из режимов: Оптимальный, Быстрый, Свой.
- Если выбран режим Свой, выбрать вид транспорта.
- Удалить значение из поля Откуда.
Ожидаемый результат: на карте скрывается точка А.
Фактический результат: на карте скрываются точки А и В.
3.. Ввести в поле Откуда корректное значение, построить маршрут, а затем ввести некорректное значение: Фаренгауэт, 451.
Ожидаемый результат: на карте скрывается точка А.
Фактический результат: на карте скрываются точки А и В.
- Ввести корректный адрес в поле Откуда: Усачева, 3.
- Удалить значение из поля Куда.
Ожидаемый результат: на карте скрывается точка В.
Фактический результат: на карте скрываются точки А и В.
- Ввести в поле Куда корректное значение, построить маршрут, а затем ввести некорректное значение: Фаренгауэт, 451.
Ожидаемый результат: на карте скрывается точка В.
Фактический результат: на карте скрываются точки А и В.
Окружение:
macOs 10.15.2
Яндекс.Браузер 20.3.0.2220 (64-bit)
Разрешение экрана: 800x600
Скринкаст: [https://yadi.sk/i/Jc658TkoZqJgag]
Приоритет: средний
BUG-8384: Не выполняются действия Копировать и Вставить при выборе соответствующих пунктов контекстного меню
Предусловия:
- Открыть Яндекс.Маршруты: [https://qa-routes.praktikum-services.ru].
Шаги воспроизведения:
- Выделить любой текст на форме.
- Вызвать контекстное меню.
- Выбрать пункт меню Копировать.
- Поместить курсор в любое поле ввода формы.
- Вызвать контекстное меню.
- Выбрать пункт меню Вставить.
- Вставить скопированный текст в любое другое место, кроме полей ввода (например, в адресную строку браузера).
Ожидаемый результат: текст копируется и вставляется.
Фактический результат: текст не копируется; невозможно выбрать пункт контекстного меню Вставить (пункт неактивен) в полях ввода.
Окружение:
macOs 10.15.2
Firefox 75.0 (64-bit)
Разрешение экрана: 1280x720
Скринкаст: [https://yadi.sk/i/sJ1e3iF8ktmWMg]
Приоритет: средний
BUG-8397: На неактивной панели видов транспорта курсор мыши меняется при наведении на кнопки-иконки транспорта
Описание:
В стартовом состоянии, а также в режимах Оптимальный и Быстрый панель видов транспорта неактивна, но если навести курсор мыши на кнопки-иконки транспорта, он меняется, некорректно сигнализируя о возможности совершить действие.
Шаги воспроизведения:
- Открыть Яндекс.Маршруты: [https://qa-routes.praktikum-services.ru].
- Навести курсор мыши на иконки транспорта в неактивной панели видов транспорта.
Ожидаемый результат: курсор мыши не меняется.
Фактический результат: курсор мыши меняется.
- Построить маршрут:
- Ввести время начала поездки.
- Ввести адрес в поле Откуда: Усачева, 3.
- Ввести адрес в поле Куда: Фрунзенская набережная, 46.
- Выбрать режим Оптимальный.
- Навести курсор мыши на иконки транспорта в неактивной панели видов транспорта.
Ожидаемый результат: курсор мыши не меняется.
Фактический результат: курсор мыши меняется.
-
Выбрать режим Быстрый.
-
Навести курсор мыши на иконки транспорта в неактивной панели видов транспорта.
Ожидаемый результат: курсор мыши не меняется.
Фактический результат: курсор мыши меняется.
Окружение:
macOs 10.15.2
Яндекс.Браузер 20.3.0.2220 (64-bit)
Разрешение экрана: 800x600
Firefox 75.0 (64-bit)
Разрешение экрана: 1280x720
Скринкаст: [https://yadi.sk/i/yrZck0Ll3xmxKg]
Приоритет: низкий
-
Проанализируй требования к мобильному приложению Яндекс.Метро.
-
Напиши чек-лист для тестирования мобильного приложения на часть требований, выделенных жирным шрифтом.
-
Протестируй мобильное приложение в эмуляторе с помощью Android Studio или на своём Android-устройстве и заведи баг-репорты. Скачай готовящуюся к релизу версию приложения тут.
Чтобы проверить, что обновление происходит корректно, скачай предыдущую версию тут.
- Напиши отчет о тестировании. Что можешь рассказать команде о статусе протестированной части продукта?
Требования к мобильному приложению Метро
Яндекс.Метро — сервис, который позволяет ориентироваться в метро с помощью мобильного устройства. В приложении есть схема метро, которая помогает построить маршрут и оценить время в пути; в приложении появляются актуальные уведомления о работе станций метро и изменениях графика работы.
1. Список маршрутов
1.1. В карточке маршрута отображается:
- Информация маршрута - логотипы метро и номера линий метро, также сохраняется последовательность пересадок (если есть).
- Количество пересадок (если есть).
- Временной интервал маршрута - время в пути, время отправления и прибытия.
- Кнопка Закрыть.
- Кнопка Детали маршрута.
- Поля Откуда (начальный пункт) и Куда (пункт назначения) (поля должны валидироваться).
1.2. Сброс маршрута.
- Закрыть маршрут можно только тапом на крестик в карточке маршрута. При закрытии маршрута в поле ввода Откуда сохраняется начальная станция из последнего маршрута Поле ввода Куда и маршрут на схеме сбрасывается, выделение станций пропадает (кроме начальной станции).
- Если текущее время превышает время окончания маршрута, то временной интервал маршрута обновляется.
2. Выбор станции
2.1. Станцию можно выбрать несколькими способами:
- Тапом на схеме.
- По иконке i из разных карточек. Если из поиска выбрать станцию тапом на i и закрыть карточку, должен происходить возврат на экран поиска.
- Найти в поиске и нажать на станцию.
2.2. Если станция выбрана, всегда выполняются следующие действия:
- Точка станции на схеме уменьшается.
- На точке станции появляется пин цвета линии или специальный пин для закрытой станции.
- Выбранная станция сохраняется в истории: при нажатии на поле Откуда или Куда раскрывается список, содержащий станции, которые пользователь выбирал ранее. Список должен сохраниться и в новой версии приложения.
- Шрифт названия станции становится bold.
3. Детали маршрута
3.1. Переход к карточке
Детали маршрута открываются двумя способами:
- По тапу на кнопку Деталей маршрута в карточке маршрута.
- По свайпу списка маршрутов вверх (только для смартфонов в портретной ориентации).
3.2. Отображение
В карточке отображается:
- Временной интервал маршрута:
- время в пути;
- время отправления;
- время прибытия;
- отрезки пересадок между участками маршрута.
- Кнопка Закрыть.
- Участки маршрута, разделенные сообщениями о пересадке.
- Сообщение об удобных вагонах для посадки.
- Картинка с указанием удобных вагонов.
- Станции прибытия и отправления.
- Пересадочные станции.
- Промежуточные станции (если на участке больше одной промежуточной станции отображаются свернутым списком).
- Рядом с каждой станцией, кроме промежуточных отображается кнопка «i» для перехода в карточку станции.
- Станция, расположенная в начале каждого участка содержит название, номер линии и иконку сервиса.
- Для каждой станции может отображаться событие.
- При смене ориентации с портретной на ландшафтную детали маршрута отображаются в левой части экрана.
3.3. Закрытие карточки
Закрыть карточку можно также двумя способами:
- По тапу на кнопку Закрыть.
- Свайпом вниз.
При закрытии деталей остается открытым список маршрутов, положение списка сохраняется, построенный маршрут не сбрасывается.
4. Уведомление об ошибке
- При отсутствии интернет-соединения появляется уведомление об ошибке.
5. Логика для альбомной ориентации
- Все карточки и поля поиска отображаются в левой части экрана.
- Карточки открываются на всю высоту экрана.
- Карточки станции закрываются при взаимодействии со схемой.
- Маршруты отображаются в списке в левой части экрана.
- Баннер на маршруте отображается сверху списка маршрута, если доступно достаточно места
- При смене ориентации экрана масштаб построенного маршрута не должен увеличиться или уменьшиться.
- Список маршрутов не сворачивается при тапе на ячейку маршрута. Выбранный маршрут выделяется.
- При построении маршрута маршрут вписывается в свободную область справа.
- При тапе на станцию на схеме (с и без маршрута) происходит минимальный подскролл схемы, чтобы вместить пин.
- При выборе станции по иконке i происходит минимальный подскролл схемы, чтобы вместить пин.
- Карточки сохраняют своё положение при переходе из портретной ориентации в ландшафтную (и обратно): свёрнутые остаются свёрнутыми, открытые — открытыми, среднее положение переходит в среднее.
- Карточка Настроек открывается по центру экрана на некоторых девайсах (iPad и некоторые iPhone)
6. Лонгтап по станции
- При нажатии на станцию при помощи лонгтапа открывается карточка станции с кнопками «Отсюда»/«Сюда».
- Схема не должна смещаться вверх/вниз/влево/вправо при лонгтапе по станции.
7. Скролл схемы при помощи лонгтапа
Чтобы воспроизвести скролл схемы при помощи лонгтапа — сделай лонгтап по станции и удерживая палец, переводи фокус на другие станции.
- При скролле лонгтапом можно выбрать нужную станцию, при этом схема остаётся неподвижной.
- При попадании на область клика точки станции или её названия на точку ставится пин, точка станции уменьшается, название станции выделяется жирным шрифтом, появляется карточка станции.
- Пин на станции и выделение станции пропадает, когда она не попадает в зону клика.
- При дальнейшем движении шапка карточки станции остаётся неподвижной, и в ней меняются названия станций и сервисов. При этом карточка сохраняет минимальное состояние.
- Если движение заканчивается на пустой области, карточка станции закрывается.
1-2. Чек-лист мобильного приложения
№ | Описание | Статус | ID баг-репорта | Требование |
---|---|---|---|---|
1 | Обновление с предыдущей версии приложения происходит корректно | PASSED | ||
2 | В карточке маршрута отображается кнопка Детали маршрута в соответствии с макетом | PASSED | 1.1 | |
3 | Если текущее время превышает время окончания маршрута, то временной интервал маршрута обновляется | FAILED | BUG-10736 | 1.2 |
Способы выбора станции: | 2.1 | |||
4 | Тапом на схеме | PASSED | ||
5 | По иконке i из разных карточек | PASSED | ||
6 | Если из поиска выбрать станцию тапом на i и закрыть карточку, должен происходить возврат на экран поиска | FAILED | BUG-10738 | |
7 | Найти в поиске и нажать на станцию | PASSED | ||
Если станция выбрана, всегда выполняются следующие действия: | 2.2 | |||
8 | Точка станции на схеме уменьшается | PASSED | ||
9 | На точке станции появляется пин цвета линии или специальный пин для закрытой станции | PASSED | ||
10 | Выбранная станция сохраняется в истории: при нажатии на поле Откуда или Куда раскрывается список, содержащий станции, которые пользователь выбирал ранее | FAILED | BUG-10740 | |
11 | Список станций в истории должен сохраняться в новой версии приложения | PASSED | ||
12 | Шрифт названия станции становится bold | PASSED | ||
Переход к карточке маршрута. Детали маршрута открываются двумя способами: | 3.1 | |||
13 | По тапу на кнопку Деталей маршрута в карточке маршрута | PASSED | ||
14 | По свайпу списка маршрутов вверх (только для смартфонов в портретной ориентации) | PASSED | ||
15 | При смене ориентации с портретной на ландшафтную детали маршрута в карточке отображаются в левой части экрана | FAILED | BUG-10929 | 3.2 |
Уведомление об ошибке: | 4 | |||
16 | При отсутствии интернет-соединения появляется уведомление об ошибке | FAILED | BUG-10741 | |
Альбомная ориентация: | 5 | |||
17 | Все карточки и поля поиска отображаются в левой части экрана | PASSED | ||
18 | При смене ориентации экрана масштаб построенного маршрута не должен увеличиться или уменьшиться | FAILED | BUG-10743 | |
Лонг-тап по станции: | 6 | |||
19 | При нажатии на станцию при помощи лонг-тапа открывается карточка станции с кнопками «Отсюда»/«Сюда» | FAILED | BUG-10744 | |
20 | Схема не должна смещаться вверх/вниз/влево/вправо при лонгтапе по станции | FAILED | BUG-10746 | |
Скролл схемы при помощи лонг-тапа: | 7 | |||
21 | При скролле лонгтапом можно выбрать нужную станцию, при этом схема остаётся неподвижной | PASSED | ||
22 | При попадании на область клика точки станции или её названия на точку ставится пин, точка станции уменьшается, название станции выделяется жирным шрифтом, появляется карточка станции | PASSED | ||
23 | Пин на станции и выделение станции пропадает, когда она не попадает в зону клика | FAILED | BUG-10747 | |
24 | Если движение заканчивается на пустой области, карточка станции закрывается | PASSED |
3-4. Отчёт о тестировании
Команда протестировала часть требований к мобильному приложению Яндекс.Метро.
Мы проверили корректность обновления с предыдущей версии, отображение кнопки "Детали маршрута", способы выбора станций, выполнение действий при выбранной станции, варианты перехода к карточке маршрута, уведомление об ошибке при отсутствии интернет-соединения, сохранение списка станций в истории, поведение приложения при смене ориентации экрана и при использовании лонгтапа.
Среди найденных ошибок есть одна критическая, остальные имеют средний и низкий приоритет. Команда рекомендует исправить ошибки перед передачей продукта пользователям. Всего мы нашли 9 багов, вот список баг-репортов:
BUG-10736: Временной интервал маршрута в карточке маршрута не обновляется, если текущее время превышает время окончания маршрута
Предусловия:
- Скачать версию Яндекс.Метро по ссылке [https://code.s3.yandex.net/qa/files/yandexmetro-android-v3.6.apk].
- Установить и запустить приложение, при запросе выдать все разрешения.
- Выбрать любой город, например: Санкт-Петербург.
Шаги воспроизведения:
- Тапом выбрать любую станцию, например: Парк Победы.
- В появившейся карточке станции нажать кнопку Отсюда.
- Тапом выбрать другую станцию, например: Горьковская.
- В появившейся карточке станции нажать кнопку Сюда.
Ожидаемый результат: появится карточка маршрута с указанием времени начала и окончания маршрута.
Фактический результат: появилась карточка маршрута с указанием времени начала и окончания маршрута.
- Дождаться, когда текущее время превысит время окончания маршрута.
Ожидаемый результат: если текущее время превышает время окончания маршрута, то временной интервал маршрута автоматически обновляется.
Фактический результат: если текущее время превышает время окончания маршрута, временной интервал маршрута не обновляется.
Окружение:
Xiaomi Redmi 4X
Android 7.1.2
Яндекс.Метро 3.6
Скриншот: [https://yadi.sk/i/Bj41vqKK-lpvgw]
Приоритет: средний
BUG-10738: При выборе станции в поиске тапом на i и закрытии карточки происходит возврат на главный экран
Предусловия:
- Скачать версию Яндекс.Метро по ссылке [https://code.s3.yandex.net/qa/files/yandexmetro-android-v3.6.apk].
- Установить и запустить приложение, при запросе выдать все разрешения.
- Выбрать любой город (например, Санкт-Петербург).
Шаги воспроизведения:
- Нажать в поле Откуда.
- В появившемся окне поиска набрать название станции, например: Невский проспект.
- Открыть карточку станции тапом на i.
- Закрыть карточку станции тапом на крестик.
Ожидаемый результат: если из поиска выбрать станцию тапом на i и закрыть карточку, должен происходить возврат на экран поиска.
Фактический результат: происходит возврат на главный экран.
Окружение:
Xiaomi Redmi 4X
Android 7.1.2
Яндекс.Метро 3.6
Скринкаст: [https://yadi.sk/i/YQNOsAuS4mRW0A]
Приоритет: низкий
BUG-10740: Выбранная станция сохраняется в истории только после того, как с ней был построен маршрут
Предусловия:
- Скачать версию Яндекс.Метро по ссылке [https://code.s3.yandex.net/qa/files/yandexmetro-android-v3.6.apk].
- Установить и запустить приложение, при запросе выдать все разрешения.
- Выбрать любой город (например, Санкт-Петербург).
Шаги воспроизведения:
- Тапнуть на любую станцию, например: Горьковская.
- В появившейся карточке станции нажать кнопку Отсюда.
Ожидаемый результат: в поле Откуда отобразится название выбранной станции.
Фактический результат: в поле Откуда отображается название выбранной станции.
- Удалить станцию из поля Откуда тапом на крестик.
- Нажать в поле Откуда.
Ожидаемый результат: выбранная станция сохраняется в истории: при нажатии на поле Откуда раскрывается список, содержащий станции, которые пользователь выбирал ранее.
Фактический результат: станция в истории не сохраняется.
- Повторить шаги 1-4 для поля Куда.
Ожидаемый результат: выбранная станция сохраняется в истории: при нажатии на поле Куда раскрывается список, содержащий станции, которые пользователь выбирал ранее.
Фактический результат: станция в истории не сохраняется.
- Построить маршрут:
- Тапнуть на любую станцию, например: Горьковская.
- В появившейся карточке станции нажать кнопку Отсюда.
- Тапнуть на любую станцию, например: Парк Победы.
- В появившейся карточке станции нажать кнопку Сюда.
- Закрыть появившуюся карточку маршрута.
- Очистить поля Отсюда и Сюда.
- Нажать в поле Откуда.
Ожидаемый результат: выбранная станция сохраняется в истории: при нажатии на поле Откуда раскрывается список, содержащий станции, которые пользователь выбирал ранее.
Фактический результат: станция сохраняется в истории.
- Закрыть окно поиска.
- Нажать в поле Куда.
Ожидаемый результат: выбранная станция сохраняется в истории: при нажатии на поле Откуда раскрывается список, содержащий станции, которые пользователь выбирал ранее.
Фактический результат: станция сохраняется в истории.
Окружение:
Xiaomi Redmi 4X
Android 7.1.2
Яндекс.Метро 3.6
Скринкаст: [https://yadi.sk/i/6af9il09c7npQg]
Приоритет: средний
BUG-10741: При отсутствии интернет-соединения не появляется уведомление об ошибке
Предусловия:
- Скачать версию Яндекс.Метро по ссылке [https://code.s3.yandex.net/qa/files/yandexmetro-android-v3.6.apk].
- Установить и запустить приложение.
- Выбрать любой город (например, Санкт-Петербург).
Шаги воспроизведения:
- Отключить Wi-Fi и мобильный интернет.
Ожидаемый результат: при отсутствии интернет-соединения появляется уведомление об ошибке.
Фактический результат: уведомление об ошибке не появляется.
Окружение:
Xiaomi Redmi 4X
Android 7.1.2
Яндекс.Метро 3.6
Скринкаст: [https://yadi.sk/i/WUTZOzOATAKZjA]
Приоритет: средний
BUG-10743: При смене ориентации экрана меняется масштаб построенного маршрута
Предусловия:
- Скачать версию Яндекс.Метро по ссылке [https://code.s3.yandex.net/qa/files/yandexmetro-android-v3.6.apk].
- Установить и запустить приложение.
- Выбрать любой город (например, Санкт-Петербург).
Шаги воспроизведения:
- В портретной ориентации экрана построить маршрут:
- Тапнуть на любую станцию, например: Горьковская.
- В появившейся карточке станции нажать кнопку Отсюда.
- Тапнуть на любую станцию, например: Парк Победы.
- В появившейся карточке станции нажать кнопку Сюда.
- Сменить ориентацию экрана на альбомную.
- Сменить ориентацию экрана на портретную.
Ожидаемый результат: при смене ориентации экрана масштаб построенного маршрута не должен увеличиться или уменьшиться.
Фактический результат: при смене ориентации экрана с портретной на альбомную масштаб построенного маршрута немного уменьшается, а с альбомной на портретную - немного увеличивается.
Окружение:
Xiaomi Redmi 4X
Android 7.1.2
Яндекс.Метро 3.6
Скринкаст: [https://yadi.sk/i/lsnfIF5-T2h3yA]
Приоритет: низкий
BUG-10744: При лонгтапе на станцию карточка станции иногда открывается некорректно
Описание: при нажатии на станцию лонгтапом открытие карточки станции происходит по-разному: она может открыться корректно; может открыться частично (видно только название станции, номер и название линии); может открыться частично, оставаться открытой при удержании пальца на станции и закрыться, если палец отпустить. Иногда фокус с выбранной станции перескакивает на соседнюю/несколько соседних и открывается карточка соседней станции.
Предусловия:
- Скачать версию Яндекс.Метро по ссылке [https://code.s3.yandex.net/qa/files/yandexmetro-android-v3.6.apk].
- Установить и запустить приложение.
- Выбрать любой город (например, Санкт-Петербург).
Шаги воспроизведения:
- Лонгтапом выбирать разные станции на схеме.
Ожидаемый результат: при нажатии на станцию при помощи лонгтапа открывается карточка станции с кнопками «Отсюда»/«Сюда»
Фактический результат: при лонгтапе на станцию карточка станции иногда открывается некорректно
Окружение:
Xiaomi Redmi 4X
Android 7.1.2
Яндекс.Метро 3.6
Скринкаст: [https://yadi.sk/i/5oA-6pbNXQx2ZQ]
Приоритет: критичный
BUG-10746: При лонгтапе по станции схема иногда смещается
Предусловия:
- Скачать версию Яндекс.Метро по ссылке [https://code.s3.yandex.net/qa/files/yandexmetro-android-v3.6.apk].
- Установить и запустить приложение.
- Выбрать любой город (например, Санкт-Петербург).
Шаги воспроизведения:
- Лонгтапом выбирать разные станции на схеме.
Ожидаемый результат: схема не должна смещаться вверх/вниз/влево/вправо при лонгтапе по станции.
Фактический результат: иногда схема смещается.
Окружение:
Xiaomi Redmi 4X
Android 7.1.2
Яндекс.Метро 3.6
Скринкаст: [https://yadi.sk/i/ymC79S_BpaLkdQ]
Приоритет: низкий
BUG-10747: При скролле схемы лонгтапом пин на станции и выделение станции не пропадает, когда она не попадает в зону клика
Описание: при скролле схемы лонгтапом пин на станции и выделение станции не пропадает, когда она не попадает в зону клика. Чтобы воспроизвести скролл схемы при помощи лонгтапа, нужно сделать лонгтап по станции и, удерживая палец, переводить фокус на другие станции.
Предусловия:
- Скачать версию Яндекс.Метро по ссылке [https://code.s3.yandex.net/qa/files/yandexmetro-android-v3.6.apk].
- Установить и запустить приложение.
- Выбрать любой город (например, Санкт-Петербург).
Шаги воспроизведения:
- Выполнить скролл схемы лонгтапом.
Ожидаемый результат: пин на станции и выделение станции пропадает, когда она не попадает в зону клика
Фактический результат: пин на станции и выделение станции не пропадает, когда она не попадает в зону клика
Окружение:
Xiaomi Redmi 4X
Android 7.1.2
Яндекс.Метро 3.6
Скринкаст: [https://yadi.sk/i/hqgm5pfb27mdRg]
Приоритет: низкий
BUG-10929: При смене ориентации с портретной на ландшафтную карточка деталей маршрута закрывается
Предусловия:
- Скачать версию Яндекс.Метро по ссылке [https://code.s3.yandex.net/qa/files/yandexmetro-android-v3.6.apk].
- Установить и запустить приложение.
- Выбрать любой город (например, Санкт-Петербург).
Шаги воспроизведения:
- В портретной ориентации экрана построить маршрут:
- Тапнуть на любую станцию, например: Горьковская.
- В появившейся карточке станции нажать кнопку Отсюда.
- Тапнуть на любую станцию, например: Парк Победы.
- В появившейся карточке станции нажать кнопку Сюда.
- Открыть карточку деталей маршрута.
- Сменить ориентацию экрана на ландшафтную.
Ожидаемый результат: при смене ориентации с портретной на ландшафтную детали маршрута в карточке отображаются в левой части экрана.
Фактический результат: при смене ориентации с портретной на ландшафтную карточка деталей маршрута закрывается.
Окружение:
Xiaomi Redmi 4X
Android 7.1.2
Яндекс.Метро 3.6
Скринкаст: [https://yadi.sk/i/_IELHx4FzryPEA]
Приоритет: средний
-
Проанализируй требования к API бэкенда Яндекс.Метро.
-
Протестируй API бэкенда Яндекс.Метро:
2.1. по чек-листу из шаблона;
2.2. по инструкции.
Инструкция для тестирования API
- Зайди в postman.
- Получи список схем из запроса «/list».
- Составь таблицу в третьей вкладке шаблона, сопоставив каждому городу его id.
- Дополни чек-лист для запроса «/events». Убедись, что для каждого id возвращается ответ согласно требованиям.
- Проверь корректность работы запроса «/events».
В процессе тестирования отмечай результаты выполнения теста: PASSED или FAILED. Если тест со статусом FAILED, заведи баг-репорт в Яндекс.Трекере в очереди BUG и вписывай ID в соответствующую таблицу результатов.
- Напиши отчет о тестировании. Что можешь рассказать команде о статусе протестированной части продукта?
Требования к API Метро
Метро использует API "metrokit-service". Это API для библиотеки MetroKit.
Функциональность metrokit-service включает:
- Доступ к полному списку схем — GET /v1/list/
- Доступ к cписку актуальных событий для выбранной схемы — GET /v1/events/
GET /v1/list/
GET на URI: [https://metrokit-service.maps.yandex.net/v1/list]
Ответ — полный список схем по всем городам. Ответ всегда в формате JSON.
Пример структуры ответа Москвы.
{
"id": "sc34974011",
"name": {
"en": "Moscow",
"ru": "Москва",
"tr": "Moskova",
"uk": "Москва"
},
"size": {
"packed": 369292,
"unpacked": 3001856
},
"tags": [
"published"
],
"aliases": [
"moscow"
],
"logoUrl": "https://avatars.mds.yandex.net/get-bunker/128809/6f088274a46aee3df308423d222eb36906825cb7/orig",
"version": "2e5e649",
"geoRegion": {
"delta": {
"lat": 0.32158,
"lon": 0.439453
},
"center": {
"lat": 55.743347,
"lon": 37.617188
}
},
"countryCode": "RU",
"defaultAlias": "moscow"
}
GET /v1/events/
GET на URI: [https://metrokit-service.maps.yandex.net/v1/events]
Параметр: [scheme_id=<id>]
Пример: [https://metrokit-service.maps.yandex.net/v1/events?scheme_id=sc34974011]
Ответ — список событий для выбранной схемы. Ответ всегда в формате JSON.
Если событие присутствует, ответ имеет такую структуру. Например, для Москвы с id = sc34974011:
"events": {
"type": "IndexedCollection",
"items": [
{
"id": "ev-76c50f2d-9c3d-4835-ac73-a0544b1b308e",
"schedule": {
"to": "2019-10-25T23:10:00+03:00",
"from": "2019-03-30T01:00:00+03:00",
"type": "Interval"
},
"title": {
"en": "No trains to Kakhovskaya station",
"ru": "Поезда не ходят до «Каховской»"
},
"description": {
"en": "Station closure",
"ru": "Закрытие станции"
},
"changeIds": [
"ch-feed3c7d-d35e-4481-87a4-7c141e1c96c0"
]
}
}
Если события отсутствуют, список может быть пустым, но должен возвращаться в формате JSON. Например, для Хельсинки с id = sc38955480:
{
"events": {
"type": "IndexedCollection",
"items": []
},
"changes": {
"type": "IndexedCollection",
"items": []
}
}
1. Данные схем
Город | ID схемы |
---|---|
Новосибирск | sc02877545 |
Москва | sc34974011 |
Киев | sc21078879 |
Сан-Франциско | sc99912 |
Алматы | sc37730841 |
Хельсинки | sc38955480 |
Лиссабон | sc39559734 |
Днепр | sc47063979 |
Дубай | sc19930717 |
Бухарест | sc66937172 |
Афины | sc92836217 |
София | sc29665623 |
Казань | sc63288776 |
Минск | sc31709615 |
Вена | sc52507030 |
Харьков | sc12039691 |
Милан | sc999 |
Будапешт | sc04704892 |
Ташкент | sc19351236 |
Тбилиси | sc46903964 |
Варшава | sc12943371 |
Волгоград | sc03517743 |
Санкт-Петербург | sc60983525 |
Ереван | sc95957238 |
Прага | sc20559874 |
Екатеринбург | sc58473698 |
Баку | sc54283234 |
Самара | sc33333931 |
Стамбул | sc97451070 |
Нижний Новгород | sc77792237 |
Рим | sc68078330 |
2. Чек-лист API
№ | Описание | Статус | ID баг-репорта |
---|---|---|---|
для запроса "/list" | |||
1 | ответ на запрос возвращает 200 ОК | PASSED | |
2 | ответ на запрос в формате JSON | PASSED | |
3 | структура ответа для Минска совпадает со структурой в требованиях | PASSED | |
4 | структура ответа для Афин совпадает со структурой в требованиях | PASSED | |
5 | структура ответа для Киева совпадает со структурой в требованиях | PASSED | |
6 | структура ответа для Казани совпадает со структурой в требованиях | PASSED | |
7 | структура ответа для Рима совпадает со структурой в требованиях | PASSED | |
для запроса "/events" | |||
8 | структура ответа для id=sc02877545 совпадает со структурой в требованиях | PASSED | |
9 | структура ответа для id=sc34974011 совпадает со структурой в требованиях | PASSED | |
10 | структура ответа для id=sc21078879 совпадает со структурой в требованиях | PASSED | |
11 | структура ответа для id=sc99912 совпадает со структурой в требованиях | FAILED | BUG-10766 |
12 | структура ответа для id=sc37730841 совпадает со структурой в требованиях | PASSED | |
13 | структура ответа для id=sc38955480 совпадает со структурой в требованиях | PASSED | |
14 | структура ответа для id=sc39559734 совпадает со структурой в требованиях | PASSED | |
15 | структура ответа для id=sc47063979 совпадает со структурой в требованиях | PASSED | |
16 | структура ответа для id=sc19930717 совпадает со структурой в требованиях | PASSED | |
17 | структура ответа для id=sc66937172 совпадает со структурой в требованиях | FAILED | BUG-10769 |
18 | структура ответа для id=sc92836217 совпадает со структурой в требованиях | FAILED | BUG-10770 |
19 | структура ответа для id=sc29665623 совпадает со структурой в требованиях | FAILED | BUG-10771 |
20 | структура ответа для id=sc63288776 совпадает со структурой в требованиях | PASSED | |
21 | структура ответа для id=sc31709615 совпадает со структурой в требованиях | PASSED | |
22 | структура ответа для id=sc52507030 совпадает со структурой в требованиях | FAILED | BUG-10773 |
23 | структура ответа для id=sc12039691 совпадает со структурой в требованиях | PASSED | |
24 | структура ответа для id=sc999 совпадает со структурой в требованиях | FAILED | BUG-10775 |
25 | структура ответа для id=sc04704892 совпадает со структурой в требованиях | PASSED | |
26 | структура ответа для id=sc19351236 совпадает со структурой в требованиях | PASSED | |
27 | структура ответа для id=sc46903964 совпадает со структурой в требованиях | PASSED | |
28 | структура ответа для id=sc12943371 совпадает со структурой в требованиях | PASSED | |
29 | структура ответа для id=sc03517743 совпадает со структурой в требованиях | PASSED | |
30 | структура ответа для id=sc60983525 совпадает со структурой в требованиях | PASSED | |
31 | структура ответа для id=sc95957238 совпадает со структурой в требованиях | PASSED | |
32 | структура ответа для id=sc20559874 совпадает со структурой в требованиях | FAILED | BUG-10776 |
33 | структура ответа для id=sc58473698 совпадает со структурой в требованиях | PASSED | |
34 | структура ответа для id=sc54283234 совпадает со структурой в требованиях | PASSED | |
35 | структура ответа для id=sc33333931 совпадает со структурой в требованиях | PASSED | |
36 | структура ответа для id=sc97451070 совпадает со структурой в требованиях | PASSED | |
37 | структура ответа для id=sc77792237 совпадает со структурой в требованиях | PASSED | |
38 | структура ответа для id=sc68078330 совпадает со структурой в требованиях | PASSED |
3. Отчёт о тестировании
Команда протестировала API бэкенда Яндекс.Метро.
Мы проверили структуру ответа на запрос /list для некоторых городов и структуру ответа на запрос /events для всех схем городов.
Среди найденных ошибок нет блокеров и критических, все они имеют средний приоритет. Команда рекомендует исправить ошибки перед передачей продукта пользователям. Всего мы нашли 7 багов, вот список баг-репортов:
BUG-10766: При запросе списка событий /events для схемы с id=sc99912 структура ответа не совпадает с требованиями
Шаги воспроизведения:
- В Postman создать и отправить GET-запрос на URI: [https://metrokit-service.maps.yandex.net/v1/events?scheme_id=sc99912].
- Посмотреть ответ - список событий для схемы с id=sc99912 (Сан-Франциско).
Ожидаемый результат:
- Статус ответа: 200 OK.
- Ответ возвращается в формате JSON, структура ответа для id=sc99912 совпадает со структурой в требованиях. Пример структуры ответа:
{
"events": {
"type": "IndexedCollection",
"items": [
{
"id": "ev-76c50f2d-9c3d-4835-ac73-a0544b1b308e",
"schedule": {
"to": "2019-10-25T23:10:00+03:00",
"from": "2019-03-30T01:00:00+03:00",
"type": "Interval"
},
"title": {
"en": "No trains to Kakhovskaya station",
"ru": "Поезда не ходят до «Каховской»"
},
"description": {
"en": "Station closure",
"ru": "Закрытие станции"
},
"changeIds": [
"ch-feed3c7d-d35e-4481-87a4-7c141e1c96c0"
]
}
}
- Если события отсутствуют, список может быть пустым, но должен возвращаться в формате JSON. Пример структуры ответа:
{
"events": {
"type": "IndexedCollection",
"items": []
},
"changes": {
"type": "IndexedCollection",
"items": []
}
}
Фактический результат:
- Статус ответа: 404 Not Found.
- Структура ответа не совпадает с требованиями: Body ответа пустое.
- Ответ возвращается в формате Text.
Окружение:
macOs 10.15.2
Postman 7.22.1
API metrokit-service
Скриншот: [https://yadi.sk/i/Q39JhIx4tKU-YQ]
Приоритет: средний
BUG-10769: При запросе списка событий /events для схемы с id=sc66937172 структура ответа не совпадает с требованиями
Шаги воспроизведения:
- В Postman создать и отправить GET-запрос на URI: [https://metrokit-service.maps.yandex.net/v1/events?scheme_id=sc66937172].
- Посмотреть ответ - список событий для схемы с id=sc66937172 (Бухарест).
Ожидаемый результат:
- Статус ответа: 200 OK.
- Ответ возвращается в формате JSON, структура ответа для id=sc66937172 совпадает со структурой в требованиях. Пример структуры ответа:
{
"events": {
"type": "IndexedCollection",
"items": [
{
"id": "ev-76c50f2d-9c3d-4835-ac73-a0544b1b308e",
"schedule": {
"to": "2019-10-25T23:10:00+03:00",
"from": "2019-03-30T01:00:00+03:00",
"type": "Interval"
},
"title": {
"en": "No trains to Kakhovskaya station",
"ru": "Поезда не ходят до «Каховской»"
},
"description": {
"en": "Station closure",
"ru": "Закрытие станции"
},
"changeIds": [
"ch-feed3c7d-d35e-4481-87a4-7c141e1c96c0"
]
}
}
- Если события отсутствуют, список может быть пустым, но должен возвращаться в формате JSON. Пример структуры ответа:
{
"events": {
"type": "IndexedCollection",
"items": []
},
"changes": {
"type": "IndexedCollection",
"items": []
}
}
Фактический результат:
- Статус ответа: 404 Not Found.
- Структура ответа не совпадает с требованиями: Body ответа пустое.
- Ответ возвращается в формате Text.
Окружение:
macOs 10.15.2
Postman 7.22.1
API metrokit-service
Скриншот: [https://yadi.sk/i/oDdjegyhnIq8Tg]
Приоритет: средний
BUG-10770: При запросе списка событий /events для схемы с id=sc92836217 структура ответа не совпадает с требованиями
Шаги воспроизведения:
- В Postman создать и отправить GET-запрос на URI: [https://metrokit-service.maps.yandex.net/v1/events?scheme_id=sc92836217].
- Посмотреть ответ - список событий для схемы с id=sc92836217 (Афины).
Ожидаемый результат:
- Статус ответа: 200 OK.
- Ответ возвращается в формате JSON, структура ответа для id=sc92836217 совпадает со структурой в требованиях. Пример структуры ответа:
{
"events": {
"type": "IndexedCollection",
"items": [
{
"id": "ev-76c50f2d-9c3d-4835-ac73-a0544b1b308e",
"schedule": {
"to": "2019-10-25T23:10:00+03:00",
"from": "2019-03-30T01:00:00+03:00",
"type": "Interval"
},
"title": {
"en": "No trains to Kakhovskaya station",
"ru": "Поезда не ходят до «Каховской»"
},
"description": {
"en": "Station closure",
"ru": "Закрытие станции"
},
"changeIds": [
"ch-feed3c7d-d35e-4481-87a4-7c141e1c96c0"
]
}
}
- Если события отсутствуют, список может быть пустым, но должен возвращаться в формате JSON. Пример структуры ответа:
{
"events": {
"type": "IndexedCollection",
"items": []
},
"changes": {
"type": "IndexedCollection",
"items": []
}
}
Фактический результат:
- Статус ответа: 404 Not Found.
- Структура ответа не совпадает с требованиями: Body ответа пустое.
- Ответ возвращается в формате Text.
Окружение:
macOs 10.15.2
Postman 7.22.1
API metrokit-service
Скриншот: [https://yadi.sk/i/NgCePxnySF7-fg]
Приоритет: средний
BUG-10771: При запросе списка событий /events для схемы с id=sc29665623 структура ответа не совпадает с требованиями
Шаги воспроизведения:
- В Postman создать и отправить GET-запрос на URI: [https://metrokit-service.maps.yandex.net/v1/events?scheme_id=sc29665623].
- Посмотреть ответ - список событий для схемы с id=sc29665623 (София).
Ожидаемый результат:
- Статус ответа: 200 OK.
- Ответ возвращается в формате JSON, структура ответа для id=sc29665623 совпадает со структурой в требованиях. Пример структуры ответа:
{
"events": {
"type": "IndexedCollection",
"items": [
{
"id": "ev-76c50f2d-9c3d-4835-ac73-a0544b1b308e",
"schedule": {
"to": "2019-10-25T23:10:00+03:00",
"from": "2019-03-30T01:00:00+03:00",
"type": "Interval"
},
"title": {
"en": "No trains to Kakhovskaya station",
"ru": "Поезда не ходят до «Каховской»"
},
"description": {
"en": "Station closure",
"ru": "Закрытие станции"
},
"changeIds": [
"ch-feed3c7d-d35e-4481-87a4-7c141e1c96c0"
]
}
}
- Если события отсутствуют, список может быть пустым, но должен возвращаться в формате JSON. Пример структуры ответа:
{
"events": {
"type": "IndexedCollection",
"items": []
},
"changes": {
"type": "IndexedCollection",
"items": []
}
}
Фактический результат:
- Статус ответа: 404 Not Found.
- Структура ответа не совпадает с требованиями: Body ответа пустое.
- Ответ возвращается в формате Text.
Окружение:
macOs 10.15.2
Postman 7.22.1
API metrokit-service
Скриншот: [https://yadi.sk/i/8es5sVV7KTEquw]
Приоритет: средний
BUG-10773: При запросе списка событий /events для схемы с id=sc52507030 структура ответа не совпадает с требованиями
Шаги воспроизведения:
- В Postman создать и отправить GET-запрос на URI: [https://metrokit-service.maps.yandex.net/v1/events?scheme_id=sc52507030].
- Посмотреть ответ - список событий для схемы с id=sc52507030 (Вена).
Ожидаемый результат:
- Статус ответа: 200 OK.
- Ответ возвращается в формате JSON, структура ответа для id=sc52507030 совпадает со структурой в требованиях. Пример структуры ответа:
{
"events": {
"type": "IndexedCollection",
"items": [
{
"id": "ev-76c50f2d-9c3d-4835-ac73-a0544b1b308e",
"schedule": {
"to": "2019-10-25T23:10:00+03:00",
"from": "2019-03-30T01:00:00+03:00",
"type": "Interval"
},
"title": {
"en": "No trains to Kakhovskaya station",
"ru": "Поезда не ходят до «Каховской»"
},
"description": {
"en": "Station closure",
"ru": "Закрытие станции"
},
"changeIds": [
"ch-feed3c7d-d35e-4481-87a4-7c141e1c96c0"
]
}
}
- Если события отсутствуют, список может быть пустым, но должен возвращаться в формате JSON. Пример структуры ответа:
{
"events": {
"type": "IndexedCollection",
"items": []
},
"changes": {
"type": "IndexedCollection",
"items": []
}
}
Фактический результат:
- Статус ответа: 404 Not Found.
- Структура ответа не совпадает с требованиями: Body ответа пустое.
- Ответ возвращается в формате Text.
Окружение:
macOs 10.15.2
Postman 7.22.1
API metrokit-service
Скриншот: [https://yadi.sk/i/qm7fZ7gRUBH_1A]
Приоритет: средний
BUG-10775: При запросе списка событий /events для схемы с id=sc999 структура ответа не совпадает с требованиями
Шаги воспроизведения:
- В Postman создать и отправить GET-запрос на URI: [https://metrokit-service.maps.yandex.net/v1/events?scheme_id=sc999].
- Посмотреть ответ - список событий для схемы с id=sc999 (Милан).
Ожидаемый результат:
- Статус ответа: 200 OK.
- Ответ возвращается в формате JSON, структура ответа для id=sc999 совпадает со структурой в требованиях. Пример структуры ответа:
{
"events": {
"type": "IndexedCollection",
"items": [
{
"id": "ev-76c50f2d-9c3d-4835-ac73-a0544b1b308e",
"schedule": {
"to": "2019-10-25T23:10:00+03:00",
"from": "2019-03-30T01:00:00+03:00",
"type": "Interval"
},
"title": {
"en": "No trains to Kakhovskaya station",
"ru": "Поезда не ходят до «Каховской»"
},
"description": {
"en": "Station closure",
"ru": "Закрытие станции"
},
"changeIds": [
"ch-feed3c7d-d35e-4481-87a4-7c141e1c96c0"
]
}
}
- Если события отсутствуют, список может быть пустым, но должен возвращаться в формате JSON. Пример структуры ответа:
{
"events": {
"type": "IndexedCollection",
"items": []
},
"changes": {
"type": "IndexedCollection",
"items": []
}
}
Фактический результат:
- Статус ответа: 404 Not Found.
- Структура ответа не совпадает с требованиями: Body ответа пустое.
- Ответ возвращается в формате Text.
Окружение:
macOs 10.15.2
Postman 7.22.1
API metrokit-service
Скриншот: [https://yadi.sk/i/CTRfVyRBISXlwA]
Приоритет: средний
BUG-10776: При запросе списка событий /events для схемы с id=sc20559874 структура ответа не совпадает с требованиями
Шаги воспроизведения:
- В Postman создать и отправить GET-запрос на URI: [https://metrokit-service.maps.yandex.net/v1/events?scheme_id=sc20559874].
- Посмотреть ответ - список событий для схемы с id=sc20559874 (Прага).
Ожидаемый результат:
- Статус ответа: 200 OK.
- Ответ возвращается в формате JSON, структура ответа для id=sc20559874 совпадает со структурой в требованиях. Пример структуры ответа:
{
"events": {
"type": "IndexedCollection",
"items": [
{
"id": "ev-76c50f2d-9c3d-4835-ac73-a0544b1b308e",
"schedule": {
"to": "2019-10-25T23:10:00+03:00",
"from": "2019-03-30T01:00:00+03:00",
"type": "Interval"
},
"title": {
"en": "No trains to Kakhovskaya station",
"ru": "Поезда не ходят до «Каховской»"
},
"description": {
"en": "Station closure",
"ru": "Закрытие станции"
},
"changeIds": [
"ch-feed3c7d-d35e-4481-87a4-7c141e1c96c0"
]
}
}
- Если события отсутствуют, список может быть пустым, но должен возвращаться в формате JSON. Пример структуры ответа:
{
"events": {
"type": "IndexedCollection",
"items": []
},
"changes": {
"type": "IndexedCollection",
"items": []
}
}
Фактический результат:
- Статус ответа: 404 Not Found.
- Структура ответа не совпадает с требованиями: Body ответа пустое.
- Ответ возвращается в формате Text.
Окружение:
macOs 10.15.2
Postman 7.22.1
API metrokit-service
Скриншот: [https://yadi.sk/i/_IBj6x2VK8hDTw]
Приоритет: средний
От разработчиков поступила задача: нужно выяснить, какие запросы шли на IP-адреса. IP-адрес состоит из четырёх чисел, они разделены точками. Тебе нужны адреса, которые начинаются с "233.201.".
Логи лежат на удалённом сервере по адресу logs/2019/12. День, когда случилась ошибка, неизвестен.
Твоя задача — узнать, какие запросы были отправлены.
В ответе приложи:
- Команду, которой тебе удалось получить нужные логи.
- Подходящие строки, например:
184.79.247.161 - - [30/12/2019:21:38:13 +0000] "PUT /alerts HTTP/1.1" 400 3557
- Команда получения логов:
grep ^233.201 /logs/2019/12/*.txt
- Логи:
233.201.188.154 - - [18/12/2019:21:46:01 +0000] "DELETE /events HTTP/1.1" 403 3971
233.201.182.9 - - [21/12/2019:21:56:20 +0000] "PATCH /users HTTP/1.1" 400 4118
В системе обнаружен баг. Он проявлялся 30.12.2019 и 31.12.2019 с 21:30:00 до 21:39:59. При этом появлялись ошибки с номерами 400 и 500. Твоя задача — сохранить в отдельный файл логи, которые были записаны в этот период. Затем эти логи надо разложить по отдельным файлам: логи с одинаковой ошибкой положи в один файл.
Как это сделать:
- В домашней директории на удалённом сервере создай директорию bug1.
- Все запросы, которые произошли в указанный период, положи в файл main.txt.
- Внутри директории bug1 создай директорию events.
- Внутри директории events создай файлы для ошибок с номерами 400 и 500. Назови эти файлы 400.txt и 500.txt соответственно. В них выдели логи с соответствующей ошибкой из файла main.txt.
В ответе приложи:
- Команды, которые создают директории bug1 и events.
- Команду, которой ты выбираешь запросы за указанный период. Это те запросы, которыми ты отбираешь логи в файл main.txt.
- Команды, которыми ты кладёшь логи в файлы 400.txt и 500.txt из main.txt.
- Тексты файлов 400.txt и 500.txt.
База данных о поездках такси в Чикаго
Таблица neighborhoods
— информация о районах города:
neighborhood_id
— код района;name
— название района. Таблицаcabs
— информация о такси:cab_id
— код автомобиля;vehicle_id
— технический идентификатор автомобиля;company_name
— компания, которой принадлежит автомобиль. Таблицаtrips
— информация о поездках:trip_id
— код поездки;cab_id
— код автомобиля, на котором была совершена поездка;start_ts
— дата и время начала поездки (время округлено до часа);end_ts
— дата и время окончания поездки (время округлено до часа);duration_seconds
— длительность поездки в секундах;distance_miles
— дальность поездки в милях;pickup_location_id
— код района города, в котором была начата поездка;dropoff_location_id
— код района города, в котором завершилась поездка. Таблицаweather_records
— информация о погоде:record_id
— код записи погодных наблюдений;ts
— дата и время наблюдения (время округлено до часа);temperature
— температура на момент наблюдения;description
— краткое описание погодных условий. Например, 'light rain' или 'scattered clouds'.
В базе данных нет прямой связи между таблицами trips
и weather_records
. Связать эти таблицы можно по времени начала поездки (trips.start_ts
) и моменту погодных наблюдений (weather_records.ts
).
- Команды создания директорий bug1 и events:
mkdir bug1
mkdir events
- Команда выбора запросов за указанный период:
grep "21:3" ~/logs/2019/12/apache_2019-12-30.txt > ~/bug1/main.txt
grep "21:3" ~/logs/2019/12/apache_2019-12-31.txt >> ~/bug1/main.txt
- Команды сохранения логов в файлы 400.txt и 500.txt из main.txt:
grep -w "400" ~/bug1/main.txt > ~/bug1/events/400.txt
grep -w "500" ~/bug1/main.txt > ~/bug1/events/500.txt
4. 400.txt
80.57.170.51 - - [30/12/2019:21:35:12 +0000] "DELETE /users HTTP/1.1" 400 3623
204.235.176.118 - - [30/12/2019:21:35:13 +0000] "POST /users HTTP/1.1" 400 4704
82.95.203.67 - - [30/12/2019:21:35:19 +0000] "DELETE /lists HTTP/1.1" 400 3737
155.242.215.46 - - [30/12/2019:21:35:38 +0000] "POST /playbooks HTTP/1.1" 400 4450
189.176.85.0 - - [30/12/2019:21:35:39 +0000] "PATCH /alerts HTTP/1.1" 400 2732
13.108.71.71 - - [30/12/2019:21:35:43 +0000] "PATCH /events HTTP/1.1" 400 3410
195.213.133.182 - - [30/12/2019:21:35:46 +0000] "PUT /customers HTTP/1.1" 400 3085
235.243.133.78 - - [30/12/2019:21:35:47 +0000] "PATCH /customers HTTP/1.1" 400 3264
192.57.115.49 - - [30/12/2019:21:35:55 +0000] "POST /parsers HTTP/1.1" 400 2457
71.0.49.244 - - [30/12/2019:21:35:55 +0000] "PUT /collectors HTTP/1.1" 400 2785
224.159.206.126 - - [30/12/2019:21:36:02 +0000] "DELETE /customers HTTP/1.1" 400 4569
131.35.106.246 - - [30/12/2019:21:36:04 +0000] "DELETE /lists HTTP/1.1" 400 2578
216.24.42.208 - - [30/12/2019:21:36:06 +0000] "GET /parsers HTTP/1.1" 400 4597
123.53.150.160 - - [30/12/2019:21:37:19 +0000] "PATCH /events HTTP/1.1" 400 4379
61.129.127.103 - - [30/12/2019:21:37:32 +0000] "GET /lists HTTP/1.1" 400 2575
90.216.4.78 - - [30/12/2019:21:37:34 +0000] "PATCH /lists HTTP/1.1" 400 3899
204.250.214.208 - - [30/12/2019:21:37:36 +0000] "PATCH /parsers HTTP/1.1" 400 4742
79.214.240.98 - - [30/12/2019:21:37:37 +0000] "POST /fieldsets HTTP/1.1" 400 4441
65.47.42.12 - - [30/12/2019:21:37:39 +0000] "PATCH /customers HTTP/1.1" 400 2500
251.118.141.34 - - [30/12/2019:21:37:41 +0000] "POST /customers HTTP/1.1" 400 3519
205.20.166.196 - - [30/12/2019:21:37:51 +0000] "POST /users HTTP/1.1" 400 4032
156.217.3.46 - - [30/12/2019:21:37:52 +0000] "PATCH /parsers HTTP/1.1" 400 2020
48.240.198.167 - - [30/12/2019:21:37:57 +0000] "PATCH /playbooks HTTP/1.1" 400 4100
101.255.159.211 - - [30/12/2019:21:37:59 +0000] "GET /auth HTTP/1.1" 400 2324
80.76.98.203 - - [30/12/2019:21:38:00 +0000] "POST /playbooks HTTP/1.1" 400 3045
85.64.63.255 - - [30/12/2019:21:38:13 +0000] "PATCH /collectors HTTP/1.1" 400 2291
184.79.247.161 - - [30/12/2019:21:38:13 +0000] "PUT /alerts HTTP/1.1" 400 3557
93.2.134.22 - - [30/12/2019:21:39:39 +0000] "DELETE /alerts HTTP/1.1" 400 3701
86.34.86.182 - - [31/12/2019:21:35:10 +0000] "POST /auth HTTP/1.1" 400 3626
167.37.16.117 - - [31/12/2019:21:35:17 +0000] "PATCH /customers HTTP/1.1" 400 3294
199.128.92.19 - - [31/12/2019:21:35:43 +0000] "PUT /users HTTP/1.1" 400 4180
162.152.99.143 - - [31/12/2019:21:35:59 +0000] "PUT /users HTTP/1.1" 400 4606
83.115.59.224 - - [31/12/2019:21:37:26 +0000] "GET /alerts HTTP/1.1" 400 3489
194.10.97.226 - - [31/12/2019:21:37:31 +0000] "DELETE /lists HTTP/1.1" 400 2447
180.99.214.40 - - [31/12/2019:21:37:44 +0000] "DELETE /alerts HTTP/1.1" 400 2077
154.152.205.4 - - [31/12/2019:21:37:50 +0000] "GET /playbooks HTTP/1.1" 400 3324
197.82.125.54 - - [31/12/2019:21:37:52 +0000] "PUT /fieldsets HTTP/1.1" 400 4365
115.89.87.219 - - [31/12/2019:21:38:06 +0000] "PUT /playbooks HTTP/1.1" 400 2589
100.77.15.14 - - [31/12/2019:21:38:07 +0000] "GET /fieldsets HTTP/1.1" 400 4911
22.33.159.242 - - [31/12/2019:21:38:07 +0000] "GET /playbooks HTTP/1.1" 400 3955
149.148.229.11 - - [31/12/2019:21:39:16 +0000] "GET /users HTTP/1.1" 400 2071
236.107.64.192 - - [31/12/2019:21:39:17 +0000] "PATCH /users HTTP/1.1" 400 2791
24.156.105.39 - - [31/12/2019:21:39:23 +0000] "GET /lists HTTP/1.1" 400 2902
193.50.164.254 - - [31/12/2019:21:39:23 +0000] "PUT /playbooks HTTP/1.1" 400 3296
18.123.104.91 - - [31/12/2019:21:39:52 +0000] "GET /collectors HTTP/1.1" 400 4372
234.218.148.4 - - [31/12/2019:21:39:54 +0000] "PUT /users HTTP/1.1" 400 2509
5. 500.txt
64.250.112.189 - - [30/12/2019:21:35:13 +0000] "PUT /parsers HTTP/1.1" 500 4639
193.253.101.180 - - [30/12/2019:21:35:31 +0000] "PATCH /alerts HTTP/1.1" 500 2944
197.106.117.194 - - [30/12/2019:21:35:31 +0000] "PATCH /parsers HTTP/1.1" 500 3519
247.124.71.67 - - [30/12/2019:21:35:45 +0000] "PUT /alerts HTTP/1.1" 500 2746
62.88.204.119 - - [30/12/2019:21:35:51 +0000] "PUT /auth HTTP/1.1" 500 2666
125.156.142.26 - - [30/12/2019:21:36:01 +0000] "PATCH /events HTTP/1.1" 500 3460
144.170.212.70 - - [30/12/2019:21:36:04 +0000] "DELETE /parsers HTTP/1.1" 500 2599
59.39.200.252 - - [30/12/2019:21:36:05 +0000] "GET /alerts HTTP/1.1" 500 2650
150.136.200.100 - - [30/12/2019:21:37:24 +0000] "POST /lists HTTP/1.1" 500 2684
84.81.25.45 - - [30/12/2019:21:37:25 +0000] "POST /auth HTTP/1.1" 500 2052
30.222.160.141 - - [30/12/2019:21:37:30 +0000] "PATCH /parsers HTTP/1.1" 500 2017
117.87.158.36 - - [30/12/2019:21:37:34 +0000] "POST /fieldsets HTTP/1.1" 500 4056
212.153.128.212 - - [30/12/2019:21:37:42 +0000] "PUT /fieldsets HTTP/1.1" 500 3259
58.188.83.217 - - [30/12/2019:21:37:46 +0000] "POST /playbooks HTTP/1.1" 500 3947
193.123.131.146 - - [30/12/2019:21:37:47 +0000] "PUT /lists HTTP/1.1" 500 3902
182.7.179.91 - - [30/12/2019:21:37:48 +0000] "GET /users HTTP/1.1" 500 2950
10.25.168.164 - - [30/12/2019:21:38:05 +0000] "PATCH /playbooks HTTP/1.1" 500 3858
215.201.210.173 - - [30/12/2019:21:38:11 +0000] "PATCH /customers HTTP/1.1" 500 3277
179.241.103.167 - - [30/12/2019:21:39:23 +0000] "POST /lists HTTP/1.1" 500 3669
147.188.170.252 - - [30/12/2019:21:39:33 +0000] "POST /fieldsets HTTP/1.1" 500 3313
1.249.123.189 - - [30/12/2019:21:39:36 +0000] "PATCH /alerts HTTP/1.1" 500 4734
124.114.135.105 - - [30/12/2019:21:39:41 +0000] "PATCH /customers HTTP/1.1" 500 3348
35.215.100.202 - - [30/12/2019:21:39:43 +0000] "PUT /alerts HTTP/1.1" 500 4345
86.222.23.128 - - [30/12/2019:21:39:44 +0000] "PATCH /alerts HTTP/1.1" 500 2230
20.161.75.95 - - [30/12/2019:21:39:48 +0000] "DELETE /users HTTP/1.1" 500 2412
196.18.151.117 - - [30/12/2019:21:39:55 +0000] "PUT /events HTTP/1.1" 500 4439
77.101.138.151 - - [30/12/2019:21:39:57 +0000] "PUT /lists HTTP/1.1" 500 2194
208.205.133.127 - - [31/12/2019:21:35:17 +0000] "DELETE /alerts HTTP/1.1" 500 4561
20.145.255.91 - - [31/12/2019:21:35:30 +0000] "GET /parsers HTTP/1.1" 500 3051
91.66.134.13 - - [31/12/2019:21:35:53 +0000] "POST /lists HTTP/1.1" 500 3319
31.88.211.206 - - [31/12/2019:21:35:57 +0000] "DELETE /events HTTP/1.1" 500 2325
171.37.114.114 - - [31/12/2019:21:37:39 +0000] "DELETE /fieldsets HTTP/1.1" 500 3253
223.157.242.167 - - [31/12/2019:21:37:59 +0000] "POST /users HTTP/1.1" 500 2283
98.181.102.34 - - [31/12/2019:21:38:06 +0000] "PATCH /fieldsets HTTP/1.1" 500 4672
254.74.22.79 - - [31/12/2019:21:38:06 +0000] "PUT /lists HTTP/1.1" 500 2259
103.46.238.3 - - [31/12/2019:21:38:09 +0000] "PUT /lists HTTP/1.1" 500 3992
41.62.205.107 - - [31/12/2019:21:39:20 +0000] "PATCH /alerts HTTP/1.1" 500 3631
22.53.105.197 - - [31/12/2019:21:39:31 +0000] "DELETE /collectors HTTP/1.1" 500 4202
178.22.133.42 - - [31/12/2019:21:39:43 +0000] "PUT /alerts HTTP/1.1" 500 4648
102.247.13.50 - - [31/12/2019:21:39:55 +0000] "PATCH /auth HTTP/1.1" 500 3736
171.37.114.114 - - [31/12/2019:21:37:39 +0000] "DELETE /fieldsets HTTP/1.1" 500 3253
223.157.242.167 - - [31/12/2019:21:37:59 +0000] "POST /users HTTP/1.1" 500 2283
98.181.102.34 - - [31/12/2019:21:38:06 +0000] "PATCH /fieldsets HTTP/1.1" 500 4672
254.74.22.79 - - [31/12/2019:21:38:06 +0000] "PUT /lists HTTP/1.1" 500 2259
103.46.238.3 - - [31/12/2019:21:38:09 +0000] "PUT /lists HTTP/1.1" 500 3992
41.62.205.107 - - [31/12/2019:21:39:20 +0000] "PATCH /alerts HTTP/1.1" 500 3631
22.53.105.197 - - [31/12/2019:21:39:31 +0000] "DELETE /collectors HTTP/1.1" 500 4202
178.22.133.42 - - [31/12/2019:21:39:43 +0000] "PUT /alerts HTTP/1.1" 500 4648
102.247.13.50 - - [31/12/2019:21:39:55 +0000] "PATCH /auth HTTP/1.1" 500 3736
У тебя есть база данных с поездками на такси. По плану на линию обслуживания должно было выйти 10550 автомобилей — эта цифра покрывает спрос пользователей. Команде поступило много жалоб — свободных автомобилей оказалось недостаточно. Сколько такси вышло на линии на самом деле? Информация о всех машинах на линии есть в таблице cabs
.
- Зайди на удалённый сервер.
- Подключись к базе данных
chicago_taxi
. - Посчитай, сколько всего автомобилей в таблице
cabs
.
В ответе приложи:
- Число автомобилей
- Запрос, которым тебе удалось решить задачу.
- Число автомобилей: 5529.
- Запрос:
SELECT
COUNT(*) AS cnt
FROM cabs;
Посчитай количество автомобилей в каждой компании из таблицы cabs
. Отсортируй значения по убыванию. Команда предполагает, что некоторые компании не вывели достаточно автомобилей на линию.
Выведи те компании, в которых меньше 100 автомобилей. Поле с числом автомобилей назови cnt
, поле с названием компании — company_name
.
Чтобы решить задачу, примени оператор HAVING — аналог WHERE для агрегирующих функций.
В ответе приложи:
- Список компаний с числом автомобилей меньше 100.
- Запрос, которым тебе удалось решить задачу.
1. Список компаний с числом автомобилей меньше 100.
company_name | cnt
----------------------------------------------+-----
Nova Taxi Affiliation Llc | 97
Patriot Taxi Dba Peace Taxi Associat | 89
Blue Diamond | 85
Checker Taxi Affiliation | 81
Chicago Medallion Management | 80
Chicago Independents | 69
24 Seven Taxi | 67
Checker Taxi | 60
American United | 55
Chicago Medallion Leasing INC | 53
Top Cab Affiliation | 49
KOAM Taxi Association | 48
Chicago Taxicab | 38
Norshore Cab | 34
Gold Coast Taxi | 20
Metro Group | 20
Service Taxi Association | 18
5 Star Taxi | 14
American United Taxi Affiliation | 8
Metro Jet Taxi A | 8
Setare Inc | 7
Leonard Cab Co | 5
4615 - 83503 Tyrone Henderson | 1
5062 - 34841 Sam Mestas | 1
4623 - 27290 Jay Kim | 1
5997 - 65283 AW Services Inc. | 1
2092 - 61288 Sbeih company | 1
1469 - 64126 Omar Jada | 1
2733 - 74600 Benny Jona | 1
2192 - 73487 Zeymane Corp | 1
5006 - 39261 Salifu Bawa | 1
3556 - 36214 RC Andrews Cab | 1
3721 - Santamaria Express, Alvaro Santamaria | 1
2809 - 95474 C & D Cab Co Inc. | 1
2241 - 44667 - Felman Corp, Manuel Alonso | 1
3620 - 52292 David K. Cab Corp. | 1
2823 - 73307 Lee Express Inc | 1
6057 - 24657 Richard Addo | 1
6742 - 83735 Tasha ride inc | 1
1085 - 72312 N and W Cab Co | 1
3591 - 63480 Chuks Cab | 1
0118 - 42111 Godfrey S.Awir | 1
6574 - Babylon Express Inc. | 1
3094 - 24059 G.L.B. Cab Co | 1
5874 - 73628 Sergey Cab Corp. | 1
6743 - 78771 Luhak Corp | 1
5074 - 54002 Ahzmi Inc | 1
3623 - 72222 Arrington Enterprises | 1
4053 - 40193 Adwar H. Nikola | 1
Chicago Star Taxicab | 1
3011 - 66308 JBL Cab Inc. | 1
- Запрос:
SELECT
company_name,
COUNT(cab_id) AS cnt
FROM
cabs
GROUP BY
company_name
HAVING
COUNT(cab_id) < 100
ORDER BY
cnt DESC;
В приложении такси рассчитывается коэффициент стоимости поездки. Если погода хорошая, значение коэффициента равно 1. Если на улице дождь или шторм, коэффициент повышается до 2. У команды есть гипотеза, что в расчётах коэффициента ошибка. Чтобы проверить расчёт коэффициента, команде нужна выборка данных: разработчик может сверить коэффицент с данными в логах и исправить баг. Твоя задача — получить выборку.
Чтобы это сделать:
- Получи описание погодных условий из таблицы
weather_records
для каждого часа. - Раздели все часы на две группы оператором CASE: 'Bad', если поле
description
содержит слова rain или storm; 'Good' для всех остальных. - Полученное поле назови
weather_conditions
.
В результирующей таблице должно быть два поля — дата и час (ts
) и weather_conditions
.
Сделай выборку за период с 2017-11-05 00:00 по 2017-11-06 00:00.
В ответе приложи:
- Полученную таблицу с данными за указанный период.
- Запрос, которым удалось решить задачу.
1. Таблица с данными за указанный период.
ts | weather_conditions
---------------------+--------------------
2017-11-05 00:00:00 | Good
2017-11-05 01:00:00 | Bad
2017-11-05 02:00:00 | Good
2017-11-05 03:00:00 | Good
2017-11-05 04:00:00 | Bad
2017-11-05 05:00:00 | Bad
2017-11-05 06:00:00 | Good
2017-11-05 07:00:00 | Good
2017-11-05 08:00:00 | Good
2017-11-05 09:00:00 | Good
2017-11-05 10:00:00 | Good
2017-11-05 11:00:00 | Good
2017-11-05 12:00:00 | Good
2017-11-05 13:00:00 | Good
2017-11-05 14:00:00 | Bad
2017-11-05 15:00:00 | Good
2017-11-05 16:00:00 | Bad
2017-11-05 17:00:00 | Good
2017-11-05 18:00:00 | Bad
2017-11-05 19:00:00 | Bad
2017-11-05 20:00:00 | Bad
2017-11-05 21:00:00 | Good
2017-11-05 22:00:00 | Good
2017-11-05 23:00:00 | Good
2017-11-06 00:00:00 | Good
- Запрос:
SELECT
ts,
CASE
WHEN description LIKE '%rain%' OR description LIKE '%storm%' THEN 'Bad'
ELSE 'Good'
END AS weather_conditions
FROM
weather_records
WHERE
ts BETWEEN '2017-11-05 00:00:00' AND '2017-11-06 00:00:00';
После обновления ПО таксопарки стали сообщать, что прибыль, которую они получают, не сходится с данными, которые отдаёт приложение. Разработка предполагает, что проблема может быть в данных о количестве поездок.
Чтобы определить, есть ли баг, нужно получить выборку с количеством поездок каждого таксопарка за 15 и 16 ноября 2017 года.
- Выведи поле
company_name
. Поле с числом поездок назовиtrips_amount
и выведи его. - Результаты, полученные в поле
trips_amount
, отсортируй по убыванию.
Подсказка: чтобы решить задачу, соедини таблицы cabs
и trips
. Примени агрегирующие функции с группировкой. Не забудь написать конструкцию с условием.
В ответе приложи:
- Полученную таблицу с данными за указанный период.
- Запрос, которым удалось решить задачу.
1. Таблица с данными за указанный период.
company_name | trips_amount
----------------------------------------------+--------------
Flash Cab | 19558
Taxi Affiliation Services | 11422
Medallion Leasin | 10367
Yellow Cab | 9888
Taxi Affiliation Service Yellow | 9299
Chicago Carriage Cab Corp | 9181
City Service | 8448
Sun Taxi | 7701
Star North Management LLC | 7455
Blue Ribbon Taxi Association Inc. | 5953
Choice Taxi Association | 5015
Globe Taxi | 4383
Dispatch Taxi Affiliation | 3355
Nova Taxi Affiliation Llc | 3175
Patriot Taxi Dba Peace Taxi Associat | 2235
Checker Taxi Affiliation | 2216
Blue Diamond | 2070
Chicago Medallion Management | 1955
24 Seven Taxi | 1775
Chicago Medallion Leasing INC | 1607
Checker Taxi | 1486
American United | 1404
Chicago Independents | 1296
KOAM Taxi Association | 1259
Chicago Taxicab | 1014
Top Cab Affiliation | 978
Gold Coast Taxi | 428
Service Taxi Association | 402
5 Star Taxi | 310
303 Taxi | 250
Setare Inc | 230
American United Taxi Affiliation | 210
Leonard Cab Co | 147
Metro Jet Taxi A | 146
Norshore Cab | 127
6742 - 83735 Tasha ride inc | 39
3591 - 63480 Chuks Cab | 37
1469 - 64126 Omar Jada | 36
6743 - 78771 Luhak Corp | 33
0118 - 42111 Godfrey S.Awir | 33
6574 - Babylon Express Inc. | 31
Chicago Star Taxicab | 29
1085 - 72312 N and W Cab Co | 29
2809 - 95474 C & D Cab Co Inc. | 29
2092 - 61288 Sbeih company | 27
3011 - 66308 JBL Cab Inc. | 25
3620 - 52292 David K. Cab Corp. | 21
4615 - 83503 Tyrone Henderson | 21
3623 - 72222 Arrington Enterprises | 20
5074 - 54002 Ahzmi Inc | 16
2823 - 73307 Lee Express Inc | 15
4623 - 27290 Jay Kim | 15
3721 - Santamaria Express, Alvaro Santamaria | 14
5006 - 39261 Salifu Bawa | 14
2192 - 73487 Zeymane Corp | 14
6057 - 24657 Richard Addo | 13
5997 - 65283 AW Services Inc. | 12
Metro Group | 11
5062 - 34841 Sam Mestas | 8
4053 - 40193 Adwar H. Nikola | 7
2733 - 74600 Benny Jona | 7
5874 - 73628 Sergey Cab Corp. | 5
2241 - 44667 - Felman Corp, Manuel Alonso | 3
3556 - 36214 RC Andrews Cab | 2
- Запрос:
SELECT
cabs.company_name AS company_name,
COUNT(trips.trip_id) AS trips_amount
FROM
cabs
INNER JOIN trips ON trips.cab_id = cabs.cab_id
WHERE
CAST(trips.start_ts AS date) BETWEEN '2017-11-15' AND '2017-11-16'
GROUP BY
company_name
ORDER BY
trips_amount DESC;
Автоматизируй тест-кейс для Яндекс.Маршрутов. Найди нужные селекторы на стенде: https://qa-routes.praktikum-services.ru/
[CASE-1] Проверка названия вида транспорта в результате для такси
Шаги:
1. Ввести «Время начала поездки» — 08:00.
2. В поле «Откуда»: Усачева, 3.
3. В поле «Куда»: Комсомольский проспект, 18.
4. Выбрать режим «Свой».
5. Выбрать вид транспорта: такси.
ОР: Текст появившегося результата начинается со слова «Такси».
Селекторы:
Элемент | Селектор |
---|---|
Поле «Часы» | #form-input-hour |
Поле «Минуты» | #form-input-minute |
Поле «Откуда» | #form-input-from |
Поле «Куда» | #form-input-to |
Режим «Свой» | #form-mode-custom |
Транспорт «Такси» | #from-type-taxi |
Строка результата | #result-time-price |
Автотест:
const puppeteer = require('puppeteer');
const URL_TEST = 'https://qa-routes.praktikum-services.ru/';
async function testTaxiResult() {
console.log('Запуск браузера');
const browser = await puppeteer.launch({headless: false, slowMo: 100});
console.log('Создание новой вкладки в браузере');
const page = await browser.newPage();
console.log('Переход по ссылке');
await page.goto(URL_TEST);
console.log('Шаг 1: ввод часов и минут');
const hoursInput = await page.$('#form-input-hour');
await hoursInput.type('08');
const minutesInput = await page.$('#form-input-minute');
await minutesInput.type('00');
console.log('Шаг 2: заполнение поля Откуда');
const fromInput = await page.$('#form-input-from');
await fromInput.type('Усачева, 3');
console.log('Шаг 3: заполнение поля Куда');
const toInput = await page.$('#form-input-to');
await toInput.type('Комсомольский проспект, 18');
console.log('Шаг 4: выбор режима Свой');
const routeMode = await page.$('#form-mode-custom');
await routeMode.click();
console.log('Шаг 5: выбор вида транспорта');
const typeOfTransport = await page.$('#from-type-taxi');
await typeOfTransport.click();
console.log('Ожидание элемента с результатом');
await page.waitForSelector('#result-time-price')
console.log('Получение строки с результатом');
const text = await page.$eval('#result-time-price', element => element.textContent);
console.log('Проверка условия тест-кейса');
if (text.startsWith('Такси')) {
console.log('Успех. Текст содержит: ' + text);
} else {
console.log(`Ошибка. Текст не начинается со слова 'Такси'`)
}
console.log('Закрытие браузера');
await browser.close();
}
testTaxiResult();
Автоматизируй тест-кейс для ya.ru, применив нужные селекторы.
[CASE-2] Проверка появления результатов поиска
Предусловие:
Перейти на страницу ya.ru.
Шаги:
1. Ввести «Автоматизация тестирования» в поисковую строку.
2. Нажать кнопку «Найти».
ОР: Выполнен переход на страницу выдачи поиска и результат поиска непустой.
Селекторы:
Элемент | Селектор |
---|---|
Поисковая строка | #text |
Кнопка «Найти» | .button[type=submit] |
Результат поиска | .serp-item |
Автотест:
const puppeteer = require('puppeteer');
async function testYaRu() {
console.log('Запуск браузера');
const browser = await puppeteer.launch();
console.log('Создание новой вкладки в браузере');
const page = await browser.newPage();
console.log('Переход на страницу ya.ru');
await page.goto('https://ya.ru/');
console.log('Ввод текста "Автоматизация тестирования" в поисковую строку');
const searchField = await page.$('#text');
await searchField.type('Автоматизация тестирования');
console.log('Клик в кнопку "Найти"');
const searchButton = await page.$('.button[type=submit]');
await searchButton.click();
console.log('Ожидание перехода в страницу поисковых результатов');
await page.waitForNavigation();
console.log('Получение элементов результата поиска');
const result = await page.$('.serp-item');
console.log('Сравнение ОР и ФР');
if (result == null) {
console.log('Результаты поиска не найдены');
} else {
console.log('Результаты поиска отобразились');
}
console.log('Закрытие браузера');
await browser.close();
}
testYaRu();
© Яндекс.Практикум & Елена Добровольская, 2020