Вопросы по автоматическому тестированию (без привязки к языку программирования и платформе)
Добрый день, дорогой читатель!
В данной статье мы собрали основные вопросы, задаваемые во время интервью на позицию Инженер-программист по автоматическому тестированию или SDET, без привязке к языкам программирования и платформе, в Нижнем Новгороде.
Список является не финальной версией и будет дополняться, дорабатываться.
1. Для чего служит автоматическое тестирование(основная цель автоматизации, рассказать с точки зрения менеджмента и с точки зрения инженера-программиста по тестированию)?
Цели автоматизации тестирования:
- Повышение производительности труда;
- Минимизация человеческого фактора, повышение надежности;
- Удешевление процессов (более эффективное использование ресурсов);
- Повышение скорости разработки;
Таким образом можно сказать, что Автоматизация тестирования – инвестиции ресурсов с целью экономии большего числа ресурсов в дальнейшем.
2. Основные бенефиты от автоматизации, когда ее можно применять ?
Повышение производительности труда за счет автономности
- Старт автоматики по событию, «кнопке» и т.д.;
- Взаимодействие с продуктом/компонентой;
- Анализ результатов, сравнение с эталоном;
- Отслеживание прогресса (% выполнено)
- Показатель выполнения/невыполнения тестов
- Формирование читаемых очетов;
Минимизация человеческого фактора, повышение надежности:
- Ниже вероятность ошибок;
- Повторяемость;
- Стабильность;
Удешевление процессов:
- Возможное сокращение тестовых машин;
Повышение скорости работы:
- тестовой команды: автоматический тест в среднем занимает меньше времени;
- разработки в целом: тесты идут за ночь вместо нескольких дней;
- генерация данных:
- Возможность увеличения тестового покрытия без больших инвестиций в разработку автоматизации
3. Какие типы тестирования могут быть автоматизированы?
Автомацицию выгодно пременять в следующих случаях:
- частое выполнение однотипного набора тестов (регрессионное тестирование, smoke-тестирование);
- длинные пользовательские сценарии;
- неинтерактивные сценарии (требующие большого времени вычисления);
- тестирование с использованием интерфейсов, которые редко изменяются
- трудность ручной проверки в некоторых областях:
- Stress-тестирование;
- Тестирование безопасности (устойчивость к атакам);
- Тестирование ресурса;
- Тестирование производительности;
- Специфические требования к тесту:
- Самодиагностика продукта (рядом нет специалиста);
- Тесты требуют строгой повторяемости или последовательности действий, которую сложно обеспечить человеку;
- Тесты требуют специфического окружения, для которого нужна автоматика;
- Специфические требования к результату:
- Документированность выполнения для важных тестов.
4. Какие ограничения накладывает автоматическое тестирование?
Важно понимать, что бывают случаи когда расходы на разработку, внедрение, отладку и поддержку автоматики могут быть дороже ручного тестирования:
- Несвоевременность:
- Автоматизация без наличия процесса тестирования;
- В конце жизненного цикла продукта;
- Непродуманность автоматизации:
- Завышенные ожидания от автоматики;
- Неверный выбор инструмента;
- Слабое понимания самого продукта;
- Низкая утилизация теста:
- Изменяются входные данные, изменяется функциональность;
- Тесты редко выполняются;
- Сложность проверки:
- Тестирование прототипа;
- Картинки, видео, печать, usability, accessibility;
- Проверка семантики в документации и интерфейсах;
- Сложность написания:
- Пример: установка операционной системы;
- Специфические условия:
- Автоматический тест отличает повторяемость, но может требоваться вариативность;
- Автоматика не может выполняться ночью, так как лаборатория обесточивается в целях безопаности;
Частое следствие – даже автоматизированный тест все равно придется выполнять вручную.
5. Что такое ROI? Для чего служит ROI? В чем отличие между ROI и Выгодой ?
ROI (от англ. return on investment) - финансовый коэффициент, иллюстрирующий уровень доходности или убыточности бизнеса, учитывая сумму сделанных в этот бизнес инвестиций. ROI обычно выражается в процентах, реже — в виде дроби. Этот показатель может также иметь следующие названия: прибыль на инвестированный капитал, прибыль на инвестиции, возврат, доходность инвестированного капитала, норма доходности.
Показатель ROI является отношением суммы прибыли или убытков к сумме инвестиций. Значением прибыли может быть процентный доход, прибыль/убытки по бухгалтерскому учёту, прибыль/убытки по управленческому учёту или чистая прибыль/убыток. Значением суммы инвестиций могут быть активы, капитал, сумма основного долга бизнеса и другие выраженные в деньгах инвестиции.
6. Почему автоматическое тестирование слабо применимо в командах, использующих Agile?
... TBD ...
7. Назовите основные риски, связанные с автоматическим тестированием
Как и с любым процессом разработки, существуют риски, о которых нужно помнить, и учитывать это. К основным можно отнести следующие утверждения:
- Автоматизация – не замена разработки тестов или тестового плана:
- Качество автоматики не будет выше, чем качество разработанных тестов;
- Автоматика пишется людьми и не лишена ошибок:
- Ресурсы на отладку;
- Риски ошибочного выполнения тестов;
- Автоматика проверяет только то, что запрограммировано:
- Пропущенные ошибки могли бы быть обнаружены, если бы тест выполнялся вручную;
- Автоматика чувствительная к среде исполнения:
- Системные процессы, незакрытые файлы, недоступность сетевых ресурсов;
- Тестирование нестабильного приложения вызывает частые падения;
- Разбор логов может потребовать больше времени, чем ручной прогон тестов;
8. Что такое BDD?
BDD (сокр. от англ. Behavior-driven development, дословно «разработка через поведение») — это методология разработки программного обеспечения, являющаяся ответвлением от методологии разработки через тестирование (TDD).
Основной идеей данной методологии является совмещение в процессе разработки чисто технических интересов и интересов бизнеса, позволяя тем самым управляющему персоналу и программистам говорить на одном языке. Для общения между этими группами персонала используется предметно-ориентированный язык, основу которого представляют конструкции из естественного языка, понятные неспециалисту, обычно выражающие поведение программного продукта и ожидаемые результаты.
BDD фокусируется на следующих вопросах:
- С чего начинается процесс.
- Что нужно тестировать, а что нет.
- Сколько проверок должно быть совершено за один раз.
- Что можно назвать проверкой.
- Как понять, почему тест не прошёл.
9. Что такое KDD?
KDD (сокр. от англ. Knowledge Discovery in Databases дословно «обнаружение знаний в базах данных») - технология извлечения данных из баз данных. Описывает не конкретный алгоритм или математический аппарат, а последовательность действий, которую необходимо выполнить для извлечения знаний.
Основные этапы:
- Выборка данных - первый шаг KDD на основе которого формируется из имеющей совокупности данных исходная выборка. Для получения исходной выборки используются методы фильтрации данных, запросы экспертиза и экспертные данные;
- Очистка – процедура на основе исходной выборки информации представляющей ценность, поиск аномалий, обнаружение дубликатов и противоречий, сглаживания и т.д.;
- Трансформация – для того чтобы представить информацию в определенном виде. Например для прогнозирования временных рядов ряд преобразуется в скользящее окно. К трансформации относится квантование сортировка группировка и другие;
- Data Mining;
- Интерпретация;
10. Что такое TDD?
Разработка через тестирование (англ. test-driven development, TDD) — техника разработки программного обеспечения, которая основывается на повторении очень коротких циклов разработки: сначала пишется тест, покрывающий желаемое изменение, затем пишется код, который позволит пройти тест, и под конец проводится рефакторинг нового кода к соответствующим стандартам.
11. Каким образом связано TDD c XP?
Экстремальное программирование (англ. Extreme Programming, XP) — одна из гибких методологий разработки программного обеспечения. До определнного времени включала в себя TDD, которое позднее выделилось в отдельную методолгию.
12. Перечислите 5 основных шагов, выполняемых при создании/написании автоматического теста?
- Сначала мы отвечаем на вопросы:
- Что тестируем?
- Можно ли это автоматизировать?
- Затем мы выбираем основной интстумент тестирования:
- Фреймворки, библиотеки, пакеты, возможно пишем свои;
Фреймворк — это набор функций и/или классов, которые облегчают создание тестовых скриптов и позволяют легко осуществлять действия, которые трудно сделать стандартными средствами инструмента. Фреймворк может включать в себя:
- Систему логирования (если выбранный инструмент не имеет таковой или же её возможности не удовлетворяют вашим нуждам);
- Функции для выполнения проверок (например, для сравнения сложных элементов типа массивов, объектов, таблиц и т.п.);
- Функции для работы с данными (базы данных, таблицы и т.п.);
- Функции для манипулирования с различными типами данных (например, преобразование одного объекта в другой), не предусмотренные возможностями языка программирования;
- Функции для преобразования и выполнения ключевых слов (keywords) в код на языке программирования;
- Функции, отвечающие за запуск тестов (в определенной последовательности или какого-то набора тестов);
- И многое-многое другое;
- Создание тестовых скриптов;
- Необходимо решить, что автоматизировать в первую очередь, а что оставить на потом;
- Создание общего кода (common code - любые действия, которые приходится выполнять больше одного раза) приложения;
- Написание тестов;
- Запуск тестов;
- Проверяем:
- Работает.
- Работает правильно.
- Запуск тестов:
- Запуск всех тестов вручную. Одной командой запускается весь набор тестов. Обычно это обязательно делать перед релизом, чтобы полностью проверить работоспособность тестируемого приложения.
- Запуск тестов частями вручную. Можно разбить все тесты на группы по функциональности и запускать только те группы, чью функциональность необходимо проверить в данный момент.
- Smoke test. Запуск поверхностного теста, который проверяет общую работоспособность приложения. Обычно эти тесты проходят быстро и проверяют, что основные модули приложения доступны пользователю, но не выполняют каких-либо специальных проверок функциональности. Такой тест можно запускать после каждого билда автоматически (например, сделав его частью плана continuous integration).
- Автоматический запуск всех тестов. Можно на отдельном компьютере настроить автоматический запуск тестов (с помощью встроенных средств инструмента либо с помощью возможностей операционной системы) в определенное время. Здесь огромное пространство для фантазии: можно запускать все тесты по ночам, можно запускать тесты непрерывно (т.е. после прохождения всех тестов скачивать с репозитория последнюю версия приложения и тестов и запускать их снова), можно каждую ночь запускать набор основных тестов, а по выходным – всего набора скриптов и т.д.
- Проверяем:
- Просмотр и анализ результатов:
- Нам необходимо знать результаты пройденных тестов. Для просмотра этих результатов используются логи – отчеты, в которых отображается информация по всем тестам. Логи должны отвечать требованиям:
- должны содержать всю информацию о пройденных шагах;
- ошибки должны быть легко обнаруживаемы и к ним должна прилагаться вся необходимая информация для воспроизведения;
- должны быть настраиваемыми (разным учатникам команды нужна разная информация);
- Нам необходимо знать результаты пройденных тестов. Для просмотра этих результатов используются логи – отчеты, в которых отображается информация по всем тестам. Логи должны отвечать требованиям:
13. Может ли автоматическое тестирование полностью заменить ручное тестирование? Привидите примеры.
Сейчас нет.
- Автоматика проверяет только то, что запрограммировано:
- Пропущенные ошибки могли бы быть обнаружены, если бы тест выполнялся вручную
- Автоматика чувствительная к среде исполнения:
- Системные процессы, незакрытые файлы, недоступность сетевых ресурсов;
- Тестирование нестабильного приложения вызывает частые падения;
- Разбор логов может потребовать больше времени, чем ручной прогон тестов;
14. Перечислите основные плюсы и минусы при использовании готового Framework-а для автоматизации
... TBD ...
15. Что такое Page Object ? Где он применим ?
... TBD ...
16. Каким образом можно логировать действия автоматического теста, какие инструменты Вы знаете для данной операции?
... TBD ...
17. Назовите основные практики/стандарты, которые применяются сообществом при создании хорошего кода
... TBD ...
18. Назовите основные критерии успешности применения автоматизации
... TBD ...
19. Как понять, что мы выбрали хороший инструмент для автоматизации нашего продукта?
... TBD ...
22. Перечислите основные составляющие пирамиды тестирования. Как она связана с трудозатратами ?