Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Domain-тестирование
С чего все началось




                      2
Что такое Domain-тестирование?




                                 3
Введем определения

Domain (англ., мат.) – область определения

Domain-тестирование – метод
тестирования, в основе которог...
Синхронизируем словари:
Рассмотрим P = f (A, B), где
P – некая программа, которая
f (A, B) – является функцией
A, B – двух...
Какие задачи решает DT?
1) разбиение областей значений на
подобласти

2) выбор конкретных значений из
подобластей

3) соче...
Зачем нужно..

 разбиение областей
 значений на подобласти –

 – невозможно протестировать на всех
 возможных значениях, к...
Зачем нужен..


 выбор конкретных
 значений из подобластей –

  – для минимизации риска ошибок, связанных
 с неверным выде...
Зачем нужно..
сочетание выбранных значений –




– для увеличения области покрытия, и
обнаружения дефектов, которые завися...
Задача №1:
Разбиение на подобласти




                          10
Определения
Множество – набор элементов,
объединенных некоторым общим
признаком.

Класс эквивалентности – множество, все
э...
С чего начать выделение КЭ?
• Требования есть всегда –
  формализованные или нет

• Из требований можно определить
  харак...
Пример




         13
Пример

"Логин должен состоять из латинских
символов, цифр, одинарного дефиса или
точки, начинаться с буквы и заканчиватьс...
Пример
Характеристики для параметра “логин”

а) длина: не более 30 символов
б) первый символ: обязательно буква
в) последн...
Эвристические правила для
           выделения КЭ
1) Если характеристика определена
   диапазоном значений, то для нее
   ...
Пример
длина: не более 30 символов
Классы эквивалентности:
• (- ∞, 0+,
• [1, 30],
• *31, + ∞)

              1            ...
Эвристические правила для
           выделения КЭ
2) Если характеристика определена набором
  валидных (неупорядоченных) д...
Пример
   содержащиеся символы: латинские
  символы, цифры, одинарный дефис, точка

  Классы эквивалентности:
• валидные с...
Эвристические правила для
         выделения КЭ
Если характеристика определяется
условием "must be", то выделяется два
кла...
Пример
первый символ: обязательно буква

Классы эквивалентности:
• {A,..Z,a,..,z};
• !{A,..Z,a..z}




                   ...
Доразбиение классов
 – если полученный класс неоднороден, и
скорее всего имеет внутри себя скрытые
подклассы

Например, ка...
Доразбиение классов
• по очевидным, хотя, возможно
  несущественным различиям элементов
  класса
• по т.н. user profile, т...
Линейные и нелинейные КЭ
• Линейными называют КЭ, которые могут
  быть представлены на числовой прямой,
  или в виде упоря...
Истинные и ложные нелинейные КЭ
• Ложные: КЭ, про которые мы недостаточно
  знаем

• Истинные: КЭ, которые определяются,
 ...
Особенности нелинейных КЭ

- Не имеют граничных значений
- Не имеют элементов повышенного риска




                      ...
Время для холивара и балалаек
А вам есть что сказать про нелинейные
классы эквивалентности?

Истории из жизни приветствуют...
Типичные ошибки
1) Слишком много классов эквивалентности

2) Слишком мало классов эквивалентности

3) Неверно определенные...
Задача №2:
Выбор значений




                 29
«Random Testing»
Случайным образом – выбирается одно
значение из класса наугад.

Тонкий нюанс: использовать ли на всех
пос...
Методы пропорционального
         разбиения
- Что это?
- Логическое продолжение техники
«случайного выбора»

- Зачем это?
...
Методы пропорционального
           разбиения
1. Несколько случайных значений из класса.
   Количество значений определяет...
Методы пропорционального
        разбиения

Особенно хороши для нелинейных
классов эквивалентности –
                 исти...
Risk-based методы

Группа техник тестирования,
фокусирующаяся на выборе значений в
потенциально уязвимых местах.




     ...
Анализ граничных значений

Самая известная и популярная техника:
[min-1, min+1], [max-1, max+1]

Предназначена для нахожде...
Типовые ошибки границ
1.   Ошибка закрытия
2.   Сдвиг границы
3.   Направление границы
4.   Лишняя граница
5.   Пропущенна...
Что еще сказать про граничные
             значения?
Канер просил помнить про:
- числовые границы
- границы множеств
- гра...
Специальные значения

Дополнительные значения, выбираемые
исходя из специфики предметной области




                     ...
Пример
NextDate($some_date); – функция, которая
возвращает дату следующего дня.

Что здесь граничные значения, а что специ...
Специальные значения для КЭ
- исключения, дополнительные условные
  операторы (дополнительные пути)

- вырожденные КЭ из о...
Robustness Testing
Анализ границ выходных значений.

Пример: c=a/b;
где a, b, c – вещественные числа типа float.
а= max fl...
Steeplechase Testing

Еще одна разновидность работы с
граничными значениями:

кроме границ, накладываемых бизнес-
требован...
Worse-Case Testing
Сочетание невалидных граничных
значений нескольких переменных

Если P=f(A,B,C), то:
(min-1, min-1, min-...
Задача №3:
Сочетание значений




                     44
Определения
Single-mode дефект – дефект, вызываемый
значением/значениями одного параметра

Double-mode дефект – дефект,
вы...
Equivalence class testing
   Неожиданно оказалось, что это целых
   четыре техники:

- Weak Normal Equivalence Class Testi...
Для иллюстрации
Пусть P = f (A, B, C).

A = {a1, a2, a3},
B = {b1, b2, b3, b4},
C = {c1, c2}


                         47
Equivalence Class Testing

Weak/Strong – single-/multi-mode дефекты

Normal/Robust – валидные/все значения




           ...
Weak Normal ECT
    (a1, ∀, ∀),       A = {a1, a2, a3},
    (a3, ∀, ∀)        B = {b1, b2, b3, b4},
+                     ...
Strong Normal ECT
(a1, b2, c1),       A = {a1, a2, a3},
(a1, b3, c1),       B = {b1, b2, b3, b4},
(a3, b2, c1),       C = ...
Weak Robust ECT
    (a1, ∀, ∀),            A = {a1, a2, a3},
    (a2, ∀, ∀),            B = {b1, b2, b3, b4},
    (a3, ∀, ...
Strong Robust ECT
(a1, b1, c1),       A = {a1, a2, a3},
(a1, b1, c2),       B = {b1, b2, b3, b4},
(a1, b2, c1),       C = ...
Минусы ECT
• чем больше параметров,
• чем больше классов для каждого из них
  выделено,
• чем больше значений выбрано из к...
Первая попытка избежать
    комбинаторного взрыва

Сочетать между собой только параметры
одной функции:

- используя здрав...
Input-Output Analysis
  Пусть есть P (A, B, C) , где
  A = {a1, a2, a3},
  B = {b1, b2, b3, b4},
  C = {c1, c2}
  и какие-...
Input-Output Analysis
Предположим, что заглянув
в черный ящик мы узнали, что:

  Y = f (A, C)
  Z = f (B)




            ...
Input-Output Analysis
Для Y нужны:
(a1, ∀, c1)
(a1, ∀, c2)
(a2, ∀, c1)
(a2, ∀, c2)
(a3, ∀, c1)
(a3, ∀, c2)

              ...
Input-Output Analysis
Для Z нужны:

(∀, b1, ∀)
(∀, b2, ∀)
(∀, b3, ∀)
(∀, b4, ∀)



                              58
Input-Output Analysis
Склеим два набора тестов:
   (a1, b1, c1)
   (a1, b2, c2)
   (a2, b3, c1)
   (a2, b4, c2)
   (a3, b1...
Черный ящик такой черный

В: Если в ящик заглянуть невозможно?

О: Используйте автотесты не по
назначению




            ...
План спасения
- Автотесты + перебор всех возможных
входных значений

- Выходные значения: изменились или
нет?
..
Профит?

...
Профит и минусы
Профит: резко сокращаем количество
тестов при сохранении покрытия

Минусы: часто мы выделяем функции не
за...
Вторая попытка избежать
    комбинаторного взрыва

Тестов по-прежнему слишком много.

Выход: отказаться от части тестов, е...
Pairwise
Pairwise – не волшебный способ сократить
количество тестов магическим образом.

Это следующий шаг сокращения
коли...
Определение
Pairwise – техника тестирования, при
которой каждое значение каждого
параметра сочетается с каждым
значением к...
Пример single-mode покрытия
                 А= ,a1, a2, a3}
                 B= {b1, b2, b3, b4}
Всего :          C= {c1,...
Пример double-mode покрытия
«Все пары»:
a1 вместе с b1, b2, b3, b4, c1, c2
a2 вместе с b1, b2, b3, b4, c1, c2
a3 вместе с ...
Получается что-то вроде
(a3, b1, c1)    (a1, b4, c1)
(a1, b3, c2)    (a2, b4, c2)
(a2, b3, c1)    (a2, b1, c2)
(a1, b1, c2...
Плюсы Pairwise
  Чем больше параметров – тем выгоднее
  способ.

  Известный пример:
• система из 75 бинарных значений
• п...
Минусы Pairwise
- Много тестов в одном наборе данных

- Multi-mode дефекты при использовании
  этого способа могут быть об...
Если double-mode дефектов
            недостаточно
- сочетать с другими методиками

- расширять тестовое покрытие на multi...
Время для вопросов, замечаний
        и помидоров



Марина Широчкина, pancakyes@ya.ru
                                   ...
Upcoming SlideShare
Loading in …5
×

Domain-тестирование

28,184 views

Published on

Domain-тестирование – формальное название методики тестирования, за которым скрывается банальная работа с классами эквивалентности. Впрочем, не такая уж и банальная. Даже в популярной литературе по тестированию часто упоминают только о существовании классов эквивалентности и о том, что с их граничными значениями работать очень полезно.

Мы знакомимся с основами этой методики, когда делаем первые шаги в тестировании, и больше никогда о ней не задумываемся, наивно считая, что она попала в нашу зону неосознанной компетентности и мы всегда используем ее правильно. А так ли это?

Published in: Technology
  • Be the first to comment

Domain-тестирование

  1. 1. Domain-тестирование
  2. 2. С чего все началось 2
  3. 3. Что такое Domain-тестирование? 3
  4. 4. Введем определения Domain (англ., мат.) – область определения Domain-тестирование – метод тестирования, в основе которого лежит работа с областями определений. 4
  5. 5. Синхронизируем словари: Рассмотрим P = f (A, B), где P – некая программа, которая f (A, B) – является функцией A, B – двух параметров A={a1, .., an} и B={b1, .., bm} – области всех возможных значений (валидных и нет) a1, a2,.., b1, b2 .. – экземпляры (значения) класса 5
  6. 6. Какие задачи решает DT? 1) разбиение областей значений на подобласти 2) выбор конкретных значений из подобластей 3) сочетание выбранных значений разных параметров 6
  7. 7. Зачем нужно.. разбиение областей значений на подобласти – – невозможно протестировать на всех возможных значениях, конфигурациях и условиях 7
  8. 8. Зачем нужен.. выбор конкретных значений из подобластей – – для минимизации риска ошибок, связанных с неверным выделением подобластей 8
  9. 9. Зачем нужно.. сочетание выбранных значений – – для увеличения области покрытия, и обнаружения дефектов, которые зависят от взаимодействия двух и более параметров 9
  10. 10. Задача №1: Разбиение на подобласти 10
  11. 11. Определения Множество – набор элементов, объединенных некоторым общим признаком. Класс эквивалентности – множество, все элементы которого программа обрабатывает эквивалентно (исполняясь по одному пути). 11
  12. 12. С чего начать выделение КЭ? • Требования есть всегда – формализованные или нет • Из требований можно определить характеристики параметра • Для каждой характеристики выделяются классы эквивалентности 12
  13. 13. Пример 13
  14. 14. Пример "Логин должен состоять из латинских символов, цифр, одинарного дефиса или точки, начинаться с буквы и заканчиваться буквой или цифрой и содержать не более 30 символов" 14
  15. 15. Пример Характеристики для параметра “логин” а) длина: не более 30 символов б) первый символ: обязательно буква в) последний символ: буква или цифра г) содержащиеся символы: латинские символы, цифры, одинарный дефис, точка. 15
  16. 16. Эвристические правила для выделения КЭ 1) Если характеристика определена диапазоном значений, то для нее выделяется три класса эквивалентности: • сам диапазон • значения, лежащие слева от него • значения, лежащие справа от него 16
  17. 17. Пример длина: не более 30 символов Классы эквивалентности: • (- ∞, 0+, • [1, 30], • *31, + ∞) 1 30 17
  18. 18. Эвристические правила для выделения КЭ 2) Если характеристика определена набором валидных (неупорядоченных) данных, то для нее выделяют два класса: • первый, с набором валидных данных, • второй, с набором невалидных. 18
  19. 19. Пример содержащиеся символы: латинские символы, цифры, одинарный дефис, точка Классы эквивалентности: • валидные символы = ,a,..z,A..Z,0,..9,-,.} • невалидные символы = !,a,..z,A..Z,0,..9,-,.} – т.е. все остальные, кроме валидных 19
  20. 20. Эвристические правила для выделения КЭ Если характеристика определяется условием "must be", то выделяется два класса эквивалентности: • первый, выполняющий условие, • второй – нет. 20
  21. 21. Пример первый символ: обязательно буква Классы эквивалентности: • {A,..Z,a,..,z}; • !{A,..Z,a..z} 21
  22. 22. Доразбиение классов – если полученный класс неоднороден, и скорее всего имеет внутри себя скрытые подклассы Например, как: !{A, .. Z, a,..,z} 22
  23. 23. Доразбиение классов • по очевидным, хотя, возможно несущественным различиям элементов класса • по т.н. user profile, т. е. данным, которые чаще всего вводит пользователь вашей системы • произвольно разделив класс на подклассы равного размера 23
  24. 24. Линейные и нелинейные КЭ • Линейными называют КЭ, которые могут быть представлены на числовой прямой, или в виде упорядоченных множеств. • Нелинейными — все остальные. 24
  25. 25. Истинные и ложные нелинейные КЭ • Ложные: КЭ, про которые мы недостаточно знаем • Истинные: КЭ, которые определяются, например, словарем значений, и представляют собой класс вырожденных подклассов 25
  26. 26. Особенности нелинейных КЭ - Не имеют граничных значений - Не имеют элементов повышенного риска 26
  27. 27. Время для холивара и балалаек А вам есть что сказать про нелинейные классы эквивалентности? Истории из жизни приветствуются особо. 27
  28. 28. Типичные ошибки 1) Слишком много классов эквивалентности 2) Слишком мало классов эквивалентности 3) Неверно определенные классы эквивалентности 28
  29. 29. Задача №2: Выбор значений 29
  30. 30. «Random Testing» Случайным образом – выбирается одно значение из класса наугад. Тонкий нюанс: использовать ли на всех последующих тестах одно и то же значение? 30
  31. 31. Методы пропорционального разбиения - Что это? - Логическое продолжение техники «случайного выбора» - Зачем это? - Уменьшить риск неправильного определения КЭ 31
  32. 32. Методы пропорционального разбиения 1. Несколько случайных значений из класса. Количество значений определяется стоимостью дефекта. 2. Классы разбиваются на подклассы равного размера. Из каждого выбирается по одному значению 3. Выбирается некое число, определяющее пропорцию количества выбранных значений к размеру области. 32
  33. 33. Методы пропорционального разбиения Особенно хороши для нелинейных классов эквивалентности – истинных и ложных. 33
  34. 34. Risk-based методы Группа техник тестирования, фокусирующаяся на выборе значений в потенциально уязвимых местах. 34
  35. 35. Анализ граничных значений Самая известная и популярная техника: [min-1, min+1], [max-1, max+1] Предназначена для нахождения ошибок границ. 35
  36. 36. Типовые ошибки границ 1. Ошибка закрытия 2. Сдвиг границы 3. Направление границы 4. Лишняя граница 5. Пропущенная граница 36
  37. 37. Что еще сказать про граничные значения? Канер просил помнить про: - числовые границы - границы множеств - границы циклов - границы структур данных - границы пространства (многомерные объекты) - границы времени - границы конфигураций 37
  38. 38. Специальные значения Дополнительные значения, выбираемые исходя из специфики предметной области 38
  39. 39. Пример NextDate($some_date); – функция, которая возвращает дату следующего дня. Что здесь граничные значения, а что специальные? - конец короткого месяца, - конец длинного месяца, - конец года, - 28 февраля високосного/обычного года, - 29 февраля високосного/обычного года, - 31.12.1969 39
  40. 40. Специальные значения для КЭ - исключения, дополнительные условные операторы (дополнительные пути) - вырожденные КЭ из одного элемента внутри основного класса 40
  41. 41. Robustness Testing Анализ границ выходных значений. Пример: c=a/b; где a, b, c – вещественные числа типа float. а= max float, b= 0.1 c= (max float) / 0.1 = 10 * (max float) - потенциальный дефект 41
  42. 42. Steeplechase Testing Еще одна разновидность работы с граничными значениями: кроме границ, накладываемых бизнес- требованиями, проверяем технические границы 42
  43. 43. Worse-Case Testing Сочетание невалидных граничных значений нескольких переменных Если P=f(A,B,C), то: (min-1, min-1, min-1), (min-1, min-1, max+1), (min-1, max+1, max+1), и т д 43
  44. 44. Задача №3: Сочетание значений 44
  45. 45. Определения Single-mode дефект – дефект, вызываемый значением/значениями одного параметра Double-mode дефект – дефект, вызываемый значениями двух параметров Multi-mode дефект – дефект, вызываемый значениями трех и более параметров 45
  46. 46. Equivalence class testing Неожиданно оказалось, что это целых четыре техники: - Weak Normal Equivalence Class Testing - Strong Normal Equivalence Class Testing - Weak Robust Equivalence Class Testing - Strong Robust Equivalence Class Testing 46
  47. 47. Для иллюстрации Пусть P = f (A, B, C). A = {a1, a2, a3}, B = {b1, b2, b3, b4}, C = {c1, c2} 47
  48. 48. Equivalence Class Testing Weak/Strong – single-/multi-mode дефекты Normal/Robust – валидные/все значения 48
  49. 49. Weak Normal ECT (a1, ∀, ∀), A = {a1, a2, a3}, (a3, ∀, ∀) B = {b1, b2, b3, b4}, + C = {c1, c2} (∀, b2, ∀) (∀, b3, ∀) + (a1, b2, c1) (∀, ∀, c1) (a3, b3, c1) 49
  50. 50. Strong Normal ECT (a1, b2, c1), A = {a1, a2, a3}, (a1, b3, c1), B = {b1, b2, b3, b4}, (a3, b2, c1), C = {c1, c2} (a3, b3, c1), – полный перебор всех сочетаний валидных значений 50
  51. 51. Weak Robust ECT (a1, ∀, ∀), A = {a1, a2, a3}, (a2, ∀, ∀), B = {b1, b2, b3, b4}, (a3, ∀, ∀) C = {c1, c2} + (∀, b1, ∀) (∀, b2, ∀) (∀, b3, ∀) (∀, b4, ∀) (a1, b1, c1) + (a2, b2, c2) (∀, ∀, c1) (a3, b3, c1) (∀, ∀, c2) (a1, b4, c2) 51
  52. 52. Strong Robust ECT (a1, b1, c1), A = {a1, a2, a3}, (a1, b1, c2), B = {b1, b2, b3, b4}, (a1, b2, c1), C = {c1, c2} (a1, b2, c2), (a1, b3, c1), (a1, b3, c2), (a1, b4, c1), (a1, b4, c2), итд 52
  53. 53. Минусы ECT • чем больше параметров, • чем больше классов для каждого из них выделено, • чем больше значений выбрано из каждого класса – тем быстрее мы получим слишком большое количество тестов. 53
  54. 54. Первая попытка избежать комбинаторного взрыва Сочетать между собой только параметры одной функции: - используя здравый смысл, - заглянув в черный ящик 54
  55. 55. Input-Output Analysis Пусть есть P (A, B, C) , где A = {a1, a2, a3}, B = {b1, b2, b3, b4}, C = {c1, c2} и какие-то выходные значения Y и Z Полный перебор даст нам 3*4*2 = 24 теста 55
  56. 56. Input-Output Analysis Предположим, что заглянув в черный ящик мы узнали, что: Y = f (A, C) Z = f (B) 56
  57. 57. Input-Output Analysis Для Y нужны: (a1, ∀, c1) (a1, ∀, c2) (a2, ∀, c1) (a2, ∀, c2) (a3, ∀, c1) (a3, ∀, c2) 57
  58. 58. Input-Output Analysis Для Z нужны: (∀, b1, ∀) (∀, b2, ∀) (∀, b3, ∀) (∀, b4, ∀) 58
  59. 59. Input-Output Analysis Склеим два набора тестов: (a1, b1, c1) (a1, b2, c2) (a2, b3, c1) (a2, b4, c2) (a3, b1, c1) (a3, b2, c2) Профит? 6 тестов вместо 24 без потери покрытия 59
  60. 60. Черный ящик такой черный В: Если в ящик заглянуть невозможно? О: Используйте автотесты не по назначению 60
  61. 61. План спасения - Автотесты + перебор всех возможных входных значений - Выходные значения: изменились или нет? .. Профит? 61
  62. 62. Профит и минусы Профит: резко сокращаем количество тестов при сохранении покрытия Минусы: часто мы выделяем функции не задумываясь, т. е. мы сталкиваемся с проблемой комбинаторного взрыва, уже применив эту технику 62
  63. 63. Вторая попытка избежать комбинаторного взрыва Тестов по-прежнему слишком много. Выход: отказаться от части тестов, если это возможно 63
  64. 64. Pairwise Pairwise – не волшебный способ сократить количество тестов магическим образом. Это следующий шаг сокращения количества тестов путем уменьшения покрытия до single- и double-mode дефектов. 64
  65. 65. Определение Pairwise – техника тестирования, при которой каждое значение каждого параметра сочетается с каждым значением каждого другого. Т.е. тестирование всех пар значений (покрытие double-mode дефектов) 65
  66. 66. Пример single-mode покрытия А= ,a1, a2, a3} B= {b1, b2, b3, b4} Всего : C= {c1, c2} {a1, b1, c1} {a2, b2, c2} {a3, b3, c1} {a1, b4, c2} 66
  67. 67. Пример double-mode покрытия «Все пары»: a1 вместе с b1, b2, b3, b4, c1, c2 a2 вместе с b1, b2, b3, b4, c1, c2 a3 вместе с b1, b2, b3, b4, c1, c2 b1 вместе с c1, c2 b2 вместе с с1, с2 b3 вместе с с1, с2 b4 вместе с с1, с2 67
  68. 68. Получается что-то вроде (a3, b1, c1) (a1, b4, c1) (a1, b3, c2) (a2, b4, c2) (a2, b3, c1) (a2, b1, c2) (a1, b1, c2) (a3, b2, c2) (a2, b2, c1) (a3, b4, c1) (a3, b3, c2) (a1, b2, c1) 68
  69. 69. Плюсы Pairwise Чем больше параметров – тем выгоднее способ. Известный пример: • система из 75 бинарных значений • полное количество тестов - 2^75 • 28 тестов для всех пар 69
  70. 70. Минусы Pairwise - Много тестов в одном наборе данных - Multi-mode дефекты при использовании этого способа могут быть обнаружены только случайно - Нетривиальный способ проектирования тестов 70
  71. 71. Если double-mode дефектов недостаточно - сочетать с другими методиками - расширять тестовое покрытие на multi- mode дефекты, используя метод ортогональных массивов 71
  72. 72. Время для вопросов, замечаний и помидоров Марина Широчкина, pancakyes@ya.ru 72

×