techniczna organizacja zespołu

47
Jak dobrze zacząć projekt techniczna organizacja zespołu Łukasz Roszak Hubert Taler

Upload: intive

Post on 17-Jan-2017

365 views

Category:

Software


0 download

TRANSCRIPT

Page 1: Techniczna organizacja zespołu

Jak dobrze zacząć projekt techniczna organizacja zespołu

Łukasz Roszak

Hubert Ta ler

Page 2: Techniczna organizacja zespołu

AGENDA

Zarządzanie kodem źródłowym

Testowanie aplikacji na różnych poziomach

Ciągła integracja

Projektowanie struktury aplikacji

Page 3: Techniczna organizacja zespołu

TEST JOEL’A

Page 4: Techniczna organizacja zespołu

The Joel Test: 12 Steps to Better Code

1. Do you use source control?

2. Can you make a build in one step?

3. Do you make daily builds?

4. Do you have a bug database?

5. Do you fix bugs before writing new code?

6. Do you have an up-to-date schedule?

7. Do you have a spec?

8. Do programmers have quiet working conditions?

9. Do you use the best tools money can buy?

10. Do you have testers?

11. Do new candidates write code during their interview?

12. Do you do hallway usability testing?

Page 5: Techniczna organizacja zespołu

KORZYSTAJCIE Z UMIAREM

Page 6: Techniczna organizacja zespołu

Każdy element dodany od procesu obciąża go

Nie wszystko trzeba wdrożyć od początku

Proponuj usprawnienia w czasie sprint retrospective

Załóż wiki i trzymaj ją aktualną!

Page 7: Techniczna organizacja zespołu

SYSTEM KONTROLI WERSJI

Page 8: Techniczna organizacja zespołu
Page 9: Techniczna organizacja zespołu

Nie tylko dla zespołów

Historia zmian

Praca nad wieloma zadaniami jednocześnie

Odtwarzanie działającej wersji

Wyszukiwanie przyczyn błędów

Page 10: Techniczna organizacja zespołu

A co dla zespołów

Codzienne wrzucanie kodu jako backup

Łatwa synchronizacja z innymi developerami

Łatwe łączenie zmian

Współbieżna praca nad kodem

Page 11: Techniczna organizacja zespołu

Podstawowe pojęcia

Branch – nazwana „wersja” repozytorium, na której pracujemy i

wykonujemy zmiany nie ingerując w inne „wersje”.

Commit – zbiór zmian w plikach

np „Added filter option in list header”.

Merge – połączenie zmian wykonanych w innych branchach.

Konflikt – sytuacja, kiedy w różnych branchach zmieniono te same

fragmenty plików.

Page 12: Techniczna organizacja zespołu

Gdzie trzymać repozytorium?

Aplikacja webowa zbudowana nad repozytoriami Git i Mercurial

Dodatkowy, wygodny interfejs do przeglądania repozytorium

Łatwo wprowadzić code review poprzez pull request

Page 13: Techniczna organizacja zespołu
Page 14: Techniczna organizacja zespołu

CODING GUIDELINES

Page 15: Techniczna organizacja zespołu
Page 16: Techniczna organizacja zespołu
Page 17: Techniczna organizacja zespołu
Page 18: Techniczna organizacja zespołu

Coding guidelines

Kod wygląda, jakby pisała go jedna osoba

Nawet bez dokumentu powinniśmy trzymać się konwencji dla

danego języka programowania

Ustalamy zasady demokratycznie

Dokumentujemy je i w razie potrzeby aktualizujemy

Page 19: Techniczna organizacja zespołu

Co ustalamy

Konwencje:

Nazewnictwo zmiennych, metod, klas, przestrzeni nazw

Formatowanie składni

Umieszczenie plików w odpowiednich miejscach

Obsługa wyjątków

Komentarze:

Samodokumentujący się kod

Nie komentuj złego kodu, przepisz go!

Wykorzystaj narzędzia (audyt i automatyczne formatowanie)

Page 21: Techniczna organizacja zespołu

BRANCHING POLICY

Page 22: Techniczna organizacja zespołu

Branching policy

Definiujemy:

główne branche ( master, stable itp. )

nazewnictwo tworzonych branchy roboczych

Wiemy, gdzie szukać działającego/produkcyjnego kodu

Możemy współpracować nad różnymi zadaniami

Zapewniamy stabilność głównego kodu

Page 23: Techniczna organizacja zespołu

Źródło: http://nvie.com/posts/a-successful-git-branching-model/

Page 24: Techniczna organizacja zespołu

Źródło: http://nvie.com/posts/a-successful-git-branching-model/

Page 25: Techniczna organizacja zespołu

Źródło: http://nvie.com/posts/a-successful-git-branching-model/

Page 26: Techniczna organizacja zespołu

TESTOWANIE APLIKACJI

Page 27: Techniczna organizacja zespołu

Po co testujemy?

Znajdujemy błędy

Zwiększamy jakość produktu

Poprawiamy proces

Nie jest możliwe udowodnienie, że aplikacja nie ma błędów

Page 28: Techniczna organizacja zespołu

TASK FLOW

Page 29: Techniczna organizacja zespołu

Task flow

Definiuje możliwe stany i przejścia pomiędzy nimi dla każdego

zadania

Pokazuje bieżący stan prac nad zadaniem

KISS - "Keep it simple, stupid„

Page 30: Techniczna organizacja zespołu
Page 31: Techniczna organizacja zespołu

TESTY MANUALNE

Page 32: Techniczna organizacja zespołu

Akceptacyjne, funkcjonalne, smoke, eksploracyjne itp.

Plany, scenariusze, przypadki i dane testowe

Wszystkie błędy zgłaszamy w spójny sposób

Wersja aplikacji

System, przeglądarka, środowisko na jakim rzeprowadzono test

Kroki do odtworzenia

Rezultat

Oczekiwany rezultat

Page 33: Techniczna organizacja zespołu

Tester i programista to różne osoby

Nieprzetestowane oznacza nie zrobione

Szacując zadania uwzględniać należy testowanie

Page 34: Techniczna organizacja zespołu

TESTY JEDNOSTKOWE

Page 35: Techniczna organizacja zespołu

Test jednostkowy (ang. unit test)

Metoda testowania tworzonego oprogramowania poprzez

wykonywanie testów weryfikujących poprawność działania

pojedynczych elementów (jednostek) programu.

Page 36: Techniczna organizacja zespołu
Page 37: Techniczna organizacja zespołu

FIRST, czyli dobre testy jednostkowe

Fast

Independent

Repeatable

Self-validating

Timely

Page 38: Techniczna organizacja zespołu

Skrajności są złe

Page 39: Techniczna organizacja zespołu

TEST DRIVEN DEVELOPMENT

Page 40: Techniczna organizacja zespołu

TDD – pojedyncza iteracja

1. Myślimy o najmniejszej jednostce kodu jaki potrzebujemy

2. Piszemy test jednostkowy, który go używa

3. Uruchamiamy test ( TEST FAILED )

4. Piszemy kod

5. Uruchamiamy test ( TEST PASSED lub wracamy do 4)

6. Wracamy do 1

Page 41: Techniczna organizacja zespołu

Wady i zalety

Wymaga dyscypliny

Daje niemal 100% pokrycie kodu testami

Produkuje minimalny wymagany i często optymalny kod

Dobre podejście, kiedy nie piszemy interfejsu użytkownika

Page 42: Techniczna organizacja zespołu

AUTOMATYZACJA TESTÓW

Page 43: Techniczna organizacja zespołu

Automatyzacja testów

Nie eliminuje testów manualnych.

Można automatyzować wszystko ( np. przygotowanie danych ).

Automatyzacja ma swój koszt.

Testy jednostkowe, to już przynajmniej częściowa automatyzacja.

Automatyczne testy GUI z wykorzystaniem Selenium, Calabash itp.

Page 44: Techniczna organizacja zespołu
Page 45: Techniczna organizacja zespołu

TESTY USABILITY

Page 46: Techniczna organizacja zespołu

Testy usability

Sprawdzają, czy aplikacja jest przyjazna dla użytkowników.

Optymalizujemy aplikację pod docelowe potrzeby użytkowników.

Wykonuje się je na makietach aplikacji.

Wykonują ją przeważnie graficy ( wolą być nazywani UX ).

Page 47: Techniczna organizacja zespołu

DZIĘKUJĘ ZA UWAGĘ Chętnie odopwiem na wszystkie pytania