Структурно тестване

  •  

    Структурно тестване. Планиране, управляващ и програмен граф. Изомолфизъм, методи: локален, минимално покритие, пълен структурен тест.  Методика на структурното тестване.

     

    Структурните тестове се провеждат върху основата на програмния текст. Целта е да се проследи изпълнението на програмния модул посредством комбинации от входни данни осигуряващи “преминаване” през всички оператори и цикли. Възможни са два подхода:

    - Тестване без да се нарушава целостта и автентичността на програмния текст, посредством трасиране на програмата, контрол и следене изменението на променливите, изпълнение на преходите, извикване на процедури, пораждане на обекти и др.

    - Тестване с предварителна корекция и изменение на програмния текст. Подходът включва: тестване на отделни части от модула, “блокиране” на преходи и условия, заменяне на процедури и т.н. Това позволява тестване на предварително определени части, но съществува възможност за допускане на нови грешки.

     

    Планиране на структурни тестове - свързано е със следните задачи:

    1.Формиране на целите.

    - Частичен тест по оператори: предизвиква се изпълнението на всеки оператор от програмния текст поне веднъж.

    - Частичен тест по условия:  изпълнението се свежда до получаването на всички възможни отговори на условията в програмния текст.

    - Пълен тест:  изпълнение на всички оператори, проверка на всички условия и изпълнение на циклите в програмния модул.

    2. Критерий за създаване на тестови маршрути. Маршрутът представлява “пътя” по който се изпълнява програмния модул.

    2.1. Формализация. Управляващите оператори се представят като върхове на граф, а линейните участъци като негови дъги.

    2.2. Критерий

    - Покриване на всички върхове и дъги на графа при минимално число на тестовите маршрути.(всички оператори и всички условия поне веднъж)

    - Минимално число на линейно-независими маршрути (цикломатично число). Тестването е без цикли.

    - Минимално число маршрути предизвикващи всички възможни комбинации от дъги. Приоритетно – маршрути с най-висока вероятност на допуснати грешки.

    3. Стратегия за изпълнение на тестовите последователности. Стратегията отчита приоритетно отделни функционални спецификации, проектни решения на информационната база, експлоатационни показатели и други условия. Вътрешната структура на модула представлява база за планиране на необходимите тестове.

    Стратегиите биват:

    - Стратегия отчитаща най-важните компоненти на модула. Това са най-вероятните участъци, участъци включвани в най-голям брой маршрути, части от програмния текст, където се формират условия за управление или се извършва самото управление, изчисления изискващи висока точност и др.

    - Стратегия, основаваща се на количеството проверявани условия. Първоначално -  най-сложните и най-дългите маршрути в програмния текст на модула, определени от комбинации на входните данни – предпоставка за откриване на най-голям брой грешки.

    - Стратегия на най-вероятните маршрути в програмния модул. Това зависи от функционалните спецификации и тяхното информационно осигуряване.

     

    Планирането включва:

    - Общо планиране на основните технологични фази: цели, стратегия, инструментални средства, състав и квалификация на тестващите изпълнители, вид и обем на документацията.

    - Планиране на необходимия брой изпълнители.

    - Планиране на използваните инструментални средства: за предварителна подготовка на програмния текст, за определяне на маршрутите, за подготовка на входните данни, за разработка на програмно осигуряване: програми за извикване, генератори на случайни числа, комбинатори, фиктивни модули, програми за регистрация и обработка на резултатите от проведените тестове.

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

    - Планиране на средствата и тяхного изразходване във времето за труд, за използване на  базови, основни и допълнителни инструментални средства, за документиране .

    - Планиране и разпределение на времето за тестване:

    = за откриване и локализиране на грешки,

    = за корекция и повторно тестване,

    = за документиране на направените корекции в програмния текст.

     

    Методи за провеждане на структурни тестове:

    1. Предварителна подготовка на програмния модул:

    - Отделяне на модула от текста на програмната система,

    - Анализиране на програмния текст и определяне  на:

    = структуроопределящите оператори,

    = входно - изходни оператори,

    = оператори от типа CALL

    - Формално “заменяне” на управляващите оператори с IF

    - Съставяне на управляващ граф на програмния модул по правилото: всеки IF представлява връх на граф, неговите THENи ELSEблокове – дъги. Т.к. дъгите свързват два върха, то се налага следното “дублиране” на текст:

     

     

     

     

     

     

     

     

     

     

    Цикъл с пост условие - дублирането на текста е само фиктивно. На практика това не е необходимо т.к. това може да доведе до допускане на нови грешки.