Skip to content

Instantly share code, notes, and snippets.

@SergSlon
Last active August 29, 2015 14:11
Show Gist options
  • Select an option

  • Save SergSlon/5a2e7f692ca376507b43 to your computer and use it in GitHub Desktop.

Select an option

Save SergSlon/5a2e7f692ca376507b43 to your computer and use it in GitHub Desktop.
Принципы написания качественных тестов - F.I.R.S.T.
Принципы написания качественных тестов - F.I.R.S.T.
F.I.R.S.T.:
Fast (Быстрота),
Independent (Независимость),
Repeatable (Повторяемость),
Self-Validating (Очевидность) (*),
Timely (Своевременность)
Быстрота (Fast). Тесты должны выполняться быстро. Все мы знаем, что разработчики люди, а люди ленивы, поскольку эти выражения являются “транзитивными”, то можно сделать вывод, что люди тоже ленивы. А ленивый человек не захочет запускать тесты при каждом изменении кода, если они будут долго выполняться.
Независимость (Independent). Результаты выполнения одного теста не должны быть входными данными для другого. Все тесты должны выполняться в произвольном порядке, поскольку в противном случае при сбое одного теста каскадно “накроется” выполнение целой группы тестов.
Повторяемость (Repeatable). Тесты должны давать одинаковые результаты не зависимо от среды выполнения. Результаты не должны зависеть от того, выполняются ли они на вашем локальном компьютере, на компьютере соседа или же на билд-сервере. В противном случае найти концы с концами будет весьма не просто.
Очевидность (Self-Validating). Результатом выполнения теста должно быть булево значение. Тест либо прошел, либо не прошел и это должно быть легко понятно любому разработчику. Не нужно заставлять людей читать логи только для того, чтобы определить прошел тест успешно или нет.
Своевременность (Timely). Тесты должны создаваться своевременно. Несвоевременность написания тестов является главной причиной того, что они откладываются на потом, а это “потом” так никогда и не наступает. Даже если вы и не будете писать тесты перед кодом (хотя этот вариант уже доказал свою жизнеспособность) их нужно писать как минимум параллельно с кодом.
http://sergeyteplyakov.blogspot.com/2010/06/first-principles.html
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment