Слайд 1Автоматизация тестирования на практике
Слайд 2Про меня
Руководитель группы тестирования, отдела разработки и внедрения систем on-line
проектов
Слайд 5Для чего нужно тестирование?
Слайд 6Тестирование нового функционала
Мы хотим быть уверены, что новый функционал
работает именно так, как было нужно заказчику.
Слайд 7Тестирование «старого» функционала
Мы хотим быть уверены, что после
внесения изменений остальная функциональность программы не пострадала. Все работает в
соответствии с ранее утвержденными требованиями.
Это обычно называют регрессионным тестированием.
Слайд 8Про стандарты
ГОСТ Р ИСО/МЭК 9126-93. Информационная технология. Оценка программной продукции.
Характеристики качества и руководства по их применению
Слайд 9Классификация видов и направлений
тестирования
Слайд 11По доступу к коду и архитектуре приложения
Слайд 12По степени важности тестируемых функций
Слайд 13По принципам работы с приложением
Слайд 15Тестирование производительности
(Performance testing)
Задачей тестирования производительности является определение масштабируемости приложения под
нагрузкой, при этом происходит:
измерение времени выполнения выбранных операций при определенных
интенсивностях выполнения этих операций
определение количества пользователей, одновременно работающих с приложением
определение границ приемлемой производительности при увеличении нагрузки (при увеличении интенсивности выполнения этих операций)
исследование производительности на высоких, предельных, стрессовых нагрузках
Слайд 18Что это
Ручное тестирование-часть процесса тестирования на этапе контроля качества в процессе
разработки программного обеспечения.
Оно производится тестировщиком без использования программных средств,
для проверки программы или сайта путём моделирования действий пользователя.
Слайд 19Для чего используется?
Тестирование нового функционала
Подготовка сценариев для автоматизированного тестирования
Слайд 21Что это?
Автоматизированное тестирование программного обеспечения - это процесс верификации программного обеспечения,
при котором основные функции и шаги теста, такие как запуск,
инициализация, выполнение, анализ и выдача результата, выполняются автоматически при помощи инструментов для автоматизированного тестирования.
Слайд 22Для чего используется?
Регрессионное тестирование
Тестирование соблюдения контрактов
Слайд 23По уровню детализации приложения (пирамида)
Слайд 25Системное тестирование
Это тестирование программного обеспечения,
выполняемое на полной, интегрированной системе, с целью проверки соответствия системы исходным требованиям.
Обычно такое тестирование проходит по утвержденным сценариям,
которые описывают последовательности действий для проверки ключевых функций системы.
Слайд 26Плюсы системного тестирования
Тесты быстро окупаются
Тесты действуют максимально приближенно к действиям
пользователя
Один тест находит много багов
Можно подключить к большинству программ
Потому что тесты часто представляют собой отдельный проект и не зависят от кода самих систем
Слайд 27Минусы системного тестирования
Для разработки требуются совместные усилия всей команды (аналитиков,
разработчиков, тестировщиков)
Тесты достаточно дорогие для поддержки/разработки, поэтому обычно тестируется только
критичный функционал
Сложность локализации ошибки
Протестировать мы можем только то, что система выставляет в виде API или визуального интерфейса
Слайд 28Интеграционное тестирование
Одна из фаз тестирования программного обеспечения, при которой отдельные
программные модули объединяются и тестируются в группе
Слайд 29Тестирование соблюдения контрактов
Именно на этом уровне мы проверяем ключевые
контракты с внешними системами и внутри самой системы
На этом
уровне мы уже находимся в проекте самой информационной системы, поскольку мы тестируем контракты с внешними системами от её имени под её настройками а также внутренние контракты самой системы
Слайд 30Контроль соблюдения контрактов
После интеграции этих тестов с CI
мы получаем возможность оперативно получать информацию о их нарушении.
Для таких тестов создаются отдельные планы, которые запускаются с установленной периодичностью, например раз в 30 минут.
Сообщения будут приходить всем, кто подписался на наблюдение плана в Bamboo
Слайд 31Модульное тестирование
Фаза тестирования, позволяющая проверить на корректность отдельные модули
исходного кода программы.
Идея состоит в том, чтобы писать тесты
для каждой нетривиальной функции или метода. Это позволяет достаточно быстро проверить, не привело ли очередное изменение кода к регрессии
Слайд 32Плюсы модульного тестирования
Легко пишутся
Высокая локализация ошибки
Быстро выполняются
Легко поддерживать
Повышают качество кода
программы
Слайд 33Минусы модульного тестирования
Тестов должно быть много
Маленькая зона видимости
Требовательны к качеству
кода
В старом проекте, не адаптированном под тестирование, написать
продуктивные тесты на старый функционал без серьезного рефакторинга кода затруднительно
Слайд 37Инструменты автоматизации
Java (IntelliJIdea)
Maven
Junit 5
Selenide
Rest assured
Allure2
Jmeter
Git, mercurial
Bamboo
Слайд 40Rest 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")); }
}
Слайд 45Отчет allure в Bamboo, анализ результатов
Слайд 46Введение регламентов использования
Слайд 47А точно надо?
Без внедрения общей методологии тестирования невозможно:
обеспечить
полное соответствие программ поставленным функциональным требованиям
обеспечить высокий уровень надежности работы
программного обеспечения
добиться стабильно высокого качества программного обеспечения