SlideShare une entreprise Scribd logo
1  sur  72
Télécharger pour lire hors ligne
Domain-тестирование
С чего все началось




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




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

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

Domain-тестирование – метод
тестирования, в основе которого лежит
работа с областями определений.



                                             4
Синхронизируем словари:
Рассмотрим P = f (A, B), где
P – некая программа, которая
f (A, B) – является функцией
A, B – двух параметров
A={a1, .., an} и B={b1, .., bm} – области всех
возможных значений (валидных и нет)
a1, a2,.., b1, b2 .. – экземпляры (значения)
класса
                                                 5
Какие задачи решает DT?
1) разбиение областей значений на
подобласти

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

3) сочетание выбранных значений разных
параметров
                                         6
Зачем нужно..

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

 – невозможно протестировать на всех
 возможных значениях, конфигурациях и
 условиях


                                        7
Зачем нужен..


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

  – для минимизации риска ошибок, связанных
 с неверным выделением подобластей


                                              8
Зачем нужно..
сочетание выбранных значений –




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


                                           9
Задача №1:
Разбиение на подобласти




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

Класс эквивалентности – множество, все
элементы которого программа
обрабатывает эквивалентно (исполняясь по
одному пути).

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

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

• Для каждой характеристики выделяются
  классы эквивалентности
                                         12
Пример




         13
Пример

"Логин должен состоять из латинских
символов, цифр, одинарного дефиса или
точки, начинаться с буквы и заканчиваться
буквой или цифрой и содержать не более
30 символов"



                                            14
Пример
Характеристики для параметра “логин”

а) длина: не более 30 символов
б) первый символ: обязательно буква
в) последний символ: буква или цифра
г) содержащиеся символы: латинские
   символы, цифры, одинарный дефис, точка.

                                             15
Эвристические правила для
           выделения КЭ
1) Если характеристика определена
   диапазоном значений, то для нее
   выделяется три класса эквивалентности:
•    сам диапазон
•    значения, лежащие слева от него
•    значения, лежащие справа от него



                                            16
Пример
длина: не более 30 символов
Классы эквивалентности:
• (- ∞, 0+,
• [1, 30],
• *31, + ∞)

              1            30


                                17
Эвристические правила для
           выделения КЭ
2) Если характеристика определена набором
  валидных (неупорядоченных) данных, то
  для нее выделяют два класса:

•   первый, с набором валидных данных,
•   второй, с набором невалидных.



                                            18
Пример
   содержащиеся символы: латинские
  символы, цифры, одинарный дефис, точка

  Классы эквивалентности:
• валидные символы = ,a,..z,A..Z,0,..9,-,.}
• невалидные символы = !,a,..z,A..Z,0,..9,-,.} –
  т.е. все остальные, кроме валидных


                                                   19
Эвристические правила для
         выделения КЭ
Если характеристика определяется
условием "must be", то выделяется два
класса эквивалентности:

• первый, выполняющий условие,
• второй – нет.




                                        20
Пример
первый символ: обязательно буква

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




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

Например, как:
!{A, .. Z, a,..,z}



                                          22
Доразбиение классов
• по очевидным, хотя, возможно
  несущественным различиям элементов
  класса
• по т.н. user profile, т. е. данным, которые
  чаще всего вводит пользователь вашей
  системы
• произвольно разделив класс на подклассы
  равного размера

                                                23
Линейные и нелинейные КЭ
• Линейными называют КЭ, которые могут
  быть представлены на числовой прямой,
  или в виде упорядоченных множеств.

• Нелинейными — все остальные.




                                          24
Истинные и ложные нелинейные КЭ
• Ложные: КЭ, про которые мы недостаточно
  знаем

• Истинные: КЭ, которые определяются,
  например, словарем значений, и
  представляют собой класс вырожденных
  подклассов


                                         25
Особенности нелинейных КЭ

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




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

Истории из жизни приветствуются особо.




                                         27
Типичные ошибки
1) Слишком много классов эквивалентности

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

3) Неверно определенные классы
  эквивалентности



                                           28
Задача №2:
Выбор значений




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

Тонкий нюанс: использовать ли на всех
последующих тестах одно и то же
значение?



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

- Зачем это?
- Уменьшить риск неправильного
определения КЭ


                                   31
Методы пропорционального
           разбиения
1. Несколько случайных значений из класса.
   Количество значений определяется
   стоимостью дефекта.
2. Классы разбиваются на подклассы равного
   размера. Из каждого выбирается по
   одному значению
3. Выбирается некое число, определяющее
   пропорцию количества выбранных
   значений к размеру области.

                                         32
Методы пропорционального
        разбиения

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




                                      33
Risk-based методы

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




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

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

Предназначена для нахождения ошибок
границ.



                                        35
Типовые ошибки границ
1.   Ошибка закрытия
2.   Сдвиг границы
3.   Направление границы
4.   Лишняя граница
5.   Пропущенная граница




                               36
Что еще сказать про граничные
             значения?
Канер просил помнить про:
- числовые границы
- границы множеств
- границы циклов
- границы структур данных
- границы пространства (многомерные
   объекты)
- границы времени
- границы конфигураций
                                      37
Специальные значения

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




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

Что здесь граничные значения, а что специальные?
- конец короткого месяца,
- конец длинного месяца,
- конец года,
- 28 февраля високосного/обычного года,
- 29 февраля високосного/обычного года,
- 31.12.1969
                                               39
Специальные значения для КЭ
- исключения, дополнительные условные
  операторы (дополнительные пути)

- вырожденные КЭ из одного элемента
  внутри основного класса




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

Пример: c=a/b;
где a, b, c – вещественные числа типа float.
а= max float, b= 0.1
c= (max float) / 0.1 = 10 * (max float) -
   потенциальный дефект

                                               41
Steeplechase Testing

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

кроме границ, накладываемых бизнес-
требованиями, проверяем технические
границы


                                      42
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
Задача №3:
Сочетание значений




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

Double-mode дефект – дефект,
вызываемый значениями двух параметров

Multi-mode дефект – дефект, вызываемый
значениями трех и более параметров
                                      45
Equivalence class testing
   Неожиданно оказалось, что это целых
   четыре техники:

- Weak Normal Equivalence Class Testing
- Strong Normal Equivalence Class Testing
- Weak Robust Equivalence Class Testing
- Strong Robust Equivalence Class Testing

                                            46
Для иллюстрации
Пусть 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 – валидные/все значения




                                           48
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
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
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
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
Минусы ECT
• чем больше параметров,
• чем больше классов для каждого из них
  выделено,
• чем больше значений выбрано из каждого
  класса –

  тем быстрее мы получим слишком
  большое количество тестов.
                                       53
Первая попытка избежать
    комбинаторного взрыва

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

- используя здравый смысл,
- заглянув в черный ящик



                                        54
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
Input-Output Analysis
Предположим, что заглянув
в черный ящик мы узнали, что:

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




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

                             57
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, c1)
   (a3, b2, c2)
Профит? 6 тестов вместо 24 без потери покрытия

                                             59
Черный ящик такой черный

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

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




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

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


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

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


                                       62
Вторая попытка избежать
    комбинаторного взрыва

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

Выход: отказаться от части тестов, если это
возможно




                                          63
Pairwise
Pairwise – не волшебный способ сократить
количество тестов магическим образом.

Это следующий шаг сокращения
количества тестов путем уменьшения
покрытия до single- и double-mode
дефектов.


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

Т.е. тестирование всех пар значений
(покрытие double-mode дефектов)


                                       65
Пример 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
Пример 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
Получается что-то вроде
(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
Плюсы Pairwise
  Чем больше параметров – тем выгоднее
  способ.

  Известный пример:
• система из 75 бинарных значений
• полное количество тестов - 2^75
• 28 тестов для всех пар

                                         69
Минусы Pairwise
- Много тестов в одном наборе данных

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

- Нетривиальный способ проектирования
  тестов
                                         70
Если double-mode дефектов
            недостаточно
- сочетать с другими методиками

- расширять тестовое покрытие на multi-
  mode дефекты, используя метод
  ортогональных массивов




                                          71
Время для вопросов, замечаний
        и помидоров



Марина Широчкина, pancakyes@ya.ru
                                    72

Contenu connexe

Tendances

Supervised Unsupervised and Reinforcement Learning
Supervised Unsupervised and Reinforcement Learning Supervised Unsupervised and Reinforcement Learning
Supervised Unsupervised and Reinforcement Learning Aakash Chotrani
 
Unit 1 basic concepts of testing & quality
Unit 1   basic concepts of testing & qualityUnit 1   basic concepts of testing & quality
Unit 1 basic concepts of testing & qualityravikhimani
 
Random Forest Tutorial | Random Forest in R | Machine Learning | Data Science...
Random Forest Tutorial | Random Forest in R | Machine Learning | Data Science...Random Forest Tutorial | Random Forest in R | Machine Learning | Data Science...
Random Forest Tutorial | Random Forest in R | Machine Learning | Data Science...Edureka!
 
Parker Hannifin - Aerospace Group First Airbus A350 Delivery to Finnair
Parker Hannifin - Aerospace Group First Airbus A350  Delivery to FinnairParker Hannifin - Aerospace Group First Airbus A350  Delivery to Finnair
Parker Hannifin - Aerospace Group First Airbus A350 Delivery to FinnairParker Hannifin Corporation
 
FUNCTION APPROXIMATION
FUNCTION APPROXIMATIONFUNCTION APPROXIMATION
FUNCTION APPROXIMATIONankita pandey
 
Software testing
Software testingSoftware testing
Software testingmkn3009
 
Structural testing
Structural testingStructural testing
Structural testingSlideshare
 
Difference between functional testing and non functional testing
Difference between functional testing and non functional testingDifference between functional testing and non functional testing
Difference between functional testing and non functional testingpooja deshmukh
 
Image Classification And Support Vector Machine
Image Classification And Support Vector MachineImage Classification And Support Vector Machine
Image Classification And Support Vector MachineShao-Chuan Wang
 
Software testing
Software testingSoftware testing
Software testingSimran Kaur
 
05 Classification And Prediction
05   Classification And Prediction05   Classification And Prediction
05 Classification And PredictionAchmad Solichin
 
software testing
 software testing software testing
software testingSara shall
 
Test automation framework
Test automation frameworkTest automation framework
Test automation frameworkQACampus
 

Tendances (20)

HP ALM QC
HP ALM QCHP ALM QC
HP ALM QC
 
Supervised Unsupervised and Reinforcement Learning
Supervised Unsupervised and Reinforcement Learning Supervised Unsupervised and Reinforcement Learning
Supervised Unsupervised and Reinforcement Learning
 
Unit 1 basic concepts of testing & quality
Unit 1   basic concepts of testing & qualityUnit 1   basic concepts of testing & quality
Unit 1 basic concepts of testing & quality
 
Random Forest Tutorial | Random Forest in R | Machine Learning | Data Science...
Random Forest Tutorial | Random Forest in R | Machine Learning | Data Science...Random Forest Tutorial | Random Forest in R | Machine Learning | Data Science...
Random Forest Tutorial | Random Forest in R | Machine Learning | Data Science...
 
Parker Hannifin - Aerospace Group First Airbus A350 Delivery to Finnair
Parker Hannifin - Aerospace Group First Airbus A350  Delivery to FinnairParker Hannifin - Aerospace Group First Airbus A350  Delivery to Finnair
Parker Hannifin - Aerospace Group First Airbus A350 Delivery to Finnair
 
Types of testing
Types of testingTypes of testing
Types of testing
 
FUNCTION APPROXIMATION
FUNCTION APPROXIMATIONFUNCTION APPROXIMATION
FUNCTION APPROXIMATION
 
50 Soruda Yazılım Testi
50 Soruda Yazılım Testi50 Soruda Yazılım Testi
50 Soruda Yazılım Testi
 
Software testing
Software testingSoftware testing
Software testing
 
Structural testing
Structural testingStructural testing
Structural testing
 
Difference between functional testing and non functional testing
Difference between functional testing and non functional testingDifference between functional testing and non functional testing
Difference between functional testing and non functional testing
 
Software testing
Software testingSoftware testing
Software testing
 
Confusion Matrix Explained
Confusion Matrix ExplainedConfusion Matrix Explained
Confusion Matrix Explained
 
Image Classification And Support Vector Machine
Image Classification And Support Vector MachineImage Classification And Support Vector Machine
Image Classification And Support Vector Machine
 
Software testing
Software testingSoftware testing
Software testing
 
Introduction to Software Test Automation
Introduction to Software Test AutomationIntroduction to Software Test Automation
Introduction to Software Test Automation
 
05 Classification And Prediction
05   Classification And Prediction05   Classification And Prediction
05 Classification And Prediction
 
Illumination models
Illumination modelsIllumination models
Illumination models
 
software testing
 software testing software testing
software testing
 
Test automation framework
Test automation frameworkTest automation framework
Test automation framework
 

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

Типы данных
Типы данныхТипы данных
Типы данныхMonsterXX
 
CV2015. Лекция 4. Классификация изображений и введение в машинное обучение.
CV2015. Лекция 4. Классификация изображений и введение в машинное обучение.CV2015. Лекция 4. Классификация изображений и введение в машинное обучение.
CV2015. Лекция 4. Классификация изображений и введение в машинное обучение.Anton Konushin
 
Линейные коды
Линейные кодыЛинейные коды
Линейные кодыAlex Dainiak
 
машинное обучение и анализ данных
машинное обучение и анализ данныхмашинное обучение и анализ данных
машинное обучение и анализ данныхYandex
 
Тестирование весна 2013 лекция 2
Тестирование весна 2013 лекция 2Тестирование весна 2013 лекция 2
Тестирование весна 2013 лекция 2Technopark
 
CodeFest 2012. Зинченко Т. — Практики тест-дизайна: разделяй и властвуй!
CodeFest 2012. Зинченко Т. — Практики тест-дизайна: разделяй и властвуй!CodeFest 2012. Зинченко Т. — Практики тест-дизайна: разделяй и властвуй!
CodeFest 2012. Зинченко Т. — Практики тест-дизайна: разделяй и властвуй!CodeFest
 
Лекция 3 Сегментация
Лекция 3 СегментацияЛекция 3 Сегментация
Лекция 3 СегментацияVictor Kulikov
 
Тестирование лекция 2 весна 2014
Тестирование лекция 2 весна 2014Тестирование лекция 2 весна 2014
Тестирование лекция 2 весна 2014Technopark
 
QA Fest 2016. Андрей Мясников. Тест-дизайн для чайников
QA Fest 2016. Андрей Мясников. Тест-дизайн для чайниковQA Fest 2016. Андрей Мясников. Тест-дизайн для чайников
QA Fest 2016. Андрей Мясников. Тест-дизайн для чайниковQAFest
 
FaceDetection+GenderRecognition_review
FaceDetection+GenderRecognition_reviewFaceDetection+GenderRecognition_review
FaceDetection+GenderRecognition_reviewKhryashchev
 
CV2011 Lecture 7. Recognition
CV2011 Lecture 7. RecognitionCV2011 Lecture 7. Recognition
CV2011 Lecture 7. RecognitionAnton Konushin
 
Критерии выбора моделей в задачах таксонометрии и прогнозирования
Критерии выбора моделей в задачах таксонометрии и прогнозированияКритерии выбора моделей в задачах таксонометрии и прогнозирования
Критерии выбора моделей в задачах таксонометрии и прогнозированияMaxim Kazantsev
 
Михаил Александров, Индуктивное моделирование
Михаил Александров, Индуктивное моделированиеМихаил Александров, Индуктивное моделирование
Михаил Александров, Индуктивное моделированиеLidia Pivovarova
 
Введение в машинное обучение
Введение в машинное обучениеВведение в машинное обучение
Введение в машинное обучениеGrigory Sapunov
 
!Predictive analytics part_2
!Predictive analytics part_2!Predictive analytics part_2
!Predictive analytics part_2Vladimir Krylov
 
аксиоматический подход в математике матрицы и определители
аксиоматический подход в математике матрицы и определителиаксиоматический подход в математике матрицы и определители
аксиоматический подход в математике матрицы и определителиAnna1978
 
Тестирование осень 2013 лекция 2
Тестирование осень 2013 лекция 2Тестирование осень 2013 лекция 2
Тестирование осень 2013 лекция 2Technopark
 

Similaire à Domain-тестирование (20)

Типы данных
Типы данныхТипы данных
Типы данных
 
CV2015. Лекция 4. Классификация изображений и введение в машинное обучение.
CV2015. Лекция 4. Классификация изображений и введение в машинное обучение.CV2015. Лекция 4. Классификация изображений и введение в машинное обучение.
CV2015. Лекция 4. Классификация изображений и введение в машинное обучение.
 
Линейные коды
Линейные кодыЛинейные коды
Линейные коды
 
Методы автоматической классификации
Методы автоматической классификацииМетоды автоматической классификации
Методы автоматической классификации
 
машинное обучение и анализ данных
машинное обучение и анализ данныхмашинное обучение и анализ данных
машинное обучение и анализ данных
 
Тестирование весна 2013 лекция 2
Тестирование весна 2013 лекция 2Тестирование весна 2013 лекция 2
Тестирование весна 2013 лекция 2
 
CodeFest 2012. Зинченко Т. — Практики тест-дизайна: разделяй и властвуй!
CodeFest 2012. Зинченко Т. — Практики тест-дизайна: разделяй и властвуй!CodeFest 2012. Зинченко Т. — Практики тест-дизайна: разделяй и властвуй!
CodeFest 2012. Зинченко Т. — Практики тест-дизайна: разделяй и властвуй!
 
Лекция 3 Сегментация
Лекция 3 СегментацияЛекция 3 Сегментация
Лекция 3 Сегментация
 
Тестирование лекция 2 весна 2014
Тестирование лекция 2 весна 2014Тестирование лекция 2 весна 2014
Тестирование лекция 2 весна 2014
 
QA Fest 2016. Андрей Мясников. Тест-дизайн для чайников
QA Fest 2016. Андрей Мясников. Тест-дизайн для чайниковQA Fest 2016. Андрей Мясников. Тест-дизайн для чайников
QA Fest 2016. Андрей Мясников. Тест-дизайн для чайников
 
FaceDetection+GenderRecognition_review
FaceDetection+GenderRecognition_reviewFaceDetection+GenderRecognition_review
FaceDetection+GenderRecognition_review
 
CV2011 Lecture 7. Recognition
CV2011 Lecture 7. RecognitionCV2011 Lecture 7. Recognition
CV2011 Lecture 7. Recognition
 
Критерии выбора моделей в задачах таксонометрии и прогнозирования
Критерии выбора моделей в задачах таксонометрии и прогнозированияКритерии выбора моделей в задачах таксонометрии и прогнозирования
Критерии выбора моделей в задачах таксонометрии и прогнозирования
 
Михаил Александров, Индуктивное моделирование
Михаил Александров, Индуктивное моделированиеМихаил Александров, Индуктивное моделирование
Михаил Александров, Индуктивное моделирование
 
Анализ игры "Судоку"
Анализ игры "Судоку"Анализ игры "Судоку"
Анализ игры "Судоку"
 
Лекция 2
Лекция 2Лекция 2
Лекция 2
 
Введение в машинное обучение
Введение в машинное обучениеВведение в машинное обучение
Введение в машинное обучение
 
!Predictive analytics part_2
!Predictive analytics part_2!Predictive analytics part_2
!Predictive analytics part_2
 
аксиоматический подход в математике матрицы и определители
аксиоматический подход в математике матрицы и определителиаксиоматический подход в математике матрицы и определители
аксиоматический подход в математике матрицы и определители
 
Тестирование осень 2013 лекция 2
Тестирование осень 2013 лекция 2Тестирование осень 2013 лекция 2
Тестирование осень 2013 лекция 2
 

Plus de SPB SQA Group

Обсуждаем главы из “97 Things Every Programmer Should Know”
Обсуждаем главы из “97 Things Every Programmer Should Know”Обсуждаем главы из “97 Things Every Programmer Should Know”
Обсуждаем главы из “97 Things Every Programmer Should Know”SPB SQA Group
 
ITGM8. Всеволод Брекелов (Grid Dinamics) Component tests. let's do that!
ITGM8. Всеволод Брекелов (Grid Dinamics) Component tests. let's do that!ITGM8. Всеволод Брекелов (Grid Dinamics) Component tests. let's do that!
ITGM8. Всеволод Брекелов (Grid Dinamics) Component tests. let's do that!SPB SQA Group
 
ITGM8. Илья Коробицын (Grid Dinamics) Автоматизатор, копай глубже, копай шире!
ITGM8. Илья Коробицын (Grid Dinamics) Автоматизатор, копай глубже, копай шире!ITGM8. Илья Коробицын (Grid Dinamics) Автоматизатор, копай глубже, копай шире!
ITGM8. Илья Коробицын (Grid Dinamics) Автоматизатор, копай глубже, копай шире!SPB SQA Group
 
ITGM8. Алексей Лянгузов (Grid Dinamics) Как я ходил в стартап и чем это все з...
ITGM8. Алексей Лянгузов (Grid Dinamics) Как я ходил в стартап и чем это все з...ITGM8. Алексей Лянгузов (Grid Dinamics) Как я ходил в стартап и чем это все з...
ITGM8. Алексей Лянгузов (Grid Dinamics) Как я ходил в стартап и чем это все з...SPB SQA Group
 
ITGM8. Юлия Атлыгина (ALM Works) Инструменты, облегчающее тестирование
ITGM8. Юлия Атлыгина (ALM Works) Инструменты, облегчающее тестированиеITGM8. Юлия Атлыгина (ALM Works) Инструменты, облегчающее тестирование
ITGM8. Юлия Атлыгина (ALM Works) Инструменты, облегчающее тестированиеSPB SQA Group
 
ITGM8. Сергей Атрощенков (Еpam) Buzzword driven development и место тестировщ...
ITGM8. Сергей Атрощенков (Еpam) Buzzword driven development и место тестировщ...ITGM8. Сергей Атрощенков (Еpam) Buzzword driven development и место тестировщ...
ITGM8. Сергей Атрощенков (Еpam) Buzzword driven development и место тестировщ...SPB SQA Group
 
Какая польза от метрик?
Какая польза от метрик?Какая польза от метрик?
Какая польза от метрик?SPB SQA Group
 
Автоматизируем тестирование интерфейса мобильных приложений
Автоматизируем тестирование интерфейса мобильных приложенийАвтоматизируем тестирование интерфейса мобильных приложений
Автоматизируем тестирование интерфейса мобильных приложенийSPB SQA Group
 
"Опыт создания системы управления сборкой и тестированием" (слайдкаст)
"Опыт создания системы управления сборкой и тестированием" (слайдкаст)"Опыт создания системы управления сборкой и тестированием" (слайдкаст)
"Опыт создания системы управления сборкой и тестированием" (слайдкаст)SPB SQA Group
 
"Опыт создания системы управления сборкой и тестированием" (полная)
"Опыт создания системы управления сборкой и тестированием" (полная)"Опыт создания системы управления сборкой и тестированием" (полная)
"Опыт создания системы управления сборкой и тестированием" (полная)SPB SQA Group
 
Нагрузочное тестирование
Нагрузочное тестированиеНагрузочное тестирование
Нагрузочное тестированиеSPB SQA Group
 
Долой отмазки в тестировании!
Долой отмазки в тестировании!Долой отмазки в тестировании!
Долой отмазки в тестировании!SPB SQA Group
 
Вместе весело шагать, или как собрать тестировщиков в своем городе
Вместе весело шагать, или как собрать тестировщиков в своем городеВместе весело шагать, или как собрать тестировщиков в своем городе
Вместе весело шагать, или как собрать тестировщиков в своем городеSPB SQA Group
 
Automating JFC UI application testing with Jemmy
Automating JFC UI application testing with JemmyAutomating JFC UI application testing with Jemmy
Automating JFC UI application testing with JemmySPB SQA Group
 
Оптимизация интерактивного тестирования с использованием метрики Покрытие кода
Оптимизация интерактивного тестирования с использованием метрики Покрытие кодаОптимизация интерактивного тестирования с использованием метрики Покрытие кода
Оптимизация интерактивного тестирования с использованием метрики Покрытие кодаSPB SQA Group
 

Plus de SPB SQA Group (16)

Обсуждаем главы из “97 Things Every Programmer Should Know”
Обсуждаем главы из “97 Things Every Programmer Should Know”Обсуждаем главы из “97 Things Every Programmer Should Know”
Обсуждаем главы из “97 Things Every Programmer Should Know”
 
ITGM8. Всеволод Брекелов (Grid Dinamics) Component tests. let's do that!
ITGM8. Всеволод Брекелов (Grid Dinamics) Component tests. let's do that!ITGM8. Всеволод Брекелов (Grid Dinamics) Component tests. let's do that!
ITGM8. Всеволод Брекелов (Grid Dinamics) Component tests. let's do that!
 
ITGM8. Илья Коробицын (Grid Dinamics) Автоматизатор, копай глубже, копай шире!
ITGM8. Илья Коробицын (Grid Dinamics) Автоматизатор, копай глубже, копай шире!ITGM8. Илья Коробицын (Grid Dinamics) Автоматизатор, копай глубже, копай шире!
ITGM8. Илья Коробицын (Grid Dinamics) Автоматизатор, копай глубже, копай шире!
 
ITGM8. Алексей Лянгузов (Grid Dinamics) Как я ходил в стартап и чем это все з...
ITGM8. Алексей Лянгузов (Grid Dinamics) Как я ходил в стартап и чем это все з...ITGM8. Алексей Лянгузов (Grid Dinamics) Как я ходил в стартап и чем это все з...
ITGM8. Алексей Лянгузов (Grid Dinamics) Как я ходил в стартап и чем это все з...
 
ITGM8. Юлия Атлыгина (ALM Works) Инструменты, облегчающее тестирование
ITGM8. Юлия Атлыгина (ALM Works) Инструменты, облегчающее тестированиеITGM8. Юлия Атлыгина (ALM Works) Инструменты, облегчающее тестирование
ITGM8. Юлия Атлыгина (ALM Works) Инструменты, облегчающее тестирование
 
ITGM8. Сергей Атрощенков (Еpam) Buzzword driven development и место тестировщ...
ITGM8. Сергей Атрощенков (Еpam) Buzzword driven development и место тестировщ...ITGM8. Сергей Атрощенков (Еpam) Buzzword driven development и место тестировщ...
ITGM8. Сергей Атрощенков (Еpam) Buzzword driven development и место тестировщ...
 
Agile testing
Agile testingAgile testing
Agile testing
 
Какая польза от метрик?
Какая польза от метрик?Какая польза от метрик?
Какая польза от метрик?
 
Автоматизируем тестирование интерфейса мобильных приложений
Автоматизируем тестирование интерфейса мобильных приложенийАвтоматизируем тестирование интерфейса мобильных приложений
Автоматизируем тестирование интерфейса мобильных приложений
 
"Опыт создания системы управления сборкой и тестированием" (слайдкаст)
"Опыт создания системы управления сборкой и тестированием" (слайдкаст)"Опыт создания системы управления сборкой и тестированием" (слайдкаст)
"Опыт создания системы управления сборкой и тестированием" (слайдкаст)
 
"Опыт создания системы управления сборкой и тестированием" (полная)
"Опыт создания системы управления сборкой и тестированием" (полная)"Опыт создания системы управления сборкой и тестированием" (полная)
"Опыт создания системы управления сборкой и тестированием" (полная)
 
Нагрузочное тестирование
Нагрузочное тестированиеНагрузочное тестирование
Нагрузочное тестирование
 
Долой отмазки в тестировании!
Долой отмазки в тестировании!Долой отмазки в тестировании!
Долой отмазки в тестировании!
 
Вместе весело шагать, или как собрать тестировщиков в своем городе
Вместе весело шагать, или как собрать тестировщиков в своем городеВместе весело шагать, или как собрать тестировщиков в своем городе
Вместе весело шагать, или как собрать тестировщиков в своем городе
 
Automating JFC UI application testing with Jemmy
Automating JFC UI application testing with JemmyAutomating JFC UI application testing with Jemmy
Automating JFC UI application testing with Jemmy
 
Оптимизация интерактивного тестирования с использованием метрики Покрытие кода
Оптимизация интерактивного тестирования с использованием метрики Покрытие кодаОптимизация интерактивного тестирования с использованием метрики Покрытие кода
Оптимизация интерактивного тестирования с использованием метрики Покрытие кода
 

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

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