Академический Документы
Профессиональный Документы
Культура Документы
Подробнее на www.DeepL.com/pro.
Оглавление
Предисловие
Часть 1: Основы
Непрерывное обучение
Индекс
Calls
Предисловие
Качество незаменимо в каждом аспекте нашей жизни, и программные
системы не являются исключением. На протяжении всей моей карьеры
в области качества программного обеспечения (более 15 лет) я
постоянно ощущал растущее стремление к достижению более
высокого качества в рамках процессов разработки программного
обеспечения. По мере того как программные приложения становятся
все более сложными, процессы и инструменты обеспечения качества
должны успевать за всеми этими тонкостями. Раннее обнаружение
проблем в продуктах помогает организациям двигаться быстрее и
способствует достижению положительных результатов в бизнесе.
Node.js
Используемые условные
обозначения
В этой книге используется ряд текстовых условностей.
install xcuitest
заметки
Выглядят так.
Свяжитесь с нами
Отзывы наших читателей всегда приветствуются.
Знакомство с тестированием
программного обеспечения Внедрение
автоматизации тестирования
Изучение ролей в инженерии качества
Ознакомление с общими терминами и определениями
Знакомство с тестированием
программного обеспечения
Тестирование как деятельность имеет решающее значение для
создания надежного продукта и формирует прочный фундамент для
создания надежной автоматизации тестирования. Таким образом,
будучи хорошим тестировщиком, вы становитесь более эффективным
инженером по автоматизации тестирования.
Тестирование программного обеспечения - это неотъемлемая задача
любого проекта по разработке программного обеспечения, которая в
основном выполняется с целью проверки заданных требований к
продукту и поиска ошибок. Эти ошибки могут быть
функциональными или нефункциональными по своей природе. К
функциональным ошибкам относятся отклонения от заданных
требований или спецификаций продукта. Обычно нефункциональные
проблемы связаны с производительностью или безопасностью.
Основные цели тестирования обычно переплетаются на нескольких
уровнях, но на высоком уровне их можно разделить следующим
образом:
Тестирование в мире
В отличие от традиционной водопадной модели, в мире Agile
рекомендуется, чтобы каждая пользовательская история или функция
имела правильный баланс ручных и автоматизированных тестов,
прежде чем называть ее готовой. Это, возможно, замедляет работу
команды, но при этом значительно снижает технический долг и
повышает качество кода. Вы заметите, что масштабирование
программного обеспечения становится легким, а количество
переделок значительно уменьшается по мере увеличения количества
автоматизированных тестов. В долгосрочной перспективе это
экономит огромное количество времени для инженерной команды.
Еще одно распространенное явление в Agile-системе - написание
разработчиками автоматизированных тестов. Обычно разработчики
пишут юнит-тесты, а инженеры по качеству - другие типы тестов.
Иногда разработчикам полезно писать код автоматизированных тестов,
в то время как инженеры по качеству занимаются другими задачами
тестирования. Один из самых важных выводов из мира Agile
заключается в том, что качество - это ответственность каждого члена
команды. Инженеры-испытатели поддерживают постоянную связь и
обратную связь между разработчиками продукта и инженерами-
программистами,
что, в свою очередь, приводит к формированию отличной командной
культуры. Это также позволяет заранее обсудить необходимые
инструменты и инфраструктуру для тестирования.
Предложения со сдвигом
вправо и со сдвигом
влево
Очевидно, что можно получить массу преимуществ, если перенести
тестирование и работу над качеством в целом на более ранние этапы
жизненного цикла разработки. Это называется подходом Shift-Left.
При таком подходе инженеры по качеству привлекаются с самого
начала проекта к обсуждению дизайна и архитектуры. Они начинают
работать над такими результатами, как план тестирования и тестовые
примеры, параллельно с разработчиками. Такой подход формирует у
всей команды мышление, ориентированное на качество, и
гарантирует, что качество будет заложено в основу каждой
деятельности в жизненном цикле разработки.
Качество и DevOps
Предыдущий раздел о подходе Shift-Right приводит нас прямо в
область DevOps и того, как он ускорил разработку продуктов и
изменил процесс качества. DevOps постоянно стремится к тому, чтобы
наиболее эффективным способом привести высокоэффективные
инженерные команды в соответствие с бизнес-ценностями. Качество
является ключевым компонентом каждого из процессов DevOps.
DevOps пытается автоматизировать каждую задачу в процессе
доставки продукта, начиная со сборки кода и заканчивая
развертыванием приложения в производство для использования
клиентами. Это придает дополнительный акцент качеству. Поскольку
весь процесс автоматизирован, обратная связь на каждой контрольной
точке имеет решающее значение. Заранее определенный набор
модульных, функциональных и интеграционных тестов, выполняемых
в нужные моменты конвейера развертывания, служит пропуском к
производственному развертыванию. Временами для отладки сбоев в
тестах и для специфических видов тестирования требуется ручное
участие инженеров по тестированию.
Понимание автоматизации
тестирования
Представьте себе инженерную команду, в которой каждый квартал
прибавляется один или два инженера-программиста. Эта команда
хочет радовать клиентов, предоставляя все больше функций в каждом
спринте. Несмотря на то что в команде есть один или два инженера по
качеству, которые тестируют все новые функции, они замечают, что
чем быстрее они пытаются поставлять код, тем больше появляется
регрессионных ошибок. Ручного тестирования функций просто
недостаточно. Они хотят, чтобы определенные основные тестовые
сценарии выполнялись многократно и часто, когда вносятся
изменения. Именно в этом случае автоматизация тестирования
оказывает огромную помощь. Всегда лучше начать автоматизацию
тестирования до того, как вы почувствуете мучительную боль от
ошибки высокой степени серьезности в производстве или
катастрофического инцидента, произошедшего из-за отсутствия
своевременного тестирования.
1. Создание кандидата
2. Создание заявки на кредит
3. Определение права на получение кредита
Каждый из API сначала должен быть протестирован изолированно,
чтобы проверить точность бизнес-функциональности. Позже, когда API
будут интегрированы, необходимо будет провести
Бизнес-процесс должен быть протестирован для подтверждения
поведения системы. Здесь можно создать набор средств автоматизации
тестирования для автоматизации как отдельных API, так и поведения
всей системы. Кроме того, при повторном использовании API
создания заявителя в другом приложении набор средств
автоматизации может быть использован повторно, что обеспечит
возможность повторного использования и переносимость
тестирования. Аналогичная реализация может быть выполнена и для
компонентов пользовательского интерфейса.
Автоматизация тестирования в
стиле Agile
Правильный выбор автоматизированных тестов в нужных местах
развертывания значительно повышает качество поставляемого
программного обеспечения. В Agile-среде необходимо постоянно
находить подходящие тесты для текущей итерации, а соотношение
между ручными и автоматизированными тестами нужно
корректировать по мере необходимости. Поскольку основное
внимание уделяется скорейшему предоставлению функции заказчику,
важно, чтобы разработчики, тестировщики и менеджер продукта были
в курсе того, что создается, тестируется и отправляется.
Сотрудничество приобретает решающее значение и является
основным фактором успеха автоматизации тестирования в Agile-среде.
Некоторые из
Важными соображениями при автоматизации тестирования в Agile-
среде являются следующие:
Проблемы автоматизации
тестирования
Автоматизации тестирования никогда не бывает достаточно, и это
постоянная проблема, с которой сталкиваются инженеры по
тестированию. Инженеры-испытатели всегда ограничены во времени,
чтобы завершить ручное или автоматизированное тестирование и
выпустить готовую функцию. Как и в случае с ручным тестированием,
существует целый ряд проблем, с которыми инженеры по
тестированию сталкиваются ежедневно. Некоторые из них
перечислены ниже:
Метрики автоматизации
тестирования
Зачем и что измерять при автоматизации тестирования - это
постоянный вопрос, который не дает покоя команде тестировщиков.
Инженерам-испытателям интересно знать, насколько эффективны их
скрипты и как они работают в различных условиях. С другой стороны,
руководство компании будет заинтересовано в том, чтобы узнать
окупаемость инвестиций в автоматизацию тестирования, а не просто
надеяться на то, что она принесет пользу в долгосрочной перспективе.
Давайте рассмотрим некоторые ключевые показатели, которые могут
помочь оценить ценность автоматизации тестирования, которая уже
внедрена:
Эффективность автоматизации тестирования: Это ключевая
метрика, которая позволяет понять, насколько эффективно
автоматизированные тесты находят ошибки. При логическом
разбиении по скриптам/тестовым средам эта метрика дает
направление, на котором следует сосредоточить наши дальнейшие
усилия:
Эффективность автоматизации тестирования = (количество
дефектов, найденных автоматизацией/общее количество
найденных дефектов) * 100
Инженер по автоматизации
тестирования
Инженеры по автоматизации тестирования являются основными
членами организации качества в командах разработчиков программного
обеспечения. Они могут быть либо встроены в инженерную команду,
либо входить в состав группы инженеров по качеству, подчиняясь
менеджеру по качеству. Основные обязанности инженера по
автоматизации тестирования включают следующее:
SDET
Идеальный кандидат на должность SDET обладает хорошими
техническими навыками и глубокими знаниями в области
методологий тестирования. С технической точки зрения SDET не
уступает инженеру-программисту с обширными знаниями в области
инженерии качества. SDET будет участвовать в жизненном цикле
разработки, начиная с создания модульных тестов и заканчивая
проверкой производственных релизов, и всегда стремится повысить
производительность как инженера-программиста, так и инженера по
качеству в команде.
Ознакомление с общими
терминами и
определениями
В этом разделе мы рассмотрим некоторые из наиболее часто
используемых терминов в области инженерии качества. Поскольку
инженерия качества является частью практики программной
инженерии, вы заметите довольно много знакомых терминов, если вы
являетесь инженером-программистом:
Резюме
В этой главе мы рассмотрели важность тестирования и автоматизации
тестирования. Мы рассмотрели некоторые практические
рекомендации по взаимодействию автоматизации тестирования с
различными командами и всеми членами инженерной команды.
Кроме того, мы рассмотрели роли в мире автоматизации тестирования,
их особенности и сходства. Мы поняли, как автоматизация
тестирования помогает достичь качества на каждом этапе жизненного
цикла разработки продукта. Наконец, мы рассмотрели различные
термины, используемые в автоматизации тестирования.
Вопросы
Посмотрите на следующие вопросы, чтобы проверить свои знания
концепций, изученных в этой главе:
Технические требования
В последующей части этой главы мы рассмотрим некоторый код на
Python, чтобы понять простую реализацию паттернов
проектирования. Вы можете обратиться к следующему URL-адресу
GitHub для поиска кода в этой главе:
https://github.com/PacktPublishing/B19046_Test-Automation-Engineering-
Handbook/blob/main/src/test/design_patterns_factory.py.
Этот Python-код приводится в основном для понимания паттернов
проектирования, и читателям не нужно выполнять код. Но если вы
заинтересовались, то вот необходимая информация, чтобы заставить
его работать на вашей машине. Во-первых, читателям понадобится
интегрированная среда разработки (IDE) для работы с кодом. Visual
Studio Code (VS Code) - это отличный редактор с широкой
поддержкой множества языков программирования.
https://code.visualstudio.com/docs/languages/python
Chrome: https://chromedriver.chromium.org/downloads
Firefox: https://github.com/mozilla/geckodriver/releases
Edge: https://developer.microsoft.com/en-us/microsoft-
edge/tools/webdriver/
Знание стратегии
автоматизации
тестирования
Несмотря на то, что каждый программный проект имеет свои
особенности, существуют определенные важные аспекты, которые
должна затрагивать каждая стратегия автоматизации тестирования.
Пусть
В этом разделе мы рассмотрим некоторые основные аспекты
стратегии автоматизации тестирования.
Разработка
Тестирован
ие
Постановка
Производст
во
Примечание
Автоматизированные тесты хороши лишь настолько, насколько
хороша среда, в которой они выполняются. Нестабильная тестовая
среда негативно влияет на точность, эффективность и
результативность тестовых сценариев.
Реализация стратегии
автоматизации
тестирования Agile
Поскольку большинство организаций приняли парадигму Agile, она
стала мейнстримом, и стратегия автоматизации тестирования должна
обязательно учитывать Agile-аспекты разработки программного
обеспечения. Основополагающие принципы Agile должны быть
внедрены в деятельность команды, и они должны применяться к
стратегии автоматизации тестирования, когда и где это возможно. Для
многих команд тестирования это может стать серьезным культурным
изменением. Вот список принципов Agile для рассмотрения в
стратегии автоматизации тестирования:
Удовлетворение потребностей клиентов благодаря стабильной
поставке полезного программного обеспечения
Учитывайте меняющиеся требования, чтобы обеспечить
конкурентное преимущество конечным пользователям
Часто поставляйте работающее программное обеспечение
Постоянное сотрудничество между бизнес- и инженерными
командами Мотивируйте людей и доверяйте им выполнение
работы.
Предпочитают личную беседу, а не документацию
Работа с программным обеспечением как основной
показатель прогресса
Обеспечьте непрерывный и устойчивый темп развития на
неопределенный срок Постоянное внимание к техническому
совершенству и превосходному дизайну
Будьте проще
Каждая команда самостоятельно разрабатывает дизайн,
архитектуру и требования Постоянный ретроспективный анализ и
улучшения
Главная цель Agile-пути - повышение качества программного
обеспечения на каждой итерации. Стратегия автоматизации
тестирования должна включать автоматизированные сборки и
развертывание в качестве предварительного условия. Только когда
автоматизация сборки сочетается с автоматическими тестами,
обеспечивается непрерывное совершенствование. Именно так команды
могут максимально увеличить скорость работы в Agile-ландшафте,
сохраняя при этом высокое качество.