Шаг 142 - Тест компонентов

Тестирование на уровне компонентов (Component-level) - следующий уровень тестирования модуля. Компонент может иметь довольно простые функциональные возможности, но только комплекс признаков гарантирует от разделения на меньшие отдельные модули. Например, возьмем логический процесс вычисления ежемесячной зарплаты для одного сотрудника. Этот процесс может состоять из следующих операций:

  1. Извлечение из базы данных о количестве отработанных часов в месяце.
  2. Вычисление зарплаты.
  3. Необязательное добавление премии.
  4. Выполнение всех стандартных вычетов из этой суммы.

Каждая операция возможно будет иметь различные требования. Например, процесс извлечения из базы данных нуждается в обработке ошибок (запись пользователя не найдена, база данных не доступна и так далее). При вычислениях нужно предотвратить числовые ошибки (например, деление на ноль), если используются удаленные компоненты они будут вызывать другие ошибки. Следовательно, весь компонент (например CalcMonthlySalary) будет состоять из четырех меньших модулей (GetHoursForEmployee, CalcGrossPay, GetBonusAmount и CalcDeductions), но CalcMonthlySalary будет все еще достаточно мал, чтобы квалифицировать его как модуль (для тестирования). Чтобы проверить определенный модуль должен быть разработан ряд сценариев, это необходимо для гарантии, что каждая строка программы будет выполнена (не обязательно в одном тесте). Например, если функция включает If..Then..Else, то нужно по крайней мере два сценария для теста. Это необходимо для того, чтобы пройти по каждому пути выполнения. Если тестируется функция, то определение ожидаемого результата теста упрощается потому, что возвращаемое значение функции может быть проверено на правильность. Однако, если Вы проверяете подпрограмму, то Вы можете проверить только эффекты вызова подпрограммы из-за отсуствия возвращаемого значения. Поэтому лучше везде, где только возможно, для подпрограмм использовать функции.

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


Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем.