sobota, 28 lutego 2009

Recenzja: Perfect Software and other illusions about testing.

Sława!

Trochę trwało, bo i zajęć różnorakich innych było, ale wreszcie się udało zakończyć lekturę dość świeżej pozycji autorstwa Geralda M. Weinberga pod tytułem Perfect Software and other illusions about testing. Pozycja ta, zgodnie z tytułem odnosi się do zagadnień związanych z testowaniem oprogramowania, a jej autor posiadający ponad półwieczne doświadczenie w szeroko pojętej branży programistycznej jest cenionym konsultantem i autorem książek o równie szeroko rozumianym wytwarzaniu oprogramowania.

Wracając do książki. Pisząc krótko jest to napisany bardzo przystępnym językiem i okraszony anegdotkami z życia (z których najbardziej zapadła mi w pamięć ta, okraszająca tezę, że nie ma złych programów, gdzie testerzy używali programu, w zamierzeniach autora mającego służyć do obliczeń fizycznych, jako niezawodnego narzędzia do... wywalania w kosmos systemu operacyjnego) swego rodzaju poradnik o używaniu testów (wszelakich jako całości). Poradnik do tego bardzo nietechniczny, głównie bazujący na naturze ludzkiej i konsekwencjach z nią związanych, i to ją przeważnie ustawiający jako źródło sukcesów i porażek.

Natomiast bardziej szczegółowo, mamy do czynienia ze 169 stronami podzielonymi na 18 rozdziałów na których Autor m.in. rozprawia się z różnorakimi mitami dotyczącymi testowania, wskazuje na pokusy czyhające na osoby w proces ten zaangażowane (zarówno powodowane ludzkim lenistwem, jak i dążeniem do perfekcji), a które mogą proces ten pogorszyć czasem dość znacząco, na możliwe różnice w motywacjach i celach poszczególnych członków projektów IT i na inne przeszkody w osiągnięciu celu głównego, czyli tworzone oprogramowanie działa, klienci walą drzwiami i oknami z wyrazami podziękowania, a wytwórcy nie dość, że się nie pozabijali wzajemnie to jeszcze ze sobą rozmawiają ;). Każdy z rozdziałów podzielony jest na wstęp prezentujący poruszany problem, przykłady w raz ze wskazówkami na ominięcie kłopotów, podsumowanie oraz listę najczęstszych pomyłek, błędów i wypaczeń związanych z zagadnieniem. Całość, napisaną jak już wspomniałem bardzo przystępnie, czyta się przyjemnie i szparko, a materiał daje nieźle do myślenia i mam nadzieję, że wyniesione nauki przydadzą się w życiu. Tak czy siak, polecam. Wszystkim jako lekturę nie tylko do poduszki, a wydawcom pod rozwagę, bo z przyjemnością zapoznał bym się jeszcze raz, tym razem w ludzkim języku.

Gerald M. Weinberg  - Perfect Software And Other Illusions About Testing

Dorset House Publishing, 2008, 200 stron

Rozdziały:

  1. Why do we bother testing?
  2. What testing cannot do
  3. Why not just testing everything?
  4. What's the difference between testing and debugging?
  5. Meta-testing
  6. Information immunity
  7. How to deal with deffensive reactions
  8. What makes a good test?
  9. Major fallacies about testing
  10. Testing is more than banging keys
  11. Information intake
  12. Making meaning
  13. Determining significance
  14. Making a response
  15. Preventing software testing from growing more difficult
  16. Testing without machinery
  17. Testing scams
  18. Oblivious scams

czwartek, 26 lutego 2009

Lokalnej konferencji nowa edycja rusza...

Sława!

Jak podał na swoim blogu Leszek Gruchała ruszyła rejestracja na konferencję java4people '2009.

Rejestrując się rzuciłem więc okiem na agendę, i muszę przyznać zapowiada się interesująco. Zaczyna się od "mojej" działki, czyli testowania, a konkretniej Paweł Szulc przedstawić ma zamiar testowanie EJB. Z EJB jestem co prawda zielony jak sałata na kanapce, ale obecnie, gdzie tylko widzę słówko "test" we wszelkich odmianach i mutacjach to lecę jak pszczoła do miodu, a jeżeli do tego prelegent umie ciekawie pogadać, a ten akurat umie, to czas na pewno stracony nie będzie. Następnie na ruszt technikę Comet przyprószoną protokołem Bayeux położy Waldemar Kot. O ile dobrze pamiętam, nie miałem przyjemności posłuchania "na żywo", ale posty na pl.comp.lang.java zawsze czyta się z przyjemnością. Kolejną godzinkę lepiej pominąć milczeniem, aby potem w skupieniu wysłuchać Andrzeja Śliwę o systemie GIT, o którym ostatnio można napotkać wiele pozytywnych opinii. Po nim nastąpi, jak dla mnie, gwóźdź programu czyli wystąpienie Jacka Laskowskiego.  Osobiście mam wrażenie, że Jacek potrafiłby zainteresować najbardziej nudnym tematem, więc skoro Grails na taki nie wygląda, to aż strach pomyśleć co to będzie się działo. Pewnie piski, histeria i tłumy mdlących fanek ;) Dlatego też trochę mi żal kończącego dzień Maćka Majewskiego i jego prezentacji o Spring Webflow, ale z drugiej strony przynajmniej publika rozgrzana będzie ;) Tak więc do zobaczenia!

sobota, 21 lutego 2009

Okna rtęcią zapełnione...

Sława!

Jedną z nielicznych jak dla mnie (wiem, wiem nie znam się ;)) zalet komputerków zwanych Makintoszami jest aplikacyjka zwana Quicksilver. W skrócie jest to taki miły gadżet, dzięki któremu np. uruchomienie aplikacji jest możliwe po wywołaniu globalnym skrótem klawiaturowym okienka w którym zaczynamy wpisywać jej nazwę, a okienko podpowiada możliwości spośród których możemy wybrać odpowiednią. Dla mnie jest to rozwiązanie znacznie szybsze niż przekopywanie się przez standardowe menu programów, czy też dokopywanie się do odpowiedniej ikonki na pulpicie (gdybym ich używał ;)).

Zapragnąłem więc swego czasu mieć coś takiego pod Windows, gdyż Win+R nie jest dokładnie tym, co tygrysy lubią najbardziej. A ponieważ chcieć znaczy móc, z otchłani internetu wyłowić się udało aplikacyjkę wabiącą się Launchy. Nie jest ona do końca klonem makintoszowej aplikacji, ale spełnia swoją rolę bardzo dzielnie i szybko. Daje całkiem niezłe możliwości konfiguracji, dzięki czemu możemy dość precyzyjnie określić zakres indeksowanych elementów, zachowanie, no i przede wszystkiem skrót wywołujący okienko (co wcale nie jest oczywiste dla twórców podobnych gadżetów). Krótko mówiąc polecam spróbować.

środa, 18 lutego 2009

Zamieszczanie kodów źródłowych w bloggerze

Sława!

Próbując odrobinkę sobie "upiększyć" swoje wypociny natrafiłem byłem na następujący wpis How to display code (nicely) in Blogger posts, więc długo się nie zastanawiając postanowiłem wykorzystać znajdujący się tam przepis i dodać to cudo. Jak można zresztą zauważyć niżej, wyżej, gdziekolwiek obok :)

Oczywiście nie było tak pięknie jakby nie trzeba czegoś poprawić, inaczej będziemy mieli brzydkie, za duże odstępy między liniami, aby temu zapobiec wszędzie zamiast:

<LINK href="http://alexgorbatchev.com/pub/sh/2.0.278/...">

wpisujemy łącza do nowszej wersji podświetlacza:

<LINK href="http://alexgorbatchev.com/pub/sh/2.0.287/...">

Mamy więc możliwość wstawiania teraz takich choćby o to cosiów:

private class SampleCode {
System.out.println("Kod w (pseudo)Java");
}

Co poza tym można uzyskać, i w jaki sposób, można się dowiedzieć ze strony projektu SyntaxHighlighter gdzie serdecznie odsyłam

niedziela, 15 lutego 2009

NSIS i usługi Windows

Sława!

Dziś w ramach akcji ratowania doświadczenia przed sklerozą własną, zapiszę sobie jak z poziomu NSIS (podbudowa do tworzenia instalatorów dla aplikacji Windows), a nóż widelec i potomność będzie miała z tej notatki pożytek jakowyś.

Takowoż więc do obsługi usług potrzebujemy wtyczki Service Control Management (nsSCM). Wtyczka ta umożliwia na następujące operacje na usługach:

  • Install - zarejstrowanie usługi
  • Start - uruchomienie usługi
  • Stop - zatrzymanie usługi
  • QueryStatus - odpytanie o aktualny stan usługi
  • Remove - wyrejestrowanie usługi

Używanie jest banalnie proste, gdyż poza rejestrowaniem usługi, sprowadza się do wywołania odpowiedniej funkcji wtyczki z podaniem nazwy usługi, a następnie zczytania wyniku operacji. Jakiś przykład? Proszę bardzo, niech będzie nim wyłączenie/włączenie usługi w zależności od jej aktualnego stanu.

Zaczniemy od odpytania o stan usługi poleceniem:

nsSCM::QueryStatus /NOUNLOAD nazwa_usługi

Polecenie to, oprócz informacji o powodzeniu/błędzie wywołania, zwróci nam stan usługi. Możliwe wartości to:

  • 1 - usługa zatrzymana
  • 2 - usługa w trakcie uruchamiania
  • 3 - usługa w trakcie zatrzymywania
  • 4 - usługa uruchomiona
  • 5 - usługa w trakcie wznawiania
  • 6 - usługa w trakcie wstrzymywania
  • 7 - usługa wstrzymana

Załóżmy, że będziemy uruchamiać usługę, jeżeli jest zatrzymana lub wstrzymana, natomiast zatrzymywać jeżeli uruchomiona, pozastałe stany poprostu zignorujemy. Do zatrzymania usługi wykorzystamy kod:

nsSCM::Stop nazwa_usługi

Do uruchomienia natomiast:

nsSCM::Start nazwa_usługi

Tak więc nasz kod powinien uzyskać postać podobną do poniższej:

nsSCM::QueryStatus nazwa_usługi
Pop $0
${If} $0 == "success" Pop $1    ${Switch} $1       ;Usługa jest zatrzymana       ${Case} 1       ;Usługa jest wstrzymana       ${Case} 7          ;Uruchamiamy usługę          nsSCM::Start <nazwa_usługi>          Pop $2          ${If} $2 == "success"             MessageBox MB_OK "Usługa uruchomiona"          ${Else}             MessageBox MB_ICONEXCLAMATION|MB_OK "Błąd uruchamiania"          ${EndIf}       ${Break}       ;Usługa jest uruchomiona       ${Case} 4          ;Wstrzymujemy usługę          nsSCM::Stop <nazwa_usługi>          Pop $2          ${If} $2 == "success"             MessageBox MB_OK "Usługa zatrzymana"          ${Else}             MessageBox MB_ICONEXCLAMATION|MB_OK "Błąd zatrzymywania"          ${EndIf}       ${Break}    ${EndSwitch} ${EndIf}
Widzimy, więc, że usługi nie gryzą (przynajmniej nie za często ;)) i zostało nam tylko napisać aplikację, dzięki której możliwości nsSCM będziemy mogli wykorzystać, a to przecież dla nas pryszcz, co nie? ;)

poniedziałek, 2 lutego 2009

Musepack (MPC) SV8 w Ubuntu 8.10 (Intrepid Ibex)

Sława!

Korzystając z chwili wolnego, urlopem czasem zwanym, postanowiłem wziąć się wreszcie porządnie za podkonfigurowanie swojego łubunciaka, tak, żeby już nic nie brakowało (ale, jak to zwykle bywa, aż tak dobrze to nie ma ;)). Jednym z zadań, było "zmuszenie" go do odtwarzania plików MPC w najnowszej wersji tego kodeka czyli SV8. Ponieważ i tak na razie nie znalazłem godnego zastępcy dla foobara, to korzystam chwilowo z rozwiązań "dostarczonych" z Ubuntu na tacy, a te wykorzystują niejakiego gstreamera do obsługi multimediów. Gstreamer w najnowszych wersjach umie już się zaopiekować SV8, niestety pakiety "oficjalne" jeszcze (?) nie są dostępne (na pewno będą dla edycji The Jaunty Jackalope) dla Koziorożca. W celu ich pozyskania musimy skorzystać z "alternatywnego" dostawcy, tym razem z pomocą przychodzi Mieszko Slusarczyk znany też jako spitfire i jego PPA na launchpad.net.

Tak więc musimy dodać to prywatne repozytorium do repozytoriów apt-a. W tym celu uruchamiamy System|Źródła oprogramowania, następnie wybieramy Oprogramowanie osób trzecich i naciskamy przycisk Dodaj. Gdy zostaniemy poproszeni o podanie Wiersza APT kopiujemy następującą linijkę:

deb http://ppa.launchpad.net/mieszkoslusarczyk/ppa/ubuntu intrepid main

Następnie dodajemy klucz GPG repozytorium za pomocą polecenia w terminalu:

gpg --no-default-keyring --keyring /tmp/awn.keyring --keyserver keyserver.ubuntu.com --recv DA7FD571199ED01A8EE11139C5BD7775071013EE && gpg --no-default-keyring --keyring /tmp/awn.keyring --export --armor DA7FD571199ED01A8EE11139C5BD7775071013EE | sudo apt-key add - && rm /tmp/awn.keyring

Teraz możemy uruchomić Synaptica, odświeżyć ewentualnie mu listę pakietów, i zaznaczyć do aktualizacji pakiety gstreamera. Należy przy tym pamiętać, że do odtworzenia mpc potrzeba jest posiadania zainstalowanego pakietu gstreamer0.10-plugins-bad !