Автотесты 2020: Как сократить издержки на автотестах / Хабр

Содержание

Как сократить издержки на автотестах / Хабр

Автотесты — модная, но довольно затратная история. Автоматизаторы стоят дороже, чем ручные тестировщики, а сами автотесты требуют больше времени на разработку, причем разрабатывается не функционал продукта, а его проверка, которая окупается не явно и не сразу. Требует затрат и поддержка автотестов. Однако каждую из этих статей расходов можно минимизировать, сделав автотестирование намного эффективнее.

Меня зовут Мария Снопок, я менеджер направления автоматизации в Отделе тестирования Департамента разработки и сопровождения продуктов больших данных X5 Retail Group. В этой статье я расскажу о нашем опыте внедрения автотестов и сокращении связанных с ними издержек. Надеюсь, эта информация окажется полезной для команд, которые сталкиваются с трудностями при переходе на автоматизированное тестирование.



Как мы пришли к автотестам

До появления направления автоматизации я работала тест-менеджером в одном из наших продуктов. Когда там сформировалась довольно большая тестовая модель, мы стали распределять пул регрессионных тестов на всю команду разработки – уж если она отвечает за релиз, значит, она же и тестирует. Такой командный регресс решал следующие задачи:

  • разработчики, до того имевшие дело со своими обособленными кусочками функционала, получали возможность увидеть продукт целиком;
  • мы делали регресс быстрее и за счет этого релизились чаще;
  • мы больше не сокращали объем регресса — улучшилось качество.

Но это было дорого, потому что тесты выполняли дорогостоящие специалисты — разработчики и аналитики, и мы начали двигаться в сторону автоматизации.

Первыми пошли smoke-тесты — простые проверки, позволяющие убедиться, что страницы корректно открываются, загружаются, не падают, и весь базовый функционал доступен (пока без проверки логики и значений).

Затем мы автоматизировали положительные end-to-end сценарии. Этот шаг принес максимум пользы: тесты позволяли убедиться, что основные бизнес-процессы продукта работоспособны, даже если были ошибки в негативных, альтернативных и второстепенных сценариях работы.

И наконец добрались до автоматизации расширенных проверок регресса и альтернативных сценариев.

На каждом из этих этапов мы сталкивались с целым рядом трудностей, которые серьезно замедляли и осложняли весь процесс. Какие практические решения помогли нам ускорить и облегчить работу автоматизаторов?

Четыре направления сокращения издержек на автотестах


1. Договариваемся о форматах тестовых атрибутов на берегу

Разработчикам и тестировщикам-автоматизаторам нужно заранее договориться о правилах именования элементов HTML для последующего использования их в качестве локаторов в автотестах. Желательно на всех продуктах иметь единый формат. Мы выработали требования, позволяющие понимать, как именовать атрибуты, еще до того, как фича будет передана в разработку; это понимание есть и на стороне разработчиков, и на стороне тестировщиков. Мы договорились, что каждому видимому html-элементу присваивается кастомный атрибут data-qa, по которому тестировщик будет его искать.

Атрибут именуется по следующему шаблону:

[имя экрана][имя формы/таблицы/виджета][имя элемента]

Пример:
data-qa=«plu-list_filter-popover_search-input»
data-qa=”common_toolbar_prev-state»

Такой атрибут легко выделить просто на основании документации и макета, и все знают, каким должно быть его значение. Когда разработчик берет задачу в работу, он по этим правилам присваивает атрибуты data-qa всем видимым элементам страницы – заголовкам, кнопкам, ссылкам, селекторам, строкам и столбцам таблиц и пр. В результате тестировщик может начать писать автотесты ещё в процессе разработки фичи, основываясь только на макет и документацию, потому что уже знает, как будут названы атрибуты.

Внедрение тестовых атрибутов позволило нам снизить затраты на разработку и поддержку автотестов в среднем на 23% в сравнении с предыдущим периодом за счет снижения расходов на актуализацию тестов и локализацию элементов для автотестов.

2. Пишем ручные тесты так, чтобы их было легко автоматизировать

Ручные тестировщики и автоматизаторы живут в разных вселенных. Ручные нацелены на то, чтобы одним сценарием проверить несколько разных расположенных поблизости объектов теста. Автоматизаторы, напротив, стремятся все структурировать и в рамках одного теста проверять только однотипные объекты. По этой причине ручные тесты не всегда просто автоматизировать. Когда мы получили ручные кейсы для автоматизации, то столкнулись с рядом проблем, не позволяющих нам слово в слово автоматизировать полученные сценарии, потому что они были написаны для удобного выполнения живым человеком.

Если автоматизатор глубоко погружен в продукт, ему не нужны «ручные» кейсы, он сам может написать себе сценарий для автоматизации. Если же он приходит в продукт «со стороны» (у нас в Департаменте помимо тестировщиков в командах также есть тестирование как выделенный сервис), а там уже есть тестовая модель и сценарии, подготовленные ручными тестировщиками, у вас может возникнуть соблазн поручить ему писать автотесты на основе этих «ручных» тест-кейсов.

Не стоит этому поддаваться: максимум, для чего автоматизатор может использовать ручные тест-кейсы, – только чтобы понять, как устроена система с точки зрения пользователя.
Соответственно, надо изначально готовить ручные тесты так, чтобы их можно было автоматизировать, а для этого разобраться с распространенными проблемами.

Проблема 1: упрощение ручных кейсов.

Решение: детализация кейсов.

Представим себе описание ручного кейса:

  • откройте страницу списка версий пересмотра
  • нажмите кнопку создания
  • заполните форму
  • нажмите кнопку «создать»
  • убедитесь, что версия пересмотра создана

Это плохой сценарий для автоматизации, потому что в нем не указано, что именно надо открыть, какими именно данными заполнить, что именно мы ожидаем увидеть и в каких полях это посмотреть. Инструкции «убедитесь, что версия успешно создана» для автоматизации недостаточно — машине нужны конкретные критерии, по которым можно убедиться в успешности действия.

Проблема 2: ветвление кейса.

Решение: кейс должен иметь только линейный сценарий.

В ручных кейсах часто фигурируют конструкции с «или». Например: «откройте версию пересмотра 184 под пользователем 1 или 2». Для автоматизации это недопустимо, пользователь должен быть четко указан. Союзов «или» надо избегать.

Проблема 3: неактуальность кейса.

Решение: проверять кейсы перед передачей на автоматизацию.

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

Проблема 4: недостаточно предусловий.

Решение: полный стек вспомогательных данных для выполнения кейса.

У ручных тестировщиков замыливается глаз, в результате чего при описании предварительных условий они упускают некоторые нюансы, очевидные им, но неочевидные автоматизаторам, не так хорошо знакомым с продуктом. Например, они пишут: «открыть страницу с рассчитанным наполнением». Они знают, что для расчета этого наполнения надо запустить расчетный скрипт, а автоматизатор, в первый раз видящий проект, решит, что надо брать что-то уже рассчитанное.
Вывод: в предусловиях надо писать исчерпывающий перечень действий, которые необходимо выполнить перед запуском теста.

Проблема 5: множество проверок в рамках одного сценария.

Решение: на один сценарий не больше трех проверок (исключение – затратные и сложновоспроизводимые сценарии).

У ручных тестировщиков очень часто возникает желание сэкономить на кейсах, особенно когда они тяжелые, и проверить за один сценарий как можно больше, впихнув в него с десяток тестов. Этого нельзя допускать, потому как и в ручном, и в автоматизированном тестировании такой подход порождает одну и ту же проблему: первая проверка не прошла, и все остальные считаются не пройденными или вообще не запускаются в случае автоматизации.

Поэтому в сценариях автотестов допустимо от 1 до 3 проверок. Исключения — действительно тяжелые сценарии, требующие временных затрат на предрасчеты, а также сложновоспроизводимые сценарии. Здесь можно поступиться правилом, хотя лучше так не делать.

Проблема 6: дублирующие проверки.

Решение: не нужно многократно автоматизировать один и тот же функционал.

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

Решение вышеперечисленных проблем позволило нам снизить затраты на разработку автотестов на 16%.

3. Синхронизация с продуктовыми командами по вопросу рефакторинга, редизайна, существенных изменений функционала, чтобы не писать тесты «в стол»

В нашем Департаменте больших данных, где разрабатывается 13 продуктов, есть две группы автоматизаторов:

  1. автоматизаторы непосредственно в продуктовых командах;
  2. стрим-сервис автоматизации вне продуктовых команд, занимающийся разработкой фреймворка и общих компонентов и работающий по заявкам от продуктов с уже готовыми функциональными тестами.

Стрим-автоматизаторы изначально не так глубоко погружены в продукт, и раньше они не посещали ежедневные встречи команд, потому что это отнимало бы у них слишком много времени. Однажды такой подход подвел нас: мы случайно узнали из сторонних источников, что одна команда собралась рефакторить свой продукт (разбивать монолит на микросервисы), из-за чего часть тестов, которые мы написали, отправляется в архив. Было очень больно.

Чтобы не допускать подобного в будущем, приняли решение, что хотя бы раз в неделю автоматизатор из стрима будет приходить на встречи команды разработки, чтобы быть в курсе происходящего с продуктом.

Также мы договорились, что автоматизируются тесты только для того функционала, который готов к продакшну и не подвергается частым изменениям (регресс). Мы должны быть уверены, что хотя бы в ближайшие три месяца с ним не случится рефакторинг или серьезная переработка, иначе автоматизаторы просто не успеют с тестами.

Снижение издержек по результатам внедрения этих мер рассчитать сложнее. Мы взяли за основу время на разработку автотестов, утративших свою ценность в связи с планируемым переходом части функционала в микросервисы. Если бы мы знали об этом переходе заранее, то не покрывали бы автотестами изменяемый функционал. Итого потеря (она же потенциальная экономия) – 7%.

4. Апгрейд ручного тестировщика до автоматизатора

Автоматизаторов тестирования на рынке труда мало, особенно хороших, и мы их активно ищем. Также мы активно апгрейдим уже имеющихся ручных тестировщиков, у которых есть желание и базовые представления об автоматизации. Таких людей мы в первую очередь отправляем на курсы по языку программирования, потому что нам нужны полноценные автоматизаторы и полноценные автотесты, а от рекордеров, на наш взгляд, больше минусов, чем плюсов.

Параллельно с изучением языка программирования человек учится писать правильные, структурированные сценарии без проблем из пункта 2, читать и анализировать результаты отчетов автотестов, править мелкие ошибки в локаторах, простых методах, затем поддерживать готовые тесты, а уж потом писать свои. Все развитие проходит при поддержке опытных коллег из стрим-сервиса. В перспективе они могут участвовать в доработке фреймворка: у нас есть своя библиотека, масштабируемая на все проекты, ее можно совершенствовать, добавляя что-то свое.

Это направление снижения затрат у нас находится в стадии становления, поэтому подсчитывать экономию пока рано, но есть все основания полагать, что обучение кадров поможет существенно сократить текущие издержки. А заодно даст нашим ручным тестировщикам возможность развиваться.

Итог

Сейчас мы автоматизировали примерно 30% тестов на пяти продуктах, что привело к

сокращению времени регресс-тестирования в 2 раза.

Это годный результат, поскольку время для нас имеет большое значение: мы не можем тестировать бесконечно долго и не можем отдавать продукт без проверок; автоматизация же позволяет обеспечить необходимый объем проверок продукта в оптимальные сроки. В дальнейшем мы планируем довести процент автотестов до 80-90%, чтобы выпускать релизы как можно чаще, но при этом не покрывать автотестами проекты, где ручное тестирование по-прежнему выгоднее.

Автотестирование микросервисов в Docker для непрерывной интеграции

Микросервисы в настоящее время получили широкое распространение: в финансовых приложениях, стриминговых сервисах, логистике, e-commerce или IoT приложениях – компании по всему миру переходят на микросервиную архитектуру. Преимущества для бизнеса понятны:  лёгкость в разработке и сопровождении приложений,  повышенная производительность, скорость исполнения приложений, возможность выбирать и сочетать разные технологии и платформы, ускорение процесса разработки за счет использования непрерывной интеграции и распределенных команд, каждая из которых может быть полностью вовлечена в разработку отдельного микросервиса.

Те же преимущества порождают, как водится, и ряд сложностей, которые необходимо иметь в виду, решаясь на разработку приложений с микросервисной архитектурой. И одна из наиболее распространенных из них напрямую связана с тестированием, которое может стать довольно сложной, трудоемкой и затратной по времени фазой проекта. Автоматизированное тестирование становится важной частью непрерывной интеграции (CI/CD).

При помощи Docker автоматизированные тесты могут быть встроены в процесс непрерывной интеграции и развертывания, позволяя  тестировать приложение, даже если оно динамически разворачивается в режиме реального времени. Этот подход также стимулирует компании интегрировать специалистов по обеспечению качества в группы разработчиков, повышая бизнес-ценность решения, сокращая сроки вывода на рынок и обеспечивая высокое качество программного обеспечения приложения на протяжении всего цикла разработки.

В данной статье мы хотели бы поделиться своим опытом разворачивания и написания автоматизированных тестов для микросервисного веб-приложения, работающего в Docker в облаке Amazon AWS. Приложение используется нашим заказчиком для планирования и расчёта стоимости работ, которые он выполняет для своих клиентов. До внедрения автотестирования на проекте уже использовались юнит-тесты, однако довольно часто возникали ошибки, которые юнит-тесты не обнаруживали.

Архитектура проекта

Приложение состоит из более чем десяти сервисов, при этом часть из них написана на .NET Core, а часть – на NodeJs. Каждый сервис работает в Docker-контейнере в Amazon Elastic Container Service.  У каждого своя база Postgres, хотя некоторые микросервисы работают еще и с Redis, при этом общих БД нет. Если нескольким сервисам нужны одни и те же данные, то эти данные в момент их изменения передаются каждому из этих сервисов через SNS (Simple Notification Service) и SQS (Amazon Simple Queue Service), и сервисы сохраняют их в свои обособленные базы.

Еще одна особенность системы: большинство сервисов недоступно напрямую из интернета. Доступ осуществляется через API Gateway, который проверяет права доступа. Это тоже отдельный сервис, который так же надо тестировать.

Помимо перечисленных сервисов, приложение использует SignalR как сервис уведомлений, работающий в реальном времени. Он доступен напрямую из интернета и сам работает с OAuth, потому что встраивать поддержку Web-сокетов в Gateway оказалось нецелесообразно по сравнению с интеграцией OAuth и сервиса уведомлений.

Почему традиционный подход к тестированию не сработал

До решения прибегнуть к услугам Docker, на проекте широко использовались юнит-тесты с мок-объектами, но это лишь частично решало задачу, и инженеры регулярно сталкивались с большим количеством сложностей, особенно при тестировании работы с данными, например:

  • тестирование консистентности данных в реляционной БД
  • тестирование работы с облачными сервисами
  • неверные предположения при написании мок-объектов

В процессе разработки стало понятно, что юнит-тестов недостаточно, чтобы своевременно находить все проблемы, да и, помимо этого, наша система использует БД Postges, и добиться автоматического запуска Postgres и выполнения миграции при запуске теста нам так и не удалось.

Изучив все предлагаемые workarounds, мы пришли к выводу, что нужно подойти к проблеме с другой стороны:

  • внедрить интеграционные тесты и, таким образом, работать с настоящей базой данных, а не мок-объектом
  • тестировать целые микросервисы в Docker-контейнере, потому что в юнит-тесте могут быть ошибки при создании начального состояния
  • вместо облачных сервисов использовать их локальные версии, чтобы гарантировать воспроизводимость теста и независимость от интернета
Преимущества тестирования в Docker

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

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

Во-вторых, один и тот же скрипт запускают как сами разработчики на своих Windows-десктопах, так и сервер Gitlab CI под Linux. Таким образом, внедрение новых тестов не требует установки дополнительных инструментов ни на компьютере разработчика, ни на сервере, где тесты запускаются при коммите.

В-третьих, тестовое окружение разворачивается и прогоняет тесты на  локальном сервере. Это позволяет быть уверенным, в том, что автоматический тест в любом случае сработает и от нас не потребуется терять время на поиск причины остановки процесса в логах.  Использование LocalStack избавляет от запросов к Amazon и, таким образом, решает проблему слишком частых запросов к нему.

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

В-пятых, после завершения цикла тестирования требуется вернуть систему в исходное состояние. В случае использования Docker это делается путем остановки и удаления контейнеров, что приводит к минимизации кода.

Настройка тестового окружения

Первая задача – развернуть тестовое окружение. Шаги, которые необходимы для запуска микросервиса:

  • Настроить тестируемый сервис на локальное окружение, в переменных окружения указываются реквизиты для подключения к базе и AWS.
  • Запустить Postgres и выполнить миграцию, запустив Liquibase.

В реляционных СУБД прежде, чем записывать данные в базу, нужно создать схему данных, проще говоря, таблицы. При обновлении приложения таблицы нужно привести к виду, используемому новой версией, причем, желательно, без потери данных, – это миграция. Создание таблиц в изначально пустой базе – частный случай миграции. Миграцию можно встроить в само приложение. И в .NET, и в NodeJS есть фреймворки для миграции. В нашем случае в целях безопасности микросервисы лишены права менять схему данных, и миграция выполняется с помощью Liquibase.

  • Запустить Amazon LocalStack. Это реализация сервисов AWS для запуска у себя. Для LocalStack есть готовый образ в Docker Hub.
  • Запустить скрипт для создания в LocalStack необходимых сущностей. Shell-скрипты используют AWS CLI.
Как устроен автоматический тест

Во время теста в Docker работает все: и тестируемый сервис, и Postgres, и инструмент для миграции, и Postman, а, вернее, его консольная версия – Newman. Docker решает целый ряд проблем:

  • Независимость от конфигурации хоста
  • Установка зависимостей: докер скачивает образы с Docker Hub
  • Возврат системы в исходное состояние: просто удаляем контейнеры

Docker-compose объединяет контейнеры в виртуальную сеть, изолированную от интернета, в которой контейнеры находят друг друга по доменным именам.

Тестом управляет shell-скрипт. Для запуска теста под Windows используем git-bash. Таким образом, достаточно одного скрипта и для Windows, и для Linux. Git и Docker установлены у всех разработчиков на проекте. При установке Git под Windows устанавливается git-bash, так что он тоже у всех есть.

Скрипт выполняет следующие шаги:

  • Построение докер-образов
  • Запуск БД и LocalStack
    • docker-compose up -d <контейнер>
  • Миграция БД и подготовка LocalStack
    • docker-compose run <контейнер>
  • Запуск тестируемого сервиса
    • docker-compose up -d <сервис>
  • Запуск теста (Newman)
  • Остановка всех контейнеров
  • Постинг результатов в Slack
    • У нас есть чат, куда попадают сообщения с зеленой галочкой или красным крестиком и ссылкой на лог.

В этих шагах задействованы следующие Docker-образы:

  • Тестируемый сервис – тот же образ, что и для продакшена. Конфигурация для теста – через переменные окружения.
  • Для Postgres, Redis и LocalStack используются готовые образы из Docker Hub. Для Liquibase и Newman тоже есть готовые образы. Мы строим свои на их остове, добавляя туда наши файлы.
  • Для подготовки LocalStack используется готовый образ AWS CLI, и на его основе создается образ, содержащий скрипт.

Используя volumes, можно не строить Docker-образ только для добавления файлов в контейнер. Однако, volumes не годятся для нашего окружения, потому что задачи Gitlab CI сами работают в контейнерах. Из такого контейнера можно управлять докером, но volumes там не работают.

Сложности, которые мы преодолели

В процессе автоматизации интеграционных тестов мы столкнулись с рядом проблем и успешно их решили:

  • конфликты параллельных задач в одном Docker-хосте
  • конфликты идентификаторов в БД при итерациях теста
  • ожидание готовности микросервисов
  • объединение и вывод логов во внешние системы
  • тестирование исходящих HTTP-запросов
  • тестирование веб-сокетов (с помощью SignalR)
  • тестирование аутентификации и авторизации OAuth

Для решения этих задач в некоторых случаях достаточно написать отдельные скрипты, добавить шаги в Postman или, как в случае с тестированием веб-сокетов, написать дополнительно специальный инструмент.

В заключение

Решение развернуть автоматизированное тестирование с использованием технологий Docker, привело к тому, что у нас появился набор стабильных тестов, в которых каждый сервис работает как единое целое, взаимодействуя с базой данных и с Amazon LocalStack. Эти тесты существенно снижают риск ошибок, неизбежных для проекта по разработке и поддержке приложения со сложным взаимодействием 10+ микросервисов с частыми регулярными деплоями, где работают более 30 разработчиков в разных локациях и удалённо, и позволяют заказчику быстрее получить надежное и качественное решение. В 2016 году компания Puppet провела опрос более 4600 разработчиков и выяснила, что команды, использующие контейнеры совместно с применением DevOps или Agile практик разворачивали новые приложения, в среднем, в 200 раз быстрее, чем в случае, когда использовалась водопадная модель. В нашем проекте, заказчик получил первый релиз системы после 12 месяцев разработки, а количество ошибок на стороне бэкенда не превышало 1 на 20 коммитов.

Думают ли автотесты об электробагах

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

А вообще автоматизация тестирования – очень дорогой и специфический инструмент. Поэтому к ней нужно подходить с должным уровнем зрелости кода и самого проекта. Иначе можно потратить миллионы часов и денег, а эффект получить микроскопический или не получить его вообще.

В этой статье я постарался:

  • осветить «детские болячки» тест-менеджмента, стремящегося автоматизировать все, что не приколочено,
  • пояснить, какую пользу может нанести бюджету проекта автоматизация тестирования без детального анализа ее скоупа и должной подготовки,
  • составить Roadmap для подготовки к автоматизации проекта.

Источник 

Тенденция такова, что сейчас автоматизацией тестирования затыкают дыры во всех проектах, фактически заколачивая микроскопом гвозди. Доходит до того, что тестировщику без навыков автоматизации становится сложно найти работу, т.к. в большинстве вакансий пропущены навыки в тест-анализе и тест-дизайне, но обязательно требуется опыт в автоматизации чего-либо.

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

Собственно с этими мыслями я пошел выступать с докладом на «Стачку-2019» и потом на его основе написал этот пост.

Говорить мы будем о больших, серьезных end-to-end автотестах, которые автоматизируют регресс в части UI и веб-сервисов. А также о том, что с ними связано. Тему Unit-тестов, которые пишут или должны писать разработчики, мы затрагивать не будем. Это отдельный пласт автотестирования, и о нем написано уже много статей:

 
Проект я называть не буду, только скажу, что это – информационная система, рассчитанная на несколько десятков миллионов пользователей. Она интегрирована с несколькими государственными порталами, а также с десятками, а то и сотнями, региональных и коммерческих порталов. Отсюда повышенные требования к надежности,  отказоустойчивости и безопасности. Ну и вообще, чтобы это все «крутилось и не падало». 

Наше кредо на всех проектах ЛАНИТ по тестированию — непрерывные улучшения. В общем, все, что позволяет нам тестировать быстрее, лучше, выше, сильнее, экономит силы и время тестировщиков, а, как следствие, и бюджет. Мы реализовали на этом проекте, наверное все best practices, которые нам позволяли сроки и задачи. В итоге из крупных нереализованных фишек осталась только автоматизация регресса. Сама эта тема довольно долго витала в воздухе, и мы долго от нее отказывались, упираясь всеми конечностями, потому что профит был не очень понятен. Но в конце концов решились автоматизировать. А дальше был затяжной прыжок в холодную воду.
 

Небольшое отступление. Способы автоматизации

Основных способов автоматизации UI тестирования два.  

Источник

Автоматизация силами ручных тестировщиков

За примерами далеко ходить не надо – все есть на Хабре. Не буду называть компании. Те, кто интересовался темой, наверное, видели эти полуторачасовые вебинары, как у них все классно, здорово, как у них вся команда ручных тестировщиков научилась Java, пошла автоматизировать, все покрыто, все здорово, все работает, светлое будущее уже наступило. Есть такой подход. 

Проектный подход

И есть второй подход: набирается команда автотестировщиков – с опытом, со знаниями и навыками в ООП, и автоматизация выполняется непосредственно силами этой команды, а команда ручных тестировщиков выступает в роли заказчиков и экспертов. Да, они могут перетекать в команду автоматизаторов после обучения, отбора, но никогда не совмещают две роли одновременно.

Ниже я описал особенности этих подходов, но специально не маркирую их как «плюсы» или «минусы» — каждый определит знак для себя сам.

Особенности автоматизации «своими силами»

Источник

1) Когда мы автоматизируем силами ручных тестировщиков, мы получаем быстрый эффект «смотрите, этот тест раньше проходил день, теперь я могу заменить его роботом, он проходит 2 дня, но моего участия здесь нет». Естественно, это повышает квалификацию и расширяет кругозор специалистов: они начинают разбираться в коде. Но нет какого-то четкого, осязаемого результата для бизнеса. Сколько часов потрачено на разработку, а сколько можно было потратить, если бы это делал человек с опытом? Сколько часов сэкономлено? Как часто будет запускаться тест-кейс? Где? Кем сопровождаться? Сколько это стоит? Для меня это не очень хорошо, потому что я, к сожалению пока не видел заказчиков, которые готовы платить деньги бесконечно – за процесс. Поэтому для меня всегда важен четкий, осязаемый результат.

2) Нет сроков. С одной стороны, хорошо: никто команду не подстегивает, «давай быстро все автоматизируй, давай быстро изучай», у человека не растет напряженность. Он продолжает тестировать руками и спокойно погружается в автоматизацию. С другой стороны, нет сроков, спросить о результатах не можем, понять, когда будет готово — тоже.

3) Нет поддерживаемости и преемственности кода. С одной стороны, разные подходы, изыскания рождают лучшие способы написания, иногда, переписывая с нуля, можно ускорить автотест в несколько раз. Но это мегазатратно. К тому же кто все это будет сопровождать, если специалисты покинут проект, а такое бывает, если они уйдут в другую бизнес-область или в другую команду? Тоже не очень понятно.

Особенности проектного подхода

Источник

1) В этом случае мы говорим уже о проекте. А проект – это что? Это ресурсы, время, деньги. Соответственно, здесь идет расчет бюджета, учитывающий все нюансы, которые есть в этом проекте. Обсчитываются все риски, обсчитываются все дополнительные работы. И только после согласования бюджета принимается решение о запуске.

2) Исходя из этого, этап подготовки, скорее всего, будет не быстрый, так как расчет бюджета на чем-то должен строиться.

3) Естественно, предъявляются повышенные требования к тем специалистам, которые будут участвовать в проекте. 

4) Сюда же я запишу и сложные инфраструктурные решения, но об этом чуть позже. 

5) Модернизация существующих процессов тестирования и выпуска. Потому что автотестировщики – новый элемент команды. Если он раньше не был предусмотрен, соответственно, нужно его встроить в процесс. Автотестировщики не должны болтаться справа, слева, сбоку от проекта.

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

7) Ну и отчетность. Много отчетности. Потому что за любой бюджет с вас спросят. Соответственно, вы должны понимать, как у вас работают автотесты (плохо, хорошо), какие тенденции, какие тренды, что нужно увеличивать, что улучшать. Это контролируется отчетностью.

Долгая дорога в светлое будущее

Disclaimer: Мы сразу были такими умными (на самом деле — нет).

Источник

Здесь классификация проблем, с которыми мы столкнулись. Разберу каждую по отдельности. Сделаю это намеренно, чтобы вы принимали во внимание эти «грабли». Потому что эти проблемы, не будучи решенными на старте проекта, напрямую отразятся, как минимум, на его длительности, как максимум – они увеличат его бюджет или могут вообще закрыть проект.

Источник

  • Разные команды — разные подходы.
  • Слабая погруженность автоматизаторов в функционал.
  • Неоптимальная структура тест-кейсов.
  • Документирование фреймворка.
  • Проблемы в коммуникациях.
  • Своевременная покупка лицензий.

Разные подходы к автоматизации

Источник 

Пыпытка номер раз

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

Источник

У нас был один тимлид с опытом автоматизации, 3 горящих желанием автоматизировать тестировщика и много желания освоить этот путь. Тимлид, правда, был приходящий и не мог уделять проекту много времени, но положительным эффектом его работы стало то, что мы написали свой фреймворк. Мы посмотрели на те фреймворки, которые есть, они были дорогие и классные либо бесплатные, и к ним прилагалась инструкция «после сборки доработать напильником по вкусу». В общем по ряду причин мы не могли их использовать. Соответственно, решили написать свой фреймворк. Сам выбор и процесс написания — тема для отдельной статьи, а то и не одной.

Не сказать, что эта попытка была провальная, просто она себя изжила и закончилась. Когда мы поняли, что нужен бюджет, нужны дополнительные силы, нужны скилы, нужная другая организация команды. Мы автоматизировали порядка 100 кейсов, посмотрели, что это работает, и закруглились.

Попытка номер два

Источник 

Ничто так не манит, как надкушенный бутерброд.

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

Но, помня о первом опыте, перешли к способу №2. Здесь у нас уже была довольно «скилованная» команда, автоматизировавшая не один проект. Но тут мы столкнулись с другой бедой. Эта команда пошла на поводу у команды UI-тестирования. Как это произошло?

— Мы хотим вот это автоматизировать!
— Может, подумаем?
— Нет, мы не хотим ничего думать, мы хотим вот эти автотесты.

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

А все потому, что автотесты бегали по сырому коду, который ежедневно подвергался правкам. Т.е. изначальный набор кейсов был не верный. Мы должны были погрузиться сами в ту тематику, которую хотим автоматизировать, с точки зрения ее автоматизируемости (здесь и далее масло масляное). Очень критично подойти к кейсам, которые мы отдаем на автоматизацию, и на определенном этапе какие-то из них отбросить, какие-то разделить и так далее. Но мы этого не сделали. 

Что в итоге. Мы автоматизировали еще кусочек, порядка 300 кейсов, после чего проект закончился, т.к. стабильности запусков не было и понимания, как это сопровождать — тоже. А мы поняли, как делать не надо… во второй раз.

Попытка номер три

Источник 

К третьей попытке мы подходили, как пугливая лань к водопою. 

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

Грабли уже лежали и ждали нас.

Слабая погруженность автоматизаторов в функционал

Источник 

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

И когда мы стали погружать автотестировщиков в функционал, объяснять, что именно мы проверяем в кейсах, тогда они стали понимать эти «детские» ошибки, как их избегать, как их обходить. Да, опечатки есть, есть некие несоответствия, но автотест при этом не падает, просто логирует их.

Неоптимальная структура тест-кейсов

Источник 

Это, наверное, наша самая большая головная боль. Она дала больше всего проблем, больше всего временных затрат, больше всего часов и денег мы на них потеряли. Как следствие, теперь такую проблему мы будем решать в первую очередь, если будем что-то еще автоматизировать.

Проект у нас довольно большой, в нем крутится несколько десятков информационных систем, они объединены по рабочим группам. И вроде бы стандарты написания кейсов у всех одинаковые, но у одной группы этот кусочек называется «функция», у другой называется «полномочие», а автотестировщик читает и «функцию», и «полномочие», и впадает в ступор. Это просто как пример. Таких ситуаций на самом деле были сотни. Пришлось все это стандартизировать, причесывать.

С чем еще столкнулись, кроме таких двусмысленностей? У нас обнаружились не атомарные тест-кейсы. Это тест-кейсы, которые на каком-то из шагов могут выполниться вариативно. К примеру,  в условии, написано «вы можете выполнить шаг 2 под таким полномочием и под таким полномочием», а на шаге 3, например, в зависимости от использованного полномочия «нажать либо кнопку «А», либо кнопку «С». С точки зрения ручного тестировщика, все нормально. Тестировщик понимает, как это пройти, автотестировщик не понимает, как это пройти. В плохом варианте он сам выберет путь, в хорошем – он придет с уточнением. На преобразование не атомарных тест-кейсов  мы потратили изрядное количество времени.    

Документирование фреймворка

Источник

Всегда нужно думать о тех, кто придет после тебя. Как они будут разбирать твой код, анализировать и т. п. Хорошо, если там есть грамотные инженеры, программисты. Плохо, если их нет. Тогда можно столкнуться еще и с тем, что нужно разбирать наследие прошлых «побед», документировать заново, привлекать дополнительных людей, тратить дополнительное время.

Проблемы в коммуникациях

Источник 

1. Отсутствие регламентов по взаимодействию

Пришла команда автоматизаторов, они не знают, как общаться с командой ручного функционального тестирования, и никто их, собственно, не знает, что за люди, чем заняты. Да, есть лиды, которые между собой коммуницируют, а все остальные – просто соседи по проекту. 

2. Наличие регламентов по взаимодействию

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

То есть сначала ребята просто не знали, как между собой общаться, вроде бы они в одних чатах, но можно ли тут задавать вопросы или нельзя, они не знают. А когда они уже поработали некоторое время в таких условиях, у них сложились свои неформальные закрытые сообщества: мы – «ручники», мы – автоматизаторы. Как общаться? Вот у нас есть регламент – по регламенту. 

Своевременная покупка лицензий на специализированное ПО

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

Roadmap

Истоник 

Соответственно, теперь у нас есть Roadmap, как проводить старт такого рода проектов, он состоит, собственно, из этапов, каждый этап разбит на определенные пункты.

Предварительный этап

Источник 

Нам нужен тимлид

Тимлид, архитектор, в общем тот, кто будет с нами всю дорогу, тот, кто понимает в автоматизации, кто технически подкован, грамотен. Желательно, чтобы это был разработчик со стажем 5 лет в определенных языках программирования, которые используются на нашем проекте. Потому что так или иначе наш фреймворк будет работать с нашим проектом. Соответственно, лучше всего, если и фреймворк, и проект будут использовать один и тот же стек технологий.

Должна быть фокус-группа

Причем это не должна быть фокус-группа из автоматизаторов. Это должны быть лица, которые в дальнейшем будут принимать решения. Лучше их подружить в самом начале, чтобы было понимание, какие они решения принимают, для чего и зачем.

Оценка состояния базы тест-кейсов

Про оценку состояния базы текст-кейсов я уже говорил выше, соответственно, это тоже делается на самом предварительном этапе.

Выясняем, что не подлежит автоматизации

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

Оценка пилотного проекта

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

Пилот

Источник 

Нормализация тест-кейсов

Набранный пул кейсов подлежит нормализации. Устраняются двусмысленности и лишние предусловия. 

Подготовка фреймворка

Пишем свой фреймворк, дописываем имеющийся или используем какой-то покупной.

Инфраструктура

Готовим инфраструктурные решения.

Тут очень важно не прогадать: у вас будет непреодолимое желание использовать на первом этапе какой-то домашний компьютер под столом для запуска автотестов. Этого делать не нужно (тесты будут тормозить и отвалятся, когда кто-то случайно вырубил комп или пролил на него кофе). Нужно использовать готовые инфраструктурные решения, виртуальные машины, смотреть практику применения. Соответственно, сразу же рассчитывать его мощность как на этот проект, так и на последующий большой. Для этого нам нужен специалист по автоматизации.

Промежуточные итоги и корректировки

Пишем первые кейсы. Проводим оценку скорости работы всего этого счастья. Оцениваем дополнительные потребности в людях, поскольку мы уже понимаем, сколько будут автоматизироваться эти кейсы. То есть мы автоматизировали пять штук, теперь мы должны понять, сколько нам нужно людей, чтобы автоматизировать, условно, еще 5 тысяч. Какие-то дополнительные лицензии, железо для стенда, причем как для стенда, который будет запускать автотесты, так и для стенда самого приложения. Ну и, собственно, необходимость доработки тест-кейсов — насколько все плохо.

Подведение итогов пилота

Подводим итоги, пишем отчет и принимаем решение, будем мы идти в автоматизацию или нет.

Я уже писал ранее, что может так случиться, что и не пойдем. То есть, если, например, окупаемость 18 лет, а срок вашего проекта – 5, стоит подумать, зачем вам это надо.

Этап запуска

Источник 

Пункты перечислены последовательно, но на самом деле они все должны выполняться параллельно.

  • Запускаем подбор команды.
  • Определяем лидов.
  • Приоретизируем скоуп кейсов.
  • Нормализуем тест-кейсы.
  • Решаем «инфраструктурные сложности».
  • Пишем регламенты и инструкции, налаживаем коммуникации, устраняем узкие места.
  • Улучшаем фреймворк для одновременной работы нескольких автотестировщиков и распараллеливания групп запускаемых тестов.
  • Делаем модуль отчетности и статистики (разовой и накопительной).
  • Приступаем к написанию автотестов.

Основной этап

Источник 

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

Этап сопровождения

Источник 

Этап сопровождения немногим отличается от основного этапа. Существенное отличие – в его длительности. К тому же в нем гораздо меньший процент разрабатываемых новых автотестов. По нашим оценкам, 6-10% за релиз, в остальном он очень похож на основной этап.

Что в итоге?

Мы автоматизировали порядка 1500 end-to-end кейсов. Стабильность успешных запусков держится уже несколько релизов на отметке 92-95%.

Затраты на регресс сократились почти в 2,5 раза. Сами прогоны проходят за 3-4 часа, делается это ночью, чтобы к утру иметь готовые результаты.

Подробности технической реализации изложены в цикле статей моих коллег:

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

Спасибо за внимание. Задавайте вопросы, будем обсуждать. 

Источник 

Автор: SidneyXP

Источник

обучение на тестировщика онлайн — Skillbox

  • Если какой-то материал тяжело даётся, есть вопрос по ДЗ, достаточно написать преподавателю, который поможет разобраться с информацией и подскажет как решить задачу.
    По итогу 9-месячной учебы стал по-другому смотреть на сайты. Замечаю «баги», разбираюсь в вёрстке, веду репорты. Узнал, как работать со специфическим ПО.
    Уже сейчас нисколько не жалею, что выбрал Skillbox. Спасибо!!!

  • Благодаря урокам я научилась создавать классные постеры и векторные изображения.
    Также мой список новых скиллов пополнили ретушь и обтравка изображений — одни из главных навыков профессионального графического дизайнера.
    Ну и умение верстать журналы! Теперь я, как самый настоящий графический дизайнер, с легкостью могу создать разворот какого-нибудь модного журнала.

  • Курс очень круто структурирован, там есть все знания, которые мне нужны, чтобы освоить программу. Сама бы я точно что-нибудь пропустила.
    Преподаватели всё спокойно и терпеливо объясняют. Если ты что-то не понял, снимут дополнительный видеоролик и покажут ещё раз.
    Самое крутое в курсах Skillbox — постоянная связь с теми, кто подскажет, как правильно.
    Мой сайт

  • Работать дизайнером мне очень нравится, от UX я вообще в восторге, тяга к аналитике у меня была всегда. После долгих поисков работы в новой сфере подруга помогла мне получить заказ на редизайн сайта большой компании.
    Отдельно хочу сказать спасибо преподавателю Александру Свобода, он очень подробно расписывал все недочёты и ошибки решений в дизайне.
    Мой сайт

  • «Почему бы не сделать из хобби источник заработка?», — однажды подумала я.
    Недолго размышляя, записалась на курс в Skillbox и встала в ряд претендентов на гордое звание копирайтера.
    Работа с текстом помогла мне вернуть свою жизнь, вдохновила. Я начала снова ухаживать за собой, читать. Увидела, что я не только мать, но и писатель.
    Читайте мои тексты в Instagram

  • Я узнала, что такое охваты, KPI и прочие непонятные слова, которые пугали в группах по SMM. Поняла, что чем проще и понятней, тем лучше. Разобралась в сложной иерархии рекламного кабинета и научилась настраивать аудиторию и рекламу.
    Я уже в теме и не боюсь назвать своих более опытных друзей коллегами.
    Мой дипломный проект

  • Запуск автотестов на реальных устройствах с помощью Amazon Device Farm и Browserstack | by Руслан Дзутцев | Effective Developers

    Далее введите имя проекта и нажмите Create Project.

    После чего откроется страница создания и прохождения тест-ранов.

    А теперь выполним еще несколько манипуляций с нашими тестами.

    Для тестов мы используем конфигурацию Appium + Java + Junit, и дальнейшие действия также будут описываться исходя из этой конфигурации. Ваша конфигурация может отличаться.

    Для использования ADF необходимо создать архив с нашими тестами, которые будут запускаться на различных устройствах. Для этого нам нужно подключить некоторые плагины в файле проекта Pom.xml, а именно: Apache Maven JAR Plugin и Apache Maven Assembly Plugin. Для подключения в pom-файле следует прописать следующее:

    <build>
    <plugins>
    <plugin>
    <groupId>org. apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <version>2.6</version>
    <executions>
    <execution>
    <goals>
    <goal>test-jar</goal>
    </goals>
    </execution>
    </executions>
    </plugin>

    <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <version>2.10</version>
    <executions>
    <execution>
    <id>copy-dependencies</id>
    <phase>package</phase>
    <goals>
    <goal>copy-dependencies</goal>
    </goals>
    <configuration>
    <outputDirectory>${project.build.directory}/dependency-jars/</outputDirectory>
    </configuration>
    </execution>
    </executions>
    </plugin>

    <plugin>
    <artifactId>maven-assembly-plugin</artifactId>
    <version>2. 5.4</version>
    <executions>
    <execution>
    <phase>package</phase>
    <goals>
    <goal>single</goal>
    </goals>
    <configuration>
    <finalName>zip-with-dependencies</finalName>
    <appendAssemblyId>false</appendAssemblyId>
    <descriptors>
    <descriptor>src/main/assembly/zip.xml</descriptor>
    </descriptors>
    </configuration>
    </execution>
    </executions>
    </plugin>

    </plugins>
    </build>

    Убедитесь, что используются самые последние версии плагинов. Обновите плагины при необходимости.

    После того как Мавен подключит все плагины, нужно с их помощью составить jar-файлы нашего теста, а также архив с ними. Для этого в IntelliJ IDEA нужно открыть боковую панель Maven, открыть папку Plugins, открыть папку jar и нажать на jar:jar, а затем на jar:test-jar.

    В результате работы плагинов в корневой папке проекта в папке target сформируется два jar-файла.

    Далее в IDEA, в папке assembly, нужно запустить плагин под названием assembly:assembly.

    После выполнения плагина в той же папке target появится zip-файл с нашими тестами. Он-то нам и понадобится в дальнейшем.

    Вернемся в ADF. На странице с созданным проектом выбираем Create a new run.

    Далее настроим наш тест-ран. На первом этапе нужно загрузить тестируемый APK. Для этого следует выбрать кнопку с Android/iOS и загрузить APK в предложенное поле.

    После того как была загружена APK, станут доступны все Capabilities этого приложения. Следует убедиться, что все верно, после чего нажать Next step.

    На следующем этапе нужно сконфигурировать непосредственно ваш тест. Для этого в выпадающем окне следует выбрать фреймворки, которые были использованы для его написания (у меня это Appium + Java + JUnit; если у вас была другая конфигурация, то выбрать из списка нужно именно ее).

    Далее будет предложено загрузить тест. В качестве теста берем сформированный ранее zip-архив. Как только архив с тестами загрузился, можно выбрать опциональные конфигурации, такие как «Запись видео» и App Performance Data Capture (я рекомендую сделать это, так как дальнейшая отладка тестов будет проходить несколько проще), и переходить к следующему этапу.

    На следующем этапе добавляем устройства, на которых хотим прогнать наше приложение по автотестам. Можно выбрать уже готовую конфигурацию, которую предлагает Amazon, либо нажать Create new device pool и задать набор устройств самостоятельно, указав его название и описание.

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

    На заключительном этапе задается максимальное время работы для устройства, после чего устройство принудительно останавливается. Я рекомендую брать время с небольшим запасом. Если ваши тесты предположительно будут идти 20 минут, то следует взять 30–35 минут на каждое устройство. После выбора времени завершаем настройку конфигурации и начинаем тестовый прогон.

    После того как мы подтвердили выполнение тестов, они начинают выполняться на каждом из выбранных нами устройств. Чтобы увидеть детали, нужно перейти в тест-ран, кликнув по нему. Далее можно отслеживать общий прогресс в прохождении тестов, а также останавливать их в случае необходимости.

    как мы ускорили автотесты в 3-4 раза, сохранив старые наработки

    Пара слов о проекте

    Хотя детали проекта мы не можем раскрыть из-за NDA, в общих чертах задача выглядела следующим образом. Мы подключились к разработке fintech API-сервиса, который взаимодействовал с базой данных, возвращая необходимые финансовые объекты (цены, тарифы и прочее). Нашей задачей было тестирование мобильных клиентов для этого сервиса — как web, так и нативных мобильных приложений.

    Автоматизация тестирования на этом проекте развивалась постепенно, вместе с усложнением сервиса. Вероятно, так в свое время появились длинные end-to-end-тесты, которые мы и застали на проекте. Большая часть из них к тому моменту уже не работала, поскольку сервис изменился, а тесты поддерживать было некому — единственный автоматизатор покинул проект задолго до нашего появления.

    Даже те тесты, которые вроде бы соответствовали функционалу, порой падали из-за путанницы с версиями или недоступности внешних ресурсов. Для тестирования использовалась отдельная инфраструктура — тестовые стенды, где для экспериментов разворачивались необходимые версии. Доступ к ней имели разные рабочие группы, и они не всегда действовали согласованно. В результате действий одной группы мог отвалиться какой-нибудь важный API, используемый нашим сервисом, из-за которого даже работающий тест переставал проходить. Т.е. тест уже не показывал работоспособность самого сервиса, а относился скорее к тестовой инфраструктуре в целом.

    Как мы подошли к хаосу

    Казалось бы, в этой ситуации надо бросать все старые наработки и строить тестирование заново. Но мы поступили более «гуманно». Саму структуру тестирования сохранили, сосредоточившись на решении конкретных проблем — медленном проходе тестов, их нестабильности и недостаточном покрытии тест-кейсами. Для каждой из них нашлось свое решение.

    Рефакторинг

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

    Часть легаси-кода пришлось убрать — его было слишком сложно поддерживать. В другой части мы выловили все слабые места — заменили по дефолту sleep нормальным wait-ерами, вынесли подготовку ко всем тестам в глобальные setup через аннотации тест-раннеров и т.п. Множество мелких шагов позволило сократить проход среднего end-to-end теста с 3-4 до 1-2 минут.

    Атомарный подход

    Чтобы ускорить создание новых тестов и упростить поддержку старых, мы ушли от громоздких end-to-end-кейсов.

    Лично я ничего принципиального против end-to-end-тестирования не имею, однако в том случае, когда нужно проверить один конкретный экран (а то и часть информации на нем), проходить все этапы, начиная с авторизации пользователя, слишком накладно. Представьте, что мы тестируем интернет-магазин и нам требуется проверить только чек, который отправится покупателю после приобретения определенного товара. Вместо того, чтобы выудить из системы только один экран, мы бы заходили по логину и паролю, выбирали товар, подтверждали покупку и т.п. — выполняли бы множество шагов, не связанных с конкретной задачей тестирования. А ведь на каждый шаг требуется время. Даже со всей проведенной оптимизацией запуск end-to-end-теста занимал до 2 минут, в то время как проверка конкретного экрана — всего 10 секунд. Поэтому там, где это было возможно, мы перешли к таким «атомарным» проверкам, обращающимся только к тому экрану, который нас интересует в рамках тест-кейса.

    Попутно как раз для сравнения экранов мы внедрили snapshot-тестирование, которое позволяет проверять львиную долю UI. Имея тесты и код приложения в одном репозитории, мы можем в тестах задействовать методы этого приложения, т.е. поднимать любые экраны, которые нужны в этом процессе. Так мы можем находить ошибки на сравнении тестовых снимков экранов с эталонными.

    Сейчас snapshot-тестов у нас уже около 300, и их число постепенно растет, поскольку данный подход позволяет существенно сократить время проверки готовой версии перед отправкой ее на продакшн. Весь этот набор тестов запускается автоматически при открытии pull request и прогоняется за 40 минут — так разработчики быстро получают фидбек о проблемах в текущей ветке.

    Безусловно, некоторое количество end-to-end-тестов сохранилось. Без них не обойтись там, где требуется проверка больших бизнес-сценариев, но их имеет смысл запускать, когда все детали уже проверены.

    Мокирование

    Чтобы исключить влияние нестабильного тестового стенда на результат запуска наших тестов, мы запустили мок-сервер. О том, какие решения мы тогда рассматривали и почему выбрали Okhttpmockwebserver, я уже писал на Хабре.

    В результате доля эпизодически падающих из-за внешних причин тестов существенно сократилась.

    Kotlin DSL

    Параллельно мы сделали тесты более читаемыми.

    Те, кто занимаются UI-тестированием, знают, как сложно выискивать истину среди кучи локаторов в длинной «портянке» теста (особенно на той стадии, когда это еще были end-to-end-тесты). В них просто ориентироваться, когда ты на проекте уже два года и даже посреди ночи способен вспомнить, что есть что. Но если ты только пришел, въехать в происходящее — отдельная большая задача. Чтобы новым людям не пришлось каждый раз с ней сталкиваться, мы приняли решение перейти на Kotlin DSL. Он реализуется достаточно просто и имеет простую и понятную структуру. Если раньше тесты состояли из набора одинаковых низкоуровневых вызовов — кликов, ввода текста, скроллов, то теперь все это превратилось в нечто более «бизнесовое» — что-то вроде BDD-подхода. Все видно и понятно.

    На мой взгляд, этим мы сделали определенный задел на будущее. Данный проект однажды уже столкнулся с уходом единственного автоматизатора. Для тестов это закончилось не лучшим образом — их просто перестали поддерживать, поскольку порог входа получился слишком высоким. Для понимания такого сухого кода требовалось много времени и определенная квалификация. Мы же переделали тесты таким образом, что на автоматизацию можно будет в любой момент оперативно перебросить людей с других проектов или из ручного тестирования. Простейшие тесты на Kotlin DSL может писать практически любой. Так автоматизаторам можно оставить низкоуровневую реализацию, а на быстрое написание новых простых тестов подключить людей из команды функциональщиков. У них достаточно познаний в бизнес-логике, и проект только выиграет от того, что они будут больше вовлечены в процесс написания автотестов. Kotlin DSL позволяет описывать тест-кейсы именно так, как они хотели бы видеть все проверки, оставляя низкоуровневую реализацию методов за рамками их работы.

    В целом это все позволило быстрее увеличивать покрытие автотестами. Если раньше на реализацию нового набора тестов (test suite) уходило 16-20 часов, то с новым подходом, в зависимости от сложности тестов, требуется от 4 до 12 часов (а трудозатраты на поддержку сократились с 16-24 до 8-12 часов в неделю).

    Автор статьи: Руслан Абдулин.

    P.S. Мы публикуем наши статьи на нескольких площадках Рунета. Подписывайтесь на наши страницы в VK, FB, Instagram или Telegram-канал, чтобы узнавать обо всех наших публикациях и других новостях компании Maxilect.

    Бесплатный вебинар «Автоматизация тестирования: стандартные ошибки новичков»

    Главная > О Центре > События

    Как построить качественные автотесты? Какой из массы возможных вариантов на каждом шаге автоматизации выбрать? Покажем на бесплатном семинаре!

    Где и когда?

    15 ноября в 18:30 мск учебный центр «Специалист» проведет бесплатный онлайн-семинар для тех, кто уже умеет читать код, но хочет перейти в атоматизацию.

    Эксперт по тестированию

    Спикер семинара – преподаватель-практик, сертифицированный тестер ISTQB, специалист по автоматизации Чернова Анна Анатольевна. Анна Анатольевна руководит отделом автоматизированного тестирования в инвестиционной компании. Под её контролем выполняется создание тестовой модели регрессионного тестирования и автоматическое тестирование фронт- и бэк-офисных систем. За время карьеры занималась автоматизацией отчётности для крупнейших банковских систем России, внедряла систему тест-менеджмента, реализовала множество успешных проектов по тестированию. Кроме того, разрабатывала эффективные тестовые модели, активно применяемые на практике до настоящего времени.

    С чем Вы познакомитесь?

    Будут рассмотрены типичные кейсы, которые «сами по себе» случаются на первых проектах по автоматизации тестирования. Вы узнаете, что может пойти не так и как сделать правильно. Также Вы разберетесь в правилах построения фреймворка для автотестирования. По окончанию семинара Вы сможете выбирать более зрелые и эффективные решения, не повторять стандартные ошибки «в бою».

    Почему это важно?

    Автоматизация тестирования позволяет экономить трудозатраты и избегать ошибок ручного режима. Переход на автоматическое тестирование не всегда проходит гладко. На начальном этапе очень ценна помощь опытного наставника.

    Где получить полноценные знания?

    Если вы хотите достичь еще больших высот в сфере автотестов, предлагаем вам пройти курс «Автоматизированное тестирование веб-приложений с использованием Selenium», где вы изучите работу с паттернами и фрейморками автоматизации, освоите эффективные приемы тестирования, научитесь формировать отчетность.

    Регистрируйтесь!
    Не упустите шанс получить новую информацию из уст эксперта! Записывайтесь на бесплатный семинар!

    30.10.2020


    Если Вас заинтересовала тема семинара, и хочется узнать больше — получите полноценное образование на следующих курсахСортировать:по датепо возрастанию ценыпо убыванию ценыпо популярностипо новинкампо скидке

    Главная > О Центре > События

    автотестов на Android.

    Вся картина | Евгений Мацюк

    Если вы что-то не понимаете, не волнуйтесь. Мы все подробно объясним по пунктам.

    В качестве первого шага попробуйте написать несколько тестов на своей машине и запустить их локально.

    Выбор инструментов для написания автотестов

    Лучше сразу выбрать технологический стек, который вы будете использовать для написания тестов.

    Первая развилка — это выбор между кроссплатформенным решением (Appium и т. Д.)) и собственное решение (Espresso, UI Automator). Люди склонны яростно отстаивать свое решение.

    Мы все делаем нативные решения. По нашему опыту, они:

    • стабильнее
    • быстрее
    • легче интегрировать в IDE
    • не содержат слоев, которые вносят нестабильность и заставляют вас иметь сверхспециализированный опыт

    Plus, Google поддерживает Espresso и UI Automator.

    Вот несколько статей, предлагающих больше об этом сравнении:

    Сегодня почти никто не пишет только в Espresso и UI Automator. Разработчики придумали всевозможные фантики, чтобы облегчить себе жизнь. В настоящее время мы готовим статью об этих инструментах с классификациями и сравнениями. Короче говоря, мы поддерживаем фреймворк Kaspresso.

    Kaspresso

    Kaspresso — это фреймворк, который:

    • предоставляет DSL, что значительно упрощает написание автотестов
    • имеет встроенную многоуровневую защиту от нестабильных тестов
    • ускоряет работу в UI Automator
    • предоставляет полные журналы примерно то, что происходит в тесте
    • ,
    • позволяет запускать любые команды ADB внутри тестов.
    • предоставляет механизм перехватчика для перехвата всех действий и проверок.Этот механизм является основой для ведения журнала и защиты от нестабильных тестов.
    • описывает лучшие практики для написания автотестов (на основе нашего опыта)

    Вы можете узнать больше о Kaspresso на GitHub и Medium.

    Итак, вы написали несколько тестов, и теперь вам нужно их запустить. Это делается с помощью тестового раннера.

    Google предлагает утилиту AndroidJUnitRunner со специальным режимом Orchestrator. AndroidJUnitRunner делает именно то, что от него требуется: запускает тесты, в том числе параллельно.Orchestrator обеспечивает продолжение выполнения тестов даже в случае сбоя некоторых из них и сбрасывает общее состояние на то же место перед каждым новым тестом. Таким образом, каждый тест выполняется изолированно.

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

    • запускать отдельные тестовые группы
    • запускать тесты только на определенных устройствах
    • перезапускать неудачные тесты (вторая волна защиты от результатов нестабильные тесты после Kaspresso)
    • эффективно распределять тесты по устройствам с учетом истории запусков и успешности предыдущих запусков
    • создавать отчеты о запуске в разных форматах
    • отображать результаты выполнения (предпочтительно на основе Allure)
    • поддерживать историю запусков для дальнейшего analysis
    • просто интегрируйте с вашей инфраструктурой

    На рынке доступно несколько сторонних исполнителей. Среди них мы хотим выделить Marathon как наиболее перспективный, поскольку его легко настроить и он помогает с частью перечисленных выше задач. Например, он поддерживает распараллеливание тестов или подготовку результатов прогона в формате, который может отображаться в Allure.

    Однако у Марафона отсутствуют некоторые свойства, которые мы считаем жизненно важными. Например, у него нет:

    • Простая и естественная интеграция бегунов с инфраструктурой, которая предоставляет эмуляторы. Или, что еще лучше, возможность запускать тесты прямо в облаке.Но, честно говоря, это проблема не только Marathon. К сожалению, ни один из известных нам бегунов не ставит перед собой задачу получать эмуляторы. Напротив, это всегда работа разработчиков.
    • Более тесная интеграция с такими фреймворками, как Kaspresso, для получения наиболее полной, точной и точной информации о тестах.

    Мы также считаем, что раннер должен быть проприетарным, то есть для Android или iOS. Это связано с уникальными особенностями каждой ОС и неизбежной сложностью внесения изменений в раннер.

    Таким образом, в настоящее время мы работаем над нашим Avito Runner, чтобы включить все проверенные решения и идеи. Следите за обновлениями!

    Наряду с вопросом, какой раннер выбрать для тестов, мы сразу же сталкиваемся с другим вопросом: где лучше всего проводить тесты? Есть три варианта.

    Фактическое устройство

    Плюсы
    Показывает проблемы, характерные для определенных устройств и прошивок. Многие производители настраивают Android под свои нужды, как пользовательский интерфейс, так и логику ОС.Так что легко понять, почему может быть полезно проверить правильность работы вашего приложения в такой среде.

    Минусы
    Вам нужно будет где-нибудь достать ферму устройств и оборудовать для нее специальную комнату с климат-контролем, без прямого солнечного света и т. Д. Кроме того, имейте в виду, что батареи имеют свойство перегорать и выходить из строя. Также известно, что тесты изменяют состояние устройств, делая невозможным их восстановление до стабильной резервной копии.

    Чистый эмулятор

    Под «чистым» мы подразумеваем, что вы запускаете эмулятор самостоятельно или где-нибудь на машине с установленным AVD Manager.

    Плюсы
    Это быстрее, удобнее и стабильнее, чем реальное устройство. Создание нового эмулятора практически не займет времени, и у вас не возникнет проблем с обслуживанием спецтехники, заменой батарей и т.п. Однако количество тестовых сценариев, основанных на специфике конкретного устройства, незначительно и не считается высокоприоритетным. Самый большой недостаток здесь — плохая масштабируемость.В остальном простая задача загрузки новой версии эмулятора на все хосты превращается в кошмар.

    Образ Docker для эмулятора Android

    Docker решает проблемы с чистыми эмуляторами.

    Pros
    Docker в сочетании с оболочками для подготовки и развертывания образа эмулятора — это полностью масштабируемое решение, которое помогает быстро и эффективно подготовить эмуляторы для их развертывания на всех хостах, обеспечивая их достаточную изоляцию.

    Минусы
    Более высокий порог входа.

    Резюме

    Мы поддерживаем Docker.

    В Интернете доступны различные образы Docker-эмуляторов Android, поэтому мы рекомендуем использовать следующие:

    Как мы уже упоминали, подготовка образа требует определенного уровня навыков. Также часто возникает желание предварительно настроить эмулятор, включая отключение анимации, вход в свою учетную запись Google, отключение Google Play Protect и многое другое. Все это сложно осуществить. Поэтому один из наших приоритетов — предоставить каждому подробную документацию о том, как подготовить и использовать изображения.

    Вы написали сотни тестов пользовательского интерфейса. Вы хотите провести некоторые из них как часть PR, что означает, что вся группа должна закончить как можно скорее, например, за 20 минут. Именно здесь и начинается настоящее масштабирование.

    Однако это слепая зона для части разработчиков Android и инженеров по автоматизации, хотя и неудивительно, поскольку инфраструктура требует знания оборудования, конфигурации серверов, практики DevOps и многого другого. Поэтому убедитесь, что на вашей стороне есть люди, которые понимают все это, как в вашей компании, так и за ее пределами, поскольку они будут чрезвычайно полезны в спасении вас от ошибок.

    Что вас ждет:

    • Выбор между облачным решением, локальным решением с нуля и локальным решением в зависимости от инфраструктуры вашей компании для проведения тестов других платформ.
    • Самое сложное — это развернуть внутреннюю инфраструктуру с нуля. В этом случае вам необходимо выбрать оборудование, которое автотесты будут использовать в полной мере. Вам нужно будет измерить нагрузку на CPU / GPU / Memory / Disk, а также опробовать различное количество одновременно работающих эмуляторов для отслеживания стабильности теста.Это обширная тема, которую мы хотим изучить со всех сторон и поделиться с вами нашими рекомендациями.
      Дальнейший запуск необходимого ПО, онлайн-интеграция и прочее — все дело инженеров DevOps.
    • На выходе должна быть какая-то служба, единая точка, которая дает вам эмуляторы. Это может быть Kubernetes, облачный сервис, такой как Google Cloud Engine, или индивидуальное решение.
      Это снова будут инженеры DevOps, которые помогут его настроить.
    • Связывание службы с Test Runner.
      Одна из целей AvitoRunner — сделать эту ссылку максимально простой и прозрачной, а также предоставить точки расширения, чтобы упростить внедрение вашей индивидуальной службы.

    В ближайшем будущем мы планируем выпустить AvitoRunner и другие статьи, которые помогут вам настроить вашу инфраструктуру.

    Не забывайте и об этих других важных моментах:

    • вывод отчетов о тестовых прогонах (Allure)
    • внедрение / синхронизация с TMS
    • интеграция с CI / CD
    • обучение разработчиков и тестировщиков
    • процессы ( кто, когда, сколько и какие автотесты надо писать)

    Подробнее об этих вопросах мы поговорим позже.

    Мы рассмотрели основные аспекты настройки автоматического тестирования Android. Теперь мы надеемся, что эта головоломка сложится у вас в голове, и вы сможете увидеть всю картину целиком.
    Смотрите, как мы растем на нашем сайте.

    master — chromiumos / third_party / autotest — Git в Google

     input_playback: исправить некоторое форматирование
    
    Это блокировало мою загрузку для https://crrev.com/c/2607162, но я
    не хотел исправлять это в этом CL, чтобы сохранить чистоту дифференциала.
    
    ОШИБКА = нет
    ТЕСТ = нет
    
    Идентификатор изменения: Ia5fd58cb9800529ca5f3b3f8636471d3164267f1
    Рецензия: https: // chromium-review.googlesource.com/c/chromiumos/third_party/autotest/+/2607163
    Тестировал: Гарри Каттс 
    Авто-отправка: Гарри Каттс 
    Рецензент: Калин Стоянов 
    Commit-Queue: Калин Стоянов 
     

    1 файл изменен

    дерево: e5a1b510c59f0d000d31bbbe794e5252be4ad837

    1. .gitignore .style.yapf
    2. CTS_OWNERS ENGPROD_OWNERS
    3. FINGERPRINT_OWNERS FIRMWARE_OWNERS
    4. INFRA_OWNERS LGPL_LICENSE
    5. ЛИЦЕНЗИОННОЕ MODULE_LICENSE_LGPL ⇨ LGPL_LICENSE
    6. cfg»> PRESUBMIT .cfg
    7. PRESUBMIT.py
    8. README.md
    9. __init__.py
    10. bin /
    11. cli /
    12. client /
    13. common.py
    14. contrib /
    15. база данных /
    16. docs /
    17. global_config.ini
    18. журналы /
    19. main.star
    20. метаданные /
    21. moblab_config.ini
    22. результаты /
    23. сервер /
    24. site_utils /
    25. json»> ssp_deploy_config.16stils
    26. ssp_deploy_config.json
    27. /9025/9025 tsco /
    28. venv /

    ПРОЧИТАТЬ.md

    Autotest — это платформа для полностью автоматизированного тестирования. Первоначально он был разработан для тестирования ядра Linux и расширен командой Chrome OS для проверки полных образов системы Chrome OS и Android.

    Автотест состоит из ряда модулей, которые помогут вам проводить автономные тесты или настраивать полностью автоматизированную тестовую сетку, в зависимости от ваших планов. Неполный список функций:

    • Основной код для запуска тестов на тестируемом устройстве.В этой настройке логика тестирования выполняется на тестируемой машине, а результаты записываются в файлы для последующего сбора с машины разработки или инфраструктуры лаборатории.

    • Основная часть кода для запуска тестов на удаленном тестируемом устройстве. В этой настройке логика тестирования выполняется на машине разработки или части лабораторной инфраструктуры, а тестируемое устройство управляется удаленно через SSH / adb / некоторую комбинацию вышеперечисленного.

    • Инструменты разработчика для выполнения одного или нескольких тестов. test_that для Chrome OS и test_droid для Android позволяют разработчикам запускать тесты на устройстве, подключенном к их машине разработки на своем столе. Эти инструменты написаны таким образом, что та же логика тестирования, которая выполняется в лаборатории, будет работать на их рабочем месте, что сокращает количество конфигураций, в которых выполняются тесты.

    • Лабораторная инфраструктура для автоматизации выполнения тестов. Эта инфраструктура способна управлять тысячами устройств в различных лабораторных средах и проводить их тесты.Сюда входит код как для синхронного, так и для асинхронного планирования тестов. Ежедневно на этом оборудовании проводятся тесты для проверки каждой сборки Chrome OS.

    • Инфраструктура для создания миниатюрных копий полной лаборатории. Полная лабораторная работа влечет за собой определенный объем административной работы, что не подходит для рабочей группы, заинтересованной в автоматических тестах на небольшом наборе устройств. Поскольку эта шкала является обычным явлением при запуске устройства, специальная настройка, называемая Moblab, позволяет естественным образом переходить от рабочего стола к мини-лаборатории к полной лаборатории.

    Выполните несколько автотестов

    См. Руководства по test_that и test_droid :

    test_droid Базовое использование

    test_that Базовое использование

    Напишите несколько автотестов

    См. Существующие рекомендации и комментарии к существующим методам и рекомендациям. код.

    Передовые методы автотеста

    Получение последнего исходного кода

    git clone https://chromium.googlesource.com/chromiumos/third_party/autotest

    Взлом и отправка исправлений

    См. Руководство по стилю кодирования для получения инструкций .

    Стиль кодирования

    Зависимости обработчиков перед загрузкой

    Вам необходимо запустить utils / build_externals.py , чтобы настроить зависимости для тестов обработчиков перед загрузкой.

    Настройка Lucifer

    Настройка Lucifer

    Запуск автотестов на реальных устройствах с Amazon Device Farm и Browserstack | от Руслан Дзутцев | Effective Developers

    После регистрации вы попадете на страницу Device Farm (эта страница также доступна из консоли AWS через одноименный пункт меню), где вас попросят создать новый проект для автоматического тестирования.Чтобы создать проект, нажмите «Создать новый проект».

    Затем введите имя проекта и нажмите «Создать проект».

    После этого открывается страница для создания и прохождения тестовых прогонов.

    А теперь проделаем еще несколько манипуляций с нашими тестами.

    Для тестов мы используем конфигурацию Appium + Java + Junit, и дальнейшие действия также будут описаны на основе этой конфигурации. Ваша конфигурация может отличаться.

    Для использования ADF необходимо создать архив с нашими тестами, который будет запускаться на различных устройствах.Для этого нам нужно подключить некоторые плагины в файле проекта Pom.xml, а именно: Apache Maven JAR Plugin и Apache Maven Assembly Plugin. Чтобы включить его, укажите в файле Pom следующее:

      


    org.apache.maven.plugins
    maven-jar-plugin < / artifactId>
    2.6



    test-jar




    org.apache.maven.plugins
    maven-dependency-plugin
    2.10


    copy-dependencies
    package

    copy-dependencies


    $ {project. build.directory} / dependency-jars /




    maven-assembly-plugin
    2.5.4


    пакет

    single


    zip- with-dependencies
    false

    src / main / assembly / zip.xml





    Убедитесь, что вы используете последние версии плагинов.При необходимости обновите плагины.

    После того, как Maven подключит все плагины, вам необходимо использовать их для создания файлов jar нашего теста, а также архива с ними. Для этого в IntelliJ IDEA откройте боковую панель Maven, откройте папку Plugins, откройте папку jar и щелкните jar: jar, а затем jar: test-jar.

    В результате выполнения плагинов в целевой папке в корневой папке проекта будут созданы два файла jar.

    Далее в IDEA в папке сборки нужно запустить плагин под названием assembly: assembly.

    После запуска плагина в той же целевой папке появится zip-файл с нашими тестами. Он нам понадобится в будущем.

    Снова в АПД. На странице с созданным проектом выберите «Создать новый запуск».

    ADAC-Autotest 2020: 95 Modelle am Prüfstand

    95 neue Autos testete der ADAC im Jahr 2020. Das sind die Spitzenreiter — und die Schlusslichter.

    Veröffentlicht am 21.01.2021

    Alle Jahre wieder testet der Allgemeine Deutsche Automobil-Club (ADAC) verschiedene Fahrzeugmodelle in einem einheitlichen Verfahren, in die Bewertung fließen mehr als 300 Testkriterien mit ein.2020 wurden 95 neue Automodelle umfassend überprüft, darunter 38 mit einem Alternativen Antrieb — konkret 14 Elektro- und 22 Hybridfahrzeuge (darunter vor all Plug-in-Hybride), ein Brennstoffzellen- und ein Erdgasauto. Bei den konventionellen Antrieben waren 41 Benziner und 16 Dieselfahrzeuge vertreten. Welche Modelle dabei am besten abgeschnitten haben und welche nicht mit den anderen Testkandidaten mithalten konnten, ist in der unten stehenden Tabelle ersichtlich.

    Die Ergebnisse des ADAC-Autotests 2019 findet ihr hier im Überblick.

    Die Ergebnisse der ADAC-Autotests 2020

    Insgesamt fielen die Ergebnisse des ADAC-Autotest 2020 tendenziell positiv aus, 68 Modelle erhielten eine Bewertung bis 2,5, was der Note «gut» entspricht.

    Drei Modelle an der Spitze

    Generell haben Elektroautos besser abgeschnitten als Plug-in-Hybride, Was wohl auch darauf zurückzuführen ist, dass das Kriterium «Umwelt» bei der Bewertung doppelt ins Gewicht fällt (ebenso wheit die «Sic»).Aber auch ein Dieselfahrzeug findet sich ex aequo mit zwei E-Autos mit einer Gesamtnote von 1,9 auf dem ersten Platz im Ranking.

    Ergebnisse ADAC-Autotest 2020

    Quelle und Detailergebnisse: ADAC

    Die bestbewerteten Autos 2020

    Die drei vom ADAC bestbewerteten Modelle 2020 Новый Stromer Audi e-tron Sportback 55 quattro и Porsche Taycan 4S sowie der VW Golf 2. 0 TDI SCR DSG.

    Die doppelte SCR- und die damit sehr effiziente Abgasreinigung sorgen dafür, dass sich der Diesel-Golf von seinen beiden ebenfalls getesteten Benziner-Kollegen abheben konnte — Diese mussten sich jeweils mit der Note 2,1 zufrieden geben.

    Die beiden Oberklasse-Elektroautos beschreiben die Tester als durchwegs alltagstauglich, die Antriebe als «formidabel» — mit Preisen um die 80.000 bzw. 100 000 евро werden der Audi и Porsche aber trotzdem nicht dazu beitragen, Elektromobilität der breiten Masse zugänglich zu machen.

    Die Autos mit den schlechtesten Bewertungen im ADAC-Test

    Bei den Schlusslichtern des ADAC-Autotests 2020 finden sich viele Kleinst- und Kleinwagen, die hintersten Plätze belegen der Toyota Aygo 1. 0 (Gesamtnote 3,2), Fiat 500 1.0 Hybrid GSE (Gesamtnote 3,2) и Mazda 2 SKYACTIV-G 90 M Hybrid (Gesamtnote 3,1).

    Das hängt auch damit zusammen, dass der ADAC in diesem Ranking nicht zwischen verschiedenen Fahrzeugklassen unterscheidet, weshalb Klein- und Kleinstwagen tendenziell schlechter abschneiden als größere Modelle.

    Был ли проведен ADAC-Autotest?

    Im ADAC Autotest werden jedes Jahr bis zu 150 Fahrzeuge umfassend geprüft. Узнать больше 300 Testkriterien lässt der Allgemeine Deutsche Automobil-Club in die Bewertung der Fahrzeuge mit einfließen.Die Hauptkriterien werden dabei weiter в Unter- und Einzelkriterien aufgeteilt, um im Test wirklich all related Aspekte abdecken zu können. Der Preis fällt dabei Allerdings nicht ins Gewicht, auch in Autoklassen wird bei der Bewertung nicht unterteilt.

    Diese Hauptkriterien umfasst der ADAC Autotest:

    • Motor / Antrieb
    • Komfort
    • Innenraum
    • Karosserie / Kofferraum
    • Fahreigenschaften
    • Sicherheit
    • Umwelt / EcoTest

    Aus den einzelnen jewels Bewertungen Diegrtas Kategorie. Die Kriterien «Sicherheit» и «Umwelt» zählen dabei doppelt.

    Covid: pourquoi les autotests ne sont-ils pas encore autorisés en France?

    Allemagne, Autriche, Royaume-Uni, Suisse et bientôt Pays-Bas… depuis quelques semaines, un nombre croissant de pays européens se montre выгодно для использования быстрых автотестов в lutte contre l’épovidémie de 19. En France pourtant, ils sont interdits depuis le mois de juillet 2020, par arrêté ministériel.

    Mais l’Hexagone pourrait bientôt revoir sa position. Les tests de dépistage à réaliser soi-même seront au coeur d’une réunion de la Haute Autorité de Santé (HAS) en fin de semaine. Une position définitive est visitue d’ici fin mars. Dans quelles conditions pourraient-ils être déployés? Quels sont les freins à leur utilization? Экспликации.

    1) Комментарий fonctionnent-ils?

    Les autotests font partie de la catégorie des tests antigéniques. Исследуйте присутствие антигена, обратные тесты ПЦР или слюну, постоянный детерминант вируса. Les autotests diffèrent également sensiblement des tests dits rapides, actuellement effectués dans les les Pharmies Françaises. D’abord, ils sont pratiqués par le Patient lui-même, et non par un member du monde médical.

    Par ailleurs, les autotests sont moins désagréables. Pour les effectuer, il suffit de frotter l’intérieur de sa narine, avec un coton-tige. L’écouvillon — это ванная комната на месте в трубке, а также при подаче воды. Результаты не доступны в течение нескольких минут, собирают комплекты лекций по бандлетам или через одно приложение.Эти тесты не рассматриваются как краткие сведения о тестах ПЦР. Pour plusieurs scientifiques, ils ne sont pour autant pas moins important dans une stratégie de lutte global contre le virus.

    2) Sont-ils efficaces?

    L’absence de protocole d’évaluation au niveau européen rend complexe l’accès à des données fiables. Ainsi, определенные тесты affichent des données hopeantes, avec une sensibilité située autour de 80%, d’autres sont en dessous des normes.

    Mais l’intérêt des autotests réside plus dans leur corrective d’utilisation, que leur précision.En clair, «mieux vaut un test performance à 80% avec un rasultat rapide, simple et dix fois moins coûteux qu’un PCR, qu’un résultat fiable à 100% en deux jours», résume auprès du «Journal du Dimanche», Ксавье Герэн, вице-президент EMEA d’Innova Medical Group, производитель автотестов. Sans remplacer les tests PCR, «les autotests relèvent d’une autre stratégie et sont très intéressants si l’on veut réaliser des dépistages répétés or massifs», анализировать для гл. Антуан Флахо.

    C’est la stratégie mise en place par le Royaume-Uni, qui les use désormais arrayment, dans les écoles notamment. A terme, ces tests pourraient être utilisés en prevention, avant de voir des proches, ou de se rendre au bureau. L’idée germe notamment en Suisse. Le gouvernement du pays souhaite offrir à chaque personne cinq autotest de dépistage du Covid-19 par mois, afin d’accompagner le redémarrage de la vie économique et sociale. En Autriche, les personnes se sentant fatigues, ou ayant une crainte sur une éventuelle contamination les utilisent également.Dès lors, leur использует огромное количество permettrait de detecter, plus tôt les malades contagieux, et de casser la transfer de l’épidémie.

    3) Quels freins à leur déploiement?

    Si une partie la communauté scientifique se montre enthousiaste, plusieurs médecins et épidémiologistes appellent à la prudence. Ils идентифицирующие plusieurs указывают на бдительность. Премьер-концерт не является настоящим испытанием. Частицы не являются эффективными формами для реализатора предварительных результатов и не изменяют исполнение результатов.D’autant que ces tests sont moins sensibles lorsque la charge virale de la personne est faible. Par ailleurs, l’enjeu est de s’assurer que les personnes testées positives respectent bien l’isolement.

    Enfin, d’autres scientifiques, современные исследования проверяют необходимые контрпроизводства. Selon eux, un resultat négatif pourrait rassurer à delic, et entraîner une baisse du due des gestes barrières.

    Производители, которые отвечают на вопросы по проверке и проверке, не проверяют, не обойтись ли без перерыва на маску или на воду из сети.En Allemagne, le test développé par Roche doit en outre, pour le moment, être réalisé sous la надзор за профессиональным санте. Производители предусматривают создание зарядных устройств для приложений. Ces dernières délivreraient des conils pratiques pour réaliser correctement le test et permettraient d’assurer une traçabilité des personnes Positives.

    4) Quelle est la position de la France?

    Depuis juillet 2020, les autotests rapides sont interdits par arrêté ministériel.Mais la position de la France похож на évoluer. La Haute Autorité de Santé (HAS) делает это так, чтобы ответить на вопрос о последних словах. «Oui, la France va yaller», индике Седрика Карбонна, шеф-повара службы оценки профессиональных действий HAS au «JDD».

    La question est de savoir comment. «Неважно, какие ответы, одна часть вопросов производительности по сравнению с автоматическими тестами, и модификация использования, в соответствии с медицинскими показаниями, социальная информация о других пользователях, в которых есть автоматические тесты на соответствие требованиям». ce qui existe déjà », explore-t-il.«L’objectif est de balayer la littérature internationale для того, чтобы избежать idée de leurs performances chez les personnes, симптоматические и бессимптомные, et de mener une réflexion sur la façon de les utiliser au mieux, sans désorganiser l’arsenal actuel», за исключением Cédric Carbonneil.

    5) Что делать?

    S’ils étaient autorisés, les autotests rapides pourraient être disponibles в аптеке, соответствует le cas en Autriche depuis le 1 er mars, mais aussi dans les supermarchés.En Allemagne, les groupes Aldi et Lidl ont vendu en quelques minutes l’ensemble de leurs stocks au cours du выходных. Продается только по цене 24,99 евро за Aldi и 21,99 евро за Lidl.

    La France va-t-elle autoriser la vente de tests antigéniques dans la grande distribution? C’est le cas dans de nombreux pays etrangers, dont l’Allemagne, o le produit a immédiatement Trouvé ses acheteurs. Cela paraît du bon sens à un moment oùce geste pourrait se banaliser.

    — Доминик Шелчер (@schelcher) 8 марта 2021 г.

    En France, Доминик Шелше, президент Système U, объявил авторизацию продавца в супермаркете.Selon lui, une telle décision «serait du bon sens à un moment oùce geste pourrait se banaliser», affirme-t-il на Твиттере.

    Запускать автоматические тесты из планов тестирования — планы тестирования Azure

    • Статья
    • .
    • 13 минут для чтения
    Эта страница полезна?

    Оцените свой опыт

    да Нет

    Любой дополнительный отзыв?

    Отзыв будет отправлен в Microsoft: при нажатии кнопки «Отправить» ваш отзыв будет использован для улучшения продуктов и услуг Microsoft.Политика конфиденциальности.

    Представлять на рассмотрение

    В этой статье

    Планы тестирования Azure | Azure DevOps Server 2020 | Сервер Azure DevOps 2019 | TFS 2018 | ТФС 2017

    Автоматизируйте тестовые случаи в своих планах тестирования и запускайте их прямо из планов тестирования Azure . Автоматические тесты дают вам следующие преимущества:

    • Удобный процесс для тестировщиков, которые могут плохо себя чувствовать разбирается в выполнении тестов в рабочих процессах сборки или выпуска.
    • Гибкость для запуска выбранных тестов по запросу, вместо запланированного тестирования в рабочих процессах сборки или выпуска где выполняются все тесты, соответствующие критериям фильтра.
    • Возможность повторно запустить несколько тестов, которые не прошли из-за для проверки проблем с инфраструктурой, или у вас есть новая сборка, включает исправления для неудавшихся тестов.

    Предварительные требования

    • Вы должны подключиться к проекту. Если у вас еще нет проекта, создайте его.
    • Вы должны быть добавлены в проект.Чтобы вас добавили, добавьте пользователей в проект или команду.
    • Для просмотра или запуска ручных или автоматических тестов у вас должен быть доступ Basic или выше.

    Дополнительные сведения см. В разделе «Доступ и разрешения для тестирования вручную».

    Дополнительно вам понадобится:

    Настройте среду

    1. На странице «Планы тестирования » выберите свой план тестирования, откройте контекстное меню и выберите Параметры плана тестирования .

    2. В диалоговом окне «Параметры плана тестирования» выберите конвейер сборки, который создает сборки, которые содержат тестовые двоичные файлы.Затем вы можете выбрать конкретный номер сборки для тестирования или позволить система автоматически использует последнюю сборку при запуске тестов.

    3. Вам понадобится конвейер выпуска, созданный из Запускать автоматические тесты из шаблона Test Manager для запуска тестов из планов тестирования в планах тестирования Azure . Если у вас есть существующий конвейер выпуска, который был создан используя этот шаблон, выберите его, а затем выберите существующий этап в релизный конвейер, на котором будут выполняться тесты.В противном случае выберите ссылку Создать новый в диалоговое окно для создания нового конвейера выпуска, содержащего один этап с уже добавленной задачей Visual Studio Test .

      Как передать параметры в тестовый код из конвейера сборки или выпуска?

    4. Присвойте содержательные имена конвейеру выпуска и этапу по мере необходимости.

    5. На компьютере агента должна быть установлена ​​тестовая платформа Visual Studio. Если Visual Studio уже установлена ​​на компьютере с агентом, вы можете пропустить этот шаг.В противном случае необходимо добавить задачу установщика тестовой платформы Visual Studio. к определению трубопровода.

    6. Добавьте задачу Visual Studio Test в конвейер выпуска и настройте ее следующим образом:

      • Убедитесь, что выбрана версия 2 задачи Visual Studio Test. Номер версии отображается в раскрывающемся списке вверху слева. панели настройки задачи.

      • Убедитесь, что для параметра Select tests using установлено значение Test run .Что означает эта настройка?

      • Для настройки Test platform version выберите Installed by Tools Installer .

      • Если у вас есть тесты пользовательского интерфейса, которые работают в физических браузерах или толстых клиентах , убедитесь, что агент настроен на запуск как интерактивный процесс с автоматический вход в систему включен. Настройка агента для работы в интерактивном режиме должна быть выполняется перед постановкой сборки или выпуска в очередь (установка тестового набора содержит тесты пользовательского интерфейса флажок не настраивает агент в интерактивном режиме режим автоматически — используется только как напоминание для настройки агент соответствующим образом, чтобы избежать сбоев).

      • Если вы запускаете тесты пользовательского интерфейса в безголовом браузере , интерактивный процесс конфигурация не требуется.

      • Выберите способ предоставления тестовой платформы и версию Visual Studio или расположение установленной тестовой платформы на испытательных машинах

      • Если для ваших тестов требуется входных параметров , таких как URL-адреса приложений или база данных строки подключения, выберите соответствующий файл настроек из строить артефакты.Вы можете использовать Публикация артефактов сборки задач в конвейере сборки, чтобы сразу опубликовать файл настроек местоположение, если этот файл не включен в артефакты. В примере, показанном ниже, URL-адрес приложения отображается в запустить файл настроек и переопределен, чтобы установить его на промежуточный URL с использованием параметров тестового прогона Настройка .

        Для получения информации о параметрах задачи Visual Studio Test см. Раздел Задача Visual Studio Test.

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

      Вы можете сократить время тестирования, распределяя тесты по нескольким агентов, задав Parallelism Множественное выполнение и указав количество агентов.

      Примечание

      Если вы выполняете тесты пользовательского интерфейса, такие как CodeUI или Selenium в физических браузерах, таких как IE, Firefox или Chrome, агент на машинах должен работать в интерактивном режиме и не как услуга. Подробнее.

    8. На странице конвейера конвейера выпуска проверьте что конвейер сборки, содержащий тестовые двоичные файлы, связан в этот конвейер выпуска в качестве источника артефактов.

    9. Сохранить конвейер выпуска.

    10. Если вы выбрали Создайте новый в диалоговом окне настроек плана тестирования на шаге 2 этого примера вернитесь на страницу браузера, содержащую ваш план тестирования настройки. В диалоговом окне настроек плана тестирования выберите конвейер выпуска. и этап, который вы только что спасли.

    Запустить автоматизированные тесты

    1. На веб-портале Test Plan откройте план тестирования и выберите набор тестов, содержащий автоматизированные тесты.

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

      Тестовые двоичные файлы для этих тестов должны быть доступны в артефактах сборки, созданных конвейером сборки.

    3. Выберите OK , чтобы начать процесс тестирования. Система проверяет только то, что выбраны автоматизированные тесты (любые ручные тесты игнорируются), проверяет этап, чтобы убедиться, что Visual Studio Test задача присутствует и имеет допустимые настройки, проверяет пользователя разрешение на создание релиза для выбранного релиза конвейер, создает тестовый запуск, а затем запускает создание выпуска на выбранный этап.

    4. Выберите Просмотреть прогон теста , чтобы просмотреть ход теста и проанализировать неудавшиеся тесты. В результатах тестирования есть соответствующая информация для отладки неудачных тестов, таких как сообщение об ошибке, трассировка стека, журналы консоли и вложения.

    5. После завершения теста страница Runs Планы тестирования Azure показывает результаты тестирования. Сводка пробега страница показывает обзор пробега.

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

      Примечание : Присоединение файлов вручную не поддерживается для результатов автоматического тестирования.

      Каковы типичные сценарии ошибок или проблемы, на которые следует обратить внимание, если мои тесты не запускаются?

    6. Результаты теста На странице перечислены результаты каждого теста в тестовый забег. Выберите тест, чтобы просмотреть информацию об отладке для сбоя тесты, такие как сообщение об ошибке, трассировка стека, журналы консоли и вложения.

    7. Откройте страницу «Планы тестирования » и выберите план тестирования, чтобы просмотреть его состояние. ваших тестов, если тесты обновляются после завершения тестирования. Выберите тест, чтобы увидеть его результаты.

    FAQ

    В. Какие разрешения мне нужны для запуска автоматических тестов из планов тестирования Azure?

    Вы должны быть участником проекта или иметь следующие разрешения:

    • Создание выпусков
    • Управление выпусками
    • Редактировать стадию выпуска
    • Управление развертыванием

    Дополнительные сведения см. В разделах Настройка разрешений для конвейеров выпуска и Освободить разрешения.

    В. Могу ли я переопределить сборку или этап, установленный на уровне плана тестирования для конкретного экземпляра запуска теста?

    A: Да, вы можете сделать это с помощью команды Run with options . Откройте контекстное меню набора тестов в левом столбце и выберите Запуск с опциями .

    Введите следующие значения в диалоговом окне «Выполнить с параметрами» и затем выберите OK :

    • Тип теста и средство выполнения : выберите Автоматические тесты, используя стадию выпуска .

    • Сборка : выберите сборку, содержащую тестовые двоичные файлы. Результаты тестирования будут связаны с этой сборкой.

    • Конвейер выпуска : выберите конвейер из списка конвейеров выпуска, который может использовать выбранный артефакт сборки.

    • Этап выпуска : выберите имя этапа, настроенного в конвейере выпуска.

    В. Зачем использовать этапы выпуска для запуска тестов?

    A: Azure Pipelines предлагает эффективный рабочий процесс оркестрации для получения тестовых двоичных файлов в качестве артефактов и запуска тестов.Этот рабочий процесс разделяет те же концепции, которые используются в рабочем процессе запланированного тестирования, что означает, что пользователи выполнение тестов в запланированном рабочем процессе будет легко адаптироваться; за Например, путем клонирования существующего конвейера выпуска запланированного тестирования.

    Еще одно важное преимущество — доступность богатого набора задач в каталог задач, позволяющий выполнить ряд действий перед и после прогона тестов. Примеры включают подготовку и очистку данных испытаний, создание и очистка файлов конфигурации и многое другое.

    В. Как работает выбор «Тестовый запуск» в тестовой задаче Visual Studio версии 2?

    A: Подсистема управления тестированием использует объект тестового запуска для пройти список тестов, выбранных для выполнения. Тестовое задание выглядит вверх по идентификатору тестового запуска, извлекает информацию о выполнении теста например, имена контейнера и метода тестирования, запускает тесты, обновляет результаты тестового прогона и устанавливает тестовые точки, связанные с результаты теста в тестовом прогоне. С точки зрения аудита Задача Visual Studio обеспечивает отслеживание исторических выпусков и идентификаторы тестового запуска для тестов, которые были отправлены для выполнение теста по запросу.

    В. Должен ли агент работать в интерактивном режиме или как служба?

    A: Если вы выполняете тесты пользовательского интерфейса, такие как закодированный интерфейс или тесты Selenium, агент на тестовых машинах должен работать в интерактивном режиме с включенным автоматическим входом, не как услуга, позволяющая агенту запускать веб-браузер. Если вы используете безголовый браузер, такой как PhantomJS, агент может работать как служба или в интерактивном режиме. Видеть Агенты сборки и выпуска, Развернуть агент в Windows, и пулы агентов.

    Q: Где я могу найти подробную документацию о том, как запускать тесты Selenium?

    A: См. Раздел «Начало работы с тестированием Selenium».

    В. Что произойдет, если я выберу несколько конфигураций для одного и того же теста?

    A: В настоящее время рабочий процесс по запросу не зависит от конфигурации.

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

    A: Текущие возможности оптимизированы для единой командной сборки для тестирования по запросу с использованием рабочего процесса Azure Pipelines.Мы оценим поддержку релизов с несколькими артефактами, в том числе артефакты, не относящиеся к Azure Pipelines, такие как Jenkins, на основе отзывов пользователей.

    В. У меня уже есть запланированный тестовый выпуск релиза. Могу ли я повторно использовать тот же конвейер для запуска теста по запросу или мне следует создать новый конвейер, как показано выше?

    A: Мы рекомендуем использовать отдельный конвейер выпуска и этап для автоматического тестирования по требованию из планов тестирования Azure, потому что:

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

    • Новые выпуски запускаются при каждом запуске по требованию. Если у вас много тестировщики, выполняющие несколько тестовых запусков по требованию каждый день, в соответствии с вашим графиком. конвейер выпуска тестирования может быть перегружен выпусками для этих запускается, что затрудняет поиск выпусков, запускаемых для конвейер, содержащий запланированное тестирование и развертывание в производственной среде.

    • Вы можете настроить тестовую задачу Visual Studio с тестовым запуском идентификатор в качестве входных данных, чтобы можно было отследить, что вызвало выпуск.См. Как работает выбор «Тестовый запуск (для запусков по требованию)» в тестовой задаче Visual Studio ?.

    Вопрос: Могу ли я запускать эти запуски и просматривать результаты в Microsoft Test Manager?

    A: Нет. Microsoft Test Manager не поддерживает выполнение автоматических тестов для Team Foundation. строит. Он работает только в веб-интерфейсе для Azure Pipelines и TFS. Все новые инвестиции в разработку продуктов для ручного и автоматизированного тестирования будут в веб-интерфейсе.Дальнейшего развития Microsoft Test Manager не планируется. Видеть Руководство по использованию Microsoft Test Manager.

    Вопрос: В моей команде несколько тестировщиков. Могут ли они запускать тесты из разных наборов тестов или планов тестирования параллельно, используя один и тот же конвейер выпуска?

    A: Они могут использовать один и тот же конвейер выпуска для запуска нескольких тест запускается параллельно, если:

    • Пул агентов, связанный со стадией, имеет достаточное количество агентов для обслуживания параллельных запросов.Если достаточное количество агентов недоступно, запуски все еще могут быть запущены, но выпуски будут поставлены в очередь на обработку пока не появятся агенты.

    • У вас достаточно заданий для включения параллельных заданий. Просмотр параллельных заданий в Azure Pipelines или Параллельные задания в TFS для получения дополнительной информации.

    • Тестеры не запускают одни и те же тесты параллельно. Это может вызвать результаты будут перезаписаны в зависимости от порядка выполнения.

    Чтобы разрешить параллельное выполнение нескольких различных тестовых запусков, установите параметр триггера этапа Azure Pipelines для поведение, когда несколько выпусков ожидают развертывания следующим образом:

    • Если ваше приложение поддерживает параллельное выполнение тестов из разных источники, установите для этого параметра значение Разрешить одновременное развертывание нескольких выпусков .

    • Если ваше приложение не поддерживает параллельное выполнение тестов из разных источников, установите для этого параметра значение Разрешить только одно активное развертывание за раз .

    Вопрос: Как передать параметры в тестовый код из конвейера сборки или выпуска?

    A: Используйте runsettings файл для передачи значений в качестве параметров в ваш тестовый код. Например, в выпуске, который состоит из нескольких этапов, вы можете передать соответствующий URL-адрес приложения каждой тестовой задаче в каждой из них.Файл runsettings и соответствующие параметры необходимо указать в тестовой задаче Visual Studio.

    В. Каковы типичные сценарии ошибок или проблемы, на которые мне следует обратить внимание, если мои тесты не запускаются?

    A: Проверьте и устраните проблемы следующим образом:

    • Конвейер выпуска и этап, на котором я хочу запустить тесты не отображаются после выбора сборки.

      • Убедитесь, что конвейер сборки, который создает сборку, связан в качестве основного артефакта на вкладке Артефакты конвейера выпуска.
    • Я получаю сообщение об ошибке, что у меня недостаточно прав для запуска выпуска.

      • Настроить Создание выпусков и Управление развертываниями Разрешения для пользователь в меню Security конвейера выпуска. См. Разрешения на выпуск.
    • Я получаю сообщение об ошибке, что автоматические тесты не найдены.

      • Проверить статус автоматизации выбранных тестов. Сделайте это в рабочем элементе для тестового примера или используйте ссылку Параметры столбца в планах тестирования Azure добавить в список столбец Статус автоматизации тестов.См. Раздел предварительных требований для получения информации. об автоматизации ручных тестов.
    • Мои тесты не выполнялись, и я подозреваю, что конвейер выпуска неверен.

      • Используйте ссылку на странице сводки результатов для доступа к экземпляру выпуска используется для запуска тестов и просмотра журналов выпуска.
    • Мои тесты переходят в состояние ошибки или остаются «в процессе» даже после того, как запускается запуск стадии.

      • Убедитесь, что выбранная вами стадия выпуска имеет правильную задачу. и версия выбрана.Вы должны использовать Visual Studio версии 2 или более поздней. Тестовое задание . Версия 1 задачи и задача Run Functional Tests , не поддерживаются.

    См. Также

    Autotest Bestenliste: Die besten Modelle 2020

    95 Fahrzeuge mussten sich 2020 dem ADAC Autotest stellen — 38 davon hatten einen alternn Antrieb an Bord. Welche Modelle gut abgeschnitten haben und welche nicht, zeigt die große ADAC Bestenliste.

    • Im Test: 41 Benziner, 16 Diesel, 22 Hybride, 14 Elektroautos, ein Brennstoffzellen-, ein Erdgasauto

    • Вверху: Elektroautos mit hoher Alltagstauglichkeit

    • Флоп: Betagte Kleinstwagen mit geringem Nutzwert

    2020 war das Jahr der Elektromobilität: Zum einen ist das Angebot an alltagstauglichen und kaufbaren Elektroautos spürbar gewachsen.Und zum anderen hat die höhere Kaufprämie dazu geführt, dass die Stromer jetzt preislich mit Verbrennern mithalten können, in der Gesamtkostenrechnung oft sogar günstiger fahren. Das hat zu einem Elektroauto-Boom bei den Zulassungszahlen geführt, der sich 2021 fortsetzen sollte.

    Sieger: Zwei Elektroautos und ein Diesel

    Teuer, aber gut und (reichweiten) stark: Porsche Taycan ∙ © Porsche

    Der ADAC Autotest hat dem Trend Rechnung getragen: Im Jahr 2020 getestet wurden 14 reine Elektroautos 904 224 (vornehmlich Plug-in-Hybride), а также Autos mit Verbrenner und Elektromotor.Das Ergebnis: Elektroautos haben sich im ADAC Autotest поддерживает функции Plug-in-Modelle. Zwei reine E-Autos führen zusammen mit einem Golf Diesel die Hitliste mit einer Top-Note от 1,9 an: Der Audi e-tron Sportback как zusätzliche Karosserievariante zum letztjährig getesteten Audi e-tron quattro und der 4 Porsche.

    Beide faszinieren dabei nicht nur mit ihrem granidablen Elektroantrieb , dessen 300 (Audi) and 420 kW (Porsche) starke Motoren ein außerordentliches Spektakel bei Kraftentfaltung und Beschleunigung abliefern.E-tron und Taycan sind zudem mit gemessenen 400 Kilometern Reichweite im ADAC Ecotest, gutem Platzangebot, hoher Ladeleistung für schnelles Aufladen und sehr gutem Federungskomfort überaus alltagstauglich .

    Grafiken einblenden

    Ich möchte über infogram.com eingebundene Grafiken, Tabellen oder andere Inhalte auf adac.de sehen. Hierbei werden personenbezogen Daten (IP-Adresse o.ä.) an Infogram übertragen. Mit Schließen des Browsers или Des Tabs erlischt Ihre diesbezügliche Zustimmung.Infogram hat verbundene Unternehmen oder Subunternehmer mit Sitz außerhalb der EU / EWR in Drittländern (wie USA). In den Datenschutzinformationen erhalten Sie weitere Informationen.

    Grafik anzeigen

    Hinweis: Die Gesamtliste können Sie nach den Kriterien sortieren , die Ihnen wichtig sind: Einfach das jeweilige Kapitel im Reiter «Einzelnoten» unkenschangine oppueling Komppuel (et al. .

    VW Golf TDI mit sehr sauberen Abgasen

    Um Alltagstauglichkeit dreht es sich beim ADAC Autotest: Wer sich in den Testkategorien Karosserie, Innenraum, Komfort, Motor, Fahreigenschaften, Innenraum, Komfort, Motor. , шляпа гутте Картен.Был natürlich auch für den VW Golf TDI auf dem Siegertreppchen gilt, der es als Allroundfahrzeug jedem recht machen will. Bei ihm sorgt unter anderem die doppelte SCR- und damit sehr effiziente Abgasreinigung für das gute Ergebnis. Dadurch kann er sich sogar von seinen Benziner-Pendants Golf 1.5 eTSI und Golf 1.0 eTSI absetzen (jeweils Note 2,1).

    Allein: Preiswert sind all drei Sieger-Fahrzeuge nicht . Schon der getestete Golf TDI kommt auf mindestens 35,000 Euro, der Audi e-tron Sportback auf rund 85.000 евро и Porsche Taycan 4S при минимальной стоимости 110 000 евро. Doch der ADAC Autotest bewertet all die Produkteigenschaften und lässt den Preis außen vor. Der wiederum kommt in einer Extra-Auswertung zum Tragen: In der Preis-Leistungs-Hitliste der 2020 getesteten Modelle. Hier ergibt sich eine völlig andere Reihenfolge.

    Das sind die Verlierer

    Der konventionell angetriebene Fiat 500 ist mittlerweile 13 Jahre alt ∙ © Fiat

    Insgesamt lässt sich sagen: Das Niveau der getesteten Fahrzeuge ist sehr hoch .68 Fahrzeuge schneiden mit der Note «кишка» (bis Note 2,5) ab. Doch es gibt natürlich auch Schlusslichter : Vornehmlich Kleinst- und Kleinwagen wie der mittlerweile 13 Jahre alte Fiat 500 (nun als Hybrid), выпущенный в 2014 году Toyota Aygo und der noch recht neue neue Hyundai i10. Само по себе schlecht sind diese Fahrzeuge nicht. Doch weil der ADAC Autotest nicht nach Fahrzeugklassen unterscheidet, haben Kleinstwagen, die weniger Nutzwert bieten als größere Fahrzeuge, folglich meist schlechtere Noten.

    Zudem kommt es bei ihnen auf jeden Cent bei der Entwicklung an, so dass oft nicht der letzte Stand der Technik an Bord ist — aktuelle Assistenzsysteme etwa. Неизвестно, что вам нужно: Ein Opel Corsa 1.2 DI Turbo schneidet mit einer Note von 2,6 wesentlich besser ab als ein Mazda 2 Skyactiv G-90 mit einer 3,1, dessen schlechte Abgasreinigung iht Punkte kunte.

    Grafiken einblenden

    Ich möchte über infogram.com eingebundene Grafiken, Tabellen oder andere Inhalte auf adac.de sehen. Hierbei werden personenbezogen Daten (IP-Adresse o. ä.) an Infogram übertragen. Mit Schließen des Browsers или Des Tabs erlischt Ihre diesbezügliche Zustimmung. Infogram hat verbundene Unternehmen oder Subunternehmer mit Sitz außerhalb der EU / EWR in Drittländern (wie USA). In den Datenschutzinformationen erhalten Sie weitere Informationen.

    Grafik anzeigen

    Gleicher Maßstab für All Fahrzeuge

    Все автомобили werden nach einem einheitlichen Maßstab bewertet.Der ADAC unterscheidet weder nach Antrieb noch nach Fahrzeugklasse. Die Bewertungen sind jeweils в Schulnoten angegeben. Примечания к письму в ADAC Autotest, bei Notengleichheit nach Alphabet.

    Ein kompletter Marktüberblick kann die Liste der im Jahr 2020 vom ADAC getesteten Autos selbstverständlich nicht sein, sondern nur eine Auswahl aktueller Fahrzeuge .

    Sollte Ihr Wunschmodell nicht dabei sein, finden Sie es vielleicht unter den besten und schlechtesten Pkw im ADAC Autotest 2017, 2018 или 2019 или Sie schauen в ADAC Datenbank.

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *