====== Testy integracyjne ====== Znane również jako //request specs// w kontekście ''RSpec''a, umożliwiają nam zasymulowanie interakcji użytkownika z naszą aplikacją. ====== TDD - Test Driven Development ====== * Zaczynając od pisania testów a dopiero później implementując kod, który spełni testy, zwiększamy naszą pewność, że test sprawdza funkcjonalność tego, czego powinien, * cykl "nieprzechodzący test -> implementacja -> przechodzący test" powoduje stan przepływu (ang. //flow state//), dzięki któremu zwiększamy nasze zadowolenie i produktywność, * testy działają jako klient implementacji, często prowadząć do bardziej eleganckich rozwiązań, * gdy w ogóle nie wiadomo, jak rozwiązać jakiś problem, czasem lepiej pominąć ''TDD'', * najpierw piszemy test nieprzechodzący, potem piszemy kod, który przejdzie przez test, a na końcu go refaktorujemy, zmieniając formę kodu, nie zmianiając funkcji (//Red, Green, Refactor//), ====== BDD - Behavior Driven Development ====== * Testy skupiają się na tym, co powinno się dziać, * zachęca do używania literackiego języka, * umożliwia eksport specyfikacji w zrozumiałym formacie, * specyfikacje powinny być zrozumiałe ekspertom domeny (? - domain experts), * specyfikacje powinny być uruchamialne, * powinny wspierać testowanie kodu w izolacji jak i pełnego stosu