"Умирает ли ручное тестирование?", "Мертво ли оно уже"?, "Когда его полностью заменит автоматизация"…
Эти вопросы всплывают очень часто – я вижу их в ЛинкедИне, на Куоре, в Твиттере.
Я бы разделил ответы на эти вопросы на три категории. Примеры ниже.
НЕТ! Оно не ручное! Это умственный труд, требующий размышлений! Что за идиотский вопрос?
Да. Все тестирование можно заменить автоматизацией и инструментами.
Сейчас ручное тестирование требуется гораздо меньше по ряду причин, но оно никогда не исчезнет.
Когда я думаю об ответах типа 1, я вижу в них эмоциональный заряд. Я научился этому у Джерри Вайнберга. Источник эмоции может быть страхом, чувством незащищенности или даже превосходства. Не могу сказать, что я удивлен. Те же чувства выражают рекрутеры и бухгалтеры – их профессии тоже подвергаются переменам, и ручной труд постепенно берут на себя инструменты.
Лично я больше склоняюсь к ответам типа 3. Это репост моего ответа с сервиса вопросов и ответов Quora.
Имплементация, вариант 1, с гранулярными (независимыми) тестами:
тест1, создание юзера:
создать юзера
тест2, логин юзера:
создать юзера
залогинить юзера
тест3, покупка:
создать юзера
залогинить юзера
сделать покупку
Имплементация, вариант 2, с зависимыми тестами:
тест1, создание юзера:
создать юзера
передать юзера в контекст
тест2, логин юзера (зависит от тест1)
получить юзера из контекста
залогинить юзера
тест3, покупка (зависит от тест2)
получить юзера из контекста
сделать покупку
Второй вариант конечно заманчивый - тесты будут выполняться значительно быстрее, так как каждый раз не надо создавать тестовые данные, можно выстраивать цепочки. Плюс система не будет забиваться ненужными данными, типа нового юзера для каждого теста. Плюс зависимые тесты даже и не будут выполняться если тест от которого зависишь завалился, например тест "покупка" не будет выполняться если тест "логин" зафейлился - в результате получим более информативный отчёт где только тест "логин" будет зафейленным, а тест "покупка" будет помечен "пропущенным"
Пишу интеграционные тесты на Java, реально ли на каком-нибудь фреймворке сделать подобные зависимости? Конечно граф зависимостей должен строиться автоматически. Например при запуске только "тест3" фреймворк должен рассчитать граф и запусить сначала "тест1", затем "тест2" а потом "тест3". А может не нужны эти зависимости, и тесты должны быть гранулярными? Или ещё как? Может что полезное есть в других языках?
Не так давно вышла новая версия JMeter 3.0. Концептуальных изменений в ней нет, однако поменялся интерфейс, изменились названия некоторых элементов, а также появились новые элементы.
Помимо адаптации к JMeter 3.0, программа обновленного тренинга претерпела и другие изменения. Учтены замечания в отзывах участников, больше времени мы уделили моментам, которые казались ученикам сложными, максимально уплотнив материал лекций. Лекции разбиты на небольшие фрагменты до 20 минут для удобства просмотра и навигации.
Если Вы планировали начать осваивать тестирование производительности, не откладывайте это в долгий ящик.
Этот курс, предназначенный для обучения тестировщиков программированию на языке Java, является одним из самых популярных курсов в нашей линейке.
Обратите внимание, что это курс именно для тестировщиков. Обучение программированию не сводится только к изучению языка программирования. Построение правильной архитектуры, использование фреймворков и библиотек, владение инструментами разработки и отладки -- это тоже часть “умения програмировать”. Поэтому в этом курсе детально рассматриваются именно те возможности языка и вспомогательных библиотек, которые наиболее востребованы при разработке автотестов.
Продолжительность нового курса осталась прежней, два с половиной месяца разбитых на 10 больших блоков, каждый из которых разбит на короткие фрегменты, но программа претерпела значительные изменения на основе анализа отзывов участников.
С одной стороны, мы решили выбросить некоторые темы, которые оценивались как не слишком полезные. С другой стороны, за счёт освободившегося места и более плотной компоновки материала появилась возможность добавить множество новых гораздо более интересных и полезных тем.
Что мы решили убрать из курса:
тестирование Windows-приложений через пользовательский интерфейс -- всё таки Java совсем не приспособлена для этого, если перед вами стоит такая задача -- тогда лучше выбрать другой язык для написания тестов, например, C# или Python;
тестирование Java приложений через пользовательский интерфейс -- просто потому, что таких приложений слишком мало, и эта тема оказалась невостребованной.
А теперь гораздо более длинный список того, что добавлено:
большой блок, посвящённый самым основам языка Java и программирования вообще, теперь тренинг подходит даже для тех, кто совсем-совсем не умеет программировать, обучение начинается с нулевого уровня подготовки;
использование сборщика Gradle;
дополнительные приёмы повышения надёжности тестов за счёт проверки и обеспечения выполнения предусловий;
работа с файлами в формате JSON;
более глубокое рассмотрение возможностей тестового фреймворка TestNG;
работа с удалёнными программными интерфейсами SOAP и REST;
настройка и использование сервера непрерывной интеграции Jenkins и генерация красивых отчётов при помощи инструмента Allure;
написание тестов в разных стилях: на псевдоестественном языке Gherkin (этот подход называется Behavior Driven Development) и в виде табличек с использованием инструмента Robot Framework (этот подход называется Keyword Driven Testing).
Все “старые” темы тоже полностью переписаны, материал лекций уплотнён (по нашему исследованию 1 час наших лекций по содержательности равняется более чем 3 часам живого рассказа за счет выверенности всех фраз и удаления всего лишнего мусора), и для удобства просмотра разбит на небольшие фрагменты продолжительностью не более 20 минут.
А ещё по многочисленным просьбам в лекциях теперь используется IntelliJ IDEA вместо Eclipse ;)
– Скажи-ка, дядя, ведь не даром Вы тестили таким макаром – Комар не пролетит? Ведь были ж тестеры умелы, И в кейсах не было пробелов. Недаром помнят все девелы Про тестеров айти!
– Да, были люди в наше время, Не то, что нынешнее племя… Лихие qa– факт! Плохие им достались таски, И девелы кружили в пляске. Не строили б ПМы глазки – Не отдали б в продакт!
Мы долго молча проверяли, Досадно было, сервер ждали, Ворчали старики: «Что ж так? Не могут программисты Создать среду без каталиста, Чтоб проверять красиво, чисто? А то ведь не с руки!»
И вот админы дали место Для проведенья наших тестов, Настроили среду. Разрабов ушки – на макушке! Чуть голову подняв с подушки, Поевши кофе и пампушки, Схватились за туду.
А я пишу тест-кейс по фиче, Смотрю, что есть у нас в наличьи. Постой-ка, брат-девел! Что тут хитрить – не все готово; Обидно это, честно слово! Неужто базу данных снова Залить ты не успел?
Два дня мы были в перепалке! Что толку в этакой болталке? Мы ждали третий день. Повсюду слышны речи вида «Пора уж взяться за тимлидов!», «Построить поле для корриды, А не кривой плетень!»
Прилег вздремнуть я без конфеты; И слышно было до рассвета, Как ликовал девел. Но тих был наш отдел открытый; Кто ноут чистил, весь избитый, Кто правил кейс, ворча сердито, Что прогер офигел.
И только небо засветилось, Все шумно вдруг зашевелилось, Повскакивал народ! Начальник наш рожден быть первым, Отец айтишным инженерам; Да, жаль его: трудов без меры, Он спит и видит прод.
И молвил он, сверкнув очами: «Ребята! Ведь продакт за нами! Ответим головой! Как наши деды отвечали; Как прежде тесты прогоняли!» Мы клятву тестеров сдержали В тот с девелами бой!
Ну ж был денек! Сквозь дым от клавы Разрабы покатились лавой – И все на наш отдел! Команды хостинга, доменов, Конструктора, ядра замены; Все помелькали в эту смену; Здесь каждый быть хотел!
Вам не видать таких сражений!.. Носились девелы, как тени, Бледны, как будто мел… Звучали мат и стоны лести, И обещанья страшной мести; Мешала прогонять нам тесты Тьма бородатых тел.
Узнал разраб в тот день немало, Что значит тестер наш удалый И наш прогон крутой! Весь день нам было не до скуки - Смешались в кучу люди, буки! И крики многих «пряморуких» Слились в протяжный вой!
Вот смерклось. Были все готовы Назавтра тестить все по-новой И до утра стоять! Но показали баг в скринкасте; И девелы различной масти Враз отступили как на здрасьте И лишь шептали «…ть!»
Да, были qa в наше время, Могучее, лихое племя – Отчаянный народ! Плохие им достались таски, И девелы кружили в пляске… Не строили б ПМы глазки – Не отдали бы в прод!