7

Tworzę stronę internetową na szynach i do tej pory używam travis-ci do ciągłej integracji. Próbuję również wercker do ciągłej integracji i wdrażania. Krok testowy nie powiódł się w przypadku werckera, ponieważ działał przez ponad 25 minut i zdarzyło mi się, że z jakiegoś powodu moje testy mogą potrwać wyjątkowo długo.Jak długo jest zbyt długo na pakiet testowy?

Strona, nad którą pracuję, jest spora, ale nie masywna. Testuję używając rspec i capybara, używając webkita do testów integracyjnych. Piszę dość dokładne testy integracyjne, starając się upewnić, że obejmuję każdą funkcję. Na Travis-ci cały proces trwa 25-30 minut (łącznie z instalacją pakietu).

To może być mgliste pytanie na to forum, ale mimo to chciałbym uzyskać pewne dane wejściowe. Czy niedopuszczalne jest posiadanie pakietów testowych, które działają przez pół godziny lub dłużej? Jakie czasy testów zwykle występują w przypadku zestawu testów integracyjnych?

+0

zależy od tego, jak duże są moduły, które testujesz –

+0

nie widziałem żadnego testu, który trwa tak długo, ale –

Odpowiedz

9

To normalne, że komercyjne witryny internetowe mają zestawy testów integracji, nawet te dobrze zaprojektowane, których uruchomienie zajęłoby godzinę lub więcej, gdyby były uruchamiane w jednym procesie na komputerze programisty. Nie dałeś nam powodu, by sądzić, że piszesz zbyt wiele testów lub piszesz je, aby działały niezwykle wolno. Jednak to zbyt długo, aby czekać, aby dowiedzieć się, czy twoje zatwierdzenie było dobre. Z mojego doświadczenia wynika, że ​​pół godziny to za dużo, a 15 to margines; jeśli tak długo trwa wykonywanie wszystkich testów, osoba, która uruchomiła kompilację, uruchomi coś innego lub odejdzie w czasie, gdy kompilacja jest uruchomiona, a następnie będzie musiała przejść do kontekstu lub nie będzie w pobliżu, gdy kompilacja zostanie przerwana. Dłuższe kompilacje zwiększają również średnią liczbę zatwierdzeń w danej kompilacji, co utrudnia przypisanie winy, gdy kompilacja zostanie przerwana.

Więc niech twoja budowa CI będzie działać tak szybko, jak to możliwe. Wielki temat, ale kilka punktów wyjściowych:

  • parallel_tests gem jest sposób, aby uruchomić pakiet (oba testy jednostkowe i Ogórek) tak szybko, jak to możliwe na jednym polu (który będzie Ci tylko tak daleko , ale może to na razie wystarczająco daleko).
  • Oto kolejny gem (że nie używany) dla scenariuszy łupania ogórka poprzek pól: https://github.com/cloudcastle/cucumber_in_groups
  • Travis CI, CircleCI i przypuszczalnie inne hostowane usługi ciągłej integracji zapewnić sposoby podzielić testy w poprzek pól.

Pomocny jest również zestaw testów jednostkowych, który obejmuje większość lub cały kod i działa znacznie szybciej niż testy integracyjne (w ciągu sekund lub najwyżej kilku minut), aby większość błędów została przechwycona przed uruchomiono testy integracji.

+0

Dzięki, to było bardzo pomocne! –