Программистами написано немало книг, в которых говориться о важности TDD (разработка через тестирование) и BDD (разработка через поведение) или о том, что насколько важно писать тесты и производить автоматическое тестирование. Так почему же многие программисты игнорируют тесты? Дело в непрактичности или же все считают тесты теоретической частью, а может жизненный цикл проекта недостаточно длинный или же это настолько трудозатратно? Приведу несколько вопросов и ответов, которые стоит держать в голове о тестировании.
Вопрос: очевидно, что написание тестов отнимает время и не заменяет ручное тестирование, так какой же смысл их писать? В вашей команде присутствует отдельный сотрудник, тестирующий все страницы по отдельности, так в чем смысл автоматического тестирования?
Ответ: проблема проявляется тогда, когда ваш сотрудник проводит 3 теста над 10 страницами, то есть 30 тестов. Итак, при каждом изменении в коде ему придется проводить все эти тесты каждый раз, что очень трудозатратно. Вот тут и спасает автоматическое тестирование.
Вопрос: А что если отдел тестировщиков работает настолько эффективно, что вам кажется, что автоматическое тестирование ни к чему?
Ответ: даже если ваши сотрудники работают очень быстро, выполнять одни и те же тесты каждый день нежелательно. Они должны тратить время на разработку новых тестов. А если в системе присутствует несколько пользователей, то тесты придется выполнять для каждого пользователя отдельно.
Вопрос: Но ведь написание тестов и настройки тестовых фреймворков отнимает много времени, не лучше ли просто сэкономить на этом?
Ответ: на перспективу тесты даже сэкономят вам время, плюс сами тесты можно использовать в других приложениях, да и потом, наверняка, вам придется выполнять эти тесты каждый день после добавления нового функционала или исправления ошибки. Поэтому ручная обработка 30 тестов у вас отнимет еще больше времени. Конечно если у вашего API есть GUI, то тогда вы их выполните быстрее, чем без него, а при его отсутствии еще и часто возникают ошибки. Именно поэтому и стоит потратить время на написание тестов, а автоматическое их выполнение сэкономит вам уйму времени.
В результате намного лучше иметь систему полностью покрытую тестами и выполнять их каждый день без человеческого фактора.
Сколько на самом деле отнимает написание тестов?
Написание тестов занимает довольно много времени, но в итоге экономите вы больше. Если вам придется что-то тестировать вручную, то вы будете выполнять одни и те же шаги снова и снова для каждого тестирования, а вот код теста вам придется написать только один раз. А при правильном применении ООП вы можете избежать дублирования кода, что тоже экономит не мало времени. Так что не бойтесь писать тесты. Особенно при работе с API считается, что написание тестов — единственный выход.
Какой тип автоматического тестирования следует использовать при работе с API?
Если у вас хватает времени, то лучше тестировать API на всех уровнях. Выполняйте юнит, функциональное, приёмочное и API тестирование и отлаживать код станет намного проще. Если же времени не хватает, то стоит выполнять хотя бы API тестирование. В результате при возникновении ошибки вы легко найдете проблемный участок кода просто прогнав тесты. Ответить на этот вопрос однозначно очень тяжело, все зависит от ваших нужд. Но писать API тесты стоит, так как это значительно упрощает поддержку кода.