SlideShare ist ein Scribd-Unternehmen logo
1 von 47
Downloaden Sie, um offline zu lesen
Jak dobrze zacząć projekt
techniczna organizacja zespołu
Łukasz Roszak
Hubert Taler
AGENDA
 Zarządzanie kodem źródłowym
 Testowanie aplikacji na różnych poziomach
 Ciągła integracja
 Projektowanie struktury aplikacji
TEST JOEL’A
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?
KORZYSTAJCIE Z UMIAREM
 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ą!
SYSTEM KONTROLI WERSJI
Nie tylko dla zespołów
 Historia zmian
 Praca nad wieloma zadaniami jednocześnie
 Odtwarzanie działającej wersji
 Wyszukiwanie przyczyn błędów
A co dla zespołów
 Codzienne wrzucanie kodu jako backup
 Łatwa synchronizacja z innymi developerami
 Łatwe łączenie zmian
 Współbieżna praca nad kodem
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.
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
CODING GUIDELINES
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
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)
Przykłady?
https://docs.nuget.org/contribute/coding-guidelines
BRANCHING POLICY
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
Źródło: http://nvie.com/posts/a-successful-git-branching-model/
Źródło: http://nvie.com/posts/a-successful-git-branching-model/
Źródło: http://nvie.com/posts/a-successful-git-branching-model/
TESTOWANIE APLIKACJI
Po co testujemy?
 Znajdujemy błędy
 Zwiększamy jakość produktu
 Poprawiamy proces
 Nie jest możliwe udowodnienie, że aplikacja nie ma błędów
TASK FLOW
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„
TESTY MANUALNE
 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
 Tester i programista to różne osoby
 Nieprzetestowane oznacza nie zrobione
 Szacując zadania uwzględniać należy testowanie
TESTY JEDNOSTKOWE
Test jednostkowy (ang. unit test)
Metoda testowania tworzonego oprogramowania poprzez
wykonywanie testów weryfikujących poprawność działania
pojedynczych elementów (jednostek) programu.
FIRST, czyli dobre testy jednostkowe
 Fast
 Independent
 Repeatable
 Self-validating
 Timely
Skrajności są złe
TEST DRIVEN DEVELOPMENT
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
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
AUTOMATYZACJA TESTÓW
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.
TESTY USABILITY
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 ).
DZIĘKUJĘ ZA UWAGĘ
Chętnie odopwiem na wszystkie pytania

Weitere ähnliche Inhalte

Was ist angesagt?

Was ist angesagt? (20)

W poszukiwaniu procesu doskonałego. Wdrożenie Scruma, Continuous Integrations...
W poszukiwaniu procesu doskonałego. Wdrożenie Scruma, Continuous Integrations...W poszukiwaniu procesu doskonałego. Wdrożenie Scruma, Continuous Integrations...
W poszukiwaniu procesu doskonałego. Wdrożenie Scruma, Continuous Integrations...
 
e2e frameworks - czyli kij ma dwa końce
e2e frameworks - czyli kij ma dwa końcee2e frameworks - czyli kij ma dwa końce
e2e frameworks - czyli kij ma dwa końce
 
Testy jednostkowe - 8 rzeczy, które musisz wiedzieć
Testy jednostkowe - 8 rzeczy, które musisz wiedziećTesty jednostkowe - 8 rzeczy, które musisz wiedzieć
Testy jednostkowe - 8 rzeczy, które musisz wiedzieć
 
TDD – w poszukiwaniu źródeł jakości.
TDD – w poszukiwaniu źródeł jakości.TDD – w poszukiwaniu źródeł jakości.
TDD – w poszukiwaniu źródeł jakości.
 
Tdd AngularJs application
Tdd AngularJs applicationTdd AngularJs application
Tdd AngularJs application
 
Dwa sposoby na pisanie aplikacji bez błędów
Dwa sposoby na pisanie aplikacji bez błędówDwa sposoby na pisanie aplikacji bez błędów
Dwa sposoby na pisanie aplikacji bez błędów
 
Integracja środowiska testowego z użyciem Robot Framework, TrojQA 2014-12-16
Integracja środowiska testowego z użyciem Robot Framework, TrojQA 2014-12-16Integracja środowiska testowego z użyciem Robot Framework, TrojQA 2014-12-16
Integracja środowiska testowego z użyciem Robot Framework, TrojQA 2014-12-16
 
Od środowiska developerskiego do produkcji [PL]
Od środowiska developerskiego do produkcji [PL]Od środowiska developerskiego do produkcji [PL]
Od środowiska developerskiego do produkcji [PL]
 
01 - Wprowadzenie do TDD
01 - Wprowadzenie do TDD01 - Wprowadzenie do TDD
01 - Wprowadzenie do TDD
 
Olga Żądło - Robot Framework
Olga Żądło - Robot FrameworkOlga Żądło - Robot Framework
Olga Żądło - Robot Framework
 
Jak zarabiać na testowaniu oprogramowania(konferencja MeeTTech Piła 27.07.2016)
Jak zarabiać na testowaniu oprogramowania(konferencja MeeTTech Piła 27.07.2016)Jak zarabiać na testowaniu oprogramowania(konferencja MeeTTech Piła 27.07.2016)
Jak zarabiać na testowaniu oprogramowania(konferencja MeeTTech Piła 27.07.2016)
 
Porażka nie wchodzi w grę, czyli o niezawodności
Porażka nie wchodzi w grę, czyli o niezawodnościPorażka nie wchodzi w grę, czyli o niezawodności
Porażka nie wchodzi w grę, czyli o niezawodności
 
REvolution, czyli o bardziej obiektowym podejściu w Railsach
REvolution, czyli o bardziej obiektowym podejściu w RailsachREvolution, czyli o bardziej obiektowym podejściu w Railsach
REvolution, czyli o bardziej obiektowym podejściu w Railsach
 
Strategie automatyzacji testow
Strategie automatyzacji testowStrategie automatyzacji testow
Strategie automatyzacji testow
 
KICK ME
KICK MEKICK ME
KICK ME
 
Konrad Gadzina: Test-Driven Gamedev - testy automatyczne a tworzenie gier
Konrad Gadzina: Test-Driven Gamedev - testy automatyczne a tworzenie gierKonrad Gadzina: Test-Driven Gamedev - testy automatyczne a tworzenie gier
Konrad Gadzina: Test-Driven Gamedev - testy automatyczne a tworzenie gier
 
Gherkin - jak zostać poetą w IT
Gherkin - jak zostać poetą w ITGherkin - jak zostać poetą w IT
Gherkin - jak zostać poetą w IT
 
Produkcja aplikacji internetowych
Produkcja aplikacji internetowychProdukcja aplikacji internetowych
Produkcja aplikacji internetowych
 
Więcej testów/mniej kodu - Michał Gaworski, kraQA 13
Więcej testów/mniej kodu - Michał Gaworski, kraQA 13Więcej testów/mniej kodu - Michał Gaworski, kraQA 13
Więcej testów/mniej kodu - Michał Gaworski, kraQA 13
 
Tdd - Czyli jak tworzyć dobre jakościowo aplikacje
Tdd - Czyli jak tworzyć dobre jakościowo aplikacjeTdd - Czyli jak tworzyć dobre jakościowo aplikacje
Tdd - Czyli jak tworzyć dobre jakościowo aplikacje
 

Andere mochten auch

2. 2015 07 08 Abstract FINAL
2. 2015 07 08 Abstract FINAL2. 2015 07 08 Abstract FINAL
2. 2015 07 08 Abstract FINAL
Jessica MacNeill
 
Presentation1
Presentation1Presentation1
Presentation1
Leko Toju
 
Scan 01 Dec 2015 17.38
Scan 01 Dec 2015 17.38Scan 01 Dec 2015 17.38
Scan 01 Dec 2015 17.38
Łukasz Ozimek
 
Piano lesson chick corea - keyboard workshop(2)
Piano lesson   chick corea - keyboard workshop(2)Piano lesson   chick corea - keyboard workshop(2)
Piano lesson chick corea - keyboard workshop(2)
Gerardo Daniel Gallo
 

Andere mochten auch (19)

2. 2015 07 08 Abstract FINAL
2. 2015 07 08 Abstract FINAL2. 2015 07 08 Abstract FINAL
2. 2015 07 08 Abstract FINAL
 
Call me lucky presentation
Call me lucky presentationCall me lucky presentation
Call me lucky presentation
 
8
88
8
 
Visual Studio - zastosowania
Visual Studio - zastosowaniaVisual Studio - zastosowania
Visual Studio - zastosowania
 
Presentation1
Presentation1Presentation1
Presentation1
 
Scan 01 Dec 2015 17.38
Scan 01 Dec 2015 17.38Scan 01 Dec 2015 17.38
Scan 01 Dec 2015 17.38
 
Session 1 - Presentation by Xu Zhaoyuan On behalf of Zhao Changwen
Session 1 - Presentation by Xu Zhaoyuan  On behalf of Zhao Changwen Session 1 - Presentation by Xu Zhaoyuan  On behalf of Zhao Changwen
Session 1 - Presentation by Xu Zhaoyuan On behalf of Zhao Changwen
 
3
33
3
 
Konferencja "Ciało i umysł"
Konferencja "Ciało i umysł"Konferencja "Ciało i umysł"
Konferencja "Ciało i umysł"
 
Nokia e50 ug_pl
Nokia e50 ug_plNokia e50 ug_pl
Nokia e50 ug_pl
 
Happening
HappeningHappening
Happening
 
Defective Telomeres Linked To Diseases And Cancer
Defective Telomeres Linked To Diseases And CancerDefective Telomeres Linked To Diseases And Cancer
Defective Telomeres Linked To Diseases And Cancer
 
Information on effectiveness and adequacy of adaptation - Snapshot Vietnam, b...
Information on effectiveness and adequacy of adaptation - Snapshot Vietnam, b...Information on effectiveness and adequacy of adaptation - Snapshot Vietnam, b...
Information on effectiveness and adequacy of adaptation - Snapshot Vietnam, b...
 
Listas, pilas y colas
Listas, pilas y colasListas, pilas y colas
Listas, pilas y colas
 
Sosial silah darvinizm. azərbaycan (version 2)
Sosial silah darvinizm. azərbaycan (version 2)Sosial silah darvinizm. azərbaycan (version 2)
Sosial silah darvinizm. azərbaycan (version 2)
 
Piano lesson chick corea - keyboard workshop(2)
Piano lesson   chick corea - keyboard workshop(2)Piano lesson   chick corea - keyboard workshop(2)
Piano lesson chick corea - keyboard workshop(2)
 
Ejercicio resuelto de competencia perfecta dic 2015
Ejercicio resuelto de competencia perfecta dic 2015Ejercicio resuelto de competencia perfecta dic 2015
Ejercicio resuelto de competencia perfecta dic 2015
 
Ejercicio resuelto de microeconomía: función de producción
Ejercicio resuelto de microeconomía: función de producciónEjercicio resuelto de microeconomía: función de producción
Ejercicio resuelto de microeconomía: función de producción
 
En tanto que de rosa y azucena de Garcilaso de la Vega
En tanto que de rosa y azucena de Garcilaso de la VegaEn tanto que de rosa y azucena de Garcilaso de la Vega
En tanto que de rosa y azucena de Garcilaso de la Vega
 

Ähnlich wie Techniczna organizacja zespołu

Poznańska grupa .Net spotkanie VI - Test Driven Development
Poznańska grupa .Net spotkanie VI - Test Driven DevelopmentPoznańska grupa .Net spotkanie VI - Test Driven Development
Poznańska grupa .Net spotkanie VI - Test Driven Development
bartlomiej.szafko
 
Kariera it Sopot
Kariera it SopotKariera it Sopot
Kariera it Sopot
neoteric-eu
 
Katarzyna Bylec, Testowanie - perspektywa programisty
Katarzyna Bylec, Testowanie - perspektywa programistyKatarzyna Bylec, Testowanie - perspektywa programisty
Katarzyna Bylec, Testowanie - perspektywa programisty
Geek Girls Carrots Poznan
 
Domain Driven Design, czyli progamowanie przez modelowanie
Domain Driven Design, czyli progamowanie przez modelowanieDomain Driven Design, czyli progamowanie przez modelowanie
Domain Driven Design, czyli progamowanie przez modelowanie
SzymonPobiega
 

Ähnlich wie Techniczna organizacja zespołu (20)

Testowanie automatyczne 2024 INCO Academy
Testowanie automatyczne 2024 INCO AcademyTestowanie automatyczne 2024 INCO Academy
Testowanie automatyczne 2024 INCO Academy
 
Jak stworzyć udany system informatyczny
Jak stworzyć udany system informatycznyJak stworzyć udany system informatyczny
Jak stworzyć udany system informatyczny
 
Podstawy testowania oprogramowania INCO 2023.pptx
Podstawy testowania oprogramowania INCO 2023.pptxPodstawy testowania oprogramowania INCO 2023.pptx
Podstawy testowania oprogramowania INCO 2023.pptx
 
Poznańska grupa .Net spotkanie VI - Test Driven Development
Poznańska grupa .Net spotkanie VI - Test Driven DevelopmentPoznańska grupa .Net spotkanie VI - Test Driven Development
Poznańska grupa .Net spotkanie VI - Test Driven Development
 
CI oraz CD w złożonym projekcie o małym budżecie
CI oraz CD w złożonym projekcie o małym budżecieCI oraz CD w złożonym projekcie o małym budżecie
CI oraz CD w złożonym projekcie o małym budżecie
 
university day 1
university day 1university day 1
university day 1
 
Testowanie na 101 sposobów
Testowanie na 101 sposobówTestowanie na 101 sposobów
Testowanie na 101 sposobów
 
Testy wydajnościowe - najlepsze praktyki - Kuba Gajda
Testy wydajnościowe - najlepsze praktyki - Kuba GajdaTesty wydajnościowe - najlepsze praktyki - Kuba Gajda
Testy wydajnościowe - najlepsze praktyki - Kuba Gajda
 
Kariera it Sopot
Kariera it SopotKariera it Sopot
Kariera it Sopot
 
[Quality Meetup#12] P. Podsiadlik, R. Peroń - Testy regresji z perspektywy pi...
[Quality Meetup#12] P. Podsiadlik, R. Peroń - Testy regresji z perspektywy pi...[Quality Meetup#12] P. Podsiadlik, R. Peroń - Testy regresji z perspektywy pi...
[Quality Meetup#12] P. Podsiadlik, R. Peroń - Testy regresji z perspektywy pi...
 
Automatyzacja testów oprogramowania dla urządzeń mobilnych
Automatyzacja testów oprogramowania dla urządzeń mobilnychAutomatyzacja testów oprogramowania dla urządzeń mobilnych
Automatyzacja testów oprogramowania dla urządzeń mobilnych
 
Testy jednostkowe - PHPUnit
Testy jednostkowe - PHPUnitTesty jednostkowe - PHPUnit
Testy jednostkowe - PHPUnit
 
Praktyki techniczne
Praktyki technicznePraktyki techniczne
Praktyki techniczne
 
Wprowadzenie do MEF w .NET 4.0
Wprowadzenie do MEF w .NET 4.0Wprowadzenie do MEF w .NET 4.0
Wprowadzenie do MEF w .NET 4.0
 
Wyboista droga do dobrego kodu. ...
Wyboista droga do dobrego kodu.                                              ...Wyboista droga do dobrego kodu.                                              ...
Wyboista droga do dobrego kodu. ...
 
Wprowadzenie do PHPUnit
Wprowadzenie do PHPUnitWprowadzenie do PHPUnit
Wprowadzenie do PHPUnit
 
Katarzyna Bylec, Testowanie - perspektywa programisty
Katarzyna Bylec, Testowanie - perspektywa programistyKatarzyna Bylec, Testowanie - perspektywa programisty
Katarzyna Bylec, Testowanie - perspektywa programisty
 
Domain Driven Design, czyli progamowanie przez modelowanie
Domain Driven Design, czyli progamowanie przez modelowanieDomain Driven Design, czyli progamowanie przez modelowanie
Domain Driven Design, czyli progamowanie przez modelowanie
 
Testowanie oprogramowania dla początkujących - Escola Software house
Testowanie oprogramowania dla początkujących - Escola Software houseTestowanie oprogramowania dla początkujących - Escola Software house
Testowanie oprogramowania dla początkujących - Escola Software house
 
TGT#15 - Piramida testów w praktyce (notatki z dyskusji)
TGT#15 - Piramida testów w praktyce (notatki z dyskusji)TGT#15 - Piramida testów w praktyce (notatki z dyskusji)
TGT#15 - Piramida testów w praktyce (notatki z dyskusji)
 

Mehr von intive

Clean architecture: Android
Clean architecture: AndroidClean architecture: Android
Clean architecture: Android
intive
 

Mehr von intive (20)

Rok z Android MVVM
Rok z Android MVVMRok z Android MVVM
Rok z Android MVVM
 
Don't Forget About the Layout
Don't Forget About the LayoutDon't Forget About the Layout
Don't Forget About the Layout
 
You Don't Need Dependency Injection
You Don't Need Dependency InjectionYou Don't Need Dependency Injection
You Don't Need Dependency Injection
 
OWASP Open SAMM
OWASP Open SAMMOWASP Open SAMM
OWASP Open SAMM
 
Porównanie architektur MVVM i MVC (iOS)
Porównanie architektur MVVM i MVC (iOS)Porównanie architektur MVVM i MVC (iOS)
Porównanie architektur MVVM i MVC (iOS)
 
Wprowadzenie do CoreBluetooth
Wprowadzenie do CoreBluetoothWprowadzenie do CoreBluetooth
Wprowadzenie do CoreBluetooth
 
.Net anywhere
.Net anywhere.Net anywhere
.Net anywhere
 
Front end - advanced development for beginners
Front end - advanced development for beginnersFront end - advanced development for beginners
Front end - advanced development for beginners
 
Kotlin, Spek and tests
Kotlin, Spek and testsKotlin, Spek and tests
Kotlin, Spek and tests
 
Patronage 2016 Windows 10 Warsztaty
Patronage 2016 Windows 10 WarsztatyPatronage 2016 Windows 10 Warsztaty
Patronage 2016 Windows 10 Warsztaty
 
Organizacja zespołu
Organizacja zespołuOrganizacja zespołu
Organizacja zespołu
 
[PL] MVP do MVVM - separacja warstw w aplikacji androidowej
[PL] MVP do MVVM - separacja warstw w aplikacji androidowej[PL] MVP do MVVM - separacja warstw w aplikacji androidowej
[PL] MVP do MVVM - separacja warstw w aplikacji androidowej
 
Tips & Tricks Android
Tips & Tricks AndroidTips & Tricks Android
Tips & Tricks Android
 
Apple Watch - Getting Started
Apple Watch - Getting StartedApple Watch - Getting Started
Apple Watch - Getting Started
 
Clean architecture: Android
Clean architecture: AndroidClean architecture: Android
Clean architecture: Android
 
CoreLocation (iOS) in details
CoreLocation (iOS) in detailsCoreLocation (iOS) in details
CoreLocation (iOS) in details
 
Developer Job in Practice
Developer Job in PracticeDeveloper Job in Practice
Developer Job in Practice
 
Java Script - Object-Oriented Programming
Java Script - Object-Oriented ProgrammingJava Script - Object-Oriented Programming
Java Script - Object-Oriented Programming
 
Internet of Things
Internet of ThingsInternet of Things
Internet of Things
 
Service Workers: no more offline!
Service Workers: no more offline!Service Workers: no more offline!
Service Workers: no more offline!
 

Techniczna organizacja zespołu

  • 1. Jak dobrze zacząć projekt techniczna organizacja zespołu Łukasz Roszak Hubert Taler
  • 2. AGENDA  Zarządzanie kodem źródłowym  Testowanie aplikacji na różnych poziomach  Ciągła integracja  Projektowanie struktury aplikacji
  • 4. 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?
  • 6.  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ą!
  • 8.
  • 9. Nie tylko dla zespołów  Historia zmian  Praca nad wieloma zadaniami jednocześnie  Odtwarzanie działającej wersji  Wyszukiwanie przyczyn błędów
  • 10. A co dla zespołów  Codzienne wrzucanie kodu jako backup  Łatwa synchronizacja z innymi developerami  Łatwe łączenie zmian  Współbieżna praca nad kodem
  • 11. 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.
  • 12. 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
  • 13.
  • 15.
  • 16.
  • 17.
  • 18. 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
  • 19. 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)
  • 22. 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
  • 27. Po co testujemy?  Znajdujemy błędy  Zwiększamy jakość produktu  Poprawiamy proces  Nie jest możliwe udowodnienie, że aplikacja nie ma błędów
  • 29. 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„
  • 30.
  • 32.  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
  • 33.  Tester i programista to różne osoby  Nieprzetestowane oznacza nie zrobione  Szacując zadania uwzględniać należy testowanie
  • 35. Test jednostkowy (ang. unit test) Metoda testowania tworzonego oprogramowania poprzez wykonywanie testów weryfikujących poprawność działania pojedynczych elementów (jednostek) programu.
  • 36.
  • 37. FIRST, czyli dobre testy jednostkowe  Fast  Independent  Repeatable  Self-validating  Timely
  • 40. 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
  • 41. 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
  • 43. 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.
  • 44.
  • 46. 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 ).
  • 47. DZIĘKUJĘ ZA UWAGĘ Chętnie odopwiem na wszystkie pytania