Национальный исследовательский ядерный университет «МИФИ»
Опубликован: 28.11.2007 | Доступ: свободный | Студентов: 5145 / 801 | Оценка: 4.53 / 3.65 | Длительность: 22:18:00
ISBN: 978-5-94774-825-3
Специальности: Программист, Тестировщик
Лекция 5:

Повторяемость тестирования

8.2. Предусловия для выполнения теста, настройка тестового окружения, оптимизация последовательностей тестовых примеров

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

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

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

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

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

Например, рассмотрим программную систему, которая может стартовать двумя различными способами - с настройками по умолчанию после включения (режим FACTORY_SETTINGS ) и с последними сохраненными настройками после перезагрузки (режим COLD_START ). При этом при старте в режиме FACTORY_SETTINGS значения по умолчанию присваиваются всем настройкам системы, а после перезагрузки (режим COLD_START ) все настройки остаются в значениях, установленных непосредственно перед перезагрузкой.

Для проверки следующих требований:

  1. Проверить, что после включения системы настройки устанавливаются в значения по умолчанию.
  2. Проверить, что после перезагрузки системы настройки устанавливаются в последнее сохраненное значение.

необходимы как минимум три тестовых примера со следующими сценариями:

Тестовый пример 1
   1.  Включить систему в режиме FACTORY_SETTINGS.
   2.  Проверить, что настройки имеют значения по умолчанию 
     (в реальном тест-плане здесь должны быть проверки 
      конкретных значений переменных).
Тестовый пример 2
   1.  Включить систему в режиме FACTORY_SETTINGS.
   2.  Перезагрузить систему (вызвать ее старт в режиме COLD_START).
   3.  Проверить, что настройки имеют значения по умолчанию
     (в реальном тест-плане здесь должны быть проверки 
      конкретных значений переменных).
Тестовый пример 3
   1.  Включить систему в режиме FACTORY_SETTINGS.
   2.  Изменить значения настроек системы (в реальном тест-плане 
       здесь должны быть установлены конкретные значения переменных).
   3.  Перезагрузить систему (вызвать ее старт в режиме COLD_START).
   4.  Проверить, что настройки имеют последние введенные значения
     (в реальном тест-плане здесь должны быть проверки 
      конкретных значений переменных).

Первый пункт сценария во всех трех тестовых примерах одинаков. Если при этом первоначальный старт системы в режиме FACTORY_SETTINGS занимает значительное время, то суммарное время выполнения трех тестовых примеров будет еще больше. Если общее количество подобных тестовых примеров достаточно велико (десятки и сотни), то при таком выполнении тестов будет нерационально расходоваться время на выполнение тестовых примеров - время на инициализацию системы в каждом тестовом примере будет превышать суммарное время выполнения "полезных" этапов сценариев тестовых примеров.

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

Тестовый пример 1
   1.  Включить систему в режиме FACTORY_SETTINGS
   2.  Проверить, что настройки имеют значения по умолчанию 
     (в реальном тест-плане здесь должны быть проверки 
      конкретных значений переменных).
Тестовый пример 2
   1.  Перезагрузить систему (вызвать ее старт в режиме COLD_START)
   2.  Проверить, что настройки имеют значения по умолчанию 
     (в реальном тест-плане здесь должны быть проверки 
      конкретных значений переменных).
Тестовый пример 3
   1.  Изменить значения настроек системы
   2.  Перезагрузить систему (вызвать ее старт в режиме COLD_START)
   3.  Проверить, что настройки имеют последние введенные значения 
     (в реальном тест-плане здесь должны быть проверки 
      конкретных значений переменных).

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

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

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

Чтобы диагностировать такие ситуации, в состав предусловий тестовых примеров 2 и 3 необходимо включать проверки того, что к моменту выполнения тестового примера система находится в необходимом состоянии. Первый тестовый пример при этом может выставлять некоторый флаг (переменную в тестовом окружении), установленное значение которого будет сигнализировать о том, что система корректно стартовала

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

Первоначальные установки тестового окружения
   Установить значение флага Флаг_Система_Стартовала = FALSE
Тестовый пример 1
   1.  Включить систему в режиме FACTORY_SETTINGS
   2.  Установить значение флага Флаг_Система_Стартовала = TRUE 
   3.  Проверить, что настройки имеют значения по умолчанию 
     (в реальном тест-плане здесь должны быть проверки 
      конкретных значений переменных).
Тестовый пример 2
   1.  Проверить, что флаг Флаг_Система_Стартовала = TRUE, иначе 
       прервать тестирование с выдачей диагностического сообщения
   2.  Перезагрузить систему (вызвать ее старт в режиме COLD_START)
   3.  Проверить, что настройки имеют значения по умолчанию 
     (в реальном тест-плане здесь должны быть проверки 
      конкретных значений переменных).
Тестовый пример 3
   1.  Проверить, что флаг Флаг_Система_Стартовала = TRUE, иначе 
        прервать тестирование с выдачей диагностического сообщения
   2.  Изменить значения настроек системы (в реальном тест-плане здесь 
       должны быть установлены конкретные значения переменных)
   3.  Перезагрузить систему (вызвать ее старт в режиме COLD_START)
   4.  Проверить, что настройки имеют последние введенные значения 
     (в реальном тест-плане здесь должны быть проверки 
      конкретных значений переменных).

При таком подходе для выполнения тестовых примеров сначала должны быть произведены первоначальные установки тестового окружения, после чего перед выполнением тестового примера 2 или 3 будет проведена проверка состояния тестируемой системы.

Пример может показаться несколько надуманным, однако, на практике часто возникает ситуация в которой друг за другом следует несколько десятков тестовых примеров, а при регрессионном тестировании требуется выполнить, скажем, тестовые примеры с номерами от 25 по 40. Первый тестовый пример при этом инициализирует систему, а остальные работают с уже стартовавшей системой. Если просто выполнять тестовые примеры 25-40, то их выполнение окажется невозможным - они не инициализируют систему. Разумным выходом из этой ситуации является выполнение тестовых примеров 1, 25-40.

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

Добрый день.

Вопрос №1

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

Вопрос №2

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

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

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