38
Промышленное тестирование Николай Васильев IITU Software Testing, 2014 1

Software testing in practice

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Software testing in practice

Промышленное тестирование

Николай Васильев

IITU Software Testing, 2014 1

Page 2: Software testing in practice

Для чего мы тестируем?

IITU Software Testing, 2014 2

Page 3: Software testing in practice

Для чего мы тестируем?

• Для самопроверки – Разработчик, чтобы быть уверенным в качестве

проделанной работы

• Для сохранения имиджа – Не показывать пользователям ерунду

– Давать пользователям то, что работает, не обманывает ожиданий

• Предотвратить потери в деньгах

• Предотвратить вред жизни или здоровью

IITU Software Testing, 2014 3

Page 4: Software testing in practice

Почему мы тестируем?

• Люди ошибаются

• Даже самая мелкая ошибка может стоить дорого

• Разработчики не всегда проверяют свой код

– А уж тем более, не всегда делают это эффективно

IITU Software Testing, 2014 4

Page 5: Software testing in practice

Задача тестирования

• Проверить, что полезные фичи реализованы как надо

• Проверить, что нет вредных эффектов

• Сделать это все эффективно

IITU Software Testing, 2014 5

Page 6: Software testing in practice

Роли в проекте

IITU Software Testing, 2014 6

Page 7: Software testing in practice

Роли в проекте

• Что такое проект? – Ограничение по времени – Есть определенная цель – Есть методы ее достижения – Есть метрики оценки успешности (KPI)

• Проекты могут быть маленькие (месяцы) • Могут быть большие • Могут быть бессрочные

– Состоят из подпроектов – Мы называем их «сервисы»

IITU Software Testing, 2014 7

Page 8: Software testing in practice

Роли в проекте

• Руководитель сервиса (тимлид)

• Менеджер проектов

• Разработчики

• Тестирование

• Админы (devops)

IITU Software Testing, 2014 8

Page 9: Software testing in practice

Роли в проекте: тимлид

• Руководит направлением, сервисом

• Отвечает за все проекты в направлении

• Решает межпроектные споры

• Решает внутрипроектные споры

– Если договориться с менеджером не получилось

IITU Software Testing, 2014 9

Page 10: Software testing in practice

Роли в проекте: менеджер проекта

• Координирует проект

– Или несколько небольших

• Согласует работу участников проекта

• Согласует сроки всех задач

• Согласует приоритеты задач

IITU Software Testing, 2014 10

Page 11: Software testing in practice

Роли в проекте: разработчик

• Каждый разработчик – реализует полезные бизнес-функции • Senior, Старший разработчик

– Знает всю техническую систему (подсистему), которая затронута проектом

– Сам делает как правило только самые важные и ответственные задачи

– Несет ответственность за младших разработчиков

• Разработчик – То же самое, но знает только часть нужной системы – Несет ответственность за свои задачи

• Junior, младший разработчик; Intern, стажер – Не знает систему, или знает недостаточно – Все знания получает в процессе работы – Ответственность за его задачи несет senior

IITU Software Testing, 2014 11

Page 12: Software testing in practice

Роли в проекте: разработчик

• Рост разработчика

– Увеличение знания системы (экспертиза)

– Ответственность за свои задачи (от 0 до 100%)

– Ответственность за задачи в подсистеме, системе (от 0 до 100%)

IITU Software Testing, 2014 12

Page 13: Software testing in practice

Роли в проекте: системный администратор

• Выкладывает готовый софт в продакшн

– Production – софт, который сейчас обслуживает пользователей

• Следит за работоспособностью продакшна

• То же самое для тестовой среды

– С меньшим приоритетом

IITU Software Testing, 2014 13

Page 14: Software testing in practice

Роли в проекте: тестирование!

IITU Software Testing, 2014 14

Page 15: Software testing in practice

Роли в проекте: руководитель группы тестирования

• Знает всю техническую систему, которая затронута проектом (см. Senior)

• Знает как тестировать каждый узел системы

• Оценивает риски и приоритеты тестирования

• Согласует объем и приоритет задач на тестирование

• Несет ответственность за качество тестирования

IITU Software Testing, 2014 15

Page 16: Software testing in practice

Роли в проекте: тестировщик

• Знает часть сервиса и как ее тестировать – Как правило, лучше всех в проекте (эксперт)

• Создает план на тестирование компонентов – если нужно

• Проводит тесты • Фиксирует дефекты, документирует • Создает тестовую документацию (как тестируем),

если нужно – Тест-кейсы – Чеклисты – списки кейсов

• Дает добро (или блокирует) выкладку релиза

IITU Software Testing, 2014 16

Page 17: Software testing in practice

Роли в проекте: автоматизатор тестирования

• Тестировщик-программист

• Пишет программы, которые делают тесты автоматически

• Когда?

– Когда вручную невозможно

– Когда вручную не эффективно

IITU Software Testing, 2014 17

Page 18: Software testing in practice

Роли в проекте: нагрузочное тестирование

• Отдельная каста

• Имитируют высокую нагрузку на сервис на специализированной среде

• Измеряют показатели скорости и качества ответа

– Скорость ответа приемлема

– Нет отказов

IITU Software Testing, 2014 18

Page 19: Software testing in practice

Тимлид

Нагрузочник Разработчик Менеджер Тестировщик

Автоматизатор Технический писатель

IITU Software Testing, 2014 19

Page 20: Software testing in practice

Процесс разработки и тестирования

• Разработка ведется по фичам (задачам)

• Фича, Feature – законченный элемент системы, отдельная полезная функция

IITU Software Testing, 2014 20

Page 21: Software testing in practice

Процесс разработки и тестирования

• Создается задача – Task, issue, change request, фича, таска…

• Реализуется разработчиком

• Коммит в бранч

• Сборка, юнит-тесты (если есть)

• Код ревью

• Тестирование в бранче

• Мерж в мастер

• Сборка релиза по мастеру

IITU Software Testing, 2014 21

Page 22: Software testing in practice

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

• Создается специальный issue – Какие пакеты и как надо выкатить (для админов) – Какие задачи вошли в релиз и какие есть подводные камни

(для тестирования)

• Тестирование регрессии – Вручную при каждой сборке; один раз на релиз вручную;

каждый раз при сборке – автоматически; выборочно;

• Тестирование новых фич – Получить спецификацию на фичу, дополнить, убрать все

неясности

• Заведение багов • Проверка resolved – исправленных багов • Решение о выкладке в продакшн

IITU Software Testing, 2014 22

Page 23: Software testing in practice

Методы тестирования

• Тестирование по спецификации

– В явном виде может и не быть

• Исследовательское тестирование

• Бета-тестирование

• Сравнение с эталоном

IITU Software Testing, 2014 23

Page 24: Software testing in practice

Технологии и средства тестирования

• Дизайн и обсуждение дизайна тестов

– Блокнот, ручка, маркер, доска

• Коммуникации

– Почта, джаббер, телефон, личные и видео встречи

• Организация работы

– Issue-трекер, вики

IITU Software Testing, 2014 24

Page 25: Software testing in practice

Технологии и средства тестирования

• Инструменты тестирования

– Браузер

– Командная строка (bash, ssh, diff)

– Текстовые редакторы

– СКВ – git, svn

– Языки программирования, среды разработки (для автотестов)

IITU Software Testing, 2014 25

Page 26: Software testing in practice

Технологии и средства тестирования

• Кастомные инструменты

– https://github.com/yandex-qatools/htmlelements

– https://github.com/allure-framework

– Различные дифферы

– Фреймворки…

• Jenkins, teamcity

• WebDriver (Selenium)

IITU Software Testing, 2014 26

Page 27: Software testing in practice

Облачные технологии в тестировании

IITU Software Testing, 2014 27

Page 28: Software testing in practice

Облачные технологии в тестировании

• Пример

https://github.com/yandex-qatools/htmlelements-examples/blob/master/htmlelements-junit-example/src/test/java/my/company/web/SearchingByRequestTest.java

IITU Software Testing, 2014 28

Page 29: Software testing in practice

IITU Software Testing, 2014 29

Page 30: Software testing in practice

Облачные технологии в тестировании

• Что из этого можно делать удаленно (в облаке)?

IITU Software Testing, 2014 30

Page 31: Software testing in practice

Облачные технологии в тестировании

• Что из этого можно делать удаленно (в облаке)?

– Выполнение самого Java кода

– Получение браузера

IITU Software Testing, 2014 31

Page 32: Software testing in practice

Облачные технологии в тестировании

• Что из этого можно делать удаленно (в облаке)?

– Выполнение самого Java кода

– Получение браузера

• Так и происходит :)

IITU Software Testing, 2014 32

Page 33: Software testing in practice

Облачные технологии в тестировании

• Другой пример - тестирование serverside

• Есть маленькая копия продакшн – тестовый стенд

• Тесты на нем можно гонять в один поток

• Где здесь применить облако?

IITU Software Testing, 2014 33

Page 34: Software testing in practice

Облачные технологии в тестировании

• Другой пример - тестирование serverside

• Есть маленькая копия продакшн – тестовый стенд

• Тесты на нем можно гонять в один поток

• Где здесь применить облако?

• Правильно!

– Делать новые стенды по мере надобности

– Удалять ненужные

IITU Software Testing, 2014 34

Page 35: Software testing in practice

Облачные технологии в тестировании

• Что еще можно сделать с помощью облака?

• Наладить автозапуск тестов:

– Jenkins-хук по сборке релиза

– Разворачивание тестового стенда

– Запуск теста

– Отчет приходит в почту

• Нам остается только пить кофе :)

IITU Software Testing, 2014 35

Page 36: Software testing in practice

Методы оценки качества тестирования

IITU Software Testing, 2014 36

Page 37: Software testing in practice

Методы оценки качества тестирования

• Экспертная оценка – Руководитель сервиса – Менеджер – Senior – Руководитель группы тестирования

• Статистика – Найденных багов – Пропущенных багов – Критичности тех и других

• Скорость тестирования • Измерение code coverage

IITU Software Testing, 2014 37

Page 38: Software testing in practice

Обязанности и ответственность тестировщика

• Тестирование :) • Анализ задачи

– Обнаружить нестыковки – Какие нужны доступы, ресурсы

• Заведение багов • Отчет о тестировании

– «можно катить» – Ссылка на отчет автотестов, с кратким резюме – ок/не ок

• Root cause analysis – По пропущенным багам

• Ведение документации по тестированию

IITU Software Testing, 2014 38