SlideShare a Scribd company logo
1 of 45
Copiright
В профессии больше 3 лет.
Кратко обо мне: студент, препод,
работяга, лентяй.
Хей! Меня зовут Алсу.
Я из ICL Services,
Казань
Alsu Basyrova
Можно ли
прикрутить
нечеткий
логический
вывод к
тестированию
Copiright
Что такое fuzzy logic?
Высота дома
Высокий – 15 этажей
Средний – 5 этажей
Низкий – 1 этаж
Copiright
Что такое fuzzy logic?
Возьмем 3 формулировки:
Низкий дом
Средний дома
Высокий дом
Нечеткое множество
х – высота дома
u(x) – принадлежность высоты дома к множеству
Copiright
Что такое fuzzy logic?
𝜇1 𝑥 – степень принадлежности высоты дома к
множеству «Низкий дом»
𝜇2 𝑥 – степень принадлежности высоты дома к
множеству «Средний дом»
𝜇3 𝑥 – степень принадлежности высоты дома к
множеству «Высокий дом»
0 ≤ 𝜇 𝑥 ≤ 1
Copiright
Множество «Низкий дом»
Функция принадлежности множества «Низкий дом»
Где
x – высота дома
u(x) – степень принадлежности к
множеству
Copiright
Множество «Средний дом»
Функция принадлежности множества «Средний дом»
Где
x – высота дома
u(x) – степень принадлежности к
множеству
Copiright
Множество «Высокий дом»
Функция принадлежности множества «Высокий дом»
Где
x – высота дома
u(x) – степень принадлежности к
множеству
Copiright
Все вместе
Где
x – высота дома
u(x) – степень принадлежности к
множеству
Copiright
Критерии для тест-кейсов
- Затрагивает тест-кейс измененный модуль или нет
- Приоритет у тест-кейса высокий или низкий
- Количество багов в этом модуле за все время высокое
или низкое
- Времени на прогон этого тест-кейса нужно много или
мало
> В какую очередь прогонять тест-кейс?
Copiright
Супер формально
Задачей нечеткого вывода является определение четкого
значения выходной переменной T – приоритета критерия,
выраженный в лингвистических единицах «очень
высокий», «высокий», «средний» и «низкий», и который
зависит от факторов (лингвистических переменных) 𝐾𝑞:
𝑇 = 𝑇(𝐾1, 𝐾2, … , 𝐾 𝑛)
Copiright
Определим понятия
Имя функции – приоритет критерия
Значения функции – очень высокий, высокий, средний и
низкий
Аргумент функции – критерии (затрагивает модуль, какой
приоритет у тест-кейса, сколько багов и т.д.)
Значения аргументов – затрагивает/не затрагивает,
высокий/низкий, много/мало и т.д.
y(x)=x+1
Copiright
Шаг 1
Лингвистическое имя аргумента функции Лингвистическое значение аргумента функции
1 Затрагивает измененный модуль Затрагивает
2 Не затрагивает
3 Приоритет сценария Высокий
4 Низкий
5 Количество дефектов в модуле Много
6 Мало
7 Время проведения сценария Быстро
8 Долго
Лингвистическое имя функции Лингвистическое имя значения функции
1 Приоритет критерия Очень высокий
2 Высокий
3 Средний
4 Низкий
Copiright
Шаг 1. Комбинации
Лингвистическое имя
аргумента функции
Лингвистическое
значение аргумента
функции
Посылки
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
1 Затрагивает
измененный модуль
Затрагивает Y Y Y Y Y Y Y Y
2 Не затрагивает Y Y Y Y Y Y Y Y
3 Приоритет сценария Высокий Y Y Y Y Y Y Y Y
4 Низкий Y Y Y Y Y Y Y Y
5 Количество дефектов в
модуле
Много Y Y Y Y Y Y Y Y
6 Мало Y Y Y Y Y Y Y Y
7 Время проведения
сценария
Быстро Y Y Y Y Y Y Y Y
8 Долго Y Y Y Y Y Y Y Y
Copiright
Шаг 2. Оценки
Лингвистическое имя аргумента функции Лингвистическое значение аргумента
функции
Посылки
1 Затрагивает измененный модуль Затрагивает Y
2 Не затрагивает
3 Приоритет сценария Высокий Y
4 Низкий
5 Количество дефектов в модуле Много Y
6 Мало
7 Время проведения сценария Быстро Y
8 Долго
Лингвистическое имя функции Лингвистическое имя значения функции Баллы
истинности
правил
1 Приоритет критерия Очень высокий
2 Высокий
3 Средний
4 Низкий
Copiright
Шаг 2. А как оценивать?
Баллы Название
значения
Оценка
истинности
правила
Баллы Название
значения
Оценка
истинности
правила
0 Никогда 0 5 И часто и редко 0,5
1 Очень редко 0,01 6 Часто 0,6
2 Не очень редко 0,05 7 Не очень часто 0,7
3 Редко 0,1 8 Очень часто 0,8
4 Время от времени 0,3 9 Почти всегда 0,9
5 Нередко и нечасто 0,5 10 Всегда 1
Copiright
Шаг 2. А вот так
Лингвистическое имя аргумента функции Лингвистическое значение аргумента функции
Посылки
1 Затрагивает измененный модуль Затрагивает Y
2 Не затрагивает
3 Приоритет сценария Высокий Y
4 Низкий
5 Количество дефектов в модуле Много Y
6 Мало
7 Время проведения сценария Быстро Y
8 Долго
Лингвистическое имя функции Лингвистическое имя значения функции Баллы истинности
правил
1 Приоритет критерия Очень высокий 10
2 Высокий 2
3 Средний 1
4 Низкий 0
Copiright
Шаг 2уаааа! Все оценим!
Лингвистическое имя
аргумента функции
Лингвистическое
значение аргумента
функции
Посылки
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
1 Затрагивает
измененный модуль
Затрагивает Y Y Y Y Y Y Y Y
2 Не затрагивает Y Y Y Y Y Y Y Y
3 Приоритет сценария Высокий Y Y Y Y Y Y Y Y
4 Низкий Y Y Y Y Y Y Y Y
5 Количество дефектов в
модуле
Много Y Y Y Y Y Y Y Y
6 Мало Y Y Y Y Y Y Y Y
7 Время проведения
сценария
Быстро Y Y Y Y Y Y Y Y
8 Долго Y Y Y Y Y Y Y Y
Лингвистическое имя
функции
Лингвистическое имя
значения функции Баллы истинности правил
1 Приоритет критерия Очень высокий 10 10 8 2 1 1 1 0 10 10 8 4 2 1 1 0
2 Высокий 2 9 8 4 3 3 1 1 2 3 8 6 4 1 1 1
3 Средний 1 5 4 8 8 5 2 1 1 1 4 10 10 2 1 1
4 Низкий 0 1 1 2 7 10 10 10 0 1 1 2 6 9 10 10
Copiright
Шаг 3. Функции для аргументов
Затрагивает/не затрагивает измененный модуль
Лингвистическое имя
аргумента функции
Лингвистическое имя
значения функции
Нечеткое множество Функция принадлежности
1 Затрагивает измененный
модуль
Затрагивает 𝑀11 = {< 𝜇11 𝑥1 , 𝑥1 >/𝑥1 ∈ 𝑋1}
m11(x1)=0.01x1
2 Затрагивает измененный
модуль
Не затрагивает 𝑀21 = {< 𝜇21 𝑥1 , 𝑥1 >/𝑥1 ∈ 𝑋1}
m21(x1)=-0.01x1+1
Copiright
Шаг 3. Функции для аргументов
Приоритет тест-кейса высокий/низкий
Лингвистическое имя
аргумента функции
Лингвистическое имя
значения функции
Нечеткое множество Функция принадлежности
3 Приоритет сценария Высокий 𝑀12 = {< 𝜇12 𝑥2 , 𝑥2 >/𝑥2 ∈ 𝑋2}
m12(x2)=-0.33x2+1.33
4 Приоритет сценария Низкий 𝑀22 = {< 𝜇22 𝑥2 , 𝑥2 >/𝑥2 ∈ 𝑋2}
m22(x2)=0.33x2-0.33
Copiright
Шаг 3. Функции для аргументов
Багов много/мало
Лингвистическое имя
аргумента функции
Лингвистическое имя
значения функции
Нечеткое множество Функция принадлежности
5 Количество дефектов в
модуле
Много 𝑀13 = {< 𝜇13 𝑥3 , 𝑥3 >/𝑥3 ∈ 𝑋3}
m13(x3)=0.05x3
6 Количество дефектов в
модуле
Мало 𝑀23 = {< 𝜇23 𝑥3 , 𝑥3 >/𝑥3 ∈ 𝑋3}
m23(x3)=-0.05x3+1
Copiright
Шаг 3. Функции для аргументов
Тест-кейс прогонять долго/недолго
Лингвистическое имя
аргумента функции
Лингвистическое имя
значения функции
Нечеткое множество Функция принадлежности
7 Время проведения сценария Быстро 𝑀14 = {< 𝜇14 𝑥4 , 𝑥4 >/𝑥4 ∈ 𝑋4}
m14(x4)=-0.11x4+1.11
8 Время проведения сценария Долго 𝑀24 = {< 𝜇24 𝑥4 , 𝑥4 >/𝑥4 ∈ 𝑋4}
m24(x4)=0.11x4-0.11
Copiright
Фаззификация
Фаззификация – нахождения значения функций
принадлежности
- затрагивает изменённый модуль на полностью, а
частично еще и другой модуль, оценим это по шкале от 0
до 100 на 80;
- имеет приоритет 2;
- количество дефектов в модуле 3;
- время проведения сценария 3 минуты.
Copiright
Результат фаззификации
Лингвистическое имя аргумента функции Лингвистическое значение аргумента функции
1 Затрагивает измененный модуль Затрагивает 0.8
2 Не затрагивает 0.2
3 Приоритет сценария Высокий 0.67
4 Низкий 0.33
5 Количество дефектов в модуле Много 0.15
6 Мало 0.85
7 Время проведения сценария Быстро 0.78
8 Долго 0.22
Copiright
Агрегирование
Агрегирование позволяет определить степень
истинности посылки.
Лингвистическое имя
аргумента функции
Лингвистическое значение аргумента
функции
Посылки
1 2
1 Затрагивает измененный
модуль
Затрагивает 0.8 Y Y
2 Не затрагивает 0.2
3 Приоритет сценария Высокий 0.67 Y Y
4 Низкий 0.33
5 Количество дефектов в
модуле
Много 0.15 Y Y
6 Мало 0.85
7 Время проведения
сценария
Быстро 0.78 Y
8 Долго 0.22 Y
Способы агрегации
Определение
произведения
0,06 0,02
Определение минимума 0,15 0,15
Copiright
Активизация
Активизация – нахождение степени истинности посылки
Входные данные:
- Степень истинности посылки
- Степень истинности правила
- Функция принадлежности правила
Copiright
Функции принадлежности для правила
Очень высокий приоритет критерия (𝜇10(𝑦))
𝜇10(𝑦) = −0,33𝑦 + 1,33
Где
y – приоритет критерия
u(x) – степень принадлежности к
множеству «Очень высокий
приоритет»
Copiright
Функции принадлежности для правила
Высокий приоритет критерия (𝜇20(𝑦))
𝜇20(𝑦) =
𝑦 − 1, если 𝑦 ≤ 2
−0,5𝑦 + 2, если 𝑦 > 2
Где
y – приоритет критерия
u(x) – степень принадлежности к
множеству «Высокий приоритет»
Copiright
Функции принадлежности для правила
Средний приоритет критерия (𝜇30(𝑦))
𝜇30(𝑦) =
0,5𝑦 − 0,5, если 𝑦 ≤ 3
−𝑦 + 4, если 𝑦 > 3
Где
y – приоритет критерия
u(x) – степень принадлежности к
множеству «Средний приоритет»
Copiright
Функции принадлежности для правила
Низкий приоритет критерия (𝜇40(𝑦))
𝜇40 𝑦 = 0,33𝑦 − 0,33
Где
y – приоритет критерия
u(x) – степень принадлежности к
множеству «Низкий приоритет»
Copiright
Степень истинности посылки
Лингвистическое имя
аргумента функции
Лингвистическое значение аргумента функции
Посылки
1
1 Затрагивает измененный
модуль
Затрагивает 0.8 Y
2 Не затрагивает 0.2
3 Приоритет сценария Высокий 0.67 Y
4 Низкий 0.33
5 Количество дефектов в модуле Много 0.15 Y
6 Мало 0.85
7 Время проведения сценария Быстро 0.78 Y
8 Долго 0.22
Определение минимума
0,15
Copiright
Степень истинности правила
Лингвистическое имя аргумента функции Лингвистическое значение аргумента функции
Посылки
1 Затрагивает измененный модуль Затрагивает Y
2 Не затрагивает
3 Приоритет сценария Высокий Y
4 Низкий
5 Количество дефектов в модуле Много Y
6 Мало
7 Время проведения сценария Быстро Y
8 Долго
Лингвистическое имя функции Лингвистическое имя значения функции Степени истинности
правил
1 Приоритет критерия Очень высокий 10 => 1
2 Высокий 2 => 0,05
3 Средний 1 => 0,01
4 Низкий 0
Copiright
Активизация для первой посылки
Очень высокий приоритет критерия:
Степень истинности посылки
0,15
Степень истинности правила
1
Умножить Умножить
𝜇∗
10(𝑦) = −0,05𝑦 + 0,2
𝜇10(𝑦) = −0,33𝑦 + 1,33
Copiright
Активизация для первой посылки
Высокий приоритет критерия:
Степень истинности посылки
0,15
Степень истинности правила
0,05
Умножить Умножить
𝜇∗
20(𝑦) =
0,01𝑦 − 0,01, если 𝑦 ≤ 2
0,02, если 𝑦 > 2
𝜇20(𝑦) =
𝑦 − 1, если 𝑦 ≤ 2
−0,5𝑦 + 2, если 𝑦 > 2
Copiright
Активизация для первой посылки
Средний приоритет критерия:
Степень истинности посылки
0,15
Степень истинности правила
0,01
Умножить Умножить
𝜇∗
30(𝑦) =
0, если 𝑦 ≤ 3
0,01, если 𝑦 > 3
𝜇30(𝑦) =
0,5𝑦 − 0,5, если 𝑦 ≤ 3
−𝑦 + 4, если 𝑦 > 3
Copiright
Активизация для первой посылки
Низкий приоритет критерия:
Степень истинности посылки
0,15
Степень истинности правила
0
Умножить Умножить
𝜇∗
40 𝑦 = 0
𝜇40 𝑦 = 0,33𝑦 − 0,33
Copiright
Аккумуляция
Цель аккумуляции – объединить все степени истинности
заключений для получения степени истинности для
выходных лингвистических переменных.
Copiright
Результат аккумуляции
Copiright
Дефаззифицация
Цель дефаззификации заключается в том, чтобы,
используя результат аккумуляции, получить
количественное значение выходной переменной.
Copiright
Результат дефаззификации
Оптимальное значение – 2,19. Округлим – 2.
Copiright
Выводы
Если тест-кейс
- затрагивает изменённый модуль не полностью, а
частично еще и другой модуль, оценим это по шкале от 0
до 100 на 80;
- имеет приоритет 2;
- количество дефектов в модуле 3;
- время проведения сценария 3 минуты;
То по всему критерию получает оценку 2.
Copiright
Дальнейшая работа
Что нужно делать вручную:
- Определить критерии
- Оценить их
- Определить для них функции принадлежности
- Определить функции принадлежности для конечных
множеств
Copiright
Дальнейшая работа
Что можно автоматизировать
- Все остальное 
Со мной можно
связаться:
Email: jascorp@mail.ru
Skype: aljass251
Telegram: @jasonbe

More Related Content

Viewers also liked

The Challenge of Accepting Software
The Challenge of Accepting SoftwareThe Challenge of Accepting Software
The Challenge of Accepting SoftwareSQALab
 
Building a testing team
Building a testing teamBuilding a testing team
Building a testing teamSQALab
 
Развитие процессов тестирования в Badoo за три года
Развитие процессов тестирования в Badoo за три годаРазвитие процессов тестирования в Badoo за три года
Развитие процессов тестирования в Badoo за три годаSQALab
 
Улучшение процесса тестирования: контентные модели
Улучшение процесса тестирования: контентные моделиУлучшение процесса тестирования: контентные модели
Улучшение процесса тестирования: контентные моделиSQALab
 
14 lessons for successful testing outsourcing
14 lessons for successful testing outsourcing14 lessons for successful testing outsourcing
14 lessons for successful testing outsourcingSQALab
 
Тестируем развитие тестировщика
Тестируем развитие тестировщикаТестируем развитие тестировщика
Тестируем развитие тестировщикаSQALab
 
Как же научиться программировать, в конце концов?
Как же научиться программировать, в конце концов?Как же научиться программировать, в конце концов?
Как же научиться программировать, в конце концов?SQALab
 
Пополняем арсенал тестировщика. Учимся применять новые техники
Пополняем арсенал тестировщика. Учимся применять новые техникиПополняем арсенал тестировщика. Учимся применять новые техники
Пополняем арсенал тестировщика. Учимся применять новые техникиSQALab
 
Тестирование систем процессинга банковских карт. Особенности и сложности
Тестирование систем процессинга банковских карт. Особенности и сложностиТестирование систем процессинга банковских карт. Особенности и сложности
Тестирование систем процессинга банковских карт. Особенности и сложностиSQALab
 
JDI: Автоматизировать проще, чем кажется
JDI: Автоматизировать проще, чем кажетсяJDI: Автоматизировать проще, чем кажется
JDI: Автоматизировать проще, чем кажетсяSQALab
 
Как перестать бояться и начать автоматизировать
Как перестать бояться и начать автоматизироватьКак перестать бояться и начать автоматизировать
Как перестать бояться и начать автоматизироватьSQALab
 
Поиск багов при тестировании переходов с веба в мобильное приложение
Поиск багов при тестировании переходов с веба в мобильное приложениеПоиск багов при тестировании переходов с веба в мобильное приложение
Поиск багов при тестировании переходов с веба в мобильное приложениеSQALab
 
Лучшие тестировщики - наши пользователи
Лучшие тестировщики - наши пользователиЛучшие тестировщики - наши пользователи
Лучшие тестировщики - наши пользователиSQALab
 
Тестирование мобильных API: Behind The Scenes
Тестирование мобильных API: Behind The ScenesТестирование мобильных API: Behind The Scenes
Тестирование мобильных API: Behind The ScenesSQALab
 
Mobile testing. Tips and tricks
Mobile testing. Tips and tricksMobile testing. Tips and tricks
Mobile testing. Tips and tricksSQALab
 
Тестировщик в стартапе. Зачем и как
Тестировщик в стартапе. Зачем и какТестировщик в стартапе. Зачем и как
Тестировщик в стартапе. Зачем и какSQALab
 
Как развить отдел тестирования от палки-копалки до CI
Как развить отдел тестирования от палки-копалки до CIКак развить отдел тестирования от палки-копалки до CI
Как развить отдел тестирования от палки-копалки до CICEE-SEC(R)
 
Тестирование в условиях Lean: как приручить MVP?
Тестирование в условиях Lean: как приручить MVP?Тестирование в условиях Lean: как приручить MVP?
Тестирование в условиях Lean: как приручить MVP?SQALab
 
Как тестировщику выжить в стартапе
Как тестировщику выжить в стартапе Как тестировщику выжить в стартапе
Как тестировщику выжить в стартапе SQALab
 

Viewers also liked (19)

The Challenge of Accepting Software
The Challenge of Accepting SoftwareThe Challenge of Accepting Software
The Challenge of Accepting Software
 
Building a testing team
Building a testing teamBuilding a testing team
Building a testing team
 
Развитие процессов тестирования в Badoo за три года
Развитие процессов тестирования в Badoo за три годаРазвитие процессов тестирования в Badoo за три года
Развитие процессов тестирования в Badoo за три года
 
Улучшение процесса тестирования: контентные модели
Улучшение процесса тестирования: контентные моделиУлучшение процесса тестирования: контентные модели
Улучшение процесса тестирования: контентные модели
 
14 lessons for successful testing outsourcing
14 lessons for successful testing outsourcing14 lessons for successful testing outsourcing
14 lessons for successful testing outsourcing
 
Тестируем развитие тестировщика
Тестируем развитие тестировщикаТестируем развитие тестировщика
Тестируем развитие тестировщика
 
Как же научиться программировать, в конце концов?
Как же научиться программировать, в конце концов?Как же научиться программировать, в конце концов?
Как же научиться программировать, в конце концов?
 
Пополняем арсенал тестировщика. Учимся применять новые техники
Пополняем арсенал тестировщика. Учимся применять новые техникиПополняем арсенал тестировщика. Учимся применять новые техники
Пополняем арсенал тестировщика. Учимся применять новые техники
 
Тестирование систем процессинга банковских карт. Особенности и сложности
Тестирование систем процессинга банковских карт. Особенности и сложностиТестирование систем процессинга банковских карт. Особенности и сложности
Тестирование систем процессинга банковских карт. Особенности и сложности
 
JDI: Автоматизировать проще, чем кажется
JDI: Автоматизировать проще, чем кажетсяJDI: Автоматизировать проще, чем кажется
JDI: Автоматизировать проще, чем кажется
 
Как перестать бояться и начать автоматизировать
Как перестать бояться и начать автоматизироватьКак перестать бояться и начать автоматизировать
Как перестать бояться и начать автоматизировать
 
Поиск багов при тестировании переходов с веба в мобильное приложение
Поиск багов при тестировании переходов с веба в мобильное приложениеПоиск багов при тестировании переходов с веба в мобильное приложение
Поиск багов при тестировании переходов с веба в мобильное приложение
 
Лучшие тестировщики - наши пользователи
Лучшие тестировщики - наши пользователиЛучшие тестировщики - наши пользователи
Лучшие тестировщики - наши пользователи
 
Тестирование мобильных API: Behind The Scenes
Тестирование мобильных API: Behind The ScenesТестирование мобильных API: Behind The Scenes
Тестирование мобильных API: Behind The Scenes
 
Mobile testing. Tips and tricks
Mobile testing. Tips and tricksMobile testing. Tips and tricks
Mobile testing. Tips and tricks
 
Тестировщик в стартапе. Зачем и как
Тестировщик в стартапе. Зачем и какТестировщик в стартапе. Зачем и как
Тестировщик в стартапе. Зачем и как
 
Как развить отдел тестирования от палки-копалки до CI
Как развить отдел тестирования от палки-копалки до CIКак развить отдел тестирования от палки-копалки до CI
Как развить отдел тестирования от палки-копалки до CI
 
Тестирование в условиях Lean: как приручить MVP?
Тестирование в условиях Lean: как приручить MVP?Тестирование в условиях Lean: как приручить MVP?
Тестирование в условиях Lean: как приручить MVP?
 
Как тестировщику выжить в стартапе
Как тестировщику выжить в стартапе Как тестировщику выжить в стартапе
Как тестировщику выжить в стартапе
 

More from SQALab

Готовим стажировку
Готовим стажировкуГотовим стажировку
Готовим стажировкуSQALab
 
Куда приводят мечты? или Искусство развития тестировщика
Куда приводят мечты? или Искусство развития тестировщикаКуда приводят мечты? или Искусство развития тестировщика
Куда приводят мечты? или Искусство развития тестировщикаSQALab
 
Оптимизация Selenium тестов и ускорение их поддержки
Оптимизация Selenium тестов и ускорение их поддержкиОптимизация Selenium тестов и ускорение их поддержки
Оптимизация Selenium тестов и ускорение их поддержкиSQALab
 
Автоматизация 0.0: 0 - бюджет, 0 - опыт программирования
Автоматизация 0.0: 0 - бюджет, 0 - опыт программированияАвтоматизация 0.0: 0 - бюджет, 0 - опыт программирования
Автоматизация 0.0: 0 - бюджет, 0 - опыт программированияSQALab
 
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...SQALab
 
Continuous performance testing
Continuous performance testingContinuous performance testing
Continuous performance testingSQALab
 
Конфиги вместо костылей. Pytestconfig и зачем он нужен
Конфиги вместо костылей. Pytestconfig и зачем он нуженКонфиги вместо костылей. Pytestconfig и зачем он нужен
Конфиги вместо костылей. Pytestconfig и зачем он нуженSQALab
 
Команда чемпионов в ИТ стихии
Команда чемпионов в ИТ стихииКоманда чемпионов в ИТ стихии
Команда чемпионов в ИТ стихииSQALab
 
API. Серебряная пуля в магазине советов
API. Серебряная пуля в магазине советовAPI. Серебряная пуля в магазине советов
API. Серебряная пуля в магазине советовSQALab
 
Добиваемся эффективности каждого из 9000+ UI-тестов
Добиваемся эффективности каждого из 9000+ UI-тестовДобиваемся эффективности каждого из 9000+ UI-тестов
Добиваемся эффективности каждого из 9000+ UI-тестовSQALab
 
Делаем автоматизацию проектных KPIs
Делаем автоматизацию проектных KPIsДелаем автоматизацию проектных KPIs
Делаем автоматизацию проектных KPIsSQALab
 
Вредные привычки в тест-менеджменте
Вредные привычки в тест-менеджментеВредные привычки в тест-менеджменте
Вредные привычки в тест-менеджментеSQALab
 
Мощь переполняет с JDI 2.0 - новая эра UI автоматизации
Мощь переполняет с JDI 2.0 - новая эра UI автоматизацииМощь переполняет с JDI 2.0 - новая эра UI автоматизации
Мощь переполняет с JDI 2.0 - новая эра UI автоматизацииSQALab
 
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеКак hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеSQALab
 
Стили лидерства и тестирование
Стили лидерства и тестированиеСтили лидерства и тестирование
Стили лидерства и тестированиеSQALab
 
"Давайте не будем про качество"
"Давайте не будем про качество""Давайте не будем про качество"
"Давайте не будем про качество"SQALab
 
Apache.JMeter для .NET-проектов
Apache.JMeter для .NET-проектовApache.JMeter для .NET-проектов
Apache.JMeter для .NET-проектовSQALab
 
Тестирование геолокационных систем
Тестирование геолокационных системТестирование геолокационных систем
Тестирование геолокационных системSQALab
 
Лидер или босс? Вот в чем вопрос
Лидер или босс? Вот в чем вопросЛидер или босс? Вот в чем вопрос
Лидер или босс? Вот в чем вопросSQALab
 
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...SQALab
 

More from SQALab (20)

Готовим стажировку
Готовим стажировкуГотовим стажировку
Готовим стажировку
 
Куда приводят мечты? или Искусство развития тестировщика
Куда приводят мечты? или Искусство развития тестировщикаКуда приводят мечты? или Искусство развития тестировщика
Куда приводят мечты? или Искусство развития тестировщика
 
Оптимизация Selenium тестов и ускорение их поддержки
Оптимизация Selenium тестов и ускорение их поддержкиОптимизация Selenium тестов и ускорение их поддержки
Оптимизация Selenium тестов и ускорение их поддержки
 
Автоматизация 0.0: 0 - бюджет, 0 - опыт программирования
Автоматизация 0.0: 0 - бюджет, 0 - опыт программированияАвтоматизация 0.0: 0 - бюджет, 0 - опыт программирования
Автоматизация 0.0: 0 - бюджет, 0 - опыт программирования
 
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
 
Continuous performance testing
Continuous performance testingContinuous performance testing
Continuous performance testing
 
Конфиги вместо костылей. Pytestconfig и зачем он нужен
Конфиги вместо костылей. Pytestconfig и зачем он нуженКонфиги вместо костылей. Pytestconfig и зачем он нужен
Конфиги вместо костылей. Pytestconfig и зачем он нужен
 
Команда чемпионов в ИТ стихии
Команда чемпионов в ИТ стихииКоманда чемпионов в ИТ стихии
Команда чемпионов в ИТ стихии
 
API. Серебряная пуля в магазине советов
API. Серебряная пуля в магазине советовAPI. Серебряная пуля в магазине советов
API. Серебряная пуля в магазине советов
 
Добиваемся эффективности каждого из 9000+ UI-тестов
Добиваемся эффективности каждого из 9000+ UI-тестовДобиваемся эффективности каждого из 9000+ UI-тестов
Добиваемся эффективности каждого из 9000+ UI-тестов
 
Делаем автоматизацию проектных KPIs
Делаем автоматизацию проектных KPIsДелаем автоматизацию проектных KPIs
Делаем автоматизацию проектных KPIs
 
Вредные привычки в тест-менеджменте
Вредные привычки в тест-менеджментеВредные привычки в тест-менеджменте
Вредные привычки в тест-менеджменте
 
Мощь переполняет с JDI 2.0 - новая эра UI автоматизации
Мощь переполняет с JDI 2.0 - новая эра UI автоматизацииМощь переполняет с JDI 2.0 - новая эра UI автоматизации
Мощь переполняет с JDI 2.0 - новая эра UI автоматизации
 
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеКак hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
 
Стили лидерства и тестирование
Стили лидерства и тестированиеСтили лидерства и тестирование
Стили лидерства и тестирование
 
"Давайте не будем про качество"
"Давайте не будем про качество""Давайте не будем про качество"
"Давайте не будем про качество"
 
Apache.JMeter для .NET-проектов
Apache.JMeter для .NET-проектовApache.JMeter для .NET-проектов
Apache.JMeter для .NET-проектов
 
Тестирование геолокационных систем
Тестирование геолокационных системТестирование геолокационных систем
Тестирование геолокационных систем
 
Лидер или босс? Вот в чем вопрос
Лидер или босс? Вот в чем вопросЛидер или босс? Вот в чем вопрос
Лидер или босс? Вот в чем вопрос
 
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
 

Можно ли прикрутить нечеткий логический вывод к тестированию

  • 1.
  • 2. Copiright В профессии больше 3 лет. Кратко обо мне: студент, препод, работяга, лентяй. Хей! Меня зовут Алсу. Я из ICL Services, Казань
  • 4. Copiright Что такое fuzzy logic? Высота дома Высокий – 15 этажей Средний – 5 этажей Низкий – 1 этаж
  • 5. Copiright Что такое fuzzy logic? Возьмем 3 формулировки: Низкий дом Средний дома Высокий дом Нечеткое множество х – высота дома u(x) – принадлежность высоты дома к множеству
  • 6. Copiright Что такое fuzzy logic? 𝜇1 𝑥 – степень принадлежности высоты дома к множеству «Низкий дом» 𝜇2 𝑥 – степень принадлежности высоты дома к множеству «Средний дом» 𝜇3 𝑥 – степень принадлежности высоты дома к множеству «Высокий дом» 0 ≤ 𝜇 𝑥 ≤ 1
  • 7. Copiright Множество «Низкий дом» Функция принадлежности множества «Низкий дом» Где x – высота дома u(x) – степень принадлежности к множеству
  • 8. Copiright Множество «Средний дом» Функция принадлежности множества «Средний дом» Где x – высота дома u(x) – степень принадлежности к множеству
  • 9. Copiright Множество «Высокий дом» Функция принадлежности множества «Высокий дом» Где x – высота дома u(x) – степень принадлежности к множеству
  • 10. Copiright Все вместе Где x – высота дома u(x) – степень принадлежности к множеству
  • 11. Copiright Критерии для тест-кейсов - Затрагивает тест-кейс измененный модуль или нет - Приоритет у тест-кейса высокий или низкий - Количество багов в этом модуле за все время высокое или низкое - Времени на прогон этого тест-кейса нужно много или мало > В какую очередь прогонять тест-кейс?
  • 12. Copiright Супер формально Задачей нечеткого вывода является определение четкого значения выходной переменной T – приоритета критерия, выраженный в лингвистических единицах «очень высокий», «высокий», «средний» и «низкий», и который зависит от факторов (лингвистических переменных) 𝐾𝑞: 𝑇 = 𝑇(𝐾1, 𝐾2, … , 𝐾 𝑛)
  • 13. Copiright Определим понятия Имя функции – приоритет критерия Значения функции – очень высокий, высокий, средний и низкий Аргумент функции – критерии (затрагивает модуль, какой приоритет у тест-кейса, сколько багов и т.д.) Значения аргументов – затрагивает/не затрагивает, высокий/низкий, много/мало и т.д. y(x)=x+1
  • 14. Copiright Шаг 1 Лингвистическое имя аргумента функции Лингвистическое значение аргумента функции 1 Затрагивает измененный модуль Затрагивает 2 Не затрагивает 3 Приоритет сценария Высокий 4 Низкий 5 Количество дефектов в модуле Много 6 Мало 7 Время проведения сценария Быстро 8 Долго Лингвистическое имя функции Лингвистическое имя значения функции 1 Приоритет критерия Очень высокий 2 Высокий 3 Средний 4 Низкий
  • 15. Copiright Шаг 1. Комбинации Лингвистическое имя аргумента функции Лингвистическое значение аргумента функции Посылки 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 Затрагивает измененный модуль Затрагивает Y Y Y Y Y Y Y Y 2 Не затрагивает Y Y Y Y Y Y Y Y 3 Приоритет сценария Высокий Y Y Y Y Y Y Y Y 4 Низкий Y Y Y Y Y Y Y Y 5 Количество дефектов в модуле Много Y Y Y Y Y Y Y Y 6 Мало Y Y Y Y Y Y Y Y 7 Время проведения сценария Быстро Y Y Y Y Y Y Y Y 8 Долго Y Y Y Y Y Y Y Y
  • 16. Copiright Шаг 2. Оценки Лингвистическое имя аргумента функции Лингвистическое значение аргумента функции Посылки 1 Затрагивает измененный модуль Затрагивает Y 2 Не затрагивает 3 Приоритет сценария Высокий Y 4 Низкий 5 Количество дефектов в модуле Много Y 6 Мало 7 Время проведения сценария Быстро Y 8 Долго Лингвистическое имя функции Лингвистическое имя значения функции Баллы истинности правил 1 Приоритет критерия Очень высокий 2 Высокий 3 Средний 4 Низкий
  • 17. Copiright Шаг 2. А как оценивать? Баллы Название значения Оценка истинности правила Баллы Название значения Оценка истинности правила 0 Никогда 0 5 И часто и редко 0,5 1 Очень редко 0,01 6 Часто 0,6 2 Не очень редко 0,05 7 Не очень часто 0,7 3 Редко 0,1 8 Очень часто 0,8 4 Время от времени 0,3 9 Почти всегда 0,9 5 Нередко и нечасто 0,5 10 Всегда 1
  • 18. Copiright Шаг 2. А вот так Лингвистическое имя аргумента функции Лингвистическое значение аргумента функции Посылки 1 Затрагивает измененный модуль Затрагивает Y 2 Не затрагивает 3 Приоритет сценария Высокий Y 4 Низкий 5 Количество дефектов в модуле Много Y 6 Мало 7 Время проведения сценария Быстро Y 8 Долго Лингвистическое имя функции Лингвистическое имя значения функции Баллы истинности правил 1 Приоритет критерия Очень высокий 10 2 Высокий 2 3 Средний 1 4 Низкий 0
  • 19. Copiright Шаг 2уаааа! Все оценим! Лингвистическое имя аргумента функции Лингвистическое значение аргумента функции Посылки 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 Затрагивает измененный модуль Затрагивает Y Y Y Y Y Y Y Y 2 Не затрагивает Y Y Y Y Y Y Y Y 3 Приоритет сценария Высокий Y Y Y Y Y Y Y Y 4 Низкий Y Y Y Y Y Y Y Y 5 Количество дефектов в модуле Много Y Y Y Y Y Y Y Y 6 Мало Y Y Y Y Y Y Y Y 7 Время проведения сценария Быстро Y Y Y Y Y Y Y Y 8 Долго Y Y Y Y Y Y Y Y Лингвистическое имя функции Лингвистическое имя значения функции Баллы истинности правил 1 Приоритет критерия Очень высокий 10 10 8 2 1 1 1 0 10 10 8 4 2 1 1 0 2 Высокий 2 9 8 4 3 3 1 1 2 3 8 6 4 1 1 1 3 Средний 1 5 4 8 8 5 2 1 1 1 4 10 10 2 1 1 4 Низкий 0 1 1 2 7 10 10 10 0 1 1 2 6 9 10 10
  • 20. Copiright Шаг 3. Функции для аргументов Затрагивает/не затрагивает измененный модуль Лингвистическое имя аргумента функции Лингвистическое имя значения функции Нечеткое множество Функция принадлежности 1 Затрагивает измененный модуль Затрагивает 𝑀11 = {< 𝜇11 𝑥1 , 𝑥1 >/𝑥1 ∈ 𝑋1} m11(x1)=0.01x1 2 Затрагивает измененный модуль Не затрагивает 𝑀21 = {< 𝜇21 𝑥1 , 𝑥1 >/𝑥1 ∈ 𝑋1} m21(x1)=-0.01x1+1
  • 21. Copiright Шаг 3. Функции для аргументов Приоритет тест-кейса высокий/низкий Лингвистическое имя аргумента функции Лингвистическое имя значения функции Нечеткое множество Функция принадлежности 3 Приоритет сценария Высокий 𝑀12 = {< 𝜇12 𝑥2 , 𝑥2 >/𝑥2 ∈ 𝑋2} m12(x2)=-0.33x2+1.33 4 Приоритет сценария Низкий 𝑀22 = {< 𝜇22 𝑥2 , 𝑥2 >/𝑥2 ∈ 𝑋2} m22(x2)=0.33x2-0.33
  • 22. Copiright Шаг 3. Функции для аргументов Багов много/мало Лингвистическое имя аргумента функции Лингвистическое имя значения функции Нечеткое множество Функция принадлежности 5 Количество дефектов в модуле Много 𝑀13 = {< 𝜇13 𝑥3 , 𝑥3 >/𝑥3 ∈ 𝑋3} m13(x3)=0.05x3 6 Количество дефектов в модуле Мало 𝑀23 = {< 𝜇23 𝑥3 , 𝑥3 >/𝑥3 ∈ 𝑋3} m23(x3)=-0.05x3+1
  • 23. Copiright Шаг 3. Функции для аргументов Тест-кейс прогонять долго/недолго Лингвистическое имя аргумента функции Лингвистическое имя значения функции Нечеткое множество Функция принадлежности 7 Время проведения сценария Быстро 𝑀14 = {< 𝜇14 𝑥4 , 𝑥4 >/𝑥4 ∈ 𝑋4} m14(x4)=-0.11x4+1.11 8 Время проведения сценария Долго 𝑀24 = {< 𝜇24 𝑥4 , 𝑥4 >/𝑥4 ∈ 𝑋4} m24(x4)=0.11x4-0.11
  • 24. Copiright Фаззификация Фаззификация – нахождения значения функций принадлежности - затрагивает изменённый модуль на полностью, а частично еще и другой модуль, оценим это по шкале от 0 до 100 на 80; - имеет приоритет 2; - количество дефектов в модуле 3; - время проведения сценария 3 минуты.
  • 25. Copiright Результат фаззификации Лингвистическое имя аргумента функции Лингвистическое значение аргумента функции 1 Затрагивает измененный модуль Затрагивает 0.8 2 Не затрагивает 0.2 3 Приоритет сценария Высокий 0.67 4 Низкий 0.33 5 Количество дефектов в модуле Много 0.15 6 Мало 0.85 7 Время проведения сценария Быстро 0.78 8 Долго 0.22
  • 26. Copiright Агрегирование Агрегирование позволяет определить степень истинности посылки. Лингвистическое имя аргумента функции Лингвистическое значение аргумента функции Посылки 1 2 1 Затрагивает измененный модуль Затрагивает 0.8 Y Y 2 Не затрагивает 0.2 3 Приоритет сценария Высокий 0.67 Y Y 4 Низкий 0.33 5 Количество дефектов в модуле Много 0.15 Y Y 6 Мало 0.85 7 Время проведения сценария Быстро 0.78 Y 8 Долго 0.22 Y Способы агрегации Определение произведения 0,06 0,02 Определение минимума 0,15 0,15
  • 27. Copiright Активизация Активизация – нахождение степени истинности посылки Входные данные: - Степень истинности посылки - Степень истинности правила - Функция принадлежности правила
  • 28. Copiright Функции принадлежности для правила Очень высокий приоритет критерия (𝜇10(𝑦)) 𝜇10(𝑦) = −0,33𝑦 + 1,33 Где y – приоритет критерия u(x) – степень принадлежности к множеству «Очень высокий приоритет»
  • 29. Copiright Функции принадлежности для правила Высокий приоритет критерия (𝜇20(𝑦)) 𝜇20(𝑦) = 𝑦 − 1, если 𝑦 ≤ 2 −0,5𝑦 + 2, если 𝑦 > 2 Где y – приоритет критерия u(x) – степень принадлежности к множеству «Высокий приоритет»
  • 30. Copiright Функции принадлежности для правила Средний приоритет критерия (𝜇30(𝑦)) 𝜇30(𝑦) = 0,5𝑦 − 0,5, если 𝑦 ≤ 3 −𝑦 + 4, если 𝑦 > 3 Где y – приоритет критерия u(x) – степень принадлежности к множеству «Средний приоритет»
  • 31. Copiright Функции принадлежности для правила Низкий приоритет критерия (𝜇40(𝑦)) 𝜇40 𝑦 = 0,33𝑦 − 0,33 Где y – приоритет критерия u(x) – степень принадлежности к множеству «Низкий приоритет»
  • 32. Copiright Степень истинности посылки Лингвистическое имя аргумента функции Лингвистическое значение аргумента функции Посылки 1 1 Затрагивает измененный модуль Затрагивает 0.8 Y 2 Не затрагивает 0.2 3 Приоритет сценария Высокий 0.67 Y 4 Низкий 0.33 5 Количество дефектов в модуле Много 0.15 Y 6 Мало 0.85 7 Время проведения сценария Быстро 0.78 Y 8 Долго 0.22 Определение минимума 0,15
  • 33. Copiright Степень истинности правила Лингвистическое имя аргумента функции Лингвистическое значение аргумента функции Посылки 1 Затрагивает измененный модуль Затрагивает Y 2 Не затрагивает 3 Приоритет сценария Высокий Y 4 Низкий 5 Количество дефектов в модуле Много Y 6 Мало 7 Время проведения сценария Быстро Y 8 Долго Лингвистическое имя функции Лингвистическое имя значения функции Степени истинности правил 1 Приоритет критерия Очень высокий 10 => 1 2 Высокий 2 => 0,05 3 Средний 1 => 0,01 4 Низкий 0
  • 34. Copiright Активизация для первой посылки Очень высокий приоритет критерия: Степень истинности посылки 0,15 Степень истинности правила 1 Умножить Умножить 𝜇∗ 10(𝑦) = −0,05𝑦 + 0,2 𝜇10(𝑦) = −0,33𝑦 + 1,33
  • 35. Copiright Активизация для первой посылки Высокий приоритет критерия: Степень истинности посылки 0,15 Степень истинности правила 0,05 Умножить Умножить 𝜇∗ 20(𝑦) = 0,01𝑦 − 0,01, если 𝑦 ≤ 2 0,02, если 𝑦 > 2 𝜇20(𝑦) = 𝑦 − 1, если 𝑦 ≤ 2 −0,5𝑦 + 2, если 𝑦 > 2
  • 36. Copiright Активизация для первой посылки Средний приоритет критерия: Степень истинности посылки 0,15 Степень истинности правила 0,01 Умножить Умножить 𝜇∗ 30(𝑦) = 0, если 𝑦 ≤ 3 0,01, если 𝑦 > 3 𝜇30(𝑦) = 0,5𝑦 − 0,5, если 𝑦 ≤ 3 −𝑦 + 4, если 𝑦 > 3
  • 37. Copiright Активизация для первой посылки Низкий приоритет критерия: Степень истинности посылки 0,15 Степень истинности правила 0 Умножить Умножить 𝜇∗ 40 𝑦 = 0 𝜇40 𝑦 = 0,33𝑦 − 0,33
  • 38. Copiright Аккумуляция Цель аккумуляции – объединить все степени истинности заключений для получения степени истинности для выходных лингвистических переменных.
  • 40. Copiright Дефаззифицация Цель дефаззификации заключается в том, чтобы, используя результат аккумуляции, получить количественное значение выходной переменной.
  • 42. Copiright Выводы Если тест-кейс - затрагивает изменённый модуль не полностью, а частично еще и другой модуль, оценим это по шкале от 0 до 100 на 80; - имеет приоритет 2; - количество дефектов в модуле 3; - время проведения сценария 3 минуты; То по всему критерию получает оценку 2.
  • 43. Copiright Дальнейшая работа Что нужно делать вручную: - Определить критерии - Оценить их - Определить для них функции принадлежности - Определить функции принадлежности для конечных множеств
  • 44. Copiright Дальнейшая работа Что можно автоматизировать - Все остальное 
  • 45. Со мной можно связаться: Email: jascorp@mail.ru Skype: aljass251 Telegram: @jasonbe