Adam Gabryś 2012.03.20, v1.1, www.adam.gabrys.biz.

Slides:



Advertisements
Podobne prezentacje
Układy eksperymentalne analizy wariancji. Analiza wariancji Planowanie eksperymentu Analiza jednoczynnikowa, p poziomów czynnika, dla każdego obiektu.
Advertisements

Inżynieria Oprogramowania
Olga Krygier MKNB BANKIER
Projektowanie w cyklu życia oprogramowania
Wzorce.
Badania operacyjne. Wykład 1
JAKOŚĆ & Metody Jej Pomiaru
Wydział Zastosowań Informatyki i Matematyki SGGW
FIT Środowisko Testów Integracyjnych
10 błędów / wg E. Cochran’a /
Zarządzanie konfiguracją Doskonalenie Procesów Programowych Wykład 6 Copyright, 2001 © Jerzy.
Copyright © Jerzy R. Nawrocki Kontrola jakości oprogramowania Inżynieria oprogramowania.
Refaktoryzacja czyli odświeżanie kodu
Kurs Pascala – spis treści
Cykle życia oprogramowania
Tablice Informatyka Cele lekcji: Wiadomości: Uczeń potrafi:
5. Problemy lokalizacji w projektowaniu międzynarodowych struktur logistycznych – przegląd metod i technik.
Katedra Podstaw Systemów Technicznych Politechnika Śląska
1/18 LOGO Profil zespołu. 2/18 O nas Produkcja autorskich rozwiązań informatycznych dla małych i średnich firm w zakresie systemów: Baz danych Aplikacji.
Bardzo ważnym elementem metodologii projektowania systemów informatycznych jest PMBoK PMBoK (ang. Project Management Body of Knowledge) jest zbiorem standardów.
Dalsze elementy metodologii projektowania. Naszym celem jest...
Analiza, projekt i częściowa implementacja systemu obsługi kina
Narzędzia do testowania
Wykład 2 Cykl życia systemu informacyjnego
Algorytmy genetyczne.
Teoria relacyjnych baz danych
Bazy Danych II prowadzący: mgr inż. Leszek Siwik
Atlantis INSPECTOR System wspomagania zarządzaniem i ewidencją obiektów sieciowych.
Projekt systemu ekspertowego Nazwa Grupa: Zespół:…… …… ……. ……..
Test Doubles Adam Gabryś , v1.1,
Continuous Integration
Rozważaliśmy w dziedzinie czasu zachowanie się w przedziale czasu od t0 do t obiektu dynamicznego opisywanego równaniem różniczkowym Obiekt u(t) y(t) (1a)
Analiza możliwości tworzenia aplikacji typu RIA na przykładzie portalu ogrodniczego Autor: Łukasz Strzelecki Promotor: dr inż. Paweł Kasprowski.
Microsoft Solution Framework
Zarządzanie jakością projektu
Wymiana integracja ? oprogramowania dr Danuta Kajrunajtys.
Metodyki zarządzania projektami
Komponentowe systemy rozproszone Wprowadzenie. Komponent... jest to podstawowa jednostka oprogramowania z kontraktowo (deklaratywnie) opisanymi interfejsami,
Rozwiązanie zadań do zaliczenia I0G1S4 // indeks
Podstawowe informacje o maturze dla gimnazjalistów.
Autor: Joanna Barańska Promotor: dr inż. Paweł Figat Konsultant:
TESTOWANIE OPROGRAMOWANIA
Wykład 10 typ zbiorowy rekurencja.
IV EKSPLORACJA DANYCH Zadania eksploracji danych: klasyfikacja
Copyright © Jerzy R. Nawrocki Kontrola jakości oprogramowania Inżynieria oprogramowania.
„Nie ma nic łatwiejszego niż być zajętym i nic trudniejszego niż być efektywnym” R. Alec Mackenzie.
Analiza kluczowych czynników sukcesu
Bazy i Systemy Bankowe Sp. z o.o. ul. Kasprzaka 3, 85 – 321 Bydgoszcz
Programowanie strukturalne i obiektowe C++
Zarządzanie zagrożeniami
SYSTEMY ZARZĄDZANIA INFORMACJĄ I ICH WPŁYW NA ZARZĄDZANIE JAKOŚCIĄ Politechnika Śląska, Wydział Organizacji i Zarządzania, Katedra Zarządzania Jakością.
Zarządzanie projektami informatycznymi
Zmienne i typy danych w C#
REGUŁY ZABEZPIECZEŃ W APLIKACJI OeBS Przedmiot i zakres szkolenia Przedmiot i zakres szkolenia Przedmiot i zakres szkolenia Przedmiot i zakres szkolenia.
Komponentowe systemy rozproszone Wprowadzenie. Komponent... jest to podstawowa jednostka oprogramowania z kontraktowo (deklaratywnie) opisanymi interfejsami,
Logical Framework Approach Metoda Macierzy Logicznej
Nowa specjalność na II stopniu Informatyki Informatyczne Systemy Mobilne i Przemysłowe Prowadzone przedmioty  Mobilne systemy operacyjne  Komputerowe.
Zarządzanie wdrożeniem oprogramowania w organizacji w oparciu o metodykę ITIL Michał Majewski s4440 Praca magisterska napisana pod kierunkiem dr inż. Tomasza.
PHP jest językiem skryptowym służącym do rozszerzania możliwości stron internetowych. Jego składnia jest bardzo podobna do popularnych języków programowania.
Architektura Rafał Hryniów. Architektura Wizja projektu systemu, którą dzielą twórcy Struktura komponentów systemu, ich powiązań oraz zasad i reguł określających.
Wykład 2 – Zintegrowane systemy informatyczne Michał Wilbrandt.
Opracowanie: mgr Dorota Ściślewska Doradca zawodowy Gimnazjum nr 10 w Gliwicach.
Wyższa Szkoła Informatyki i Zarządzania W Bielsku-Białej Kierunek informatyka Specjalność : Systemy informatyczne Praca dyplomowa inżynierska : System.
Klasy, pola, obiekty, metody. Modyfikatory dostępu, hermetyzacja
Zarządzanie projektami informatycznymi
IV Konferencja Naukowo-Techniczna "Nowoczesne technologie w projektowaniu, budowie.
Clarity Counts University
Refaktoryzacja czyli odświeżanie kodu
Zapis prezentacji:

Adam Gabryś , v1.1,

Plan prezentacji Wprowadzenie Quality Assurance Statyczna analiza kodu Testowanie Zespół testowy Continuous Integration Podsumowanie Dyskusja?

Wprowadzenie Szybki rozwój informatyki Inne dziedziny (medycyna, przemysł, itp.): Udogodnienia Problemy

Wprowadzenie - problemy Problemy z projektami informatycznymi: Większa liczba osób zaangażowanych w projekt Brak wykształcenia informatycznego Trudniejsza dziedzina Więcej technologii integrowanych ze sobą

Wprowadzenie – wyniki problemów Produkty nie spełniające założeń: Dziedzina Wydajność Bezpieczeństwo... Awarie: Problemy z wykryciem miejsca usterek Naprawa jednej usterki wprowadza kolejne …

Quality Assurance Quality Assurance (QA) – zapewnianie jakości Wikipedia EN - definicja (w wolnym tłumaczeniu): Wszystkie planowane i systematycznie wykonywane czynności mające na celu dostarczenie produktu zgodnego ze specyfikacją

Quality assurance - Cele Zmniejszenie kosztów: Produktu zgodny ze specyfikacją Łatwy w utrzymaniu projekt Przejrzysta implementacja: Stosowanie jednolitych konstrukcji Zgodność z konwencjami nazewniczymi Wyeliminowanie nadmiarowych konstrukcji Wyeliminowanie nadmiarowych komentarzy Tworzenie dokumentacji

Quality assurance - Narzędzia Wykorzystuje: Testy Statyczną analizę kodu Continuous Integration Statystyki …

Statyczna analiza kodu Przeglądu kodu bez analizy logicznej Zbiór reguł określających niepoprawne konstrukcje: Wbudowane: Bez parametrów Z parametrami Definiowane ręcznie Zależą od specyfiki problemu i wykorzystywanej technologii

Statyczna analiza kodu – Reguły Proste, np.: czy nazwa klasy zaczyna się z dużej litery czy nazwa zmiennej zaczyna się z małej litery czy w nazwach nie są używane niedozwolone znaki czy nie dokonujemy porównań obiektu this z null'em...

Statyczna analiza kodu - Reguły Złożone, np.: czy klasa z prywatnym konstruktorem jest finalna <- nie ma sensu po niej dziedziczyć czy w kodzie są wykorzystywane "magiczne liczby", np <- wartość ta powinna zostać umieszczona w zmiennej statycznej z opisową nazwą czy liczba zagnieżdżonych pętli nie przekracza określonej wartości <- refaktoryzacja, należy część kodu przenieść do oddzielnych metod czy plik źródłowy nie przekracza 2000 linii <- konieczna refaktoryzacja, klasa w 99% jest źle zaprojektowana …

Statyczna analiza kodu - Reguły Specyfika problemu: Liczba linii kodu w klasie: GUI Model Komentarze: Data Access Object (DAO) Model Technologia: Nazwy interfejsów: Java C#

Statyczna analiza kodu - Przykład public class One { public String foo() { if (this == null) { return ; } else { return toString(); } public String toString() { return One; } ________________________________________________________ public class One { public String foo() { final Object tmp = this; if (tmp == null) { return ; } else { return toString(); } public String toString() { return One; }

Statyczna analiza kodu - Narzędzia Integracja z IDE: Wyświetlanie: Błędów Ostrzeżeń Uwag (notice) Wprowadzenie autokorekty Raportowanie Statystyki

Statyczna analiza kodu - Raport

Statyczna analiza kodu - Statystyki

Testowanie Wikipedia PL – definicja: Proces mający na celu przeprowadzenie: Weryfikacja (zgodność ze specyfikacją) Walidacja (spełnienie oczekiwań użytkownika) oprogramowania.

Testowanie - Czynności Planowanie Nadzorowanie Ustalanie warunków testowych Analiza i projektowanie Implementacja i wykonywanie Ocena kryteriów zakończenia i analiza wyników Tworzenie raportów Zależne od modelu (kaskadowy, iteracyjny itp.)

Testowanie - Cele Cel testowania zależny od rodzaju testu!!! Ogólnie: Ujawnienie usterek Dostarczanie informacji o jakości Zapobieganie awariom

Testowanie - Podział Poziomy: Modułowe Integracyjne Systemowe Akceptacyjne Cele: Funkcjonalne Niefunkcjonalne Strukturalne Potwierdzające i regresywne

Testowanie modułowe Weryfikacja elementów oprogramowania (testowanie funkcjonalności) Testy biało-skrzynkowe Testy jednostkowe, cechy: Tworzone przed lub równolegle z kodem Aktualne Dokładne (warunki brzegowe itp.) Niezależne Nienadmiarowe Zgodne z konwencją Pokrycie kodu około 70%

Testowanie jednostkowe Visual Studio Unit Testing Framework JS.ClassJUnit

Testowanie integracyjne Interakcja pomiędzy różnymi częściami systemu Testy czarno-skrzynkowe Cele: Wykrywanie usterek Rozpoznanie systemu Strategie: Przyrostowa Skokowa (ang. Big bang)

Testowanie systemowe Zbadanie zachowania produktu Środowisko produkcyjne Testy czarno-skrzynkowe Testowanie: Funkcjonalności Wydajności Użyteczności Bezpieczeństwa …

Testowanie akceptacyjne Przeważnie wykonywane przez klienta Testy czarno-skrzynkowe Cel = ocena gotowości produktu: Zgodność ze specyfikacją: Dziedzina Bezawaryjność Wydajność … Testy alfa (producent) i beta (użytkownicy)

Testy funkcjonalne Testy czarno-skrzynkowe Cel – weryfikacja funkcjonalności: Dziedzina Bezpieczeństwo

Testy niefunkcjonalne Testy czarno-skrzynkowe Testy: Wydajnościowe Obciążeniowe Przeciążające Użyteczności Współdziałania Niezawodności Przenaszalności

Testowanie strukturalne Testy biało-skrzynkowe Testowanie: Modułów Klas Metod Funkcji

Testowanie potwierdzające i regresywne Cele: Potwierdzające – weryfikacja naprawy usterki Regresywne – usunięcie defektu nie spowodowało pojawienie się nowych Testy biało-skrzynkowe i czarno-skrzynkowe Testy funkcjonalne, niefunkcjonalne i strukturalne Powtarzalne -> Automatyzacja

Zespół testowy Po co tworzyć oddzielny zespół?

Zespół testowy Cechy dobrego testera !== cech dobrego developera Cechy dobrego testera: Pedantyczność Skrupulatność Wytrwałość Umiejętność szukania dziury w całym Wyłączenie zdrowego rozsądku

Zespół testowy - Niezależność Plusy: Dostrzeganie innych błędów Weryfikacja poprawności założeń Minusy: Utrudniona komunikacja Wąskie gardło Konflikty

Continuous Integration Continuous Integration (CI) – ciągła integracja: Praca 24 godziny na dobę: Długie testy Aktualne informacje o stanie projektu Szybka reakcja na problemy Statystyki umożliwiające zapanowanie nad zespołem

Continuos Integration - Hudson

Podsumowanie Plusy: Szybkie wykrywanie usterek Łatwiejsze wprowadzanie zmian Produkt zgodny ze specyfikacją Produkt wysokiej jakości Zmniejszenie kosztów Minusy: Napięcia QA vs Programiści Dodatkowe koszty

Bibliografia Robert C. Martin – Czysty kod. Podręcznik dobrego programisty, Helion, Gliwice 2010 Lisa Crispin, Janet Gregory – Agile Testing: A Practical Guide for Testers and Agile Teams, Addison-Wesley Professional, 2008 Andy Hunt, Dave Thomas – Junit. Pragmatyczne testy jednostkowe w Javie, Helion, Gliwice 2006

Bibliografia Stowarzyszenie Jakosci Systemow Informatycznych – Certyfikowany tester. Plan poziomu podstawowego 1.0, Bernd Bruegge, Allen H. Dutoit – Inżynieria oprogramowania w ujęciu obiektowym. UML, wzorce projektowe i Java, Helion, Gliwice 2011

Dziękuję za uwagę. Pytania?