Нужно ли тестирование?

  • 27.12.2017
  • PHP

Здесь мы рассмотрим необходимость тестирования, без технических подробностей.

До того, как я освоил тестирование, при любом упоминании слов: тестирование, Unit test, функциональные или приемочные тесты и т.п., я задавался вопросом: "а может, я что-то теряю?".

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

В этом нет ничего необычного, ведь изначально приложение так и создавалось, без оглядки. Но теперь, это переросло в проблему. Более того, приложение может использоваться в условиях отличных, от тех в которых создавалось и это тоже усложняет процесс разработки, т.к. практически любой шаг в сторону приводит к сбою. Плюс, нет уверенности, что всё работает и не сломается, и это давит на психику. А всё почему? Верно! Небыли созданы тесты.

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

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

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

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

Однако всё должно быть в меру и где-то, лучше запустить быстро и без тестов, но потом сделать тесты, рефакторинг и так далее. Всё приходит с опытом.

Напоследок приведу маленький фрагмент phpunit теста.

$test->run();
$this->assertTrue($test->setUp);
$this->assertFalse($test->assertPreConditions);
$this->assertEquals(0, $result->errorCount());

asserTrue проверяет, что тестируемое значение true, assertFalse соответственно false, assertEquals ожидает значение равное 0. Ассерты придуманы на все случаи жизни.

Таким образом, даже спустя время, открыв тесты, мы увидим на каком языке общаться с программой и что её от нас нужно.

Комментарии