21 lutego 2008
Amazon SimpleDB - taka prostota baza danych od giganta
Istnieją technologie tzw. rozproszone - bo o nich mowa - cechują się z punktu widzenia klienta:
- nieskończoną mocą obliczeniową
- nieograniczonym rozmiarem macierzy dyskowych
- szerokim pasmem transferu
- dowolną liczbą wirtualnych serwerów (zarówno różnych systemów operacyjnych, oczywiście nie mylić z M$)
Oto kilka linków zgromadzonych na ten temat
http://www.informationweek.com/news/software/soa/showArticle.jhtml?articleID=204803008
http://www.sriramkrishnan.com/blog/2007/12/amazon-simpledb-technical-overview.html
http://www.amazon.com/Success-Stories-AWS-home-page/b?ie=UTF8&node=182241011
http://www.informationweek.com/news/internet/showArticle.jhtml?articleID=201300517
http://www.informationweek.com/news/management/showArticle.jhtml?articleID=190302909
http://www.informationweek.com/news/internet/ebusiness/showArticle.jhtml?articleID=193700262
http://developer.amazonwebservices.com/connect/kbcategory.jspa?categoryID=148
15 lutego 2008
Ciągła integracja + testy automatyczne przy pomocy Selenium i Hudson (Jenkins)
Od zawsze programiści marzyli o produkcji oprogramowania bez jego pisania :-)
Niestety o ile programiści dalej sobie marzą o tym,
ich koledzy teserzy, psujący dzieła programistów mają do wyboru automaty do testowania.
Automatyczne testowanie jest jednym z głównych postulatów eXtreme Programming (XP). Automatyzacja polega na użyciu oprogramowania do sterowania wykonaniem testów, porównywania ich wyników z oczekiwanymi, czy raportowania.
W dobie zaawansowania dedykowanych aplikacji internetowych i pozornie prostych w budowie systemów aukcyjnych oraz sklepów interenetowych, wymagania stawiane testerom stale rosną. Od testerów wymaga się podstawowych zdolności programistycznych, zwłaszcza, gdy używa się narzędzi testujących w sposób automatyczny.
Gdyby nie Selenium oraz Hudson / Jenkins testerzy stali by się w sposób naturalny świetnymi programistami. Na szczęście mogą nadal skupiać się na testowaniu jakości i zwracaniu uwagi na dziwne i "na niby bezpieczne" rozwiązania. Poniżej wyjaśnię na czym polega trick ;-)
Wszystko zaczyna się od zmiany podejścia i zastosowania:- pomysłodawcy funkcjonalności powinni myśleć o optymalnych krokach możliwych do wykonania w produkcji, które można w zrozumiały sposób przetestować - bez budowania wzmocnionych mostów dla testerów, gdy potrzebujemy wykonać funkcjonalnie kładkę :-)
- TDD - programowanie ukierunkowane testami (Test-Driven Development) opierające się na technice automatycznego testowania, zaczynając od testu wynikającego ze specyfiki funkcjonalności, po czym realizowanie małymi krokami funkcjonalności, aby zapewnić poprawne wykonywania testu
- ciągłej integracji - po każdej zmianie, raz na wydanie, ciągle w repozytorium SVN/trunk lub GIT/master wykonywanie testów automatycznych, analizy statycznej kodu oraz wszelkich weryfikacji wykrywających
- reagownie na zmiany i błędy w trakcie procesu tworzenia a nie tylko incydentalnie po wydaniach
- świadome myślenie o lawinowym charakterze strat, gdy błąd który można usunąć w trakcie produkcji znajdzie klient po wydaniu wersji
- automaty służą do testów systemowych i integracji całości systemu a nie tylko, aby sobie budowały w nocy kod tak dla draki; aby ktoś z jakiegośtam działu nie zepsuł pracy kogoś z któregoś tam działu :-)
Tak mi się wydaje, że dopiero po uświadomieniu w drużynie projektowej od biznesu po produkujących kod, dlaczego warto automatyzować testy można przejść do zabawy z Selenium IDE, Selenium RC oraz Hudson ew. Hudson. Cytuje mądrą wypowiedź znawców kontroli jakości:
Ciągła integracja to przede wszystkim sztuka szybkiego przepływu informacji w procesie produkcji. Im szybciej wiemy o problemie, tym więcej czasu i za mniejsze pieniądze zareagujemy. Im później, tym większe ryzyko.
http://agilesurfing.pl/2011/programowanie/automatyczne-testowanie-kodu-jak-to-robic/
http://test-driven-development.com/