TDD - разработка, основанная на тестах

Содержание

Слайд 2

Software development methodologies

Software development methodologies

Слайд 3

TDD Test-driven development (TDD) is an evolutionary approach to development which

TDD

Test-driven development (TDD) is an evolutionary approach to development which combines

test-first development where you write a test before you write just enough production code to fulfill that test and refactoring.
Слайд 4

Example

Example

Слайд 5

C# or PHP

C# or PHP

Слайд 6

?

?

Слайд 7

Слайд 8

Behavior Driven Development TEST SHOULD TDD BDD

Behavior Driven Development

TEST

SHOULD

TDD

BDD

Слайд 9

Tests Integration testing is the phase in software testing in which

Tests

Integration testing is the phase in software testing in which individual

software modules are combined and tested as a group

Acceptance testing - formal testing with respect to user needs, requirements, and business processes conducted to determine whether or not a system satisfies the acceptance criteria and to enable the user, customers or other authorized entity to determine whether or not to accept the system.

Слайд 10

Не нужно писать тесты, если Вы делаете простой сайт-визитку из 5

Не нужно писать тесты, если

Вы делаете простой сайт-визитку из 5 статических

html-страниц и с одной формой отправки письма. На этом заказчик, скорее всего, успокоится, ничего большего ему не нужно. Здесь нет никакой особенной логики, быстрее просто все проверить «руками»
Вы занимаетесь рекламным сайтом/простыми флеш-играми или баннерами – сложная верстка/анимация или большой объем статики. Никакой логики нет, только представление
Вы делаете проект для выставки. Срок – от двух недель до месяца, ваша система – комбинация железа и софта, в начале проекта не до конца известно, что именно должно получиться в конце. Софт будет работать 1-2 дня на выставке
Вы всегда пишете код без ошибок, обладаете идеальной памятью и даром предвидения. Ваш код настолько крут, что изменяет себя сам, вслед за требованиями клиента. Иногда код объясняет клиенту, что его требования — не нужно реализовывать
Слайд 11

Типы проектов 1. Без покрытия тестами. 2. С тестами, которые никто

Типы проектов

1. Без покрытия тестами.
2. С тестами, которые никто не запускает

и не поддерживает.
3. С серьезным покрытием. Все тесты проходят.
Слайд 12

Советы при написании тестов Быть достоверными Не зависеть от окружения, на

Советы при написании тестов

Быть достоверными
Не зависеть от окружения, на котором они

выполняются
Легко поддерживаться
Легко читаться и быть простыми для понимания (даже новый разработчик должен понять что именно тестируется)
Соблюдать единую конвенцию именования
Запускаться регулярно в автоматическом режиме
Слайд 13

Без велосипедов, пожалуйста .NET: MsTest (есть в студии) NUnit PHP: PHPUnit Codeception

Без велосипедов, пожалуйста

.NET: MsTest (есть в студии) NUnit PHP: PHPUnit Codeception

Слайд 14

Подход AAA (arrange, act, assert)

Подход AAA (arrange, act, assert)

Слайд 15

Борьба с зависимостями Выделяют два типа подделок: стабы (stubs) и моки

Борьба с зависимостями

Выделяют два типа подделок: стабы (stubs) и моки (mock).
Часто

эти понятия путают. Разница в том, что стаб ничего не проверяет, а лишь имитирует заданное состояние. А мок – это объект, у которого есть ожидания. Например, что данный метод класса должен быть вызван определенное число раз. Иными словами, ваш тест никогда не сломается из-за «стаба», а вот из-за мока может.
Слайд 16

Как начать писать тесты? 1. Лабораторные работы 2. Курсовые проекты 3. Дипломные работы Саморазвитие :)

Как начать писать тесты?

1. Лабораторные работы 2. Курсовые проекты 3. Дипломные работы Саморазвитие :)

Слайд 17

Выводы Любой долгосрочный проект без надлежащего покрытия тестами обречен рано или поздно быть переписанным с нуля.

Выводы

Любой долгосрочный проект без надлежащего покрытия тестами обречен рано или поздно

быть переписанным с нуля.
Слайд 18

Вопросы в студию!

Вопросы в студию!