software testing in practice

Post on 18-Dec-2014

251 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

 

TRANSCRIPT

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

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

IITU Software Testing, 2014 1

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

IITU Software Testing, 2014 2

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

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

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

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

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

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

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

IITU Software Testing, 2014 3

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

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

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

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

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

IITU Software Testing, 2014 4

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

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

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

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

IITU Software Testing, 2014 5

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

IITU Software Testing, 2014 6

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

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

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

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

IITU Software Testing, 2014 7

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

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

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

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

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

• Админы (devops)

IITU Software Testing, 2014 8

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

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

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

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

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

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

IITU Software Testing, 2014 9

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

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

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

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

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

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

IITU Software Testing, 2014 10

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

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

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

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

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

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

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

IITU Software Testing, 2014 11

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

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

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

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

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

IITU Software Testing, 2014 12

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

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

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

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

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

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

IITU Software Testing, 2014 13

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

IITU Software Testing, 2014 14

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

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

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

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

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

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

IITU Software Testing, 2014 15

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

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

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

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

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

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

IITU Software Testing, 2014 16

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

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

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

• Когда?

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

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

IITU Software Testing, 2014 17

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

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

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

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

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

– Нет отказов

IITU Software Testing, 2014 18

Тимлид

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

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

IITU Software Testing, 2014 19

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

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

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

IITU Software Testing, 2014 20

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

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

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

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

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

• Код ревью

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

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

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

IITU Software Testing, 2014 21

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

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

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

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

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

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

неясности

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

IITU Software Testing, 2014 22

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

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

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

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

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

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

IITU Software Testing, 2014 23

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

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

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

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

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

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

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

IITU Software Testing, 2014 24

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

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

– Браузер

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

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

– СКВ – git, svn

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

IITU Software Testing, 2014 25

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

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

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

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

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

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

• Jenkins, teamcity

• WebDriver (Selenium)

IITU Software Testing, 2014 26

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

IITU Software Testing, 2014 27

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

• Пример

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

IITU Software Testing, 2014 29

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

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

IITU Software Testing, 2014 30

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

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

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

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

IITU Software Testing, 2014 31

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

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

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

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

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

IITU Software Testing, 2014 32

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

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

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

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

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

IITU Software Testing, 2014 33

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

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

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

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

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

• Правильно!

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

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

IITU Software Testing, 2014 34

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

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

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

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

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

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

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

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

IITU Software Testing, 2014 35

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

IITU Software Testing, 2014 36

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

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

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

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

IITU Software Testing, 2014 37

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

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

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

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

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

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

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

IITU Software Testing, 2014 38

top related