Перейти к содержимому

Фотография

Pict весит и не может построить таблицу

pict pairwise

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 24

#1 WindUp_Bird

WindUp_Bird

    Новый участник

  • Members
  • Pip
  • 13 сообщений
  • ФИО:Савченко Максим Андреевич

Отправлено 07 июня 2019 - 11:21

Прикрепил текст с условиями.

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

Прикрепленные файлы

  • Прикрепленный файл  test1.txt   5,34К   5 Количество загрузок:

  • 0

#2 WindUp_Bird

WindUp_Bird

    Новый участник

  • Members
  • Pip
  • 13 сообщений
  • ФИО:Савченко Максим Андреевич

Отправлено 07 июня 2019 - 11:22

Таблица делается для тестирования ролевой модели.


  • 0

#3 Spock

Spock

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 772 сообщений
  • ФИО:Роман

Отправлено 07 июня 2019 - 11:25

что-то много букв

 

попробуйте сначала максимально упростить всё и сгенерировать небольшую модель, потом понемногу усложняйте и каждый раз генерируйте

 

пока модель большая - непонятно где заламывается


  • 0

#4 user12

user12

    Специалист

  • Members
  • PipPipPipPipPip
  • 894 сообщений
  • ФИО:Виктор
  • Город:Минск


Отправлено 07 июня 2019 - 11:46

Она и заламывается от того, что данных очень много и модель получается огромная


  • 0

#5 WindUp_Bird

WindUp_Bird

    Новый участник

  • Members
  • Pip
  • 13 сообщений
  • ФИО:Савченко Максим Андреевич

Отправлено 07 июня 2019 - 12:15

что-то много букв

 

попробуйте сначала максимально упростить всё и сгенерировать небольшую модель, потом понемногу усложняйте и каждый раз генерируйте

 

пока модель большая - непонятно где заламывается

буду пробовать, спасибо


  • 0

#6 checo

checo

    Опытный участник

  • Members
  • PipPipPipPip
  • 400 сообщений
  • Город:Н.Новгород

Отправлено 07 июня 2019 - 12:56

Проверьте, если я ошибаюсь.

IF [Container] = "RTPT" THEN [TypeRT] = "listRT" OR [TypeRT] = "formRT" OR [TypeRT] = "operationRT";
IF [Container] = "RTPT" THEN [TypePT] = "listPT" OR [TypePT] = "operationPT";

Это означает, что валидно [Container] = "RTPT", [TypeRT] = "listRT", [TypePT] = "listPT".

 

Далее по модели:

IF [TypeRT] = "listRT" THEN [AccessTypeRT] = "RUD" OR [AccessTypeRT] = "RU" OR [AccessTypeRT] = "UD" OR [AccessTypeRT] = "R";
IF [TypeRT] = "listRT" THEN [AccessTypePT] = "0";

и:

IF [TypePT] = "listPT" THEN [AccessTypePT] = "RUD" OR [AccessTypePT] = "RU" OR [AccessTypePT] = "UD" OR [AccessTypePT] = "R";
IF [TypePT] = "listPT" THEN [AccessTypeRT] = "0";

Похоже на противоречие.

 

А чтобы PICT сам остановился и сказал, что не может построить таблицу, по такой модели он должен перебрать очень много комбинаций.


  • 0

#7 checo

checo

    Опытный участник

  • Members
  • PipPipPipPip
  • 400 сообщений
  • Город:Н.Новгород

Отправлено 07 июня 2019 - 13:08

Поправочка. Конечно, можно сказать, что пара [TypeRT] = "listRT" и [TypePT] = "listPT" будет невозможна по исходным данным.

Но не уверен, что PICT может выводить такое из зависимых условий. Может быть, ему надо указывать такие ограничения более явно.


  • 0

#8 WindUp_Bird

WindUp_Bird

    Новый участник

  • Members
  • Pip
  • 13 сообщений
  • ФИО:Савченко Максим Андреевич

Отправлено 07 июня 2019 - 14:01

 

Проверьте, если я ошибаюсь.

IF [Container] = "RTPT" THEN [TypeRT] = "listRT" OR [TypeRT] = "formRT" OR [TypeRT] = "operationRT";
IF [Container] = "RTPT" THEN [TypePT] = "listPT" OR [TypePT] = "operationPT";

Это означает, что валидно [Container] = "RTPT", [TypeRT] = "listRT", [TypePT] = "listPT".

 

Далее по модели:

IF [TypeRT] = "listRT" THEN [AccessTypeRT] = "RUD" OR [AccessTypeRT] = "RU" OR [AccessTypeRT] = "UD" OR [AccessTypeRT] = "R";
IF [TypeRT] = "listRT" THEN [AccessTypePT] = "0";

и:

IF [TypePT] = "listPT" THEN [AccessTypePT] = "RUD" OR [AccessTypePT] = "RU" OR [AccessTypePT] = "UD" OR [AccessTypePT] = "R";
IF [TypePT] = "listPT" THEN [AccessTypeRT] = "0";

Похоже на противоречие.

 

А чтобы PICT сам остановился и сказал, что не может построить таблицу, по такой модели он должен перебрать очень много комбинаций.

Отредактировал немного все, убрал противоречия:
 
Solution: Solution, 0
Container: RT, PT, AT, RTPTAT, RTPT
TypeRT: listRT, formRT, operationRT, listRTformRToperationRT,  0
TypePT: listPT, operationPT, listPToperationPT, 0
TypeAT: listAT, formAT, operationAT, listATformAToperationAT, 0
AccessSolution: F, R, CRUD, CRU, CRD, 0
AccessRT: F, R, CRUDE, CRUD, CRU, CR, RUDE, RUE, RUD, 0
AccessPT: F, R, CRUDE, CRUD, CRU, CR, RUDE, RUE, RUD, 0
AccessAT: F, R, CRUDE, CRUD, CRU, CR, RUDE, RUE, RUD, 0
AccessTypeRT: RUD, RU, R, 0
AccessTypePT: RUD, RU, R, 0
AccessTypeAT: RUD, RU, R, 0
 
IF [Solution] = "Solution" THEN [AccessSolution] = "F" OR [AccessSolution] = "R" OR [AccessSolution] = "CRUD" OR [AccessSolution] = "CRU" OR [AccessSolution] = "CRD";
IF [Solution] = "0" THEN [AccessSolution] = "0";
 
IF [Solution] = "Solution" THEN [TypeRT] = "0" OR [TypePT] = "0" OR [TypeAT] = "0";
IF [Container] = "RT" THEN [TypeRT] = "listRT" OR [TypeRT] = "formRT" OR [TypeRT] = "operationRT" OR [TypeRT] = "listRTformRToperationRT";
IF [Container] = "RT" THEN [TypeAT] = "0";
IF [Container] = "RT" THEN [TypePT] = "0";
IF [Container] = "AT" THEN [TypeAT] = "listAT" OR [TypeAT] = "formAT" OR [TypeAT] = "operationAT" OR [TypeAT] = "listATformAToperationAT";
IF [Container] = "AT" THEN [TypeRT] = "0";
IF [Container] = "AT" THEN [TypePT] = "0";
IF [Container] = "PT" THEN [TypePT] = "listPT" OR [TypePT] = "operationPT" OR [TypePT] = "listPToperationPT";
IF [Container] = "PT" THEN [TypeAT] = "0";
IF [Container] = "PT" THEN [TypeRT] = "0";
IF [Container] = "RTPTAT" THEN [TypeRT] = "listRT" OR [TypeRT] = "formRT" OR [TypeRT] = "operationRT" OR [TypeRT] = "listRTformRToperationRT";
IF [Container] = "RTPTAT" THEN [TypeAT] = "listATformAToperationAT";
IF [Container] = "RTPTAT" THEN [TypePT] = "listPToperationPT";
IF [Container] = "RTPTAT" THEN [TypeAT] = "listAT" OR [TypeAT] = "formAT" OR [TypeAT] = "operationAT" OR [TypeAT] = "listATformAToperationAT";
IF [Container] = "RTPTAT" THEN [TypeRT] = "listRTformRToperationRT";
IF [Container] = "RTPTAT" THEN [TypePT] = "listPToperationPT"; 
IF [Container] = "RTPTAT" THEN [TypePT] = "listPT" OR [TypePT] = "operationPT" OR [TypePT] = "listPToperationPT";
IF [Container] = "RTPTAT" THEN [TypeRT] = "listRTformRToperationRT";
IF [Container] = "RTPTAT" THEN [TypeAT] = "listATformAToperationAT"; 
IF [Container] = "RTPT" THEN [TypeRT] = "listRT" OR [TypeRT] = "formRT" OR [TypeRT] = "operationRT";
IF [Container] = "RTPT" THEN [TypePT] = "listPT" OR [TypePT] = "operationPT";
IF [Container] = "RTPT" THEN [TypeAT] = "0";
 
IF [TypeRT] = "listRT" THEN [AccessTypeRT] = "RUD" OR [AccessTypeRT] = "RU" OR [AccessTypeRT] = "R";
IF [TypeRT] = "listRT" THEN [AccessTypePT] = "0";
IF [TypeRT] = "listRT" THEN [AccessTypeAT] = "0";
IF [TypeRT] = "formRT" THEN [AccessTypeRT] = "RUD" OR [AccessTypeRT] = "RU" OR [AccessTypeRT] = "R";
IF [TypeRT] = "formRT" THEN [AccessTypePT] = "0";
IF [TypeRT] = "formRT" THEN [AccessTypeAT] = "0";
IF [TypeRT] = "operationRT" THEN [AccessTypeRT] = "RUD" OR [AccessTypeRT] = "RU" OR [AccessTypeRT] = "R";
IF [TypeRT] = "operationRT" THEN [AccessTypePT] = "0";
IF [TypeRT] = "operationRT" THEN [AccessTypeAT] = "0";
IF [TypeRT] = "listRTformRToperationRT" THEN [AccessTypeRT] = "RUD" OR [AccessTypeRT] = "RU" OR [AccessTypeRT] = "R";
IF [TypeRT] = "listRTformRToperationRT" THEN [AccessTypePT] = "0";
IF [TypeRT] = "listRTformRToperationRT" THEN [AccessTypeAT] = "0";
 
IF [TypePT] = "listPT" THEN [AccessTypePT] = "RUD" OR [AccessTypePT] = "RU" OR [AccessTypePT] = "R";
IF [TypePT] = "listPT" THEN [AccessTypeRT] = "0";
IF [TypePT] = "listPT" THEN [AccessTypeAT] = "0";
IF [TypePT] = "operationPT" THEN [AccessTypePT] = "RUD" OR [AccessTypePT] = "RU" OR [AccessTypePT] = "R";
IF [TypePT] = "operationPT" THEN [AccessTypeRT] = "0";
IF [TypePT] = "operationPT" THEN [AccessTypeAT] = "0";
IF [TypePT] = "listPToperationPT" THEN [AccessTypePT] = "RUD" OR [AccessTypePT] = "RU" OR [AccessTypePT] = "R";
IF [TypePT] = "listPToperationPT" THEN [AccessTypeRT] = "0";
IF [TypePT] = "listPToperationPT" THEN [AccessTypeAT] = "0";
 
IF [TypeAT] = "listAT" THEN [AccessTypeAT] = "RUD" OR [AccessTypeAT] = "RU" OR [AccessTypeAT] = "R";
IF [TypeAT] = "listAT" THEN [AccessTypeRT] = "0";
IF [TypeAT] = "listAT" THEN [AccessTypePT] = "0";
IF [TypeAT] = "formAT" THEN [AccessTypeAT] = "RUD" OR [AccessTypeAT] = "RU" OR [AccessTypeAT] = "R";
IF [TypeAT] = "formAT" THEN [AccessTypeRT] = "0";
IF [TypeAT] = "formAT" THEN [AccessTypePT] = "0";
IF [TypeAT] = "operationAT" THEN [AccessTypeAT] = "RUD" OR [AccessTypeAT] = "RU" OR [AccessTypeAT] = "R";
IF [TypeAT] = "operationAT" THEN [AccessTypeRT] = "0";
IF [TypeAT] = "operationAT" THEN [AccessTypePT] = "0";
IF [TypeAT] = "listATformAToperationAT" THEN [AccessTypeAT] = "RUD" OR [AccessTypeAT] = "RU" OR [AccessTypeAT] = "R";
IF [TypeAT] = "listATformAToperationAT" THEN [AccessTypeRT] = "0";
IF [TypeAT] = "listATformAToperationAT" THEN [AccessTypePT] = "0";
 
 
Как только вставляем это, то высчитать не получается: 
 
IF [Container] = "RT" THEN [AccessRT] = "F" OR [AccessRT] = "R" OR [AccessRT] = "CRUDE" OR [AccessRT] = "CRUD" OR [AccessRT] = "CRU" OR [AccessRT] = "CR" OR [AccessRT] = "RUDE" OR [AccessRT] = "RUE" OR [AccessRT] = "RUD";
IF [Container] = "RT" THEN [AccessPT] = "0";
IF [Container] = "RT" THEN [AccessAT] = "0";
IF [Container] = "PT" THEN [AccessPT] = "F" OR [AccessPT] = "R" OR [AccessPT] = "CRUDE" OR [AccessPT] = "CRUD" OR [AccessPT] = "CRU" OR [AccessPT] = "CR" OR [AccessPT] = "RUDE" OR [AccessPT] = "RUE" OR [AccessPT] = "RUD";
IF [Container] = "PT" THEN [AccessRT] = "0";
IF [Container] = "PT" THEN [AccessAT] = "0";
IF [Container] = "AT" THEN [AccessAT] = "F" OR [AccessAT] = "R" OR [AccessAT] = "CRUDE" OR [AccessAT] = "CRUD" OR [AccessAT] = "CRU" OR [AccessAT] = "CR" OR [AccessAT] = "RUDE" OR [AccessAT] = "RUE" OR [AccessAT] = "RUD";
IF [Container] = "AT" THEN [AccessRT] = "0";
IF [Container] = "AT" THEN [AccessPT] = "0";
 
 
Или даже если сократить: 
 
IF [Container] = "RT" THEN [AccessPT] = "0";
IF [Container] = "RT" THEN [AccessAT] = "0";
IF [Container] = "PT" THEN [AccessRT] = "0";
IF [Container] = "PT" THEN [AccessAT] = "0";
IF [Container] = "AT" THEN [AccessRT] = "0";
IF [Container] = "AT" THEN [AccessPT] = "0";
 

 

 
 

  • 0

#9 Spock

Spock

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 772 сообщений
  • ФИО:Роман

Отправлено 07 июня 2019 - 14:10

можете скомпилировать и отдебажить где тул виснет

 

хотя может быть код сложный и непонятно будет

 

https://github.com/microsoft/pict


  • 0

#10 WindUp_Bird

WindUp_Bird

    Новый участник

  • Members
  • Pip
  • 13 сообщений
  • ФИО:Савченко Максим Андреевич

Отправлено 07 июня 2019 - 14:23

Я принял волевое решение и оставил один Access. Но все равно игнорируются RTPT и RTPTAT:

 

Solution: Solution, 0
Container: RT, PT, AT, RTPTAT, RTPT
TypeRT: listRT, formRT, operationRT, listRTformRToperationRT,  0
TypePT: listPT, operationPT, listPToperationPT, 0
TypeAT: listAT, formAT, operationAT, listATformAToperationAT, 0
AccessSolution: F, R, CRUD, CRU, CRD, 0
Access: F, R, CRUDE, CRUD, CRU, CR, RUDE, RUE, RUD, 0
AccessTypeRT: RUD, RU, R, 0
AccessTypePT: RUD, RU, R, 0
AccessTypeAT: RUD, RU, R, 0
 
IF [Solution] = "Solution" THEN [AccessSolution] = "F" OR [AccessSolution] = "R" OR [AccessSolution] = "CRUD" OR [AccessSolution] = "CRU" OR [AccessSolution] = "CRD";
IF [Solution] = "0" THEN [AccessSolution] = "0";
 
IF [Solution] = "Solution" THEN [TypeRT] = "0" OR [TypePT] = "0" OR [TypeAT] = "0";
IF [Container] = "RT" THEN [TypeRT] = "listRT" OR [TypeRT] = "formRT" OR [TypeRT] = "operationRT" OR [TypeRT] = "listRTformRToperationRT";
IF [Container] = "RT" THEN [TypeAT] = "0";
IF [Container] = "RT" THEN [TypePT] = "0";
IF [Container] = "AT" THEN [TypeAT] = "listAT" OR [TypeAT] = "formAT" OR [TypeAT] = "operationAT" OR [TypeAT] = "listATformAToperationAT";
IF [Container] = "AT" THEN [TypeRT] = "0";
IF [Container] = "AT" THEN [TypePT] = "0";
IF [Container] = "PT" THEN [TypePT] = "listPT" OR [TypePT] = "operationPT" OR [TypePT] = "listPToperationPT";
IF [Container] = "PT" THEN [TypeAT] = "0";
IF [Container] = "PT" THEN [TypeRT] = "0";
IF [Container] = "RTPTAT" THEN [TypeRT] = "listRT" OR [TypeRT] = "formRT" OR [TypeRT] = "operationRT" OR [TypeRT] = "listRTformRToperationRT";
IF [Container] = "RTPTAT" THEN [TypeAT] = "listATformAToperationAT";
IF [Container] = "RTPTAT" THEN [TypePT] = "listPToperationPT";
IF [Container] = "RTPTAT" THEN [TypeAT] = "listAT" OR [TypeAT] = "formAT" OR [TypeAT] = "operationAT" OR [TypeAT] = "listATformAToperationAT";
IF [Container] = "RTPTAT" THEN [TypeRT] = "listRTformRToperationRT";
IF [Container] = "RTPTAT" THEN [TypePT] = "listPToperationPT"; 
IF [Container] = "RTPTAT" THEN [TypePT] = "listPT" OR [TypePT] = "operationPT" OR [TypePT] = "listPToperationPT";
IF [Container] = "RTPTAT" THEN [TypeRT] = "listRTformRToperationRT";
IF [Container] = "RTPTAT" THEN [TypeAT] = "listATformAToperationAT"; 
IF [Container] = "RTPT" THEN [TypeRT] = "listRT" OR [TypeRT] = "formRT" OR [TypeRT] = "operationRT";
IF [Container] = "RTPT" THEN [TypePT] = "listPT" OR [TypePT] = "operationPT";
IF [Container] = "RTPT" THEN [TypeAT] = "0";
 
IF [TypeRT] = "listRT" THEN [AccessTypeRT] = "RUD" OR [AccessTypeRT] = "RU" OR [AccessTypeRT] = "R";
IF [TypeRT] = "listRT" THEN [AccessTypePT] = "0";
IF [TypeRT] = "listRT" THEN [AccessTypeAT] = "0";
IF [TypeRT] = "formRT" THEN [AccessTypeRT] = "RUD" OR [AccessTypeRT] = "RU" OR [AccessTypeRT] = "R";
IF [TypeRT] = "formRT" THEN [AccessTypePT] = "0";
IF [TypeRT] = "formRT" THEN [AccessTypeAT] = "0";
IF [TypeRT] = "operationRT" THEN [AccessTypeRT] = "RUD" OR [AccessTypeRT] = "RU" OR [AccessTypeRT] = "R";
IF [TypeRT] = "operationRT" THEN [AccessTypePT] = "0";
IF [TypeRT] = "operationRT" THEN [AccessTypeAT] = "0";
IF [TypeRT] = "listRTformRToperationRT" THEN [AccessTypeRT] = "RUD" OR [AccessTypeRT] = "RU" OR [AccessTypeRT] = "R";
IF [TypeRT] = "listRTformRToperationRT" THEN [AccessTypePT] = "0";
IF [TypeRT] = "listRTformRToperationRT" THEN [AccessTypeAT] = "0";
 
IF [TypePT] = "listPT" THEN [AccessTypePT] = "RUD" OR [AccessTypePT] = "RU" OR [AccessTypePT] = "R";
IF [TypePT] = "listPT" THEN [AccessTypeRT] = "0";
IF [TypePT] = "listPT" THEN [AccessTypeAT] = "0";
IF [TypePT] = "operationPT" THEN [AccessTypePT] = "RUD" OR [AccessTypePT] = "RU" OR [AccessTypePT] = "R";
IF [TypePT] = "operationPT" THEN [AccessTypeRT] = "0";
IF [TypePT] = "operationPT" THEN [AccessTypeAT] = "0";
IF [TypePT] = "listPToperationPT" THEN [AccessTypePT] = "RUD" OR [AccessTypePT] = "RU" OR [AccessTypePT] = "R";
IF [TypePT] = "listPToperationPT" THEN [AccessTypeRT] = "0";
IF [TypePT] = "listPToperationPT" THEN [AccessTypeAT] = "0";
 
IF [TypeAT] = "listAT" THEN [AccessTypeAT] = "RUD" OR [AccessTypeAT] = "RU" OR [AccessTypeAT] = "R";
IF [TypeAT] = "listAT" THEN [AccessTypeRT] = "0";
IF [TypeAT] = "listAT" THEN [AccessTypePT] = "0";
IF [TypeAT] = "formAT" THEN [AccessTypeAT] = "RUD" OR [AccessTypeAT] = "RU" OR [AccessTypeAT] = "R";
IF [TypeAT] = "formAT" THEN [AccessTypeRT] = "0";
IF [TypeAT] = "formAT" THEN [AccessTypePT] = "0";
IF [TypeAT] = "operationAT" THEN [AccessTypeAT] = "RUD" OR [AccessTypeAT] = "RU" OR [AccessTypeAT] = "R";
IF [TypeAT] = "operationAT" THEN [AccessTypeRT] = "0";
IF [TypeAT] = "operationAT" THEN [AccessTypePT] = "0";
IF [TypeAT] = "listATformAToperationAT" THEN [AccessTypeAT] = "RUD" OR [AccessTypeAT] = "RU" OR [AccessTypeAT] = "R";
IF [TypeAT] = "listATformAToperationAT" THEN [AccessTypeRT] = "0";
IF [TypeAT] = "listATformAToperationAT" THEN [AccessTypePT] = "0";

  • 0

#11 checo

checo

    Опытный участник

  • Members
  • PipPipPipPip
  • 400 сообщений
  • Город:Н.Новгород

Отправлено 07 июня 2019 - 15:03

Я не знаю исходных требований, поэтому подсказывать сложно.

Но последний вариант уже несовместим с первым.

И в последнем вообще запутались, например, "IF [Container] = "RTPTAT" THEN [TypeRT] = ..." определено 2 раза по-разному, да и не только это.


  • 0

#12 Spock

Spock

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 772 сообщений
  • ФИО:Роман

Отправлено 07 июня 2019 - 15:05

выглядит это супер-сложно, а действительно ли оно надо?

 

может можно как-то по-другому кейсы покрыть? может юнит-тестами?


  • 0

#13 WindUp_Bird

WindUp_Bird

    Новый участник

  • Members
  • Pip
  • 13 сообщений
  • ФИО:Савченко Максим Андреевич

Отправлено 07 июня 2019 - 16:06

выглядит это супер-сложно, а действительно ли оно надо?

 

может можно как-то по-другому кейсы покрыть? может юнит-тестами?

нет, это ролевая модель, нужно все наглядно наблюдать


  • 0

#14 WindUp_Bird

WindUp_Bird

    Новый участник

  • Members
  • Pip
  • 13 сообщений
  • ФИО:Савченко Максим Андреевич

Отправлено 07 июня 2019 - 16:08

Я не знаю исходных требований, поэтому подсказывать сложно.

Но последний вариант уже несовместим с первым.

И в последнем вообще запутались, например, "IF [Container] = "RTPTAT" THEN [TypeRT] = ..." определено 2 раза по-разному, да и не только это.

не понял, в чем ошибка


  • 0

#15 Spock

Spock

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 772 сообщений
  • ФИО:Роман

Отправлено 07 июня 2019 - 16:19

 

 

нет, это ролевая модель, нужно все наглядно наблюдать

если это роли, то какой смысл вообще в пэйрвайз?

 

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


  • 0

#16 WindUp_Bird

WindUp_Bird

    Новый участник

  • Members
  • Pip
  • 13 сообщений
  • ФИО:Савченко Максим Андреевич

Отправлено 07 июня 2019 - 16:37

 

 

 

нет, это ролевая модель, нужно все наглядно наблюдать

если это роли, то какой смысл вообще в пэйрвайз?

 

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

 

Комбинации настроек ролей очень обширные. Я итак исключил редкие кейсы, типа создания объекта без чтения на него.


  • 0

#17 Spock

Spock

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 772 сообщений
  • ФИО:Роман

Отправлено 07 июня 2019 - 17:00

 

 

Комбинации настроек ролей очень обширные. Я итак исключил редкие кейсы, типа создания объекта без чтения на него.

в Джире например тоже куча настроек ролей. Но для их тестирования никакой пэйрвайз был бы не нужен

 

отдельно проверяется кто может создать тикет, отдельно проверяется кто может редактировать тикет

 

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

 

комбинации нужны когда сущности связаны, например принтер и операционная система

 

но когда сущности не связаны - тогда и таблицы не нужны. одна роль должна работать совершенно независимо от других ролей


  • 0

#18 WindUp_Bird

WindUp_Bird

    Новый участник

  • Members
  • Pip
  • 13 сообщений
  • ФИО:Савченко Максим Андреевич

Отправлено 09 июня 2019 - 20:51

 

 

 

Комбинации настроек ролей очень обширные. Я итак исключил редкие кейсы, типа создания объекта без чтения на него.

в Джире например тоже куча настроек ролей. Но для их тестирования никакой пэйрвайз был бы не нужен

 

отдельно проверяется кто может создать тикет, отдельно проверяется кто может редактировать тикет

 

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

 

комбинации нужны когда сущности связаны, например принтер и операционная система

 

но когда сущности не связаны - тогда и таблицы не нужны. одна роль должна работать совершенно независимо от других ролей

 

У нас много клиентов, которые придумывают очередные упоротые кейсы. У нас что-то типа джиры, только свое с BPMN


  • 0

#19 Spock

Spock

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 772 сообщений
  • ФИО:Роман

Отправлено 09 июня 2019 - 20:59

 

 

У нас много клиентов, которые придумывают очередные упоротые кейсы. У нас что-то типа джиры, только свое с BPMN

ну и пусть клиенты придумывают, Вам то что? это независимые ведь комбинации, то есть пэйрвайз неприменим

 

если например надо протестировать 3 разрешения, на создание тикетов, на редактирование, и на удаление. Вопрос: сколько надо кейсов, и надо ли использовать пейрвайз?

 

Ответ: надо 6 кейсов, по 2 на разрешение, 0 и 1 для каждого

 

Но можно упарываться и создавать пейрвайз кейсы, и будет там что-то типа: "пользователь имеет разрешение на редактирование + на удаление" и тому подобное

 

если туда добавить еще штук так 10 разрешений - это вообще трэш начнется


  • 0

#20 WindUp_Bird

WindUp_Bird

    Новый участник

  • Members
  • Pip
  • 13 сообщений
  • ФИО:Савченко Максим Андреевич

Отправлено 10 июня 2019 - 11:21

Не пойму в чем противоречие здесь? Почему не выводит RTPT, RTPTAT. И как это исправить
 
Solution: Solution, 0
Container: RT, PT, AT, RTPTAT, RTPT
TypeRT: listRT, formRT, operationRT, listRTformRToperationRT,  0
TypePT: listPT, operationPT, listPToperationPT, 0
TypeAT: listAT, formAT, operationAT, listATformAToperationAT, 0
AccessSolution: F, R, CRUD, CRU, CRD, 0
Access: F, R, CRUDE, CRUD, CRU, CR, RUDE, RUE, RUD, 0
AccessTypeRT: RUD, RU, R, 0
AccessTypePT: RUD, RU, R, 0
AccessTypeAT: RUD, RU, R, 0
 
IF [Solution] = "Solution" THEN [AccessSolution] = "F" OR [AccessSolution] = "R" OR [AccessSolution] = "CRUD" OR [AccessSolution] = "CRU" OR [AccessSolution] = "CRD";
IF [Solution] = "0" THEN [AccessSolution] = "0";
 
IF [Solution] = "Solution" THEN [TypeRT] = "0" OR [TypePT] = "0" OR [TypeAT] = "0";
 
IF [Container] = "RT" THEN [TypeRT] = "listRT" OR [TypeRT] = "formRT" OR [TypeRT] = "operationRT" OR [TypeRT] = "listRTformRToperationRT";
IF [Container] = "RT" THEN [TypeAT] = "0";
IF [Container] = "RT" THEN [TypePT] = "0";
IF [Container] = "AT" THEN [TypeAT] = "listAT" OR [TypeAT] = "formAT" OR [TypeAT] = "operationAT" OR [TypeAT] = "listATformAToperationAT";
IF [Container] = "AT" THEN [TypeRT] = "0";
IF [Container] = "AT" THEN [TypePT] = "0";
IF [Container] = "PT" THEN [TypePT] = "listPT" OR [TypePT] = "operationPT" OR [TypePT] = "listPToperationPT";
IF [Container] = "PT" THEN [TypeAT] = "0";
IF [Container] = "PT" THEN [TypeRT] = "0";
IF [Container] = "RTPTAT" THEN [TypeRT] = "listRT" OR [TypeRT] = "formRT" OR [TypeRT] = "operationRT" OR [TypeRT] = "listRTformRToperationRT";
IF [Container] = "RTPTAT" THEN [TypeAT] = "listAT" OR [TypeAT] = "formAT" OR [TypeAT] = "operationAT" OR [TypeAT] = "listATformAToperationAT";
IF [Container] = "RTPTAT" THEN [TypePT] = "listPT" OR [TypePT] = "operationPT" OR [TypePT] = "listPToperationPT";
IF [Container] = "RTPT" THEN [TypeRT] = "listRT" OR [TypeRT] = "formRT" OR [TypeRT] = "operationRT" OR [TypeRT] = "listRTformRToperationRT";
IF [Container] = "RTPT" THEN [TypePT] = "listPT" OR [TypePT] = "operationPT" OR [TypePT] = "listPToperationPT";
IF [Container] = "RTPT" THEN [TypeAT] = "0";
 
IF [TypeRT] = "listRT" THEN [AccessTypeRT] = "RUD" OR [AccessTypeRT] = "RU" OR [AccessTypeRT] = "R";
IF [TypeRT] = "listRT" THEN [AccessTypePT] = "0";
IF [TypeRT] = "listRT" THEN [AccessTypeAT] = "0";
IF [TypeRT] = "formRT" THEN [AccessTypeRT] = "RUD" OR [AccessTypeRT] = "RU" OR [AccessTypeRT] = "R";
IF [TypeRT] = "formRT" THEN [AccessTypePT] = "0";
IF [TypeRT] = "formRT" THEN [AccessTypeAT] = "0";
IF [TypeRT] = "operationRT" THEN [AccessTypeRT] = "RUD" OR [AccessTypeRT] = "RU" OR [AccessTypeRT] = "R";
IF [TypeRT] = "operationRT" THEN [AccessTypePT] = "0";
IF [TypeRT] = "operationRT" THEN [AccessTypeAT] = "0";
IF [TypeRT] = "listRTformRToperationRT" THEN [AccessTypeRT] = "RUD" OR [AccessTypeRT] = "RU" OR [AccessTypeRT] = "R";
IF [TypeRT] = "listRTformRToperationRT" THEN [AccessTypePT] = "0";
IF [TypeRT] = "listRTformRToperationRT" THEN [AccessTypeAT] = "0";
 
IF [TypePT] = "listPT" THEN [AccessTypePT] = "RUD" OR [AccessTypePT] = "RU" OR [AccessTypePT] = "R";
IF [TypePT] = "listPT" THEN [AccessTypeRT] = "0";
IF [TypePT] = "listPT" THEN [AccessTypeAT] = "0";
IF [TypePT] = "operationPT" THEN [AccessTypePT] = "RUD" OR [AccessTypePT] = "RU" OR [AccessTypePT] = "R";
IF [TypePT] = "operationPT" THEN [AccessTypeRT] = "0";
IF [TypePT] = "operationPT" THEN [AccessTypeAT] = "0";
IF [TypePT] = "listPToperationPT" THEN [AccessTypePT] = "RUD" OR [AccessTypePT] = "RU" OR [AccessTypePT] = "R";
IF [TypePT] = "listPToperationPT" THEN [AccessTypeRT] = "0";
IF [TypePT] = "listPToperationPT" THEN [AccessTypeAT] = "0";
 
IF [TypeAT] = "listAT" THEN [AccessTypeAT] = "RUD" OR [AccessTypeAT] = "RU" OR [AccessTypeAT] = "R";
IF [TypeAT] = "listAT" THEN [AccessTypeRT] = "0";
IF [TypeAT] = "listAT" THEN [AccessTypePT] = "0";
IF [TypeAT] = "formAT" THEN [AccessTypeAT] = "RUD" OR [AccessTypeAT] = "RU" OR [AccessTypeAT] = "R";
IF [TypeAT] = "formAT" THEN [AccessTypeRT] = "0";
IF [TypeAT] = "formAT" THEN [AccessTypePT] = "0";
IF [TypeAT] = "operationAT" THEN [AccessTypeAT] = "RUD" OR [AccessTypeAT] = "RU" OR [AccessTypeAT] = "R";
IF [TypeAT] = "operationAT" THEN [AccessTypeRT] = "0";
IF [TypeAT] = "operationAT" THEN [AccessTypePT] = "0";
IF [TypeAT] = "listATformAToperationAT" THEN [AccessTypeAT] = "RUD" OR [AccessTypeAT] = "RU" OR [AccessTypeAT] = "R";
IF [TypeAT] = "listATformAToperationAT" THEN [AccessTypeRT] = "0";
IF [TypeAT] = "listATformAToperationAT" THEN [AccessTypePT] = "0";

  • 0


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных