Читать в оригинале

<< ПредыдущаяОглавлениеСледующая >>


3.3.2. Иерархическая модель программы

Представим тот же пример компонента программы в виде иерархической модели.

// Пример иерархической модели проекта
public void G1() {
         int CommandStatus=0;
         AddCommand();
         switch (CommandStatus) {
         case 12 :
            GetMessage();
            ClearQueue();
            break;
         case 17 :
            ClearQueue();
            break;
         case 18 :
            DumpQueue();
            break;
         }
         ProcessCommand();
         Commit();
}
public void G2() {
         bool CommandFound=true;
         SearchValidCommand();
         if (CommandFound) {
            AnalyzeCommand();
         }
         else {
            LogError();
         }
         MoveNextCommand();
}
public void G() {
         int TerminalStatus=0;
         bool IsPresent=true;
1       Init();
2       switch (TerminalStatus) {
         case 11 :
8          G1();
            break;
         case 3 :
3          AskTerminal();
4          if (IsPresent) {
5                      Connect();
            }
6          RebuildQueue();
            break;
         case 19 :
9          G2();
            break;
         }
7       LogResults();
10     DisposeAll();
}

Рис. 13. Иерархическая модель УГП компонента G

УГП компонента G, представленный в виде иерархической модели, приведен на рисунке (Рис. 13). В иерархическом УГП G входящие в его состав компоненты представлены ссылками на свои УГП G1 и G2 (Рис. 14).

Для исчерпывающего тестирования иерархической модели компонента G в соответствии с критерием путей требуется прогнать следующий набор трасс:

P1(G) = 1-2-3-4-5-6-7-10;
P2(G) = 1-2-3-4-6-7-10;
P3(G) = 1-2-8-7-10;
P4(G) = 1-2-9-7-10.

Приведенный набор трасс достаточен при условии, что компоненты G1 и G2 в свою очередь исчерпывающе протестированы. Чтобы обеспечить выполнение этого условия в соответствии с критерием путей, надо прогнать все трассы:

P11(G1)=11-16-12-13-14-15;                    P21(G2)=19-20-21-22.
P12(G1)=11-16-17-14-15.                          P22(G2)=11-16-18-17-14-15
P13(G1)=19-20-23-22.

Рис. 14. Иерархическая модель: УГП компонент G1 и G2

Оценка тестированности иерархической модели определяется на основе учета оценок тестированности компонентов. Если трасса некоторого теста tj УГП G включает узлы, представляющие компоненты Gj1,..Gjm, оценка TV степени тестированности которых известна, то оценка тестированности PTi(G) при реализации этой трассы определяется не как 1, а как минимальная из оценок TV для компонентов.

Интегральная оценка определяется соотношением (3.3-2):

(3.3-2)        TV(G,Q = (V-DV)/V = (ΣPTi(G) * Σ(TV(Gij,C))) / (ΣPi(G)),

где PTi(G) - тестовый путь (ti) в графе G равен 1, если протестирован, или 0, если нет. В путь PTi графа G может входить j узлов модулей Gij со своей степенью тестированности TV(Gij,C) из которых берется минимальный, что дает худшую оценку степени тестированности пути.

Например, для УГП (Рис. 13) предположим, что результаты оценки тестированности компонент дали для G1 величину 0.66 (трассы Р11 и Р12 были успешно прогнаны, а трасса Р13 не прошла из-за ошибки), а для G2 величину 0.5 (трасса Р22 прошла, а Р21 нет) (Рис. 14). Тогда интегральная оценка тестированности графа G при успешном прогоне трасс P1, P2, P3, P4 в соответствии с (3.32) составит:

TV(G,C) = (1+1+1*0.66+1*0.5)/(1+1+1+1) = 0.79.

Интегральная оценка оттестированности программного проекта позволяет отслеживать качество или отлаженность программной компоненты или проекта. Это важная метрика качества (безошибочности) программного продукта.

 



<< ПредыдущаяОглавлениеСледующая >>