Вступительные задания для стажёров в ЦК АТ
Данный репозиторий содержит набор тестовых заданий для стажировки в Центре Компетенций Автоматизации Тестирования в ДИТ. Для выполнения задания необходимо сделать форк текущего репозитория, выполнить все задания и прислать на проверку ссылку на репозиторий, где задания выполнены. Допускается выполнять не все задания, но чем больше, тем лучше. В Файле Readme.md указать свои ФИО и комментарии к заданиям, если потребуется.
Репозиторий должен быть приватным и в нём должны быть доступы для следующих пользователей:
Системные требования
- Java 8+
- Git
Задание №1
В классе ProblemTests
есть ряд тестов, но они написаны с ошибками. Задание состоит в том, чтобы исправить ошибки и сделать тесты рабочими. Они все должны проходить успешно.
Смысл тестов должен сохраниться исходя из их названия.
Критерии выполнения:
- Проект компилируется
- Все тесты из
ProblemTests
проходят успешно - Проверки в тестах соответствуют их названиям
Задание №2
Создать тестовый класс FileTests
. В нём написать тест, который будет считывать файл test/java/resources/TraineeCharacteristics.txt
. Тест должен проверить, содержит ли файл строку "Упорство".
Критерии выполнения:
- Создан класс
FileTests
- Данный класс содержит тест, проверяющий наличие строки "Упорство" в заданном файле
- Тест проходит успешно
Задание №3
Написать набор юнит-тестов для класса Calculator
. Сам класс содержит ошибку, тесты должны её показать. Для написания тестов не подключать дополнительных библиотек.
Критерии выполнения:
- Создан класс
CalculatorTests
- Класс содержит набор юнит-тестов, покрывающий работу класса в достаточной степени
- Все тесты, кроме тех, что связаны с методом, содержащим ошибку, проходят успешно
- Тесты, связанные с дефектным методом должны падать
Задание №4
В классе Stack
написана простая реализация для такой структуры как стек, но она содержит ошибку. Необходимо исправить ошибку и написать набор юнит тестов, которые будут успешно проходить.
Критерии выполнения:
- Исправлена ошибка в классе
Stack
- Создан класс
StackTests
, содержащий достаточное количество тестов - Тесты проходят успешно
Задание №5
На основе реализации класса Stack
написать аналог DynamicStack
, только который не будет иметь ограничений по размеру и его размер будет изменяться динамически в зависимости от его заполнения
(увеличиваться, если стек должен переполниться, и уменьшаться, если он стал пуст более, чем на половину).
Для этого класса написать набор тестов, демонстрирующих корректность работы класса.
Критерии выполнения:
- Реализован класс
DynamicStack
с учётом описанных выше требований - Реализован класс
DynamicStackTests
, содержащий достаточное количество тестов - Все тесты проходят успешно
Задание №6
Написать XPath и CSS локаторы для строки с заголовком сайта https://mos.ru/dit (выделен красным прямоугольником на скриншоте). Локаторы написать в виде текста и записать в файле locators.txt
в корне проекта.
Критерии выполнения:
- Создан файл
locators.txt
- Файл содержит 2 строки: одна с XPATH выражением для поиска локатора, вторая с CSS выражением
- Оба выражения должны быть рабочими для поиска заданного элемента
Задание №7
Реализовать пакет robots
, который будет содержать иерархию классов, отображающих различных роботов в соответствии с описанием ниже. Классы должны быть составлены с учётом принципов ООП.
Для каждого робота должны быть написаны тесты. Дополнительный плюс, если указать в виде комментариев, где какой принцип ООП используется и в чём выгода его придерживаться.
Описание роботов
Робот умеет ходить, ездить или летать. Робот имеет тип назначения:
- медицинский робот снабжён набором инструментов (для анализа или выполнения операции) и умеет производить соответствующие действия;
- сварщик сваривает детали;
- повар готовит.
Роботы заправляются по определённому циклу в зависимости от вида энергии:
- атомной раз в 50 лет;
- внутреннего сгорания (дизельное топливо, бензин) по мере опустошения бака в зависимости от его объёма;
- электрической по мере уменьшению заряда до 20%.
Существуют роботы с гибридным типом питания
Существуют мультизадачные роботы: медики-сварщики, сварщики-повара и роботы, умеющие всё сразу.
Всего получается 6 типов роботов по назначению. Распределить тип питания и движения между ними (включая гибридные) самостоятельно.
Критерии выполнения:
- Создан пакет
robots
, содержащий необходимый набор классов. - Созданы реализации классов, описывающих следующих роботов по назначению: Сварщик, медицинский, повар, медик-сварщик, сварщик-повар и мультизадачный робот, умеющий всё.
- Для каждого типа робота подобран свой тип питания. Существует как минимум 2 типа робота с гибридными типами питания.
- У каждого робота есть свой доступный тип перемещения
- Классы построены с учётом принципов ООП.
- Реализован пакет с тестами
robotstests
, содержащий классы с тестами. - Все функции роботов покрыты тестами.
- Все тесты проходят успешно.