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

45

Upload: sqalab

Post on 07-Jan-2017

7.457 views

Category:

Education


1 download

TRANSCRIPT

Copiright

В профессии больше 3 лет.Кратко обо мне: студент, препод, работяга, лентяй.

Хей! Меня зовут Алсу.Я из ICL Services, Казань

Alsu Basyrova

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

Copiright

Что такое fuzzy logic?

Высота дома

Высокий – 15 этажей

Средний – 5 этажей

Низкий – 1 этаж

Copiright

Что такое fuzzy logic?

Возьмем 3 формулировки:Низкий домСредний домаВысокий дом

Нечеткое множествох – высота домаu(x) – принадлежность высоты дома к множеству

Copiright

Что такое fuzzy logic?

– степень принадлежности высоты дома к множеству «Низкий дом»

– степень принадлежности высоты дома к множеству «Средний дом»

– степень принадлежности высоты дома к множеству «Высокий дом»

Copiright

Множество «Низкий дом»

Функция принадлежности множества «Низкий дом»

Где x – высота домаu(x) – степень принадлежности к множеству

Copiright

Множество «Средний дом»

Функция принадлежности множества «Средний дом»

Где x – высота домаu(x) – степень принадлежности к множеству

Copiright

Множество «Высокий дом»

Функция принадлежности множества «Высокий дом»

Где x – высота домаu(x) – степень принадлежности к множеству

Copiright

Все вместе

Где x – высота домаu(x) – степень принадлежности к множеству

Copiright

Критерии для тест-кейсов

- Затрагивает тест-кейс измененный модуль или нет

- Приоритет у тест-кейса высокий или низкий

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

- Времени на прогон этого тест-кейса нужно много или мало

> В какую очередь прогонять тест-кейс?

Copiright

Супер формально

Задачей нечеткого вывода является определение четкого значения выходной переменной T – приоритета критерия, выраженный в лингвистических единицах «очень высокий», «высокий», «средний» и «низкий», и который зависит от факторов (лингвистических переменных) :

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 Приоритет сценария Высокий Y4 Низкий  5 Количество дефектов в модуле Много Y6 Мало  7 Время проведения сценария Быстро Y8 Долго    Лингвистическое имя функции Лингвистическое имя значения функции Баллы

истинности правил

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 Приоритет сценария Высокий Y4 Низкий  5 Количество дефектов в модуле Много Y6 Мало  7 Время проведения сценария Быстро Y8 Долго    Лингвистическое имя функции Лингвистическое имя значения функции Баллы истинности

правил1 Приоритет критерия Очень высокий 102 Высокий 23 Средний 14 Низкий 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 Y3 Приоритет сценария Высокий Y Y Y Y         Y Y Y Y        4 Низкий         Y Y Y Y         Y Y Y Y5 Количество дефектов в

модулеМного 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 02 Высокий 2 9 8 4 3 3 1 1 2 3 8 6 4 1 1 13 Средний 1 5 4 8 8 5 2 1 1 1 4 10 10 2 1 14 Низкий 0 1 1 2 7 10 10 10 0 1 1 2 6 9 10 10

Copiright

Шаг 3. Функции для аргументов

Затрагивает/не затрагивает измененный модуль

  Лингвистическое имя аргумента функции

Лингвистическое имя значения функции

Нечеткое множество Функция принадлежности

1 Затрагивает измененный

модуль

Затрагивает m11(x1)=0.01x1

2 Затрагивает измененный

модуль

Не затрагивает m21(x1)=-0.01x1+1

Copiright

Шаг 3. Функции для аргументов

Приоритет тест-кейса высокий/низкий

 Лингвистическое имя аргумента функции

Лингвистическое имя значения функции

Нечеткое множество Функция принадлежности

3 Приоритет сценария Высокий m12(x2)=-0.33x2+1.334 Приоритет сценария Низкий m22(x2)=0.33x2-0.33

Copiright

Шаг 3. Функции для аргументов

Багов много/мало

 Лингвистическое имя аргумента функции

Лингвистическое имя значения функции

Нечеткое множество Функция принадлежности

5 Количество дефектов в

модуле

Много m13(x3)=0.05x3

6 Количество дефектов в

модуле

Мало m23(x3)=-0.05x3+1

Copiright

Шаг 3. Функции для аргументов

Тест-кейс прогонять долго/недолго

 

Лингвистическое имя аргумента функции

Лингвистическое имя значения функции

Нечеткое множество Функция принадлежности

7 Время проведения сценария Быстро m14(x4)=-0.11x4+1.118 Время проведения сценария Долго m24(x4)=0.11x4-0.11

Copiright

Фаззификация

Фаззификация – нахождения значения функций принадлежности

- затрагивает изменённый модуль на полностью, а частично еще и другой модуль, оценим это по шкале от 0 до 100 на 80;- имеет приоритет 2;- количество дефектов в модуле 3;- время проведения сценария 3 минуты.

Copiright

Результат фаззификации

  Лингвистическое имя аргумента функции Лингвистическое значение аргумента функции

1 Затрагивает измененный модуль Затрагивает 0.8

2 Не затрагивает 0.23 Приоритет сценария Высокий 0.674 Низкий 0.335 Количество дефектов в модуле Много 0.156 Мало 0.857 Время проведения сценария Быстро 0.788 Долго 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(𝑦 )=−0,33 𝑦+1,33

Где y – приоритет критерияu(x) – степень принадлежности к множеству «Очень высокий приоритет»

Copiright

Функции принадлежности для правила

Высокий приоритет критерия ()

𝜇20(𝑦 )={ 𝑦−1 , если 𝑦 ≤2−0,5 𝑦+2 ,если 𝑦>2

Где y – приоритет критерияu(x) – степень принадлежности к множеству «Высокий приоритет»

Copiright

Функции принадлежности для правила

Средний приоритет критерия ()𝜇30(𝑦 )={0,5 𝑦−0,5 ,если 𝑦 ≤3

− 𝑦+4 , если 𝑦>3

Где y – приоритет критерияu(x) – степень принадлежности к множеству «Средний приоритет»

Copiright

Функции принадлежности для правила

Низкий приоритет критерия ()𝜇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 Приоритет сценария Высокий Y4 Низкий  5 Количество дефектов в модуле Много Y6 Мало  7 Время проведения сценария Быстро Y8 Долго    Лингвистическое имя функции Лингвистическое имя значения функции Степени истинности

правил1 Приоритет критерия Очень высокий 10 => 12 Высокий 2 => 0,053 Средний 1 => 0,014 Низкий 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: [email protected]

Skype: aljass251

Telegram: @jasonbe