Опубликован: 28.11.2007 | Уровень: специалист | Доступ: платный | ВУЗ: Национальный исследовательский ядерный университет «МИФИ»
Лекция 3:

Тестирование программного кода (тестовые примеры)

Аннотация: Лекция продолжает тематику тестирования программного кода, начатую в лекции 2. Лекция посвящена разработке тестовых примеров: определяются методы их создания, проводится классификация типов тестовых примеров, рассматривается тестирование робастности, определяются понятия классов эквивалентности, рассматриваются примеры тестирования компараторов. Цель данной лекции: дать знания, необходимые для самостоятельного анализа, разработки и модификации тестовых примеров на основе тест-требований

4.1. Тестовые примеры

Тестовое окружение, рассмотренное в предыдущей лекции, обеспечивает процесс тестирования необходимой инфраструктурой и поддерживает ее. Непосредственно для тестирования кроме тестового окружения необходимо определить проверочные задачи, которые будет выполнять система или ее часть. Такие проверочные задачи называют тестовыми примерами.

Как уже было сказано выше, каждый тестовый пример состоит из входных значений для системы, описания сценария работы примера и ожидаемых выходных значений. Цель выполнения любого тестового примера - либо продемонстрировать наличие в системе дефекта, либо доказать его отсутствие.

4.1.1. Тест-требования как основной источник информации для создания тестовых примеров

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

Функциональные требования описывают поведение системы как "черного ящика", т.е. исключительно с позиций того, что должна делать система в различных ситуациях. Иными словами, функциональные требования определяют реакцию системы на различные входные воздействия.

Например, функциональные требования на программный модуль, рассчитывающий и проверяющий контрольную сумму для записи, могут выглядеть следующим образом.

Функциональные требования на модуль расчета и проверки контрольной суммы

Внешний интерфейс модуля
   1.  Структура record_type
      struct record_type
      {
         bool A;
         int B[20];
         signed char C[5];
         unsigned int CRC;
         double D[1];
      }
   2.  Переменная Empty
      bool Empty;
   3.  Функция подсчета контрольной суммы записи Set_CRC
      void Set_CRC(record_type record);

       Вход:
        Запись record, c неопределенным значением поля CRC.
       Выход:
        Запись record, с вычисленным по заданным правилам значение поля CRC.
        Переменная Empty.

   4.  Функция проверки контрольной суммы записи Сheck_CRC
      bool Check_CRC(record_type record);

       Вход:
        Запись Rec_Mess c определенным значением поля CRC.
       Выход:
        Возвращаемое значение true или false. Переменная Empty.

Функциональные требования
   1.  Инициализация модуля
      При инициализации модуля переменная Empty должна быть установлена в значение TRUE.

   2.  Подсчет контрольной суммы записи
         a.  Расчет контрольной суммы
              Процедура Set_CRC должна производить подсчет контрольной суммы записи Rec_Mess по алгоритму CRC32. 
           При подсчете контрольной суммы значение поля CRC не должно участвовать в суммировании. На основании 
           произведенных расчетов должно быть вычислено и определено значение поля CRC таким образом, чтобы при 
           подсчете контрольной суммы вместе с установленным значением этого поля контрольная сумма равнялась нулю.

         b.  Установка значения переменной Empty
              Если все байты полей записи (кроме возможно CRC поля) имеют нулевое значение (код 00000000B), 
           то значение переменной Empty должно быть установлено в TRUE.
              Ели хотя бы один байт записи (исключая байты поля CRC) не нулевой, то значение переменной   
           Empty должно быть установлено в FALSE. 

   3.  Проверка контрольной суммы записи

         a.  Проверка контрольной суммы
              Процедура должна вычислять по заданному алгоритму CRC32 контрольную сумму записи Rec_Mess. 
           Возвращаемое процедурой значение должно быть равно TRUE, если подсчитанное значение равно нулю. 
           При ненулевом значении подсчитанной контрольной суммы должно возвращаться значение FALSE.

         b.  Установка значения переменной Empty
              Если все байты полей записи, включая значение CRC поля, имеют нулевое значение (код 00000000B), 
           то значение переменной Empty должно быть установлено в TRUE.
              Ели хотя бы один байт записи не нулевой, то значение переменной   Empty должно быть установлено в FALSE.
Пример 4.1.

Начальный этап работы тестировщика заключается в формировании тест-требований, соответствующих функциональным требованиям. Основная цель тест-требований - определить, какая функциональность системы должна быть протестирована. В самом простом случае одному функциональному требованию соответствует одно тест-требование. Однако чаще всего тест-требования детализируют формулировки функциональных требований.

Тест-требования определяют, что должно быть протестировано, но не определяют, как это должно быть сделано. Например, для перечисленных выше функциональных требований можно сформулировать следующие тест-требования.

Тест-требования

   1.  Проверка инициализация модуля
       Проверить, что начальное значение переменной Empty  установлено TRUE.

   2.  Проверка подсчета контрольной суммы

         a.  Проверить, что в процедуре Set_CRC вычисление контрольной суммы производится по правилам алгоритма CRC32, 
             как определено в секции 2a функциональных требований.
         b.  Проверить, что вычисленное значение контрольной суммы не зависит от начального значения поля CRC.
         c.  Проверить, что вычисленное значение контрольной суммы не зависит от значений байт выравнивания полей записи.
         d.  Проверить, что значение переменной Empty устанавливается при каждом вызове функции Set_CRC в зависимости от значений 
             полей записи, как определено в секции 2b функциональных требований.  

   3.  Проверка процедуры Check_CRC
 
         a.  Проверить, что при обращении к процедуре Check_CRC вычисление контрольной суммы производится по правилам 
             алгоритма CRC32, как определено в секции 3a функциональных требований.
         b.  Проверить, что возвращаемое значение равно TRUE, если контрольная сумма проверяемой записи правильная, 
             и FALSE - в противном случае.
         c.  Проверить, что проверка правильности  значения контрольной суммы не зависит от значений байт выравнивания 
             полей записи.
         d.  Проверить, что значение переменной Empty устанавливается при каждом вызове функции Check_CRC в зависимости 
             от значений полей записи, как определено в секции 3b функциональных требований.
Пример 4.2.

Особенности реализации тестового окружения и конкретные значения, подаваемые на вход системы и ожидаемые на ее выходе, определяются тестовыми примерами. Одному тест-требованию соответствует как минимум один тестовый пример.

Илья Макаренко
Илья Макаренко

Добрый день.

Вопрос №1

Какова стоимость получения диплома о мини-МБА по данному курсу? Или ориентироваться на указанную на сайте?

Вопрос №2

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

Александр Медов
Александр Медов

Здравствуйте, какова полная сумма предоставленной услуги с печатью документа и отправкой по почте?

Александр Толкач
Александр Толкач
Беларусь
А И
А И
Беларусь