Оракулы в тестировании

Preview:

DESCRIPTION

Доклад Романа Шейко на конференции SQADays-14, Львов 8-9 ноября 2013

Citation preview

Твиттер: @RsheykoБлог: 33testers.blogspot.comE-mail: r.sheyko@gmail.com

Роман Шейко

Оракулы в тестировании

Твиттер: @RsheykoБлог: 33testers.blogspot.comE-mail: r.sheyko@gmail.com

Прогресс доклада

2

Обо мне

Роман Шейко• В тестировании с 2006 года (Motorola, General

Satellite, Acronis, Luxoft)• Веду блог www.33testers.blogspot.com• Познакомился с оракулами в рамках курса Black Box

Software Testing (Foundation)• Проводил тренинги по их использованию• Изучал оракулы на практике в рамках Weekend

Testing

Твиттер: @RsheykoБлог: 33testers.blogspot.comE-mail: r.sheyko@gmail.com

Прогресс доклада

3

Цели доклада

• Осветить тему оракулов в тестировании

• Показать их использование на примерах

• Мотивировать к дальнейшему изучению и использованию оракулов

Твиттер: @RsheykoБлог: 33testers.blogspot.comE-mail: r.sheyko@gmail.com

Прогресс доклада

4

План доклада

1. Что такое оракулы в тестировании

2. Использование оракулов

3. Подведение итогов

Твиттер: @RsheykoБлог: 33testers.blogspot.comE-mail: r.sheyko@gmail.com

Прогресс доклада

5

1. Что такое оракул?

Оракул – механизм, который помогает нам определить результат выполнения теста.

Оракул

К/Ф «Матрица»Другие определения:• Программа-эталон, с которой мы сравниваем нашу программу• Метод генерации ожидаемого результата• Метод сравнения фактического результата с ожидаемым

Твиттер: @RsheykoБлог: 33testers.blogspot.comE-mail: r.sheyko@gmail.com

Прогресс доклада

6

Пример: тест калькулятора

Проверить сложение

1. Введите 2 в поле «Первое слагаемое»

2. Введите 2 в поле «Второе слагаемое»

3. Нажмите «=».

Оракула в тесте нет. Нужен ли он?

2 2+

=

?

Приложение - калькулятор

* Умеет только складывать

Твиттер: @RsheykoБлог: 33testers.blogspot.comE-mail: r.sheyko@gmail.com

Прогресс доклада

7

Пример: тест калькулятора

Проверить сложение

1. Введите 2 в поле «Первое слагаемое»

2. Введите 2 в поле «Второе слагаемое»

3. Нажмите «=»

4. Проверьте, что сумма равна 4.

Твиттер: @RsheykoБлог: 33testers.blogspot.comE-mail: r.sheyko@gmail.com

Прогресс доклада

8

Пример: тест калькулятора

Проверить сложение

1. Введите 2 в поле «Первое слагаемое»

2. Введите 2 в поле «Второе слагаемое»

3. Нажмите «=»

4. Проверьте, что сумма равна 4

1-й вариант 2-й вариантПроверить сложение

1-3. То же самое.

4. Проверьте, что сумма равна 4

5. Проверьте, что время выполнения операции меньше минуты

+

Оракул не помог обнаружить проблему с быстродействием

Твиттер: @RsheykoБлог: 33testers.blogspot.comE-mail: r.sheyko@gmail.com

Прогресс доклада

9

Пример: тест калькулятора

Проверить сложение

1. Введите 2 в поле «Первое слагаемое»

2. Введите 2 в поле «Второе слагаемое»

3. Нажмите «=»

4. Проверьте, что сумма равна 4

Проверить сложение

1-3. То же самое.

4. Проверьте, что сумма равна 4

5. Проверьте, что время выполнения операции меньше минуты

1-й вариант 2-й вариантПроверить сложение

1-3. То же самое.

4. Проверьте, что сумма равна 4

5. Проверьте, что время выполнения операции меньше минуты

6. Проверьте освобождение памяти

3-й вариант

+(Оракул не помог обнаружить проблему с быстродействием)

(Оракул не помог обнаружить проблему с освобождением памяти)

Твиттер: @RsheykoБлог: 33testers.blogspot.comE-mail: r.sheyko@gmail.com

Прогресс доклада

10

Увеличение оракула

Оракул 3-го вариантатеста

Оракул 2-го вариантатеста

Оракул 1-го вариантатеста

Выводы:

1. Чем достовернее оракул, тем, как правило, он больше и сложнее

2. Автоматизация требует повышенного внимания к оракулам

Твиттер: @RsheykoБлог: 33testers.blogspot.comE-mail: r.sheyko@gmail.com

Прогресс доклада

11

Полные и частичные оракулы

• Полный оракул – механизм, который на 100% достоверно может определить результат теста

• Частичный оракул – механизм, который не может с полной достоверностью определить результат теста, но требует меньше ресурсов для использования

Elaine Weyuker, “On testing nontestable” (1980)

Твиттер: @RsheykoБлог: 33testers.blogspot.comE-mail: r.sheyko@gmail.com

Прогресс доклада

12

Ошибки использования оракулов

1. Промах – когда оракул не помог обнаружить проблему, но она есть

2. Ложная тревога – когда оракул обнаружил проблему, но на самом деле ее нет

Твиттер: @RsheykoБлог: 33testers.blogspot.comE-mail: r.sheyko@gmail.com

Прогресс доклада

13

2. Использование оракулов

Ваши собственные оракулы Оракулы соответствия Джеймса

Баха и Майкла Болтона Оракулы Дуга Хоффмана Эмоции в качестве оракулов …

Твиттер: @RsheykoБлог: 33testers.blogspot.comE-mail: r.sheyko@gmail.com

Прогресс доклада

14

Классификации оракуловДжеймс Бах Майкл Болтон Дуг Хоффман

1. FEW HICCUPPS 2. Таксономия оракулов

Твиттер: @RsheykoБлог: 33testers.blogspot.comE-mail: r.sheyko@gmail.com

Прогресс доклада

15

Классификация Баха и Болтона (FEW HICCUPPS)

• Основана на наблюдениях авторов за тем, как тестировщики обнаруживают проблемы

• Классификацию часто называют оракулами соответствия

• Она также известна как FEW HICCUPPS

Твиттер: @RsheykoБлог: 33testers.blogspot.comE-mail: r.sheyko@gmail.com

Прогресс доклада

16

Классификация Баха и Болтона (Оракулы соответствия)

FEW HICCUPPSОракул Описание

History Соответствие продукта предыдущим версиям

Image Соответствие имиджу компании

Comparable products Соответствие сравнимым продуктам

Claims Соответствие требованиям (обещаниям)

User’s Expectations Соответствие ожиданиям пользователей

Product Соответствие другим частям продукта

Purpose Соответствие назначению продукта

Statutes and standards Соответствие уставам и стандартам

Твиттер: @RsheykoБлог: 33testers.blogspot.comE-mail: r.sheyko@gmail.com

Прогресс доклада

17

Классификация Баха и Болтона (Оракулы соответствия)

FEW HICCUPPSОракул Описание

Familiarity Несоответствие схожим проблемам

Explainability Соответствие поведению, которое можно объяснить

World Соответствие представлениям о мире

FEW HICCUPPS СОМ ПИТОНИУС

Твиттер: @RsheykoБлог: 33testers.blogspot.comE-mail: r.sheyko@gmail.com

Прогресс доклада

18

Пример использования FEW HICCUPPS:Просмотр расписания поездов rzd.ru

Пустые результаты поиска поездов:«Дата отправления находится за пределами периода предварительной продажи»

Памятка оракулов:•F (Схожесть)•E (Объяснимость)•W (Мир)

•H (История)•I (Имидж)•С (Требования)•С (Сравнимые продукты)•U (Ожидания пользователей)•P (Назначение)•P (Продукт)•S (Уставы и стандарты)

Твиттер: @RsheykoБлог: 33testers.blogspot.comE-mail: r.sheyko@gmail.com

Прогресс доклада

19

Пример использования FEW HICCUPPS:Вход на сайт при оформлении заказа

Памятка оракулов:•F (Схожесть)•E (Объяснимость)•W (Мир)

•H (История)•I (Имидж)•С (Требования)•С (Сравнимые продукты)•U (Ожидания пользователей)•P (Назначение)•P (Продукт)•S (Уставы и стандарты)

1. После регистрации происходит переход на начальную страницу

2. Но после входа под известным пользователем продолжается оформление заказа

Выборпоезда и вагона

Вход на сайт

Оформление заказа

Начальная страница

Поиск рейсов

Активация

Вход под существующим

login

Регистрация

Твиттер: @RsheykoБлог: 33testers.blogspot.comE-mail: r.sheyko@gmail.com

Прогресс доклада

20

Пример использования FEW HICCUPS: О чем мы не поговорили?

Памятка оракулов:•F (Схожесть)•E (Объяснимость)•W (Мир)

•H (История)•I (Имидж)•С (Требования)•С (Сравнимые продукты)•U (Ожидания пользователей)•P (Назначение)•P (Продукт)•S (Уставы и стандарты)

• Мы рассмотрели не все оракулы соответствия на примере

• Попробуйте применить остальные оракулы FEW HICCUPPS в своей работе

Твиттер: @RsheykoБлог: 33testers.blogspot.comE-mail: r.sheyko@gmail.com

Прогресс доклада

21

Классификация Дуга Хоффмана

• Эта классификация оракулов создавалась в основном для автоматизации тестирования

• Ее называют Таксономией оракулов Хоффмана

• Хоффман предположил, что полных оракулов не существует, но в то же время есть множество полезных частичных оракулов

Твиттер: @RsheykoБлог: 33testers.blogspot.comE-mail: r.sheyko@gmail.com

Прогресс доклада

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.comE-mail: r.sheyko@gmail.com

Прогресс доклада

23

Классификация Дуга Хоффмана(Таксономия оракулов)

Оракул Описание

Calculation oracle Оракул вычислений

Inverse oracle Оракул инверсии

Reference program Оракул образцовой программы

И много много других.. См. материалы в конце доклада

Твиттер: @RsheykoБлог: 33testers.blogspot.comE-mail: r.sheyko@gmail.com

Прогресс доклада

24

Пример: разработка автотестов для функции суммирования в таблицах Google Docs

Памятка оракулов:•Оракул ограничений•Оракул регрессии•Оракул самопроверяемых данных•Оракулы моделей (физической, бизнес, статистической, состояний, взаимодействия)•Оракул вычислений•Оракул инверсии•Оракул образцовой программы

Твиттер: @RsheykoБлог: 33testers.blogspot.comE-mail: r.sheyko@gmail.com

Прогресс доклада

25

Пример: разработка автотестов для функции построения диаграмм в таблицах Google

DocsПамятка оракулов:•Оракул ограничений•Оракул регрессии•Оракул самопроверяемых данных•Оракулы моделей (физической, бизнес, статистической, состояний, взаимодействия)•Оракул вычислений•Оракул инверсии•Оракул образцовой программы

Твиттер: @RsheykoБлог: 33testers.blogspot.comE-mail: r.sheyko@gmail.com

Прогресс доклада

26

Пример использования таксономии оракулов: О чем мы не поговорили?

• Мы рассмотрели не все оракулы из таксономии

• Попробуйте остальные оракулы из таксономии оракулов Хоффмана

Памятка оракулов:•Оракул ограничений•Оракул регрессии•Оракул самопроверяемых данных•Оракулы моделей (физической, бизнес, статистической, состояний, взаимодействия)•Оракул вычислений•Оракул инверсии•Оракул образцовой программы

Твиттер: @RsheykoБлог: 33testers.blogspot.comE-mail: r.sheyko@gmail.com

Прогресс доклада

27

Сравнение классификаций

Области применения

Сильные стороны Слабые стороны

FEW HICCUPPS

• Заведение убедительных баг репортов

• Тест дизайн

• Мнемоника• Универсальность

Не совсем подходит для разработки автотестов

Таксономия оракулов

• Тест дизайн• Разработка

автотестов

• Оракулы хорошо программируемы

• Оракулы конкретны

Описание плохо структурировано (ИМХО)

Твиттер: @RsheykoБлог: 33testers.blogspot.comE-mail: r.sheyko@gmail.com

Прогресс доклада

28

Пересечения двух классификаций

Оракулы соответствия:•F (Схожесть)•E (Объяснимость)•W (Мир)•H (История)•I (Имидж)•С (Требования)•С (Сравнимые продукты)•U (Ожидания пользователей)•P (Назначение)•P (Продукт)•S (Уставы и стандарты)

Таксономия Хоффмана:•Оракул ограничений•Оракул регрессии•Оракул самопроверяемых данных•Оракулы моделей (физической, бизнес, статистической, состояний, взаимодействия)•Оракул вычислений•Оракул инверсии•Оракул образцовой программы

Твиттер: @RsheykoБлог: 33testers.blogspot.comE-mail: r.sheyko@gmail.com

Прогресс доклада

29

Другие идеи использования оракулов

• Эмоции могут быть оракулом для тестировщика (Майкл Болтон)

• Эмоции для тестировщика – как датчик дыма, который сигнализирует о том, что есть проблема

Твиттер: @RsheykoБлог: 33testers.blogspot.comE-mail: r.sheyko@gmail.com

Прогресс доклада

30

3. Summary

1. Оракул – механизм, который помогает нам определять результат теста

2. 2 наиболее популярные классификации оракулов – оракулы соответсвия (FEW HICCUPPS) и таксономия оракулов Хоффмана

3. Обе классификации помогают нам обнаруживать ошибки и разрабатывать тесты

4. FEW HICCUPPS успешно применяется для заведения убедительных баг репортов

5. Таксономия оракулов Хоффмана хорошо подходит для автоматизации

6. Существует множество идей использования оракулов в тестировании. Например, в качестве оракула тестировщик может использовать свои эмоции

Твиттер: @RsheykoБлог: 33testers.blogspot.comE-mail: r.sheyko@gmail.com

Прогресс доклада

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-inference-orac

le/

• Cтатья Дуга Хоффмана об оракулах-эвристиках: http://www.softwarequalitymethods.com/Papers/STQE%20Heuristic.pdf

Твиттер: @RsheykoБлог: 33testers.blogspot.comE-mail: r.sheyko@gmail.com

Прогресс доклада

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_ontestingnontestable.pdf

Твиттер: @RsheykoБлог: 33testers.blogspot.comE-mail: r.sheyko@gmail.com

Прогресс доклада

33

Вопросы?

Recommended