SlideShare ist ein Scribd-Unternehmen logo
1 von 72
Downloaden Sie, um offline zu lesen
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

Weitere ähnliche Inhalte

Was ist angesagt?

Aula 3 técnicas de teste de software1
Aula 3   técnicas de teste de software1Aula 3   técnicas de teste de software1
Aula 3 técnicas de teste de software1
Tiago Vizoto
 

Was ist angesagt? (20)

Exercicios Pilhas (Stacks) - Estruturas de dados e algoritmos com Java
Exercicios Pilhas (Stacks) - Estruturas de dados e algoritmos com JavaExercicios Pilhas (Stacks) - Estruturas de dados e algoritmos com Java
Exercicios Pilhas (Stacks) - Estruturas de dados e algoritmos com Java
 
[Curso Java Basico] Aula 20: Arrays multidimensionais - Matrizes
[Curso Java Basico] Aula 20: Arrays multidimensionais - Matrizes[Curso Java Basico] Aula 20: Arrays multidimensionais - Matrizes
[Curso Java Basico] Aula 20: Arrays multidimensionais - Matrizes
 
Test case development
Test case developmentTest case development
Test case development
 
Aula 3 técnicas de teste de software1
Aula 3   técnicas de teste de software1Aula 3   técnicas de teste de software1
Aula 3 técnicas de teste de software1
 
Certificações em Teste e Qualidade de Software
Certificações em Teste e Qualidade de SoftwareCertificações em Teste e Qualidade de Software
Certificações em Teste e Qualidade de Software
 
Descrição formal de Casos de Uso
Descrição formal de Casos de UsoDescrição formal de Casos de Uso
Descrição formal de Casos de Uso
 
Conceitos e fundamentos sobre testes de software e garantia da qualidade
Conceitos e fundamentos sobre testes de software e garantia da qualidadeConceitos e fundamentos sobre testes de software e garantia da qualidade
Conceitos e fundamentos sobre testes de software e garantia da qualidade
 
The Next Generation of PhyreEngine
The Next Generation of PhyreEngineThe Next Generation of PhyreEngine
The Next Generation of PhyreEngine
 
언리얼 서밋 2016 프로젝트 A1의 구형 월드 라이팅 기술
언리얼 서밋 2016 프로젝트 A1의 구형 월드 라이팅 기술언리얼 서밋 2016 프로젝트 A1의 구형 월드 라이팅 기술
언리얼 서밋 2016 프로젝트 A1의 구형 월드 라이팅 기술
 
Estimativa de software usando pontos de função
Estimativa de software usando pontos de funçãoEstimativa de software usando pontos de função
Estimativa de software usando pontos de função
 
Exercicios Filas (Queues) - Estruturas de dados e algoritmos com Java
Exercicios Filas (Queues) - Estruturas de dados e algoritmos com JavaExercicios Filas (Queues) - Estruturas de dados e algoritmos com Java
Exercicios Filas (Queues) - Estruturas de dados e algoritmos com Java
 
Introduction to Monte Carlo Ray Tracing, OpenCL Implementation (CEDEC 2014)
Introduction to Monte Carlo Ray Tracing, OpenCL Implementation (CEDEC 2014)Introduction to Monte Carlo Ray Tracing, OpenCL Implementation (CEDEC 2014)
Introduction to Monte Carlo Ray Tracing, OpenCL Implementation (CEDEC 2014)
 
Testes de Integração
Testes de IntegraçãoTestes de Integração
Testes de Integração
 
Mutation Testing: Testing your tests
Mutation Testing: Testing your testsMutation Testing: Testing your tests
Mutation Testing: Testing your tests
 
Overall for Elevation Generation on Satellite Data Process
Overall for Elevation Generation on Satellite Data ProcessOverall for Elevation Generation on Satellite Data Process
Overall for Elevation Generation on Satellite Data Process
 
언리얼엔진4를 활용한 레이트레이싱 리얼타임 영상 제작하기
언리얼엔진4를 활용한 레이트레이싱 리얼타임 영상 제작하기언리얼엔진4를 활용한 레이트레이싱 리얼타임 영상 제작하기
언리얼엔진4를 활용한 레이트레이싱 리얼타임 영상 제작하기
 
Teste de software - aula 01 (motivação)
Teste de software - aula 01 (motivação)Teste de software - aula 01 (motivação)
Teste de software - aula 01 (motivação)
 
Hair animation by vertex shader
Hair animation by vertex shaderHair animation by vertex shader
Hair animation by vertex shader
 
Verificação, Validação e Teste de Software
Verificação, Validação e Teste de SoftwareVerificação, Validação e Teste de Software
Verificação, Validação e Teste de Software
 
Apostila de Alocação Dinâmica em C
Apostila de Alocação Dinâmica em CApostila de Alocação Dinâmica em C
Apostila de Alocação Dinâmica em C
 

Ähnlich wie Domain-тестирование

машинное обучение и анализ данных
машинное обучение и анализ данныхмашинное обучение и анализ данных
машинное обучение и анализ данных
Yandex
 
Тестирование весна 2013 лекция 2
Тестирование весна 2013 лекция 2Тестирование весна 2013 лекция 2
Тестирование весна 2013 лекция 2
Technopark
 
CodeFest 2012. Зинченко Т. — Практики тест-дизайна: разделяй и властвуй!
CodeFest 2012. Зинченко Т. — Практики тест-дизайна: разделяй и властвуй!CodeFest 2012. Зинченко Т. — Практики тест-дизайна: разделяй и властвуй!
CodeFest 2012. Зинченко Т. — Практики тест-дизайна: разделяй и властвуй!
CodeFest
 
Лекция 3 Сегментация
Лекция 3 СегментацияЛекция 3 Сегментация
Лекция 3 Сегментация
Victor Kulikov
 
Тестирование лекция 2 весна 2014
Тестирование лекция 2 весна 2014Тестирование лекция 2 весна 2014
Тестирование лекция 2 весна 2014
Technopark
 
FaceDetection+GenderRecognition_review
FaceDetection+GenderRecognition_reviewFaceDetection+GenderRecognition_review
FaceDetection+GenderRecognition_review
Khryashchev
 
CV2011 Lecture 7. Recognition
CV2011 Lecture 7. RecognitionCV2011 Lecture 7. Recognition
CV2011 Lecture 7. Recognition
Anton Konushin
 
Критерии выбора моделей в задачах таксонометрии и прогнозирования
Критерии выбора моделей в задачах таксонометрии и прогнозированияКритерии выбора моделей в задачах таксонометрии и прогнозирования
Критерии выбора моделей в задачах таксонометрии и прогнозирования
Maxim Kazantsev
 
Михаил Александров, Индуктивное моделирование
Михаил Александров, Индуктивное моделированиеМихаил Александров, Индуктивное моделирование
Михаил Александров, Индуктивное моделирование
Lidia Pivovarova
 
Тестирование осень 2013 лекция 2
Тестирование осень 2013 лекция 2Тестирование осень 2013 лекция 2
Тестирование осень 2013 лекция 2
Technopark
 

Ähnlich wie 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
 

Mehr von SPB SQA Group

ITGM8. Илья Коробицын (Grid Dinamics) Автоматизатор, копай глубже, копай шире!
ITGM8. Илья Коробицын (Grid Dinamics) Автоматизатор, копай глубже, копай шире!ITGM8. Илья Коробицын (Grid Dinamics) Автоматизатор, копай глубже, копай шире!
ITGM8. Илья Коробицын (Grid Dinamics) Автоматизатор, копай глубже, копай шире!
SPB SQA Group
 

Mehr von 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
 
Оптимизация интерактивного тестирования с использованием метрики Покрытие кода
Оптимизация интерактивного тестирования с использованием метрики Покрытие кодаОптимизация интерактивного тестирования с использованием метрики Покрытие кода
Оптимизация интерактивного тестирования с использованием метрики Покрытие кода
 

Kürzlich hochgeladen

СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdfСИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
Хроники кибер-безопасника
 
Cyberprint. Dark Pink Apt Group [RU].pdf
Cyberprint. Dark Pink Apt Group [RU].pdfCyberprint. Dark Pink Apt Group [RU].pdf
Cyberprint. Dark Pink Apt Group [RU].pdf
Хроники кибер-безопасника
 
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
Ирония безопасности
 
2023 Q4. The Ransomware report. [RU].pdf
2023 Q4. The Ransomware report. [RU].pdf2023 Q4. The Ransomware report. [RU].pdf
2023 Q4. The Ransomware report. [RU].pdf
Хроники кибер-безопасника
 
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
Ирония безопасности
 
CVE. The Fortra's GoAnywhere MFT [RU].pdf
CVE. The Fortra's GoAnywhere MFT [RU].pdfCVE. The Fortra's GoAnywhere MFT [RU].pdf
CVE. The Fortra's GoAnywhere MFT [RU].pdf
Хроники кибер-безопасника
 

Kürzlich hochgeladen (9)

Ransomware_Q3 2023. The report [RU].pdf
Ransomware_Q3 2023.  The report [RU].pdfRansomware_Q3 2023.  The report [RU].pdf
Ransomware_Q3 2023. The report [RU].pdf
 
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdfСИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
 
Cyberprint. Dark Pink Apt Group [RU].pdf
Cyberprint. Dark Pink Apt Group [RU].pdfCyberprint. Dark Pink Apt Group [RU].pdf
Cyberprint. Dark Pink Apt Group [RU].pdf
 
MS Navigating Incident Response [RU].pdf
MS Navigating Incident Response [RU].pdfMS Navigating Incident Response [RU].pdf
MS Navigating Incident Response [RU].pdf
 
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
 
2023 Q4. The Ransomware report. [RU].pdf
2023 Q4. The Ransomware report. [RU].pdf2023 Q4. The Ransomware report. [RU].pdf
2023 Q4. The Ransomware report. [RU].pdf
 
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
 
Malware. DCRAT (DARK CRYSTAL RAT) [RU].pdf
Malware. DCRAT (DARK CRYSTAL RAT) [RU].pdfMalware. DCRAT (DARK CRYSTAL RAT) [RU].pdf
Malware. DCRAT (DARK CRYSTAL RAT) [RU].pdf
 
CVE. The Fortra's GoAnywhere MFT [RU].pdf
CVE. The Fortra's GoAnywhere MFT [RU].pdfCVE. The Fortra's GoAnywhere MFT [RU].pdf
CVE. The Fortra's GoAnywhere MFT [RU].pdf
 

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