Тестирование

Тестирование программного обеспечения процесс:

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

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

Применяемые методы

Аспекты, проверяемые при тестировании:

  • полнота функционала
  • параллельная обработка
  • безопасность
  • некорректное использование
  • восстановление после сбоя
  • способность держать нагрузку
  • производительность

Методы тестирования так же многообразны:

  • функциональное
  • модульное
  • нагрузочное
  • стресс–тестирование
  • и др.

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

Наши программисты адаптируют unit–тесты одновременно с написанием кода. Находясь в контексте задачи это занимает минимальное количество дополнительного времени. Таким образом предотврашение регресса достигается незначительными усилиями.

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

Интеграция с Git позовляет оперативно и без лишних расходов создавать необходимое количество тестовых площадок.

Тестирование заказчиком

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

  • динамической проверкой структуры
  • созданием бекапов
  • расширенным логированием
  • блокирующей обработкой исключений

Риски, связанные с ранним введением программного обеспечения в эксплуатацию компенсируется ранним выявлением недоработок, что уменьшает объем необходимых правок.

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

Я счастлив, когда протестую.

Ричард Столлман