SlideShare a Scribd company logo
1 of 89
Download to read offline
3 апреля 2014 года
Тестирование ПО:
баг не пройдет!
Владислав Иофе
Руководитель группы в отделе технологического развития
На сегодня
 Что такое тестирование? Зачем нужно тестировать?
 Классификация
 «Ящик», уровни и назначения
 Артефакты тестирования
 Профессии тестировщика и QA
 Автоматизированное тестирование
 Тестирование через GUI и тестирование кода
 XP, TDD
 Болезни и best practices
 Практика
2/95
О компании и о себе
3/95
О себе
 В 2005 окончил мехмат
Ташкентского государственного университета
 С 2004 занимаюсь корпоративным
программным обеспечением
 Работал разработчиком, тимлидом
и техлидом
 В 2008 пришел в CUSTIS
 Сейчас руководитель группы в отделе
технологического развития
4/95
Наша компания занимается
проектированием
5/95
…разработкой
6/95
…внедрением
7/95
…сопровождением
8/95
…и развитием ИТ-систем
9/95
Для
БанковТорговых сетей
Госкорпораций Предприятий ЖКХ
10/95
Структура компании
11/95
Профессиональная инфраструктура
12/95
«Техническая инфраструктура»
13/95
Отличники 
14/95
Мальчики и девочки 
15/95
Что такое тестирование?
16/95
Что такое тестирование?
Ваши версии?
Блог автора
17/95
Что такое тестирование?
Это неполное, частное определение
Тестирование – процесс исполнения
программы с целью обнаружения
ошибок
Г. Майерс
18/95
Что такое тестирование?
(продолжение)
 Исследование программного обеспечения
для обеспечения интересантов
информацией о качестве тестируемой
системы
19/95
Качество ПО
Качество продукта – функция от того,
насколько он изменил мир в лучшую сторону
Том ДеМарко
20/95
 Не очень конкретно?
 Качество – отдельная большая тема.
Как минимум, можно говорить
о качестве с точки зрения пользователя
(удовлетворение потребностей),
с философской точки зрения
(достижение некоего идеала),
с точки зрения производства продукта
Качество ПО (продолжение)
Аспекты качества:
 Надежность (Reliability)
 Сопровождаемость (Maintainability)
 Стоимость внесения изменений
(в т. ч. исправления дефектов)
 Наблюдаемость системы
 Эффективность (Efficiency)
 Производительность
 Удобство использования
 Функциональность
Некоторые из этих
аспектов помогают
обеспечивать
тестирование
21/95
И снова: что такое тестирование?
 Процесс формальной проверки
и подтверждения (верификация и валидация)
того, что ПО:
 отвечает предъявляемым требованиям
 удовлетворяет нуждам интересантов
 работает, как ожидается,
или может быть сделано с заданными
характеристиками
22/95
Верификация и валидация
23/95
Верификация и валидация
Покупка подержанного автомобиля:
 Осмотреть
 Тест-драйв
 Пробить по базе ГАИ
 Показать в сервисе
 Купить
 Поставить на учет www.gibdd.ru/check/auto
24/95
Что такое тестирование?
Блог автора
25/95
Свойство
Тестирование может показать наличие
ошибок, но никогда не докажет
их отсутствие
Э. Дейкстра
26/95
Классификация
27/95
Классификация:
статика vs. динамика
 Статическое тестирование
(без исполнения программы) направлено
на верификацию
 Проверка синтаксиса IDE
 Code review
 Статический анализ кода
 …
 Динамическое – может быть направлено
на валидацию
28/95
Классификация: принцип ящика
 Метод тестирования белого ящика
проверяет внутренние структуры и логику
работы тестируемого фрагмента.
Необходим для:
 Локализации сложных ошибок
 Обеспечения требуемого покрытия кода
 Метод черного ящика подразумевает
наличие информации только
о требованиях к тестируемому фрагменту
(например, входных и выходных данных)
29/95
Классификация: принцип ящика
30/95
Классификация: уровни
Уровни тестирования*:
 Модульное / Unit
 Интеграционное / Integration
 Системное / System
 Приемочное / (User) Acceptance
* Под уровнем пока подразумевается крупность тестируемых
«строительных» блоков приложения
** Иногда выделяют компонентное тестирование (Component)
31/95
Классификация: уровни
33/95
Классификация: уровни и V-модель
Анализ
требований
Детальный
дизайн
Кодирование
Интеграционное
тестирование
Системное
тестирование
Приемочное
тестирование
Модульное
тестирование
Дизайн
системы
Архитектура
Тестирование
и интеграция
Детализация
проекта
Время
34/95
Классификация: по назначению
 Регрессионное / Regression
 Приемочное / Acceptance
 Альфа, Бета
 Функциональное / Functional
 Тестирование производительности /
Performance
 Нагрузочное / Load
 Стресс-тестирование / Stress
 …
35/95
Классификация: по назначению
(продолжение)
 Юзабилити-тестирование / Usability
 Тестирование безопасности / Security
 Smoke-тестирование
 …
36/95
Тестирование производительности
Блог автора
37/95
Классификация:
многомерное пространство
38/95
Артефакты тестирования
39/95
Артефакты тестирования:
пример с бронированием билетов
 Пользователь находится
на последнем шаге –
подтверждении бронирования.
Нажимает кнопку, в ответ:
 Бронь успешна,
маршрут-квитанция
в почте
 Места по тарифу
закончились
 Сессия истекла
 …
40/95
Артефакты тестирования
41/95
Артефакты тестирования
43/95
Артефакты тестирования
45/95
Профессии тестировщика и QA
47/95
Кто тестирует?
Внедренцы
и пользователи
Бизнес-
аналитики
Системные
аналитики Тестировщики
Разработчики
Анализ
требований
Детальный
дизайн
Кодирование
Системное
тестирование
Приемочное
тестирование
Интеграционное
тестирование
Дизайн
системы
Архитектура
Модульное
тестирование
48/95
Профессии тестировщика и QA
 QA (Quality Assurance, обеспечение
качества) – это процесс формирования
и поддержания требуемых характеристик
качества ПО по мере его создания
и сопровождения. QA захватывает все
стороны создания ПО: сбор требований,
проектирование, тестирование,
интеграцию и т. д.
 Тестировщик ≠ QA-инженер
49/95
Профессии тестировщика и QA
Quality Control Quality AssuranceTesting
50/95
Кто тестирует?
 В разных командах и компаниях сильно
по-разному
 Бывают выделенные тестировщики
 В CUSTIS на трех разработчиков
приходится один инженер, который
занимается:
 аналитикой
 тестированием
 внедрением и поддержкой
51/95
Профессии тестировщика
Блог автора
52/95
Автоматизированное тестирование
53/95
Автоматизированное тестирование
Для тестирования используется отдельное ПО
(не то, что тестируется)
 Сложность
 Требования
к квалификации
 Тоже требуется отладка
 Дорого в поддержке –
кодовая база вырастает
вдвое
 Надежность
 Повторяемость
 Повторное использование
 Контроль регрессии
 Разные конфигурации
 Скорость
 Возможность одновременного
запуска на разных машинах
 Рефакторинг безопаснее
54/95
Автоматизированное тестирование
через GUI
 Тестировать вручную через GUI все равно
нужно!
 Как минимум, приемочное тестирование
 Но очень много повторяющихся рутинных
действий
 Надо их автоматизировать!
 Пример…
55/95
Тестирование кода: юнит-тест
57/95
Extreme Programming (1999)
 Методология разработки,
направленная на повышение доверия
заказчика и качества ПО
 Среди практик:
 Test First
 Парное программирование
 …
Кент Бек
58/95
Test-Driven Development (2002)
59/95
Автоматизированное тестирование
Блог автора
61/95
Best practices
 Не пытайтесь тестировать все
 Тест должен быть простым
 Интеграционных тестов не должно быть
очень много
 Тесты не должны зависеть друг от друга
62/95
Best practices
 Пишите тесты как для корректных,
так и для некорректных входных данных
 Пишите тест как на положительные,
так и на отрицательные сценарии
 Запускайте тесты как можно чаще.
Используйте Continuous integration
 Пишите тест до кода. Или пусть тест
напишет хотя бы не автор тестируемого
кода
63/95
Литература
64/95
Вопросы?
 Перерыв 10 минут
 А потом практика
65/95
Анекдот: подход
Two software testers went into a diner and
ordered two drinks. Then they produced
sandwiches from their briefcases and started
to eat. The owner became quite concerned
and marched over and told them, “You cannot
eat your own sandwiches in here!”
The testers looked at each other, shrugged their
shoulders and then exchanged sandwiches.
66/95
Анекдот: тестирование с умом
У авиаторов был замечательный прибор для испытания
на прочность авиационных стекол. Прибор представлял
собой пистолет, выстреливающий «ножку Буша»
в лобовое стекло с крейсерской скоростью самолета.
Если стекло не трескалось, считалось, что настоящее
столкновение с живой птицей тоже пройдет успешно.
Железнодорожники решили позаимствовать опыт
при испытании лобового стекла локомотива.
Но у них почему-то цыпленок не только пробил лобовое
стекло, но повредил двигатель. Железнодорожники,
естественно, побежали к авиаторам выяснять,
все ли было сделано правильно.
Ответ был прост: «Разморозьте курицу».
67/95
Анекдот: об ответственности
На одной конференции участникам задали
неудобный вопрос: «Вы только что оказались
на борту самолета и вдруг узнали, что ваша
команда была ответственна за разработку
ПО самолета. Кто из вас немедленно сойдет
на землю?»
Среди леса поднятых рук только один человек
оставался спокоен. Он прокомментировал
это так: «С нашей программой самолет вряд
ли даже вырулит, не говоря уже о взлете».
68/95
Немного практики:
автомобильная сигнализация
 Кнопка 1 ставит на охрану
 Кнопка 2 снимает
 Есть датчик удара
69/95
Шаг 1
70/95
Диаграмма классов
71/95
72/95
Шаг 1
 В автомобиль поставили новенькую
сигнализацию
 Теперь водитель может поставить машину
на охрану
 При постановке на охрану сирена «квакает»
и аварийка моргает один раз
73/95
Шаг 1
74/95
Шаг 1. Пример одного теста
75/95
Шаг 1.
Тестовая заглушка для аварийки
76/95
Шаг 2
 Водитель может снять машину с охраны
 При снятии с охраны сирена «квакает»
и моргает фарами или аварийкой трижды
77/95
Шаг 2. У вас могло получиться
нечто похожее
78/95
Шаг 2. У вас могло получиться
нечто похожее
79/95
Шаг 3
 Глубокой ночью сигнализация сработала
от датчика удара
 Воет сирена
 Заспанный хозяин может прекратить
безобразие при помощи брелока,
дав себе и соседям выспаться
80/95
Шаг 3. У вас могло получиться
нечто похожее
81/95
Шаг 3. У вас могло получиться
нечто похожее
82/95
Шаг 3. У вас могло получиться
нечто похожее
83/95
Шаг 4
 Если ночью хозяин не проснулся,
то сирена срабатывает несколько раз
 По таймеру сигнализация прекращает
шуметь и продолжает охранять машину
84/95
Шаг 4. У вас могло получиться
нечто похожее
85/95
Шаг 5
 При сдаче машины в сервис хозяина
попросят отключить сигнализацию
86/95
Шаг 5. У вас могло получиться
нечто похожее
87/95
Шаг 5. У вас могло получиться
нечто похожее
88/95
Шаг 6
Ничего
не забыли?
89/95
Шаг 7
Найден баг №1. Душераздирающая история!
 Сервисмен устанавливал сигнализацию в машину
 Перед любыми работами с электрикой аккумулятор
отключается от бортовой сети
 Ключи от машины сервисмен бросил на сиденье
 Когда подключил аккумулятор, двери
заблокировались, сигнализация сработала,
ключ с брелоком – в салоне
Как такое могло
случиться?
90/95
Шаг 7. У вас могло получиться
нечто похожее
Если бы этот тест был
написан раньше,
бага бы не случилось
91/95
Шаг 8
Найден баг №2. Душераздирающая история!
 Машина стояла в сервисе на ремонте
 Сигнализация была, как полагается, выключена
 Когда хозяин забирал машину, то по ошибке нажал
кнопку брелока вместо скрытой красной кнопки
в салоне
 Сигнализация сработала
Как такое могло
случиться?
92/95
Шаг 8. У вас могло получиться
нечто похожее
И этот тест, будь он
написан раньше,
исключил бы ошибку
93/95
Краткие выводы
 Тестов для простого класса – много
 Но они – простые, легко читаются, легко
поддерживаются
 Нужно писать тесты как для корректных,
так и для некорректных входных данных
 Нужно писать тесты не только
для «прямых» случаев
 Тесты полно описывают (специфицируют)
поведение тестируемого класса
94/95
Спасибо!
Вопросы?
Владислав Иофе
viofe@custis.ru
95/95

More Related Content

What's hot

Регулярное использование статического анализа кода в командной разработке
Регулярное использование статического анализа кода в командной разработкеРегулярное использование статического анализа кода в командной разработке
Регулярное использование статического анализа кода в командной разработкеTatyanazaxarova
 
Наталья Чуфырина, Mail.Ru Group, «Как создать команду по автоматизации тестир...
Наталья Чуфырина, Mail.Ru Group, «Как создать команду по автоматизации тестир...Наталья Чуфырина, Mail.Ru Group, «Как создать команду по автоматизации тестир...
Наталья Чуфырина, Mail.Ru Group, «Как создать команду по автоматизации тестир...Mail.ru Group
 
Как мы тестируем анализатор кода
Как мы тестируем анализатор кодаКак мы тестируем анализатор кода
Как мы тестируем анализатор кодаTatyanazaxarova
 
Аналитик и Тестировщик в одном лице – путь к качеству (Максим Цепков, SQA Day...
Аналитик и Тестировщик в одном лице – путь к качеству (Максим Цепков, SQA Day...Аналитик и Тестировщик в одном лице – путь к качеству (Максим Цепков, SQA Day...
Аналитик и Тестировщик в одном лице – путь к качеству (Максим Цепков, SQA Day...CUSTIS
 
Ошибки начинающих Tdd практиков, плюсы применения
Ошибки начинающих Tdd практиков, плюсы примененияОшибки начинающих Tdd практиков, плюсы применения
Ошибки начинающих Tdd практиков, плюсы примененияzheldak
 
QA Fest 2014. Алексей Лупан. Не тест-кейсы красят тестировщика, а...
QA Fest 2014. Алексей Лупан. Не тест-кейсы красят тестировщика, а...QA Fest 2014. Алексей Лупан. Не тест-кейсы красят тестировщика, а...
QA Fest 2014. Алексей Лупан. Не тест-кейсы красят тестировщика, а...QAFest
 
Как принести пользу разработке и упростить себе жизнь?
Как принести пользу разработке и упростить себе жизнь?Как принести пользу разработке и упростить себе жизнь?
Как принести пользу разработке и упростить себе жизнь?SQALab
 
презентация по дисциплине технология разработки программного обеспечения
презентация по дисциплине технология разработки программного обеспеченияпрезентация по дисциплине технология разработки программного обеспечения
презентация по дисциплине технология разработки программного обеспеченияRauan Ibraikhan
 
ук 03.007.02 2011
ук 03.007.02 2011ук 03.007.02 2011
ук 03.007.02 2011etyumentcev
 
сергей андреев
сергей андреевсергей андреев
сергей андреевAlexei Lupan
 
СОВМЕСТНОЕ ПРИМЕНЕНИЕ КОНТРАКТОВ И ВЕРИФИКАЦИИ ДЛЯ ПОВЫШЕНИЯ КАЧЕСТВА АВТОМАТ...
СОВМЕСТНОЕ ПРИМЕНЕНИЕ КОНТРАКТОВ И ВЕРИФИКАЦИИ ДЛЯ ПОВЫШЕНИЯ КАЧЕСТВА АВТОМАТ...СОВМЕСТНОЕ ПРИМЕНЕНИЕ КОНТРАКТОВ И ВЕРИФИКАЦИИ ДЛЯ ПОВЫШЕНИЯ КАЧЕСТВА АВТОМАТ...
СОВМЕСТНОЕ ПРИМЕНЕНИЕ КОНТРАКТОВ И ВЕРИФИКАЦИИ ДЛЯ ПОВЫШЕНИЯ КАЧЕСТВА АВТОМАТ...ITMO University
 
Requirements engineering. IREB practices
Requirements engineering. IREB practicesRequirements engineering. IREB practices
Requirements engineering. IREB practicesEugene Bulba
 
Sqadays 8-barancev
Sqadays 8-barancevSqadays 8-barancev
Sqadays 8-barancevAlexei Lupan
 
тестирование по
тестирование потестирование по
тестирование поIon Griu
 
Sqa.days.2010.beskov.system.analyst.and.test.engineers.interaction
Sqa.days.2010.beskov.system.analyst.and.test.engineers.interactionSqa.days.2010.beskov.system.analyst.and.test.engineers.interaction
Sqa.days.2010.beskov.system.analyst.and.test.engineers.interactionAlexei Lupan
 

What's hot (20)

Регулярное использование статического анализа кода в командной разработке
Регулярное использование статического анализа кода в командной разработкеРегулярное использование статического анализа кода в командной разработке
Регулярное использование статического анализа кода в командной разработке
 
Наталья Чуфырина, Mail.Ru Group, «Как создать команду по автоматизации тестир...
Наталья Чуфырина, Mail.Ru Group, «Как создать команду по автоматизации тестир...Наталья Чуфырина, Mail.Ru Group, «Как создать команду по автоматизации тестир...
Наталья Чуфырина, Mail.Ru Group, «Как создать команду по автоматизации тестир...
 
Istqb lesson 3
Istqb lesson 3Istqb lesson 3
Istqb lesson 3
 
Как мы тестируем анализатор кода
Как мы тестируем анализатор кодаКак мы тестируем анализатор кода
Как мы тестируем анализатор кода
 
Istqb lesson 6
Istqb lesson 6Istqb lesson 6
Istqb lesson 6
 
Аналитик и Тестировщик в одном лице – путь к качеству (Максим Цепков, SQA Day...
Аналитик и Тестировщик в одном лице – путь к качеству (Максим Цепков, SQA Day...Аналитик и Тестировщик в одном лице – путь к качеству (Максим Цепков, SQA Day...
Аналитик и Тестировщик в одном лице – путь к качеству (Максим Цепков, SQA Day...
 
Ошибки начинающих Tdd практиков, плюсы применения
Ошибки начинающих Tdd практиков, плюсы примененияОшибки начинающих Tdd практиков, плюсы применения
Ошибки начинающих Tdd практиков, плюсы применения
 
QA Fest 2014. Алексей Лупан. Не тест-кейсы красят тестировщика, а...
QA Fest 2014. Алексей Лупан. Не тест-кейсы красят тестировщика, а...QA Fest 2014. Алексей Лупан. Не тест-кейсы красят тестировщика, а...
QA Fest 2014. Алексей Лупан. Не тест-кейсы красят тестировщика, а...
 
Как принести пользу разработке и упростить себе жизнь?
Как принести пользу разработке и упростить себе жизнь?Как принести пользу разработке и упростить себе жизнь?
Как принести пользу разработке и упростить себе жизнь?
 
презентация по дисциплине технология разработки программного обеспечения
презентация по дисциплине технология разработки программного обеспеченияпрезентация по дисциплине технология разработки программного обеспечения
презентация по дисциплине технология разработки программного обеспечения
 
ук 03.007.02 2011
ук 03.007.02 2011ук 03.007.02 2011
ук 03.007.02 2011
 
сергей андреев
сергей андреевсергей андреев
сергей андреев
 
План тестирования
План тестированияПлан тестирования
План тестирования
 
QAFest. Роль тестирования в Devops
QAFest. Роль тестирования в DevopsQAFest. Роль тестирования в Devops
QAFest. Роль тестирования в Devops
 
СОВМЕСТНОЕ ПРИМЕНЕНИЕ КОНТРАКТОВ И ВЕРИФИКАЦИИ ДЛЯ ПОВЫШЕНИЯ КАЧЕСТВА АВТОМАТ...
СОВМЕСТНОЕ ПРИМЕНЕНИЕ КОНТРАКТОВ И ВЕРИФИКАЦИИ ДЛЯ ПОВЫШЕНИЯ КАЧЕСТВА АВТОМАТ...СОВМЕСТНОЕ ПРИМЕНЕНИЕ КОНТРАКТОВ И ВЕРИФИКАЦИИ ДЛЯ ПОВЫШЕНИЯ КАЧЕСТВА АВТОМАТ...
СОВМЕСТНОЕ ПРИМЕНЕНИЕ КОНТРАКТОВ И ВЕРИФИКАЦИИ ДЛЯ ПОВЫШЕНИЯ КАЧЕСТВА АВТОМАТ...
 
Requirements engineering. IREB practices
Requirements engineering. IREB practicesRequirements engineering. IREB practices
Requirements engineering. IREB practices
 
Istqb lesson 2
Istqb lesson 2Istqb lesson 2
Istqb lesson 2
 
Sqadays 8-barancev
Sqadays 8-barancevSqadays 8-barancev
Sqadays 8-barancev
 
тестирование по
тестирование потестирование по
тестирование по
 
Sqa.days.2010.beskov.system.analyst.and.test.engineers.interaction
Sqa.days.2010.beskov.system.analyst.and.test.engineers.interactionSqa.days.2010.beskov.system.analyst.and.test.engineers.interaction
Sqa.days.2010.beskov.system.analyst.and.test.engineers.interaction
 

Similar to Тестирование ПО: баг не пройдет!

Mva stf module 6 - rus
Mva stf module 6 - rusMva stf module 6 - rus
Mva stf module 6 - rusMaxim Shaptala
 
Tech Talks @NSU: Организация тестирования в IT-компаниях Академгородка. Карье...
Tech Talks @NSU: Организация тестирования в IT-компаниях Академгородка. Карье...Tech Talks @NSU: Организация тестирования в IT-компаниях Академгородка. Карье...
Tech Talks @NSU: Организация тестирования в IT-компаниях Академгородка. Карье...Tech Talks @NSU
 
Как тестируют в гугле - обзор книги
Как тестируют в гугле - обзор книгиКак тестируют в гугле - обзор книги
Как тестируют в гугле - обзор книгиkosyakov
 
Внедрение тестирования в Scrum
Внедрение тестирования в ScrumВнедрение тестирования в Scrum
Внедрение тестирования в ScrumDenis Petelin
 
Внедрение тестирования в Scrum
Внедрение тестирования в ScrumВнедрение тестирования в Scrum
Внедрение тестирования в ScrumDenis Petelin
 
Continious integration-Automated Testing-Solid-Agile
Continious integration-Automated Testing-Solid-AgileContinious integration-Automated Testing-Solid-Agile
Continious integration-Automated Testing-Solid-AgileKairat Yussupov
 
Mva stf module 2 - rus
Mva stf module 2 - rusMva stf module 2 - rus
Mva stf module 2 - rusMaxim Shaptala
 
Разработка и сопровождении авто-тестов (Selenium)
Разработка и сопровождении авто-тестов (Selenium)Разработка и сопровождении авто-тестов (Selenium)
Разработка и сопровождении авто-тестов (Selenium)Paul Stashevsky
 
5 колчинская
5 колчинская 5 колчинская
5 колчинская qasib
 
организация и проведение тестирования
организация и проведение тестированияорганизация и проведение тестирования
организация и проведение тестированияIgor Pozumentov
 
ClubQA #2. Unit testing and TDD
ClubQA #2. Unit testing and TDDClubQA #2. Unit testing and TDD
ClubQA #2. Unit testing and TDDClub QA Kostroma
 
Unit testing and TDD
Unit testing and TDDUnit testing and TDD
Unit testing and TDDIosif Itkin
 
Автоматизация тестирования - это пот, кровь и слезы
Автоматизация тестирования - это пот, кровь и слезы Автоматизация тестирования - это пот, кровь и слезы
Автоматизация тестирования - это пот, кровь и слезы Maxim Shulga
 
Марина Широчкина: Тестирование
Марина Широчкина: ТестированиеМарина Широчкина: Тестирование
Марина Широчкина: ТестированиеYandex
 
Тестирование осень 2013 лекция 5
Тестирование осень 2013 лекция 5 Тестирование осень 2013 лекция 5
Тестирование осень 2013 лекция 5 Technopark
 
Mva stf module 3 - rus
Mva stf module 3 - rusMva stf module 3 - rus
Mva stf module 3 - rusMaxim Shaptala
 
Тестирование осень 2013 лекция 3
Тестирование осень 2013 лекция 3Тестирование осень 2013 лекция 3
Тестирование осень 2013 лекция 3Technopark
 
Викторина для тестировщиков
Викторина для тестировщиковВикторина для тестировщиков
Викторина для тестировщиковUladzimir Kryvenka
 
Использование комбинаторного тестирования для мобильных приложений
Использование комбинаторного тестирования для мобильных приложенийИспользование комбинаторного тестирования для мобильных приложений
Использование комбинаторного тестирования для мобильных приложенийSQALab
 

Similar to Тестирование ПО: баг не пройдет! (20)

Mva stf module 6 - rus
Mva stf module 6 - rusMva stf module 6 - rus
Mva stf module 6 - rus
 
Tech Talks @NSU: Организация тестирования в IT-компаниях Академгородка. Карье...
Tech Talks @NSU: Организация тестирования в IT-компаниях Академгородка. Карье...Tech Talks @NSU: Организация тестирования в IT-компаниях Академгородка. Карье...
Tech Talks @NSU: Организация тестирования в IT-компаниях Академгородка. Карье...
 
Как тестируют в гугле - обзор книги
Как тестируют в гугле - обзор книгиКак тестируют в гугле - обзор книги
Как тестируют в гугле - обзор книги
 
Внедрение тестирования в Scrum
Внедрение тестирования в ScrumВнедрение тестирования в Scrum
Внедрение тестирования в Scrum
 
Внедрение тестирования в Scrum
Внедрение тестирования в ScrumВнедрение тестирования в Scrum
Внедрение тестирования в Scrum
 
Continious integration-Automated Testing-Solid-Agile
Continious integration-Automated Testing-Solid-AgileContinious integration-Automated Testing-Solid-Agile
Continious integration-Automated Testing-Solid-Agile
 
Mva stf module 2 - rus
Mva stf module 2 - rusMva stf module 2 - rus
Mva stf module 2 - rus
 
Разработка и сопровождении авто-тестов (Selenium)
Разработка и сопровождении авто-тестов (Selenium)Разработка и сопровождении авто-тестов (Selenium)
Разработка и сопровождении авто-тестов (Selenium)
 
5 колчинская
5 колчинская 5 колчинская
5 колчинская
 
организация и проведение тестирования
организация и проведение тестированияорганизация и проведение тестирования
организация и проведение тестирования
 
ClubQA #2. Unit testing and TDD
ClubQA #2. Unit testing and TDDClubQA #2. Unit testing and TDD
ClubQA #2. Unit testing and TDD
 
Unit testing and TDD
Unit testing and TDDUnit testing and TDD
Unit testing and TDD
 
Unit Testing
Unit TestingUnit Testing
Unit Testing
 
Автоматизация тестирования - это пот, кровь и слезы
Автоматизация тестирования - это пот, кровь и слезы Автоматизация тестирования - это пот, кровь и слезы
Автоматизация тестирования - это пот, кровь и слезы
 
Марина Широчкина: Тестирование
Марина Широчкина: ТестированиеМарина Широчкина: Тестирование
Марина Широчкина: Тестирование
 
Тестирование осень 2013 лекция 5
Тестирование осень 2013 лекция 5 Тестирование осень 2013 лекция 5
Тестирование осень 2013 лекция 5
 
Mva stf module 3 - rus
Mva stf module 3 - rusMva stf module 3 - rus
Mva stf module 3 - rus
 
Тестирование осень 2013 лекция 3
Тестирование осень 2013 лекция 3Тестирование осень 2013 лекция 3
Тестирование осень 2013 лекция 3
 
Викторина для тестировщиков
Викторина для тестировщиковВикторина для тестировщиков
Викторина для тестировщиков
 
Использование комбинаторного тестирования для мобильных приложений
Использование комбинаторного тестирования для мобильных приложенийИспользование комбинаторного тестирования для мобильных приложений
Использование комбинаторного тестирования для мобильных приложений
 

More from CUSTIS

Три истории микросервисов, или MSA для Enterprise
Три истории микросервисов, или MSA для EnterpriseТри истории микросервисов, или MSA для Enterprise
Три истории микросервисов, или MSA для EnterpriseCUSTIS
 
Долгоживущие ИТ в динамичном ритейле
Долгоживущие ИТ в динамичном ритейлеДолгоживущие ИТ в динамичном ритейле
Долгоживущие ИТ в динамичном ритейлеCUSTIS
 
Будущее уже наступило: от Agile к бирюзовым организациям
Будущее уже наступило: от Agile к бирюзовым организациямБудущее уже наступило: от Agile к бирюзовым организациям
Будущее уже наступило: от Agile к бирюзовым организациямCUSTIS
 
Как выбрать для проекта практики проектирования и работы с требованиями
Как выбрать для проекта практики проектирования и работы с требованиямиКак выбрать для проекта практики проектирования и работы с требованиями
Как выбрать для проекта практики проектирования и работы с требованиямиCUSTIS
 
Диаграммы учета как средство для наглядного и целостного отображения правил у...
Диаграммы учета как средство для наглядного и целостного отображения правил у...Диаграммы учета как средство для наглядного и целостного отображения правил у...
Диаграммы учета как средство для наглядного и целостного отображения правил у...CUSTIS
 
Сотрудничество с корпорациями: рецепты из практики
Сотрудничество с корпорациями: рецепты из практикиСотрудничество с корпорациями: рецепты из практики
Сотрудничество с корпорациями: рецепты из практикиCUSTIS
 
Agile — ответ на вызовы третьей промышленной революции
Agile — ответ на вызовы третьей промышленной революцииAgile — ответ на вызовы третьей промышленной революции
Agile — ответ на вызовы третьей промышленной революцииCUSTIS
 
Опыт построения микросервисной архитектуры в цифровом банке
Опыт построения микросервисной архитектуры в цифровом банкеОпыт построения микросервисной архитектуры в цифровом банке
Опыт построения микросервисной архитектуры в цифровом банкеCUSTIS
 
Золотая лихорадка MSA: почему нам не подошли микросервисы?
Золотая лихорадка MSA: почему нам не подошли микросервисы?Золотая лихорадка MSA: почему нам не подошли микросервисы?
Золотая лихорадка MSA: почему нам не подошли микросервисы?CUSTIS
 
Барьеры микросервисной архитектуры
Барьеры микросервисной архитектурыБарьеры микросервисной архитектуры
Барьеры микросервисной архитектурыCUSTIS
 
Три истории микросервисов
Три истории микросервисовТри истории микросервисов
Три истории микросервисовCUSTIS
 
От монолитных моделей предметной области — к модульным
От монолитных моделей предметной области — к модульнымОт монолитных моделей предметной области — к модульным
От монолитных моделей предметной области — к модульнымCUSTIS
 
Проблемы управления правами доступа к информационным системам крупной торгово...
Проблемы управления правами доступа к информационным системам крупной торгово...Проблемы управления правами доступа к информационным системам крупной торгово...
Проблемы управления правами доступа к информационным системам крупной торгово...CUSTIS
 
Будущее omni-channel маркетинга: инструменты, кейсы и цифры
Будущее omni-channel маркетинга: инструменты, кейсы и цифрыБудущее omni-channel маркетинга: инструменты, кейсы и цифры
Будущее omni-channel маркетинга: инструменты, кейсы и цифрыCUSTIS
 
Agile и управление знаниями в ИТ-проектах
Agile и управление знаниями в ИТ-проектахAgile и управление знаниями в ИТ-проектах
Agile и управление знаниями в ИТ-проектахCUSTIS
 
State of the .Net Performance
State of the .Net PerformanceState of the .Net Performance
State of the .Net PerformanceCUSTIS
 
Ответственность за качество в разных ИТ-проектах: в чем она и как ее разделять
Ответственность за качество в разных ИТ-проектах: в чем она и как ее разделятьОтветственность за качество в разных ИТ-проектах: в чем она и как ее разделять
Ответственность за качество в разных ИТ-проектах: в чем она и как ее разделятьCUSTIS
 
Опыт применения метода ATAM для оценки архитектуры
Опыт применения метода ATAM для оценки архитектурыОпыт применения метода ATAM для оценки архитектуры
Опыт применения метода ATAM для оценки архитектурыCUSTIS
 
Гибридный подход к управлению правами доступа: когда стандартного IDM не хватает
Гибридный подход к управлению правами доступа: когда стандартного IDM не хватаетГибридный подход к управлению правами доступа: когда стандартного IDM не хватает
Гибридный подход к управлению правами доступа: когда стандартного IDM не хватаетCUSTIS
 
Собираем кубик Рубика: восстановление архитектурного описания корпоративной р...
Собираем кубик Рубика: восстановление архитектурного описания корпоративной р...Собираем кубик Рубика: восстановление архитектурного описания корпоративной р...
Собираем кубик Рубика: восстановление архитектурного описания корпоративной р...CUSTIS
 

More from CUSTIS (20)

Три истории микросервисов, или MSA для Enterprise
Три истории микросервисов, или MSA для EnterpriseТри истории микросервисов, или MSA для Enterprise
Три истории микросервисов, или MSA для Enterprise
 
Долгоживущие ИТ в динамичном ритейле
Долгоживущие ИТ в динамичном ритейлеДолгоживущие ИТ в динамичном ритейле
Долгоживущие ИТ в динамичном ритейле
 
Будущее уже наступило: от Agile к бирюзовым организациям
Будущее уже наступило: от Agile к бирюзовым организациямБудущее уже наступило: от Agile к бирюзовым организациям
Будущее уже наступило: от Agile к бирюзовым организациям
 
Как выбрать для проекта практики проектирования и работы с требованиями
Как выбрать для проекта практики проектирования и работы с требованиямиКак выбрать для проекта практики проектирования и работы с требованиями
Как выбрать для проекта практики проектирования и работы с требованиями
 
Диаграммы учета как средство для наглядного и целостного отображения правил у...
Диаграммы учета как средство для наглядного и целостного отображения правил у...Диаграммы учета как средство для наглядного и целостного отображения правил у...
Диаграммы учета как средство для наглядного и целостного отображения правил у...
 
Сотрудничество с корпорациями: рецепты из практики
Сотрудничество с корпорациями: рецепты из практикиСотрудничество с корпорациями: рецепты из практики
Сотрудничество с корпорациями: рецепты из практики
 
Agile — ответ на вызовы третьей промышленной революции
Agile — ответ на вызовы третьей промышленной революцииAgile — ответ на вызовы третьей промышленной революции
Agile — ответ на вызовы третьей промышленной революции
 
Опыт построения микросервисной архитектуры в цифровом банке
Опыт построения микросервисной архитектуры в цифровом банкеОпыт построения микросервисной архитектуры в цифровом банке
Опыт построения микросервисной архитектуры в цифровом банке
 
Золотая лихорадка MSA: почему нам не подошли микросервисы?
Золотая лихорадка MSA: почему нам не подошли микросервисы?Золотая лихорадка MSA: почему нам не подошли микросервисы?
Золотая лихорадка MSA: почему нам не подошли микросервисы?
 
Барьеры микросервисной архитектуры
Барьеры микросервисной архитектурыБарьеры микросервисной архитектуры
Барьеры микросервисной архитектуры
 
Три истории микросервисов
Три истории микросервисовТри истории микросервисов
Три истории микросервисов
 
От монолитных моделей предметной области — к модульным
От монолитных моделей предметной области — к модульнымОт монолитных моделей предметной области — к модульным
От монолитных моделей предметной области — к модульным
 
Проблемы управления правами доступа к информационным системам крупной торгово...
Проблемы управления правами доступа к информационным системам крупной торгово...Проблемы управления правами доступа к информационным системам крупной торгово...
Проблемы управления правами доступа к информационным системам крупной торгово...
 
Будущее omni-channel маркетинга: инструменты, кейсы и цифры
Будущее omni-channel маркетинга: инструменты, кейсы и цифрыБудущее omni-channel маркетинга: инструменты, кейсы и цифры
Будущее omni-channel маркетинга: инструменты, кейсы и цифры
 
Agile и управление знаниями в ИТ-проектах
Agile и управление знаниями в ИТ-проектахAgile и управление знаниями в ИТ-проектах
Agile и управление знаниями в ИТ-проектах
 
State of the .Net Performance
State of the .Net PerformanceState of the .Net Performance
State of the .Net Performance
 
Ответственность за качество в разных ИТ-проектах: в чем она и как ее разделять
Ответственность за качество в разных ИТ-проектах: в чем она и как ее разделятьОтветственность за качество в разных ИТ-проектах: в чем она и как ее разделять
Ответственность за качество в разных ИТ-проектах: в чем она и как ее разделять
 
Опыт применения метода ATAM для оценки архитектуры
Опыт применения метода ATAM для оценки архитектурыОпыт применения метода ATAM для оценки архитектуры
Опыт применения метода ATAM для оценки архитектуры
 
Гибридный подход к управлению правами доступа: когда стандартного IDM не хватает
Гибридный подход к управлению правами доступа: когда стандартного IDM не хватаетГибридный подход к управлению правами доступа: когда стандартного IDM не хватает
Гибридный подход к управлению правами доступа: когда стандартного IDM не хватает
 
Собираем кубик Рубика: восстановление архитектурного описания корпоративной р...
Собираем кубик Рубика: восстановление архитектурного описания корпоративной р...Собираем кубик Рубика: восстановление архитектурного описания корпоративной р...
Собираем кубик Рубика: восстановление архитектурного описания корпоративной р...
 

Тестирование ПО: баг не пройдет!

  • 1. 3 апреля 2014 года Тестирование ПО: баг не пройдет! Владислав Иофе Руководитель группы в отделе технологического развития
  • 2. На сегодня  Что такое тестирование? Зачем нужно тестировать?  Классификация  «Ящик», уровни и назначения  Артефакты тестирования  Профессии тестировщика и QA  Автоматизированное тестирование  Тестирование через GUI и тестирование кода  XP, TDD  Болезни и best practices  Практика 2/95
  • 3. О компании и о себе 3/95
  • 4. О себе  В 2005 окончил мехмат Ташкентского государственного университета  С 2004 занимаюсь корпоративным программным обеспечением  Работал разработчиком, тимлидом и техлидом  В 2008 пришел в CUSTIS  Сейчас руководитель группы в отделе технологического развития 4/95
  • 17. Что такое тестирование? Ваши версии? Блог автора 17/95
  • 18. Что такое тестирование? Это неполное, частное определение Тестирование – процесс исполнения программы с целью обнаружения ошибок Г. Майерс 18/95
  • 19. Что такое тестирование? (продолжение)  Исследование программного обеспечения для обеспечения интересантов информацией о качестве тестируемой системы 19/95
  • 20. Качество ПО Качество продукта – функция от того, насколько он изменил мир в лучшую сторону Том ДеМарко 20/95  Не очень конкретно?  Качество – отдельная большая тема. Как минимум, можно говорить о качестве с точки зрения пользователя (удовлетворение потребностей), с философской точки зрения (достижение некоего идеала), с точки зрения производства продукта
  • 21. Качество ПО (продолжение) Аспекты качества:  Надежность (Reliability)  Сопровождаемость (Maintainability)  Стоимость внесения изменений (в т. ч. исправления дефектов)  Наблюдаемость системы  Эффективность (Efficiency)  Производительность  Удобство использования  Функциональность Некоторые из этих аспектов помогают обеспечивать тестирование 21/95
  • 22. И снова: что такое тестирование?  Процесс формальной проверки и подтверждения (верификация и валидация) того, что ПО:  отвечает предъявляемым требованиям  удовлетворяет нуждам интересантов  работает, как ожидается, или может быть сделано с заданными характеристиками 22/95
  • 24. Верификация и валидация Покупка подержанного автомобиля:  Осмотреть  Тест-драйв  Пробить по базе ГАИ  Показать в сервисе  Купить  Поставить на учет www.gibdd.ru/check/auto 24/95
  • 26. Свойство Тестирование может показать наличие ошибок, но никогда не докажет их отсутствие Э. Дейкстра 26/95
  • 28. Классификация: статика vs. динамика  Статическое тестирование (без исполнения программы) направлено на верификацию  Проверка синтаксиса IDE  Code review  Статический анализ кода  …  Динамическое – может быть направлено на валидацию 28/95
  • 29. Классификация: принцип ящика  Метод тестирования белого ящика проверяет внутренние структуры и логику работы тестируемого фрагмента. Необходим для:  Локализации сложных ошибок  Обеспечения требуемого покрытия кода  Метод черного ящика подразумевает наличие информации только о требованиях к тестируемому фрагменту (например, входных и выходных данных) 29/95
  • 31. Классификация: уровни Уровни тестирования*:  Модульное / Unit  Интеграционное / Integration  Системное / System  Приемочное / (User) Acceptance * Под уровнем пока подразумевается крупность тестируемых «строительных» блоков приложения ** Иногда выделяют компонентное тестирование (Component) 31/95
  • 33. Классификация: уровни и V-модель Анализ требований Детальный дизайн Кодирование Интеграционное тестирование Системное тестирование Приемочное тестирование Модульное тестирование Дизайн системы Архитектура Тестирование и интеграция Детализация проекта Время 34/95
  • 34. Классификация: по назначению  Регрессионное / Regression  Приемочное / Acceptance  Альфа, Бета  Функциональное / Functional  Тестирование производительности / Performance  Нагрузочное / Load  Стресс-тестирование / Stress  … 35/95
  • 35. Классификация: по назначению (продолжение)  Юзабилити-тестирование / Usability  Тестирование безопасности / Security  Smoke-тестирование  … 36/95
  • 39. Артефакты тестирования: пример с бронированием билетов  Пользователь находится на последнем шаге – подтверждении бронирования. Нажимает кнопку, в ответ:  Бронь успешна, маршрут-квитанция в почте  Места по тарифу закончились  Сессия истекла  … 40/95
  • 44. Кто тестирует? Внедренцы и пользователи Бизнес- аналитики Системные аналитики Тестировщики Разработчики Анализ требований Детальный дизайн Кодирование Системное тестирование Приемочное тестирование Интеграционное тестирование Дизайн системы Архитектура Модульное тестирование 48/95
  • 45. Профессии тестировщика и QA  QA (Quality Assurance, обеспечение качества) – это процесс формирования и поддержания требуемых характеристик качества ПО по мере его создания и сопровождения. QA захватывает все стороны создания ПО: сбор требований, проектирование, тестирование, интеграцию и т. д.  Тестировщик ≠ QA-инженер 49/95
  • 46. Профессии тестировщика и QA Quality Control Quality AssuranceTesting 50/95
  • 47. Кто тестирует?  В разных командах и компаниях сильно по-разному  Бывают выделенные тестировщики  В CUSTIS на трех разработчиков приходится один инженер, который занимается:  аналитикой  тестированием  внедрением и поддержкой 51/95
  • 50. Автоматизированное тестирование Для тестирования используется отдельное ПО (не то, что тестируется)  Сложность  Требования к квалификации  Тоже требуется отладка  Дорого в поддержке – кодовая база вырастает вдвое  Надежность  Повторяемость  Повторное использование  Контроль регрессии  Разные конфигурации  Скорость  Возможность одновременного запуска на разных машинах  Рефакторинг безопаснее 54/95
  • 51. Автоматизированное тестирование через GUI  Тестировать вручную через GUI все равно нужно!  Как минимум, приемочное тестирование  Но очень много повторяющихся рутинных действий  Надо их автоматизировать!  Пример… 55/95
  • 53. Extreme Programming (1999)  Методология разработки, направленная на повышение доверия заказчика и качества ПО  Среди практик:  Test First  Парное программирование  … Кент Бек 58/95
  • 56. Best practices  Не пытайтесь тестировать все  Тест должен быть простым  Интеграционных тестов не должно быть очень много  Тесты не должны зависеть друг от друга 62/95
  • 57. Best practices  Пишите тесты как для корректных, так и для некорректных входных данных  Пишите тест как на положительные, так и на отрицательные сценарии  Запускайте тесты как можно чаще. Используйте Continuous integration  Пишите тест до кода. Или пусть тест напишет хотя бы не автор тестируемого кода 63/95
  • 59. Вопросы?  Перерыв 10 минут  А потом практика 65/95
  • 60. Анекдот: подход Two software testers went into a diner and ordered two drinks. Then they produced sandwiches from their briefcases and started to eat. The owner became quite concerned and marched over and told them, “You cannot eat your own sandwiches in here!” The testers looked at each other, shrugged their shoulders and then exchanged sandwiches. 66/95
  • 61. Анекдот: тестирование с умом У авиаторов был замечательный прибор для испытания на прочность авиационных стекол. Прибор представлял собой пистолет, выстреливающий «ножку Буша» в лобовое стекло с крейсерской скоростью самолета. Если стекло не трескалось, считалось, что настоящее столкновение с живой птицей тоже пройдет успешно. Железнодорожники решили позаимствовать опыт при испытании лобового стекла локомотива. Но у них почему-то цыпленок не только пробил лобовое стекло, но повредил двигатель. Железнодорожники, естественно, побежали к авиаторам выяснять, все ли было сделано правильно. Ответ был прост: «Разморозьте курицу». 67/95
  • 62. Анекдот: об ответственности На одной конференции участникам задали неудобный вопрос: «Вы только что оказались на борту самолета и вдруг узнали, что ваша команда была ответственна за разработку ПО самолета. Кто из вас немедленно сойдет на землю?» Среди леса поднятых рук только один человек оставался спокоен. Он прокомментировал это так: «С нашей программой самолет вряд ли даже вырулит, не говоря уже о взлете». 68/95
  • 63. Немного практики: автомобильная сигнализация  Кнопка 1 ставит на охрану  Кнопка 2 снимает  Есть датчик удара 69/95
  • 66. 72/95
  • 67. Шаг 1  В автомобиль поставили новенькую сигнализацию  Теперь водитель может поставить машину на охрану  При постановке на охрану сирена «квакает» и аварийка моргает один раз 73/95
  • 69. Шаг 1. Пример одного теста 75/95
  • 70. Шаг 1. Тестовая заглушка для аварийки 76/95
  • 71. Шаг 2  Водитель может снять машину с охраны  При снятии с охраны сирена «квакает» и моргает фарами или аварийкой трижды 77/95
  • 72. Шаг 2. У вас могло получиться нечто похожее 78/95
  • 73. Шаг 2. У вас могло получиться нечто похожее 79/95
  • 74. Шаг 3  Глубокой ночью сигнализация сработала от датчика удара  Воет сирена  Заспанный хозяин может прекратить безобразие при помощи брелока, дав себе и соседям выспаться 80/95
  • 75. Шаг 3. У вас могло получиться нечто похожее 81/95
  • 76. Шаг 3. У вас могло получиться нечто похожее 82/95
  • 77. Шаг 3. У вас могло получиться нечто похожее 83/95
  • 78. Шаг 4  Если ночью хозяин не проснулся, то сирена срабатывает несколько раз  По таймеру сигнализация прекращает шуметь и продолжает охранять машину 84/95
  • 79. Шаг 4. У вас могло получиться нечто похожее 85/95
  • 80. Шаг 5  При сдаче машины в сервис хозяина попросят отключить сигнализацию 86/95
  • 81. Шаг 5. У вас могло получиться нечто похожее 87/95
  • 82. Шаг 5. У вас могло получиться нечто похожее 88/95
  • 84. Шаг 7 Найден баг №1. Душераздирающая история!  Сервисмен устанавливал сигнализацию в машину  Перед любыми работами с электрикой аккумулятор отключается от бортовой сети  Ключи от машины сервисмен бросил на сиденье  Когда подключил аккумулятор, двери заблокировались, сигнализация сработала, ключ с брелоком – в салоне Как такое могло случиться? 90/95
  • 85. Шаг 7. У вас могло получиться нечто похожее Если бы этот тест был написан раньше, бага бы не случилось 91/95
  • 86. Шаг 8 Найден баг №2. Душераздирающая история!  Машина стояла в сервисе на ремонте  Сигнализация была, как полагается, выключена  Когда хозяин забирал машину, то по ошибке нажал кнопку брелока вместо скрытой красной кнопки в салоне  Сигнализация сработала Как такое могло случиться? 92/95
  • 87. Шаг 8. У вас могло получиться нечто похожее И этот тест, будь он написан раньше, исключил бы ошибку 93/95
  • 88. Краткие выводы  Тестов для простого класса – много  Но они – простые, легко читаются, легко поддерживаются  Нужно писать тесты как для корректных, так и для некорректных входных данных  Нужно писать тесты не только для «прямых» случаев  Тесты полно описывают (специфицируют) поведение тестируемого класса 94/95