Виктор Мацкевич

Что такое тестирование? Место тестирования в разработке программного продукта

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

Тестирование ПО — оценка качества работоспособности программного продукта, а также выявление имеющихся дефектов. Данный процесс подразумевает под собой моделирование действий пользователя.
Оценка работоспособности продукта производится по результатам, полученным в ходе выполнения теста.
Виктор Мацкевич
Android-разработчик
Краткое описание терминологии:

Test case — атомарный элемент тест-плана, состоящий из следующих компонент:
  • Описание environment-а (окружения), в котором выполняется case (может быть вынесен уровнем выше, в тест-план)
  • Шаги выполнения
  • Ожидаемый результат выполнения
Test suite — список case-ов, объединенных каким-то общим фактором (весь продукт, конкретная фича и т. д.)
Test plan — список test suite-ов, выбранных для теста
Test run — проход («прогон») test plan-а

Поговорим о процессе тестирования. Ниже представлено изображение, на котором явно показан процесс тестирования:
Понятие «smoke test» пошло из инженерной среды:
«При вводе в эксплуатацию нового оборудования („железа“) считалось, что тестирование прошло удачно, если из установки не пошел дым.»

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

«Regression testing» — это вид тестирования, направленный на проверку изменений, сделанных в приложении или окружающей среде (починка дефекта, слияние кода, миграция в другую операционную систему, базу данных, веб сервер или сервер приложения), для подтверждения того факта, что существующая ранее функциональность работает, как и прежде (см. также Санитарное тестирование или проверка согласованности/исправности).

Тестирование можно разбить на два наиболее явных вида:


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

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

Автотесты вносят ряд преимуществ:
  • Повторяемость — все написанные тесты всегда будут выполняться однообразно, то есть исключен человеческий фактор. Тестировщик не пропустит тест по неосторожности и ничего не напутает в результатах.
  • Быстрое выполнение — автоматизированному скрипту не нужно сверяться с инструкциями и документацией, что сильно экономит время выполнения.
  • Меньшие затраты на поддержку — когда скрипты уже написаны, на их поддержку и анализ результатов требуется, как правило, меньшее время, чем на выполнение того же объема работ вручную.
  • Отчеты — автоматически рассылаемые и сохраняемые отчеты о результатах тестирования.
  • Выполнение без вмешательства — во время выполнения тестов инженер-тестировщик может заниматься другими полезными делами, либо тесты могут выполняться в нерабочее время (этот метод предпочтительнее, так как нагрузка на локальные сети в это время снижена).
Разработчикам стоит отметить, что написание тестов перед самой разработкой значительно повышает ее эффективность, потому что мы тут же можем проверить только что написанный фрагмент.

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

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