Автоматизация тестирования на практике

Содержание

Слайд 2

Про меня Руководитель группы тестирования, отдела разработки и внедрения систем on-line проектов

Про меня

Руководитель группы тестирования, отдела разработки и внедрения систем on-line проектов

Слайд 3

Что такое тестирование

Что такое тестирование

Слайд 4

Цель Тестирования

Цель Тестирования

Слайд 5

Для чего нужно тестирование?

Для чего нужно тестирование?

Слайд 6

Тестирование нового функционала Мы хотим быть уверены, что новый функционал работает

Тестирование нового функционала

Мы хотим быть уверены, что новый функционал работает

именно так, как было нужно заказчику.
Слайд 7

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

Тестирование «старого» функционала

Мы хотим быть уверены, что после внесения

изменений остальная функциональность программы не пострадала. Все работает в соответствии с ранее утвержденными требованиями.
Это обычно называют регрессионным тестированием.
Слайд 8

Про стандарты ГОСТ Р ИСО/МЭК 9126-93. Информационная технология. Оценка программной продукции.

Про стандарты
ГОСТ Р ИСО/МЭК 9126-93. Информационная технология. Оценка программной продукции. Характеристики

качества и руководства по их применению
Слайд 9

Классификация видов и направлений тестирования

Классификация видов и направлений тестирования

Слайд 10

По запуску кода на исполнение

По запуску кода на исполнение

Слайд 11

По доступу к коду и архитектуре приложения

По доступу к коду и архитектуре приложения

Слайд 12

По степени важности тестируемых функций

По степени важности тестируемых функций

Слайд 13

По принципам работы с приложением

По принципам работы с приложением

Слайд 14

По целитестирования

По целитестирования

Слайд 15

Тестирование производительности (Performance testing) Задачей тестирования производительности является определение масштабируемости приложения

Тестирование производительности  (Performance testing)

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

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

По степени автоматизации

По степени автоматизации

Слайд 17

Ручное тестирование

Ручное тестирование

Слайд 18

Что это Ручное тестирование-часть процесса тестирования на этапе контроля качества в

Что это


Ручное тестирование-часть процесса тестирования на этапе контроля качества в процессе разработки

программного обеспечения.
Оно производится тестировщиком без использования программных средств, для проверки программы или сайта путём моделирования действий пользователя.
Слайд 19

Для чего используется? Тестирование нового функционала Подготовка сценариев для автоматизированного тестирования

Для чего используется?

Тестирование нового функционала
Подготовка сценариев для автоматизированного тестирования

Слайд 20

Слайд 21

Что это? Автоматизированное тестирование программного обеспечения - это процесс верификации программного

Что это?

Автоматизированное тестирование программного обеспечения - это процесс верификации программного обеспечения, при

котором основные функции и шаги теста, такие как запуск, инициализация, выполнение, анализ и выдача результата, выполняются автоматически при помощи инструментов для автоматизированного тестирования.
Слайд 22

Для чего используется? Регрессионное тестирование Тестирование соблюдения контрактов

Для чего используется?

Регрессионное тестирование
Тестирование соблюдения контрактов

Слайд 23

По уровню детализации приложения (пирамида)

По уровню детализации приложения (пирамида)

Слайд 24

Из чего состоит?

Из чего состоит?

Слайд 25

Системное тестирование Это тестирование программного обеспечения, выполняемое на полной, интегрированной системе,

Системное тестирование

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

описывают последовательности действий для проверки ключевых функций системы.
Слайд 26

Плюсы системного тестирования Тесты быстро окупаются Тесты действуют максимально приближенно к

Плюсы системного тестирования

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

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

Минусы системного тестирования Для разработки требуются совместные усилия всей команды (аналитиков,

Минусы системного тестирования

Для разработки требуются совместные усилия всей команды (аналитиков, разработчиков,

тестировщиков)
Тесты достаточно дорогие для поддержки/разработки, поэтому обычно тестируется только критичный функционал
Сложность локализации ошибки
Протестировать мы можем только то, что система выставляет в виде API или визуального интерфейса
Слайд 28

Интеграционное тестирование Одна из фаз тестирования программного обеспечения, при которой отдельные

Интеграционное тестирование

Одна из фаз тестирования программного обеспечения, при которой отдельные программные

модули объединяются и тестируются в группе
Слайд 29

Тестирование соблюдения контрактов Именно на этом уровне мы проверяем ключевые контракты

Тестирование соблюдения контрактов

Именно на этом уровне мы проверяем ключевые контракты

с внешними системами и внутри самой системы
На этом уровне мы уже находимся в проекте самой информационной системы, поскольку мы тестируем контракты с внешними системами от её имени под её настройками а также внутренние контракты самой системы
Слайд 30

Контроль соблюдения контрактов После интеграции этих тестов с CI мы получаем

Контроль соблюдения контрактов

После интеграции этих тестов с CI мы получаем

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

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

Модульное тестирование

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

кода программы. Идея состоит в том, чтобы писать тесты для каждой нетривиальной функции или метода. Это позволяет достаточно быстро проверить, не привело ли очередное изменение кода к регрессии
Слайд 32

Плюсы модульного тестирования Легко пишутся Высокая локализация ошибки Быстро выполняются Легко поддерживать Повышают качество кода программы

Плюсы модульного тестирования

Легко пишутся
Высокая локализация ошибки
Быстро выполняются
Легко поддерживать
Повышают качество кода программы

Слайд 33

Минусы модульного тестирования Тестов должно быть много Маленькая зона видимости Требовательны

Минусы модульного тестирования

Тестов должно быть много
Маленькая зона видимости
Требовательны к качеству кода


В старом проекте, не адаптированном под тестирование, написать продуктивные тесты на старый функционал без серьезного рефакторинга кода затруднительно
Слайд 34

Про связи

Про связи

Слайд 35

Внесение изменения

Внесение изменения

Слайд 36

Давайте на примерах

Давайте на примерах

Слайд 37

Инструменты автоматизации Java (IntelliJIdea) Maven Junit 5 Selenide Rest assured Allure2 Jmeter Git, mercurial Bamboo

Инструменты автоматизации

Java (IntelliJIdea)
Maven
Junit 5
Selenide
Rest assured
Allure2
Jmeter
Git, mercurial
Bamboo

Слайд 38

Конфигурация pom

Конфигурация pom

Слайд 39

Аннотации junit 5

Аннотации junit 5

Слайд 40

Rest Assured public class SwapiTest { @Test public void shouldGetLuke() {

Rest Assured

public class SwapiTest {
@Test
public void shouldGetLuke() { get("http://swapi.co/api/people/1/")

.then().statusCode(200)
.and()
.assertThat() .
body("name", equalTo("Luke Skywalker")); }
}
Слайд 41

Selenide

Selenide

Слайд 42

allure

allure

Слайд 43

Подключение allure

Подключение allure

Слайд 44

Подключение тестов к CI

Подключение тестов к CI

Слайд 45

Отчет allure в Bamboo, анализ результатов

Отчет allure в Bamboo, анализ результатов

Слайд 46

Введение регламентов использования

Введение регламентов использования

Слайд 47

А точно надо? Без внедрения общей методологии тестирования невозможно: обеспечить полное

А точно надо?

Без внедрения общей методологии тестирования невозможно:
обеспечить полное

соответствие программ поставленным функциональным требованиям
обеспечить высокий уровень надежности работы программного обеспечения
добиться стабильно высокого качества программного обеспечения