Pokazywanie postów oznaczonych etykietą warsztaty. Pokaż wszystkie posty
Pokazywanie postów oznaczonych etykietą warsztaty. Pokaż wszystkie posty

środa, 26 kwietnia 2017

Wroclove Code Carrots SQL

Klucz USB w kształcie marchewki leżący na klawiaturze otwartego laptopa

Geek Girls

Stereotypowo IT geek w męskim wydaniu kojarzy się z okularnikiem w koszuli w kratę podjadającym pizzę. Dlatego grupa Geek Girls postanowiła nazwać się Carrots, żeby zerwać z tym obrazem wielbicieli technologii. Na warsztatach SQL organizowanych przez Wroclove Geek Girls Carrots i RTS Software Masters można więc było podjeść wiele zdrowych przekąsek (z marchewkami na czele), jak również skorzystać z pomocy pięknych, przyjaźnie nastawionych dziewcząt (i dwóch chłopaków) chętnych do dzielenia się swoja wiedzą z zakresu baz danych.

MySQL

Na prawie sześciogodzinnych warsztatach korzystaliśmy z darmowego serwisu do ćwiczenia baz danych db4free.net. Karotki  przygotowały tam dla nas bazę danych fikcyjnego biura podróży, którego zasoby mogliśmy wykorzystywać do praktycznych ćwiczeń.

Warsztaty składały się z czterech części: każda zaczynała się krótkim wstępem teoretycznym, po którym następowały indywidualne ćwiczenia. Uczestnicy podzieleni byli na 4 grupy, a do każdej z nich przydzielonych było po dwóch mentorów do pomocy przy praktycznych zmaganiach.

Po podstawowym wstępie na temat tego, czym są dane, bazy danych oraz systemy zarządzania bazami danych, poznaliśmy składnię najprostszego zapytania, czyli SELECT. Żeby wyciągnąć z bazy np. nazwiska klientów, trzeba wysłać zapytanie:

 SELECT nazwisko
   FROM klienci

gdzie "nazwisko" będzie nazwą kolumny, a "klienci" nazwą tabeli, z której te dane chcemy pobrać.
Następnym poziomem jest zabawa w filtrowanie wyników wyszukiwania po wysokości rabatu przypisanego klientowi lub literze nazwiska dzięki formule WHERE, np.:

 SELECT *
   FROM klienci
  WHERE rabat > 0

Relacje

Najtrudniejszą częścią warsztatów było dla mnie zrozumienie, jak w zapytaniach zaznacza się relacje między rożnymi tabelami. Jeśli  chcemy zdobyć np. listę klientów, którzy nie zapłacili jeszcze za swoje wakacje, będziemy musieli połączyć najpierw dwie tabele: tę z danymi klientów i tę z danymi rezerwacji:

 SELECT klienci.* , rezerwacje.*
   FROM klienci 
   JOIN rezerwacje ON klienci.id = rezerwacje.klient_id 
  WHERE zaplacone = FALSE

Właśnie to JOIN...ON sprawiło mi najwięcej trudności. Jest to bowiem miejsce w zapytaniu, gdzie musimy zaznaczyć z jaką tabelą należy połączyć tabelę "klienci", aby otrzymać dane o opłaceniu rezerwacji. Informacje o klientach zawiera tabela "klienci", a informacje o rezerwacjach tabela "rezerwacje". Mają coś wspólnego - identyfikator klienta. Relacja ta wyrażona jest za pomocą klucza głównego w tabeli "klienci", czyli "klienci.id" oraz klucza obcego w tabeli "rezerwacje", czyli "rezerwacje.klient_id". Dzięki temu połączeniu możemy uzyskać zarówno dane klientów, jak i informację, czy rezerwacja została opłacona.

Funkcje

Funkcje pozwalają przetworzyć dane tak, aby zwróciły nam nową informację np. średnią (funkcja AVG) lub sumę (funkcja SUM). Dla przykładu, aby policzyć sumę pieniędzy, którą nasze biuro podroży uzbierało już z opłaconych rezerwacji, możemy użyć zapytania:

 SELECT SUM(oferty.cena)
   FROM rezerwacje
  INNER JOIN oferty ON rezerwacje.oferta_id = oferty.id
  WHERE rezerwacje.zaplacone = TRUE

Dane o opłaceniu rezerwacji są w tabeli "rezerwacje", a ceny znajdują się w tabeli "oferty" - stąd relacja JOIN. Natomiast funkcja SUM zlicza wszystkie kwoty po połączeniu danych odnośnie cen i zapłaconych rezerwacji.

Wnętrze sali w której odbywały się warsztaty

Reasumując :)

Mimo luźnej atmosfery widać było, że warsztaty zostały pieczołowicie i profesjonalnie przygotowane. Dało się odczuć, że mentorzy przećwiczyli swoje wystąpienia, a wszystkie przykłady i zadania były spójne. Każdy uczestnik mógł otrzymać doraźną pomoc w swoich dylematach podczas rozwiązywania zadań.

Mili ludzie, smaczne przekąski, dobra kawa i nowe umiejętności podane w przystępny sposób - przepis na udaną sobotę! Było to moje pierwsze spotkanie z Karotkami i jestem pod wrażeniem. Po warsztatach mogliśmy porozmawiać przy wspólnym obiedzie w knajpie przy Rynku. To nieformalne spotkanie uzmysłowiło mi jeszcze dobitniej, jak świetnie jest mieszkać we Wrocławiu, gdzie tyle niesamowitych osób dzieli się swoją wiedzą z samej chęci rozpowszechniania zamiłowania do technologii. Aż chce się dać coś z powrotem od siebie. Może kiedyś dotrę do poziomu znajomości tematu, który pozwoli mi odwdzięczyć się za całą zdobytą za darmo wiedzę i życzliwość, której doświadczyłam poprzez przekazanie tej wiedzy dalej.

czwartek, 9 marca 2017

Trochę praktyki, trochę zdobytych porad i napisany egzamin

Testy jednostkowe i TDD

Już coraz więcej rozumiem i coraz więcej wiem. Czuję się coraz pewniej w zagadnieniach teoretycznych. Radzę sobie nawet z testami jednostkowymi na studiach podyplomowych, choć są one dla mnie bardzo wymagające intelektualno-logicznie.

Testy jednostkowe, które ćwiczymy na WSB bazują na podejściu zwanym Test Driven Development, czyli "najpierw testuj, potem programuj." Polega ono na tym, że dostajemy dane, które ma obsługiwać napisana przez nas funkcja tak, żeby osiągnąć wyszczególniony rezultat. Na przykład, jeśli podamy funkcji liczbę 1, to ma ona zwracać liczbę 1, a jeśli tej samej funkcji podamy liczbę 2, to ma zwrócić liczbę 4. Trzeba się nagłówkować, jak napisać w Pythonie funkcję, która wykona najpierw to pierwsze zadanie, a później zadziała również dla drugiego przypadku. Podczas zajęć formułę do tworzenia testu jednostkowego dostaliśmy gotową, więc główne zadanie polegało na modyfikowaniu modułu z funkcją tak, żeby test przechodził pozytywnie. Zgodnie z zasadami TDD, najpierw test jednostkowy ma zostać nie zaliczony i na podstawie błędu wprowadza się zmiany w module z funkcją, aż uda się zaliczyć test poprawnie. Było to trudne i jeszcze przede mną wiele ćwiczeń na zadanie domowe, ale dużą satysfakcję daję komunikat, że test został zaliczony pomyślnie.

Praktyczne warsztaty z testowania oprogramowania

12. lutego razem z dwoma koleżankami ze studiów i jednym kolegą bawiliśmy się w testerów na warsztatach prowadzonych przez Karolinę Pawłowską z Ipis Services. Karolina przygotowała dla nas krótką prezentację teoretyczną z typowych zagadnień związanych z testowaniem oprogramowania. Natomiast 80% czasu w tę słoneczną niedzielę próbowaliśmy znajdować usterki w grze komputerowej przygotowanej specjalnie na warsztaty.

Moje emocje związane z praktycznym testowaniem gry na tych ćwiczeniach określiłabym od początkowej konfuzji i zupełnego chaosu do końcowego uporządkowania i większej uważności. Stopniowo uczyliśmy się, jak efektywnie podchodzić do zadań testerskich, które mogą nas spotkać na rozmowach kwalifikacyjnych. Ćwiczenia przeplatały się z coraz bardziej uszczegółowioną teorią. W usystematyzowany sposób poznawaliśmy od praktycznej strony kolejne techniki: od testowania eksploracyjnego przez testowanie w oparciu o klasy równoważności i warunki brzegowe, aż po przypadki testowe generowane ze specyfikacji. W miarę upływu czasu coraz lepiej szło nam spostrzeganie defektów. I co najważniejsze uczyliśmy się nasze odkrycia w miarę sensownie i spójnie notować.

Karolina bardzo wiele opowiadała nam też o tym, co warto uwypuklić w CV (szczególnie, kiedy nie mamy jeszcze żadnego doświadczenia przemawiającego na naszą korzyść) i jak wyglądają rozmowy kwalifikacyjne, które ona sama przeprowadza dosyć często.

Akademia Początkującego Testera

Udało mi się wziąć udział w wydarzeniu organizowanym przez Akademię Początkującego Testera pt. "Rozmowy o testach." Nie było to ogólnikowe spotkanie, na którym poznaje się, czym jest zawód testera i jak się zabrać za przebranżawianie. Wydarzenie określiłabym raczej na poziomie średnio-zaawansowanym. Składało się ono z czterech wykładów dotyczących różnych szczegółów/aspektów pracy testera.

Po pierwsze Joasia mówiła o tym, że jeśli są jakieś cechy charakteru, które utrudniają nam bycie dobrym testerem (np. introwertyzm lub nie dostateczne zwracanie uwagi na szczegóły), to mamy na nie wpływ przez ćwiczenia i wyrabianie nowych nawyków. W skrócie - możemy pracować nad naszymi słabszymi stronami - nie determinują one powodzenia w pracy testera. Asia poleciła nam książkę "Myśl jak Sherlock Holmes" jako źródło ćwiczeń na spostrzegawczość. Postaram się ją przeczytać w wolnej chwili.

Po drugie, Marta przedstawiła kilka narzędzi do zarządzania testami, które warto poznać, żeby ułatwić sobie pracę w testowaniu - od Excela po Microsoft Test Manager. W każdej firmie istnieje inny sposób zarządzania testami, ale wyróżnione przez Martę narzędzia mogą służyć jako przedstawiciele większości z nich.

Następnie Darek podpowiadał, jak można się samodoskonalić, żeby zostać testerem. Podkreślał rolę poświęcenia, wizualizacji, wyznaczania sobie i zapisywania celów. Muszę jego wskazówki koniecznie wcielić w życie, bo moje cele motają mi się w głowie bez większego ładu, co nie pomaga w dążeniu do ich realizacji.

Na koniec, Grzegorz opowiadał o tym, jak skomplikowane jest testowanie urządzeń mobilnych i jak wiele rzeczy trzeba wziąć pod uwagę, żeby przetestować aplikacje mobilne. Mnogość zagadnień, z którymi trzeba się liczyć w takim testowaniu przyprawia o zawrót głowy, ale podobno są usystematyzowane sposoby na poradzenie sobie z tym.

Egzamin ISTQB - poziom podstawowy

7. marca napisałam egzamin ISTQB w siedzibie SJSI we Wrocławiu. Cieszę się, że mam to już za sobą i mogę skupić się na uczeniu innych, bardziej praktycznych rzeczy. Moja wersja egzaminu składała się zarówno z typowych pytań o teorię zawartą w sylabusie, jak i z kilku praktycznych zastosowań tej teorii w przypadkach testowych. Te praktyczne zadania przysporzyły mi najwięcej trudu z racji tego, że za mało mam jeszcze doświadczenia w tworzeniu testów i przypadków testowych. Wyobrażam sobie, że ktoś, kto zdaje egzamin ISTQB po przepracowaniu choć kilku miesięcy jako tester może poradzić sobie z tego typu pytaniami o wiele lepiej. Ale mam nadzieję, że rozwiązałam poprawnie wystarczająco dużo zadań, żeby egzamin zdać. Dowiem się tego w ciągu kilku nadchodzących dni.