Lokalna aewolucja oprogramowania na przykładzie Autotest w NetBeans (od 6.0 do 6.5)

Opublikowane przez Szymon Jeż ponad 3 lat temu

ZenTest Autotest chyba zna każdy programista Ruby i nie trzeba go im przedstawiać. Jeśli go nie znasz lub o nim słyszałeś, a nie używasz, to polecam nadrobić zaległości (jeśli nie programujesz w Ruby spróbuj znaleźć podobne rozwiązanie w twoim języku). Jest to narzędzie, które sprawia, że napisane przez nas testy są jeszcze bardziej użyteczne (bo autotest jak anioł dzięki nim czuwa nad nami i daje nam znać, gdy któryś test nie przechodzi poprawnie), przez co mamy większą motywację do ich pisania (a o to często trudno). Ostatnio miałem spore przejścia z Autotestem i IDE NetBeans i właśnie o nich jest ten wpis.

Znany obrazek dotyczący ewolucji od tyłu; przerobiony samodzielnie

W NetBeans 6.0 wraz z wprowadzeniem wsparcia dla języka Ruby i platformy Rails została również dodana integracja z Ruby TestUnit Autotest. Wybierało się z menu projektu komendę Auto Test i w tle odpalał się Autotest i działał jako nasz anioł stróż. Wyniki jego działań, oprócz na wewnętrznej konsoli NetBeans (zupełni tak samo jak byśmy uruchomili go w terminalu systemowym), prezentowane były na dole ekranu na pasku stanu (na zielono lub szaro, gdy wszystko poszło dobrze (Ilustracja nr 1), a na czerwono, gdy pojawiły się błędy(Ilustracja nr 2)). Funkcja ta sprawiała, że istniało bardzo dobre sprzężenie zwrotne i szybko dostawaliśmy informację, czy dopiero co wprowadzone zmiany w kodzie źródłowym, przechodzą testy. Jak coś poszło nie tak można było przejść do konsoli, przeczytać szczegóły oraz za pomocą linków tam zawartych przenieść się do miejsca w kodzie, w którym wystąpił błąd.

Ilustracja nr 1: Komunikat na pasku stanu w NetBeans, że testy zostały wykonane poprawnie

Ilustracja nr 1: Komunikat na pasku stanu w NetBeans, że testy zostały wykonane poprawnie

Ilustracja nr 2: Komunikat na pasku stanu w NetBeans, że testy nie zostały wykonane poprawnie(specjalnie zakomentowałem dwie linie kodu)

Ilustracja nr 2: Komunikat na pasku stanu w NetBeans, że testy nie zostały wykonane poprawnie(specjalnie zakomentowałem dwie linie kodu)

W NetBeans 6.5 (nie wiem jak było w 6.1, bo krótko używałem) wprowadzono pewne zmiany. Niestety na gorsze:

  • Nie ma już powiadomień na pasku stanu o wynikach testów (tyczy się to nie tylko Autotesta).
  • Nie wykonywane są tylko testy dotyczące kodu w którym nastąpiła zmiana, tylko od razu wszystkie (nie muszę tłumaczyć, że dla uprzęży testowych, których wykonanie zajmuje co najmniej kilkanaście sekund(a często trwać to może wiele minut), sprzężenie zwrotne jest wolne w porównaniu z odpowiedzią po sekundzie, gdy wykonywane są tylko testy z danego kontekstu).
  • Gdy włączymy opcję Auto Test w pasku stanu uruchamiany jest element, który pokazuje nam, że Autotest działa w tle. Nie było by w tym nic złego gdyby nie to, że w tym elemencie znajduje się pasek, który rusza się na boki przyciągając do siebie naszą uwagę, która potrzebna jest w jak największym stopniu gdzie indziej!

Ilustracja nr 3: Prezentacja wyników testów w NetBeans 6.5

Ilustracja nr 3: Prezentacja wyników testów w NetBeans 6.5

Wszystko w imię nowego interfejsu prezentacji wyników testów (Ilustracja nr 3), który był by bardzo dobry gdyby na pasku stanu pokazywane było zawsze podsumowanie przebiegu ostatnich testów (substytutem tego miało być pewnie wyjście okna z rezultatami testów z ukrycia, ale jest to bardzo denerwujące jak za każdym razem jak się zapisze coś pokazuje się panel, który był w trybie autohide i zajmuje pół ekranu; po co mi oglądać jak wykonują się testy? Ja chcę zobaczyć ich rezultaty.). Pomocne było by też, gdyby można było włączyć taką opcję by zawsze pokazywane były tylko testy, które nie przeszły pomyślnie (obecnie trzeba to robić ręcznie klikając na przycisk).

Pierw próbowałem obejść niedogodności, potem się przyzwyczaić i spróbować naprawić. Obejściem ruszającego paska w dolnym lewym roku ekranu było przyklejenie kawałka brystolu na obudowę monitora (sic!) (Zdjęcia nr 1 i 2).

Załonka :P Załonka :P

Zdjęcia nr 1 i 2: Zasłonka anty rozpraszająca

Obejść brak powiadomień chciałem w ten sposób, że panel z wynikami testów dokowałem na stałe, tak by się nie chował i ustalałem jego wielkość tak by zajmował jak najmniej ekranu (20%). Jak testy kończyły się niepowodzeniem, powiększałem panel by było łatwiej czytać ich wyniki. Poświęcenie co najmniej 20% ekranu i ciągłe odciąganie swojej uwagi od kodu było zbyt dużym wyrzeczeniem. Nie mogłem się przyzwyczaić. To, że za każdym razem uruchamiały się wszystkie testy próbowałem naprawić debugując ~/.netbeans/6.5/nb_autotest_loader.rb i nb_test_runner.rb, bezskutecznie. Z tej próby wyszło jednak coś dobrego, ponieważ zmusiła mnie ona do poznania wewnętrznych mechanizmów Autotesta (czytając kod źródłowy i dokumentacją doń zaszytą w gemie ZenTest).

Ilustracja nr 4: Przykładowe powiadomienie o wynikach testów z Autotest

Okazało się, że do Autotesta można dość łatwo wykorzystać istniejący (zajrzyj do gems/ZenTest-*/lib/autotest/) lub napisać swój moduł informujący nas powiadomieniem na ekranie (Ilustracja nr 4) o wynikach testów. Autotest uruchamiać można wtedy w tradycyjny sposób, tak jak nam wygodnie, z konsoli systemowej i gdziekolwiek się akurat “znajdziemy” (w IDE, w innej konsoli, w przeglądarce) zostaniemy skutecznie poinformowani o wynikach testów. W zależności od systemu operacyjnego (środowiska graficznego) używamy różnych mechanizmów by to osiągnąć. Istniejące moduły nie działały dla mnie zadowalająco. Przerobiłem więc sam kilka z nich i otrzymałem rozwiązanie dzięki, któremu użycie komendy Auto Test w NetBeans nie wchodzi dla mnie w rachubę.

Chciałem w tym wpisie zamieścić i opisać mój moduł, ale zrobię to, w ciągu najbliższych dni, w osobnym artykule, bo ten zrobił się za długi.

Podsumowując wygląda na to, że należy uważać wprowadzając nowe funkcje/opcje (ang. features) do oprogramowania przypadkiem nie zrobić tego kosztem innych. Domyślam się, że panwie i panie od NetBeans albo mieli nuż na gardle w postaci nowej wersji i zaserwowali użytkownikom nie dokończony produkt (a nich się męczą (chwycą za łot pneumatyczny ;) (patrzy pierwszy rysunek) przez kolejne kilka miesięcy do nowej wersji, może do tego czasu to poprawimy), albo zrobili coś czego sami na co dzień nie wykorzystywali lub nie współpracowali z innymi, którzy to robią. Tak czy siak wolał bym by wprowadzili nowy sposób prezentacji wyników testów, ale zostawili powiadomienia na pasku stanu oraz sposób uruchamiania komendy Auto Test (mogło pozostać po staremu z wynikami testów tylko na konsoli). Możliwe, że można sobie samemu tak przerobić IDE NetBeans by było po staremu, ale mi się nie udało, wróciłem do konsoli gdzie mam większą kontrolę.

Ewolucja interfejsów wydawać by się mogło zmierza w kierunku okienkowych, coraz bardziej zaawansowanych graficznie, lecz istnieją od tego wyjątki gdzie wracamy do zwykłego tekstu (konsola) lub łączymy te dwa podejścia. A ty jakie masz doświadczenia z aewolucją na gorsze w używanym przez ciebie oprogramowaniu? Co sądzisz o interfejsach tekstowych kontra graficzne?

Opublikowano w ,  | Tagi , , , , , , , , , ,  | brak komentarzy | brak trackbacków

Komentarze

Trackbacki

Użyj następującego trackbacka na swojej stronie:
http://szymon.jez.net.pl/trackbacks?article_id=33

(zostaw url/email »)

   Pomoc języka formatowania Obejrzyj komentarz