Jak przyspieszyć testy?

Witam,
pracuje pod windowsem i odpalenie i przeprowadzenie najprostszego testu “assert true” trwa 17-18s.
Czy można to przyspieszyć bo przy częstym uruchamianiu staje się dość czasochłonne?

Zmień system.

Wydajność rubiego – z dużym naciskiem na testy właśnie – pod Windows to zagadnienie znane i nielubiane.

To ile pod linuxem taki test by trwał na średnim komputerze?

Dla jednego najprostszego testu assert true:

[code]Loaded suite test/unit/simple_test
Started
.
Finished in 0.011662 seconds.

1 tests, 1 assertions, 0 failures, 0 errors[/code]
W normalnym przypadku z paroma metodami w test helperze, ładowanie fixturesów:

[code]Loaded suite test/unit/simple_test
Started
.
Finished in 0.485151 seconds.

1 tests, 1 assertions, 0 failures, 0 errors[/code]
Więc coś zdecydowanie jest wolne.

Dobry punkt wyjścia do mierzenia wydajności testów znajduje się tutaj:
http://railspikes.com/2009/4/3/rails-test-benchmarks
http://railspikes.com/2009/3/10/slow-tests-are-a-bug
Zwłaszcza ten drugi artykuł zawiera dużo linków dotyczących przyśpieszenia testów.

Olek, ale czasy które podajesz są czasami przebiegu testów już po załadowaniu całego środowiska, a to właśnie najwięcej zabiera czasu na Windowsach.

[quote=bober0]Witam,
pracuje pod windowsem i odpalenie i przeprowadzenie najprostszego testu “assert true” trwa 17-18s.
Czy można to przyspieszyć bo przy częstym uruchamianiu staje się dość czasochłonne?[/quote]
No to rzeczywiście chyba trochę długo. Testowanie, to coś czego dobrze nie opanowałem, ale spróbuj RSpec chyba podziała szybciej.

Próbowałem się bawić w przyspieszanie ale nic z tego nie wyszło, wyniki skaczą jak pchły i nie mogę znaleźć prawidłowości. Po prostu raz jest szybko raz wolno i dotyczy to ładowania wszystkiego od testów po sam serwer czy konsole.

Jeśli RSpec poprawi wyniki, to świat się skończył… przecież to raptem helper rozwijający swojego DSLa na “surowsze” wywołania Test::Unit. Znaczy nie ma prawa być szybszy, bo sprowadza się do tych samych operacji.

No widzisz nie znam się na tym, pracuję dopiero nad testowaniem porządnym.
Pracuje od początku na RSpec i nawet skomplikowane testy działały u mnie znacznie krócej.

Jak odeśpie dwie noce to przetestuje i zrobię rozeznanie czy da się to jakoś przyśpieszyć :slight_smile:

tak na szybko:
http://www.nabble.com/Spec-Server-on-Windows—missing-fork-td18790683.html
nie wiem czy to Ci pomoże, chłopaki też mają dość długiego ładowania testów i kombinują z rspec_serv

[code]kuba@ibm:~/testowa$ time rake
(in /home/kuba/testowa)
/usr/local/bin/ruby1.9 -I"/home/kuba/testowa/lib" -I"/home/kuba/testowa/test" “/usr/local/lib/ruby1.9/gems/1.9.1/gems/rake-0.8.4/lib/rake/rake_test_loader.rb” “test/unit/user_test.rb”
Loaded suite /usr/local/lib/ruby1.9/gems/1.9.1/gems/rake-0.8.4/lib/rake/rake_test_loader
Started
.

Finished in 0.094071387 seconds.

1 tests, 1 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
/usr/local/bin/ruby1.9 -I"/home/kuba/testowa/lib" -I"/home/kuba/testowa/test" “/usr/local/lib/ruby1.9/gems/1.9.1/gems/rake-0.8.4/lib/rake/rake_test_loader.rb”
/usr/local/bin/ruby1.9 -I"/home/kuba/testowa/lib" -I"/home/kuba/testowa/test" “/usr/local/lib/ruby1.9/gems/1.9.1/gems/rake-0.8.4/lib/rake/rake_test_loader.rb”

real 0m6.119s
user 0m5.704s
sys 0m0.340s[/code]
Jak widać jest zauważalnie szybciej: Ubuntu, Rails 2.3.2, Ruby 1.9.1. Jeśli komuś w dalszym ciągu to przeszkadza, to zawsze można uzyć autotesta.

Tak jak Tomash pisze najdłużej trwa ładownie środowiska.

@qoobaa: dzieki, faktycznie jest szybciej

A Jruby ktoś testował? Wiem, że tutaj też dochodzi czas ładowania, dopóki nie będzie nailguna, ale w testach jruby jest gdzieś pomiędzy 1.8 i 1.9. I na windowsie też chyba powinno być lepiej?

Pisałem kiedyś projekt i osoba pisząca ze mną strasznie marudziła że RSpec (testy) jej wolno się odpalają. U mnie było to z 10 s, przy sporej ilości testów. Na windowsie mieliło minutę…

Jeśli chodzi o JRuby - spowalniaczem będzie uruchamianie maszyny wirtualnej. Ale jest na to sposób http://wiki.jruby.org/wiki/JRuby_with_Nailgun