2. Обо мне
Роман Шейко
• В тестировании с 2006 года (Motorola, General
Satellite, Acronis, Luxoft)
• Веду блог www.33testers.blogspot.com
• Познакомился с оракулами в рамках курса Black Box
Software Testing (Foundation)
• Проводил тренинги по их использованию
• Изучал оракулы на практике в рамках Weekend
Testing
Твиттер: @Rsheyko
Прогресс доклада
Блог: 33testers.blogspot.com
E-mail: r.sheyko@gmail.com
2
3. Цели доклада
• Осветить тему оракулов в
тестировании
• Показать их использование на
примерах
• Мотивировать к дальнейшему
изучению и использованию оракулов
Твиттер: @Rsheyko
Прогресс доклада
Блог: 33testers.blogspot.com
E-mail: r.sheyko@gmail.com
3
4. План доклада
1. Что такое оракулы в тестировании
2. Использование оракулов
3. Подведение итогов
Твиттер: @Rsheyko
Прогресс доклада
Блог: 33testers.blogspot.com
E-mail: r.sheyko@gmail.com
4
5. 1. Что такое оракул?
Оракул
Оракул – механизм,
который помогает нам
определить результат
выполнения теста.
К/Ф «Матрица»
Другие определения:
• Программа-эталон, с которой мы сравниваем нашу программу
• Метод генерации ожидаемого результата
• Метод сравнения фактического результата с ожидаемым
Твиттер: @Rsheyko
Прогресс доклада
Блог: 33testers.blogspot.com
E-mail: r.sheyko@gmail.com
5
6. Пример: тест калькулятора
Проверить сложение
1. Введите 2 в поле «Первое
слагаемое»
2. Введите 2 в поле «Второе
слагаемое»
3. Нажмите «=».
Приложение - калькулятор
Оракула в тесте нет. Нужен ли он?
2
+
2
=
?
* Умеет только
складывать
Твиттер: @Rsheyko
Прогресс доклада
Блог: 33testers.blogspot.com
E-mail: r.sheyko@gmail.com
6
7. Пример: тест калькулятора
Проверить сложение
1. Введите 2 в поле
«Первое
слагаемое»
2. Введите 2 в поле
«Второе
слагаемое»
3. Нажмите «=»
4. Проверьте, что
сумма равна 4.
Твиттер: @Rsheyko
Прогресс доклада
Блог: 33testers.blogspot.com
E-mail: r.sheyko@gmail.com
7
8. Пример: тест калькулятора
1-й вариант
Проверить сложение
1. Введите 2 в поле
«Первое
слагаемое»
2. Введите 2 в поле
«Второе
слагаемое»
+
3. Нажмите «=»
4. Проверьте, что
сумма равна 4
2-й вариант
Проверить сложение
1-3. То же самое.
4. Проверьте, что
сумма равна 4
5. Проверьте, что
время
выполнения
операции
меньше минуты
Оракул не помог обнаружить
проблему с быстродействием
Твиттер: @Rsheyko
Прогресс доклада
Блог: 33testers.blogspot.com
E-mail: r.sheyko@gmail.com
8
9. Пример: тест калькулятора
1-й вариант
Проверить сложение
1. Введите 2 в поле
«Первое
слагаемое»
2. Введите 2 в поле
«Второе
слагаемое»
3. Нажмите «=»
4. Проверьте, что
сумма равна 4
(Оракул не помог
обнаружить проблему с
быстродействием)
2-й вариант
Проверить сложение
1-3. То же самое.
4. Проверьте, что
сумма равна 4
5. Проверьте, что
время
выполнения
операции
меньше минуты
+
(Оракул не помог
обнаружить проблему с
освобождением памяти)
Твиттер: @Rsheyko
Прогресс доклада
Блог: 33testers.blogspot.com
E-mail: r.sheyko@gmail.com
3-й вариант
Проверить сложение
1-3. То же самое.
4. Проверьте, что
сумма равна 4
5. Проверьте, что
время
выполнения
операции
меньше минуты
6. Проверьте
освобождение
памяти
9
10. Увеличение оракула
Оракул 1-го варианта
теста
Оракул 2-го варианта
теста
Оракул 3-го варианта
теста
Выводы:
1. Чем достовернее оракул, тем, как правило, он больше и сложнее
2. Автоматизация требует повышенного внимания к оракулам
Твиттер: @Rsheyko
Прогресс доклада
Блог: 33testers.blogspot.com
E-mail: r.sheyko@gmail.com
10
11. Полные и частичные оракулы
• Полный оракул – механизм, который на
100% достоверно может определить
результат теста
• Частичный оракул – механизм, который
не может с полной достоверностью
определить результат теста, но требует
меньше ресурсов для использования
Elaine Weyuker, “On testing nontestable” (1980)
Твиттер: @Rsheyko
Прогресс доклада
Блог: 33testers.blogspot.com
E-mail: r.sheyko@gmail.com
11
12. Ошибки использования оракулов
1. Промах – когда оракул не помог
обнаружить проблему, но она есть
2. Ложная тревога – когда оракул
обнаружил проблему, но на самом
деле ее нет
Твиттер: @Rsheyko
Прогресс доклада
Блог: 33testers.blogspot.com
E-mail: r.sheyko@gmail.com
12
13. 2. Использование оракулов
Ваши собственные оракулы
Оракулы соответствия Джеймса Баха
и Майкла Болтона
Оракулы Дуга Хоффмана
Эмоции в качестве оракулов
…
Твиттер: @Rsheyko
Прогресс доклада
Блог: 33testers.blogspot.com
E-mail: r.sheyko@gmail.com
13
14. Классификации оракулов
Джеймс Бах
Майкл Болтон
1. FEW HICCUPPS
Дуг Хоффман
2. Таксономия
оракулов
Твиттер: @Rsheyko
Прогресс доклада
Блог: 33testers.blogspot.com
E-mail: r.sheyko@gmail.com
14
15. Классификация Баха и Болтона
(FEW HICCUPPS)
• Основана на наблюдениях авторов за
тем, как тестировщики обнаруживают
проблемы
• Классификацию часто называют
оракулами соответствия
• Она также известна как FEW HICCUPPS
Твиттер: @Rsheyko
Прогресс доклада
Блог: 33testers.blogspot.com
E-mail: r.sheyko@gmail.com
15
16. Классификация Баха и Болтона
(Оракулы соответствия)
FEW HICCUPPS
Оракул
Описание
History
Соответствие продукта предыдущим версиям
Image
Соответствие имиджу компании
Comparable products
Соответствие сравнимым продуктам
Claims
Соответствие требованиям (обещаниям)
User’s Expectations
Соответствие ожиданиям пользователей
Product
Соответствие другим частям продукта
Purpose
Соответствие назначению продукта
Statutes and standards
Соответствие уставам и стандартам
Твиттер: @Rsheyko
Прогресс доклада
Блог: 33testers.blogspot.com
E-mail: r.sheyko@gmail.com
16
17. Классификация Баха и Болтона
(Оракулы соответствия)
FEW HICCUPPS
Оракул
Описание
Familiarity
Несоответствие схожим проблемам
Explainability
Соответствие поведению, которое можно объяснить
World
Соответствие представлениям о мире
FEW HICCUPPS
СОМ ПИТОНИУС
Твиттер: @Rsheyko
Прогресс доклада
Блог: 33testers.blogspot.com
E-mail: r.sheyko@gmail.com
17
18. Пример использования FEW HICCUPPS:
Просмотр расписания поездов rzd.ru
Памятка оракулов:
•F (Схожесть)
•E (Объяснимость)
•W (Мир)
Пустые результаты поиска поездов:
«Дата отправления находится за пределами
периода предварительной продажи»
Твиттер: @Rsheyko
Прогресс доклада
Блог: 33testers.blogspot.com
E-mail: r.sheyko@gmail.com
•H (История)
•I (Имидж)
•С (Требования)
•С (Сравнимые
продукты)
•U (Ожидания
пользователей)
•P (Назначение)
•P (Продукт)
•S (Уставы и
стандарты)
18
19. Пример использования FEW HICCUPPS:
Вход на сайт при оформлении заказа
Поиск
рейсов
Выбор
поезда и
вагона
Вход
на сайт
Вход под
существующим
login
Регистрация
Начальная
страница
Активация
Оформление
заказа
1. После регистрации происходит переход
на начальную страницу
2. Но после входа под известным
пользователем продолжается
оформление заказа
Твиттер: @Rsheyko
Прогресс доклада
Блог: 33testers.blogspot.com
E-mail: r.sheyko@gmail.com
Памятка оракулов:
•F (Схожесть)
•E (Объяснимость)
•W (Мир)
•H (История)
•I (Имидж)
•С (Требования)
•С (Сравнимые
продукты)
•U (Ожидания
пользователей)
•P (Назначение)
•P (Продукт)
•S (Уставы и
стандарты)
19
20. Пример использования FEW HICCUPS:
О чем мы не поговорили?
• Мы рассмотрели не все оракулы
соответствия на примере
• Попробуйте применить
остальные оракулы FEW
HICCUPPS в своей работе
Твиттер: @Rsheyko
Прогресс доклада
Блог: 33testers.blogspot.com
E-mail: r.sheyko@gmail.com
Памятка оракулов:
•F (Схожесть)
•E (Объяснимость)
•W (Мир)
•H (История)
•I (Имидж)
•С (Требования)
•С (Сравнимые
продукты)
•U (Ожидания
пользователей)
•P (Назначение)
•P (Продукт)
•S (Уставы и
стандарты)
20
21. Классификация Дуга Хоффмана
• Эта классификация оракулов создавалась
в основном для автоматизации
тестирования
• Ее называют Таксономией оракулов
Хоффмана
• Хоффман предположил, что полных
оракулов не существует, но в то же время
есть множество полезных частичных
оракулов
Твиттер: @Rsheyko
Прогресс доклада
Блог: 33testers.blogspot.com
E-mail: r.sheyko@gmail.com
21
22. Классификация Дуга Хоффмана
(Таксономия оракулов)
Оракул
Описание
Constraint oracle
Оракул ограничений
Regression oracle
Оракул регрессии
Self-verifying data oracle
Оракул самопроверяемых данных
Physical model oracle
Оракул физической модели
Business model oracle
Оракул бизнес модели
Statistical model oracle
Оракул статистической модели
State model oracle
Оракул модели состояний
Interaction model oracle
Оракул модели взаимодействия
Твиттер: @Rsheyko
Прогресс доклада
Блог: 33testers.blogspot.com
E-mail: r.sheyko@gmail.com
22
23. Классификация Дуга Хоффмана
(Таксономия оракулов)
Оракул
Описание
Calculation oracle
Оракул вычислений
Inverse oracle
Оракул инверсии
Reference program
Оракул образцовой программы
И много много других..
См. материалы в конце доклада
Твиттер: @Rsheyko
Прогресс доклада
Блог: 33testers.blogspot.com
E-mail: r.sheyko@gmail.com
23
24. Пример: разработка автотестов для функции
суммирования в таблицах Google Docs
Памятка оракулов:
•Оракул ограничений
•Оракул регрессии
•Оракул самопроверяемых
данных
•Оракулы моделей
(физической, бизнес,
статистической, состояний,
взаимодействия)
•Оракул вычислений
•Оракул инверсии
•Оракул образцовой
программы
Твиттер: @Rsheyko
Прогресс доклада
Блог: 33testers.blogspot.com
E-mail: r.sheyko@gmail.com
24
25. Пример: разработка автотестов для функции
построения диаграмм в таблицах Google Docs
Памятка оракулов:
•Оракул ограничений
•Оракул регрессии
•Оракул самопроверяемых
данных
•Оракулы моделей
(физической, бизнес,
статистической, состояний,
взаимодействия)
•Оракул вычислений
•Оракул инверсии
•Оракул образцовой
программы
Твиттер: @Rsheyko
Прогресс доклада
Блог: 33testers.blogspot.com
E-mail: r.sheyko@gmail.com
25
26. Пример использования таксономии оракулов:
О чем мы не поговорили?
• Мы рассмотрели не все
оракулы из таксономии
• Попробуйте остальные
оракулы из таксономии
оракулов Хоффмана
Памятка оракулов:
•Оракул ограничений
•Оракул регрессии
•Оракул самопроверяемых
данных
•Оракулы моделей
(физической, бизнес,
статистической, состояний,
взаимодействия)
•Оракул вычислений
•Оракул инверсии
•Оракул образцовой
программы
Твиттер: @Rsheyko
Прогресс доклада
Блог: 33testers.blogspot.com
E-mail: r.sheyko@gmail.com
26
27. Сравнение классификаций
Области
применения
Сильные стороны
Слабые
стороны
FEW
HICCUPPS
• Заведение
• Мнемоника
Не совсем
убедительных • Универсальность подходит для
баг репортов
разработки
• Тест дизайн
автотестов
Таксономия
оракулов
• Тест дизайн
• Разработка
автотестов
• Оракулы хорошо Описание плохо
программируемы структурировано
(ИМХО)
• Оракулы
конкретны
Твиттер: @Rsheyko
Прогресс доклада
Блог: 33testers.blogspot.com
E-mail: r.sheyko@gmail.com
27
29. Другие идеи использования
оракулов
• Эмоции могут быть оракулом для
тестировщика (Майкл Болтон)
• Эмоции для тестировщика – как датчик
дыма, который сигнализирует о том, что
есть проблема
Твиттер: @Rsheyko
Прогресс доклада
Блог: 33testers.blogspot.com
E-mail: r.sheyko@gmail.com
29
30. 3. Summary
1.
2.
3.
4.
5.
6.
Оракул – механизм, который помогает нам определять
результат теста
2 наиболее популярные классификации оракулов – оракулы
соответсвия (FEW HICCUPPS) и таксономия оракулов
Хоффмана
Обе классификации помогают нам обнаруживать ошибки и
разрабатывать тесты
FEW HICCUPPS успешно применяется для заведения
убедительных баг репортов
Таксономия оракулов Хоффмана хорошо подходит для
автоматизации
Существует множество идей использования оракулов в
тестировании. Например, в качестве оракула тестировщик
может использовать свои эмоции
Твиттер: @Rsheyko
Прогресс доклада
Блог: 33testers.blogspot.com
E-mail: r.sheyko@gmail.com
30
31. Материалы
Материалы для первого знакомства с оракулами:
• Cтатья Майкла Болтона про оракулы соответствия:
http://www.developsense.com/articles/2005-01-TestingWithoutAMap.pdf
• Cтатьи про FEW HICCUPPS:
– http://www.developsense.com/blog/2012/07/few-hiccupps/
– http://www.testingeducation.org/BBST/foundations/Kelly_UsingTestOracles.pdf
– http://www.associationforsoftwaretesting.org/2012/06/12/observation-inferenceoracle/
• Cтатья Дуга Хоффмана об оракулах-эвристиках:
http://www.softwarequalitymethods.com/Papers/STQE%20Heuristic.pdf
Твиттер: @Rsheyko
Прогресс доклада
Блог: 33testers.blogspot.com
E-mail: r.sheyko@gmail.com
31
32. Материалы
Материалы для более глубокого изучения:
•
•
•
Статьи Майкла Болтона об эмоциях в качестве оракула:
– http://www.developsense.com/blog/2011/09/the-cooking-detector/
– http://www.developsense.com/blog/2011/10/confusion-as-an-oracle/
Статья Кема Канера о проблеме оракулов: http://kaner.com/?p=190
Другие статьи Майкла Болтона по оракулам:
http://www.developsense.com/blog/category/oracles/
•
Множество материалов Дуга Хоффмана о таксономии оракулов:
http://softwarequalitymethods.com/html/papers.html#taxonomy
•
Статья Элейн Вейюкер о тестировании нетестируемого:
http://www.testingeducation.org/BBST/foundations/Weyuker_ontestingnontestab
le.pdf
Твиттер: @Rsheyko
Прогресс доклада
Блог: 33testers.blogspot.com
E-mail: r.sheyko@gmail.com
32