Тестирование кода - это очень важная задача. Написание и запуск тестов считается хорошим тоном. Разумно используя этот метод, вы сможете более четко понимать цель написание того или иного кода и иметь более гибкую архитектуру.
Некоторые главные правила тестирования:
- Тест должен фокусироваться на небольшой части функциональности и подтверждать её корректность.
- Каждый тест должен быть полностью независим, должен иметь возможность запускаться отдельно от остальных тестов и не зависеть от порядка запуска остальных тестов.
Смысл этого правила в том, что каждый тест должен запускаться со «свежим» набором данных и подчищать после себя. Обычно, для этого используются методы setUp() и tearDown() - Постарайтесь чтобы тесты выполнялись как можно быстрее. Если какому нибудь тесту нужно более чем несколько миллисекунд для выполнения, разработка пойдёт медленнее или вы просто не будете запускать тесты так часто как хотелось бы.
В некоторых случаях тесты не могут выполняться очень быстро, например, если нужно работать со сложной структурой данных и эти данные должны загружаться каждый раз когда тест запускается. Держите такие "тяжёлые" тесты в отдельном наборе тестов и запускайте их по расписанию, а остальные запускайте так часто, как это необходимо. - Изучите используемое ПО для тестирования, научитесь запускать отдельные тесты или набор тестов. В этом случае вы сможете разрабатывать какую либо функцию внутри модуля и запускать тест для этой функции как можно чаще, в идеале - автоматически, сразу после сохранения.
- Всегда запускайте все тесты перед тем как начать работу и после того как её завершаете. Это даст вам больше уверенности в том что вы ничего не сломали.
- Очень хорошая идея это сделать хук который запустит все тесты перед тем как пушить код в общий репозиторий.
- Если вы прервали свою работу не доделав задачу, то хорошим шагом будет написать сломанный тест или тесты, которые опишут какую работу вам еще предстоит сделать. Когда вы вернётесь и продолжите работу, то будет легче вспомнить и понять что от вас требуется.
- Используйте длинные, информативные имена для функций тестирования. Правила определения имён функций тестирования отличаются от правил определения имён обычных функций, которым предпочитают давать короткие имена. Причина в том что функции тестирования никогда не вызываются вручную в коде.
Имя функции square() или даже sqr() подходит для обычного кода, но для тестирования вы должны называть функции более информативно. Например test_square_of_number_2(), test_square_negative_number(). Этим имена будут показаны когда тест выполнится неудачно и они должны быть как можно более информативными. - Когда что-то пойдёт не так или что-то должно быть изменено, разработчики в основном будут опираться на написанные тесты. Таким образом, код тестов будет читаться даже больше, нежели код самого проекта. Тесты написание неясно будут не очень полезны в такой ситуации.
- Еще одно применение для тестов - это ознакомление новичков с проектом. Когда кто-то начинает работать над вашим проектом, то чтение и запуск тестов - это лучшее что он может сделать в самом начале. Таким способом новичок сможет увидеть наиболее важные части, различные подводные камни, и т.д. Если он захочет добавить новый функционал, то первым шагом должно быть написание теста.
Вольный перевод.
Комментариев нет:
Отправить комментарий