Continuous Integration i jakość kodu. Michał Prajs



Podobne dokumenty
Program szkolenia: Continuous Integration i Git

Innowacyjne rozwiązania typu open source w aplikacjach typu gis-web. Dominik Tałanda

Artifactory Power Pack Pro w procesie wytwarzania oprogramowania. Artifactory Power Pack Plugins Artifactory License Control

Program szkolenia: Jenkins - Continuous Integration

Programowanie Zespołowe

Usługa: Audyt kodu źródłowego

szkolenia pod drzewem Wybrane Techniki XP bnd 2008 Tomasz Włodarek. Materiał udostępniany na podstawie licencji Creative Commons (by-nc-nd) 1.00.

Wymagania: umiejętność modelowania systemów informatycznych z wykorzystaniem UML. umiejętność definiowania i kreatywnego rozwiązywania problemów

Open Source w służbie developerom

Zwinna współpraca programistów i testerów z wykorzystaniem BDD i. by Example (JBehave/Spock/SpecFlow)

Ciągłe dostarczanie oprogramowania : kompletny przewodnik / Eberhard Wolff. Gliwice, cop Spis treści

KOŁO NAUKOWE INFORMATYKÓW SYSTEMY KONTROLI WERSJI CZ.1 16 XII 2009 OPRACOWAŁ: PRZEMYSŁAW PARDEL

Studia podyplomowe PROGRAM NAUCZANIA PLAN STUDIÓW

Techniki efektywnego testowania kodu dla programistów Java (Spock

Program szkolenia: Test Driven Development (TDD) using Spock or JUnit 5

Bazy i Systemy Bankowe Sp. z o.o. ul. Kasprzaka 3, Bydgoszcz

Budowa aplikacji webowej w oparciu o Maven2 oraz przykłady testów jednostkowych. Wykonał Marcin Gadamer

Korporacyjna Magistrala Usług na przykładzie Mule ESB

System kontroli wersji - wprowadzenie. Rzeszów,2 XII 2010

Całościowe podejście do testowania automatycznego dla programistów. (TDD, BDD, Spec. by Example, wzorce, narzędzia)

Opis realizacji dla czterech zespołów (4 przypadki użycia)

Narzędzia podnoszące jakość procesu wytwarzania i wdrażania

JUnit TESTY JEDNOSTKOWE. Waldemar Korłub. Platformy Technologiczne KASK ETI Politechnika Gdańska

Usługa: Testowanie wydajności oprogramowania

AUREA BPM HP Software. TECNA Sp. z o.o. Strona 1 z 7

Marcin Luckner Politechnika Warszawska Wydział Matematyki i Nauk Informacyjnych

mint software Business Solutions Development Team

Aurea BPM Dokumenty pod kontrolą

Prezentacja firmy

The current software tools for the JEE platform

Michał Olejnik. 22 grudnia 2009

Zasady organizacji projektów informatycznych

Produktywne tworzenie aplikacji webowych z wykorzystaniem Groovy i

Etapy życia oprogramowania

REFERAT PRACY DYPLOMOWEJ

Szkolenie: Automatyzacja testowania

Umowy IT zabezpieczenie interesów stron

Projektowanie oprogramowania. Termin zajęć: poniedziałek, a podstawie materiału ze strony.

Dokumentacja kompilacji źródeł aplikacji 1.0

Etapy życia oprogramowania. Modele cyklu życia projektu. Etapy życia oprogramowania. Etapy życia oprogramowania

Architektura mikroserwisów na platformie Spring IO

I. Opis przedmiotu zamówienia

Akademia ADB Wykład I Praca w grupie i jakość kodu

Tester oprogramowania 2014/15 Tematy prac dyplomowych

Testowanie oprogramowania. Piotr Ciskowski

Testowanie aplikacji mobilnych na platformie Android - architektura, wzorce, praktyki i narzędzia

Załącznik 1 instrukcje instalacji

Bezpieczeństwo systemów internetowych

Projektowanie systemów informatycznych. Roman Simiński programowanie.siminskionline.pl. Cykl życia systemu informatycznego

BUDOWANIE APLIKACJI. Waldemar Korłub. Platformy Technologiczne KASK ETI Politechnika Gdańska

Testowanie oprogramowania

PYTANIA PRÓBNE DO EGZAMINU NA CERTYFIKAT ZAAWANSOWANY REQB KLUCZ ODPOWIEDZI. Część DODATEK

Spring Framework - wprowadzenie i zagadnienia zaawansowane

Web frameworks do budowy aplikacji zgodnych z J2EE. Jacek Panachida

Feature Driven Development

Projektowanie oprogramowania

Wprowadzenie do projektu QualitySpy

Programowanie poprzez testy z wykorzystaniem JUnit

Cykle życia systemu informatycznego

WYKORZYSTANIE JĘZYKA GROOVY W TESTACH JEDNOSTKOWYCH, INTEGRACYJNYCH I AUTOMATYCZNYCH. Mirosław Gołda, Programista Java

HP Service Anywhere Uproszczenie zarządzania usługami IT

Elektroniczny Obieg Dokumentów edok. I Mazowiecki Konwent Informatyków i Administracji Zegrze, 8-9 września 2016 r.

Maciej Oleksy Zenon Matuszyk

Tytuł szkolenia: Angular 4 - budowanie nowoczesnych i wydajnych aplikacji przeglądarkowych

Testowanie mutacyjne

METODY PROGRAMOWANIA

ZAŁĄCZNIK Nr 2 do CZĘŚCI II SIWZ WYCIĄG ZE STANDARDÓW, ZASAD I WZORCÓW INTEGRACYJNYCH OBOWIĄZUJĄCYCH W PSE S.A.

Testowanie aplikacji JAVA Laboratorium 8 (Tabele w scenariuszach JBehave. Projekt z podstaw BDD oraz atrap.)

EOIF GigaCon Summit Warszawa

Główne założenia XP. Prostota (Simplicity) Komunikacja (Communication) Sprzężenie zwrotne (Feedback) Odwaga (Agressiveness)

Programowanie zespołowe

Piotr Ślęzak. Gdzie się podziała jakość

Warsztat: "Automatyzacja testów (JAVA) - od podstaw"

Web frameworks do budowy aplikacji zgodnych z J2EE

Inżynieria oprogramowania (Software Engineering) Wykład 1

Testowanie aplikacji mobilnych z ukierunkowaniem na system Android

Java w 21 dni / Rogers Cadenhead. Gliwice, cop Spis treści. O autorze 11. Wprowadzenie 13 TYDZIEŃ I JĘZYK JAVA

TWÓJ BIZNES. Nasz Obieg Dokumentów

Testowanie. Ryszard Beczek & Piotr Miłkowski 1 04/11/07

OSGi Agata Hejmej

Kod doskonały : jak tworzyć oprogramowanie pozbawione błędów / Steve McConnell. Gliwice, cop Spis treści. Wstęp 15.

INŻYNIERIA OPROGRAMOWANIA TESTOWANIE SYSTEMOWE

Całościowe podejście do testowania automatycznego dla programistów. /C#/PHP (TDD, BDD, Spec. by Example, wzorce, narzędzia)

FASTER IT DRIVES BETTER BUSINESS. Daniel Spica, CEO

Program szkolenia: Tworzenie aplikacji w Ruby on Rails z wykorzystaniem zwinnych metodyk

CI/CD - CO TO? PO CO? JAK?

Dlaczego testowanie jest ważne?

Architektura systemów webowych wysokiej przepustowości. na przykładzie Wikia

Jak daleko jesteśmy od standardu? ankieta dla twórców produktów informatycznych o podwyższonych wymaganiach bezpieczeństwa

Analiza mikroserwisów. Warszawa,

Zapytanie ofertowe nr 9/POIG 8.2/11/10

NAJLEPSZE STRATEGIE SKUTECZNYCH PROGRAMISTÓW. TECHNIKI PRACY Z KODEM KOD: NSKOD

ISO w Banku Spółdzielczym - od decyzji do realizacji

Oracle PL/SQL. Paweł Rajba.

Programowanie Urządzeń Mobilnych. Laboratorium nr 7, 8

Bezpieczeństwo aplikacji i urządzeń mobilnych w kontekście wymagań normy ISO/IEC oraz BS doświadczenia audytora

SOA Web Services in Java

OD MONOLITU DO MIKROUSŁUGI MICROSERVICES

Transkrypt:

Continuous Integration i jakość kodu Michał Prajs

Agenda

Michał Prajs SMT Software Prowadzący Continuous Integration Jenkins CI Statyczna analiza kodu Checkstyle Pokrycie kodu testami jednostkowymi Cobertura

SMT Software Na rynku od 2002 roku Ponad 500 specjalistów IT 7 oddziałów na terenie kraju: Wrocław (siedziba główna), Warszawa, Poznań, Kraków, Gliwice, Katowice, Białystok Oddziały w Holandii, Francji, Wielkiej Brytanii Część grupy kapitałowej Grupa SMT S.A. notowanej na GPW Outsourcing IT Specjaliści Zespoły Usługi zarządzane Projekty informatyczne Dedykowane Online Mobilne Testy i audyty

Michał Prajs Współpracuje z SMT od ponad dwóch lat Programista i techniczny leader zespołu Specjalista Javy i frameworków na niej opartych Wprowadza do projektów praktyki pozwalające na łatwy rozwój i utrzymanie oprogramowania

Continuous Integration

Firma software owa Czym się zajmuje? Kto tworzy software? Jak?

Zamierzchłe czasy Rozdzielamy projekt na zadania niezależne Integrujemy części wytworzone przez zespoły Same wady: Konieczność wczesnego zdefiniowania punktów styku między modułami Trudność wprowadzania zmian mogą dotyczyć kilku zespołów Czasochłonność integracji i wysokie prawdopodobieństwo porażki

Obecnie, ale bez CI (z wykorzystaniem SCM) Rozdzielamy zadania tak jak poprzednio Centralne repozytorium kodu Kilka wad zostało Mała odporność projektu na zmiany Nadal trzeba zintegrować moduły

Continuous Integration Częste zmiany wymagań a nawet samej architektury systemu Wybredni klienci Korzyści: Częste budowanie całego systemu Każde wgranie kodu do repozytorium sprawdzane (serwer CI robi update przed każdym buildem) Automatyczne uruchamianie testów jednostkowych i integracyjnych Gotowe artefakty na testy akceptacyjne, gotowy produkt Prowadzenie metryk U mnie działa? Pfffff..

Build CI Sukces Archiwizacja kodu Archiwizacja wytworzonych artefaktów Statystyki metryk Porażka Informacja dla zespołu Poprawki na gorąco

No to do dzieła Repozytorium (SVN, CVS, TFS, GitHub, itp.) Narzędzie do budowania (Maven, Ant) Testy jednostkowe, integracyjne (JUnit, Mockito, PowerMock) Analiza statyczna kodu (Checkstyle, PMD) Serwer CI (Jenkins, Apache CI) Archiwizacja kodu Archiwizacja artefaktów Zadania powykonawcze (auto deploy)

Analiza statyczna kodu Checkstyle

Analiza statyczna kodu Czystość kodu Jednolity kod Czytelność kodu Rozszerzalność Udokumentowany kod Łatwość utrzymania/serwisowania Wskazuje miejsca nadające się do refactoringu

Checkstyle Konfiguracja kontroli standardowych Integracja z narzędziami do budowania (Maven plugin) Integracja z narzędziami do programowania (Eclipse plugin) Integracja z CI (Jenkins plugin) 133 standardowe czujki

Design klasy VisibilityModifier Wymusza enkapsulację FinalClass Wymusza modyfikator final w klasie, która ma tylko prywatne konstruktory InterfaceIsType Interface nie powinien jedynie definiować stałych HideUtilityClassConstructor Instancja takiej klasy nie ma sensu DesignForExtension Wymusza styl programowania, gdzie klasy nadrzędne pozostawiają miejsca, które mogą być nadpisane przez klasy podrzędne, czyli nieprywatna, niestatyczna metoda w klasie nadrzędnej musi być: Abstrakcyjna lub Finalna lub Mieć pustą implementację

Design klasy cd. MutableException Wykrywa gdy wyjątek może zmienić swój stan w trakcie cyklu życia ThrowsCount Gdy metoda rzuca wyjątki z różnych grup, prowadzi to do złych praktyk, jak łapanie ogólnych wyjątków, jak catch (Exception) InnerTypeLast

Metryki BooleanExpressionComplexity ClassDataAbstractionCoupling ClassFanOutComplexity CyclomaticComplexity NPathComplexity JavaNCSS

Pozostałe grupy Konwencje nazewnictwa Wymuszenie rozmiaru pliku/klasy/metody/linii Długość linii Ilość parametrów metody Polityka pustych znaków Wyrównanie

Testy jednostkowe

Testy jednostkowe Test Driven Development Testy jednostkowe Mockowanie obiektów Testy integracyjne

Motywacja Eliminacja błędów już podczas programowania Ograniczenie czasu potrzebnego na bugfixing Poprawność modyfikacji

Pokrycie kodu Procent w jakim kod jest sprawdzony przez testy jednostkowe Wszystkie rozgałęzienia Sytuacje wyjątkowe

Pytania? Wolałbyś walczyć z kaczką wielkości konia, czy ze stoma końmi wielkości kaczki?

Dziękujemy za uwagę Dywizja Południe SMT Software Spółka z ograniczoną odpowiedzialnością SKA ul. Piłsudskiego 13 50-048 Wrocław tel. +48 71 769 59 00 fax +48 71 769 59 01 Dywizja Centrum SMT Software Spółka z ograniczoną odpowiedzialnością SKA ul. Jutrzenki 183 02-231 Warszawa tel. +48 22 380 47 50 fax +48 22 380 47 51 Wrocław Warszawa Poznań Kraków Gliwice Katowice Białystok