TESTOWAĆ TESTOWAĆ TESTOWAĆ TESTOWAĆ TESTOWAĆ TESTOWAĆ TESTOWAĆ

Podobne dokumenty
Program szkolenia: Zaawansowane programowanie w C++

Optymalizacja programów Open Source. Pamięć część 3. Krzysztof Lichota

Wprowadzenie do Valgrinda

CODE::BLOCKS & VALGRIND OPRACOWAŁ MICHAŁ BETHKE

Laboratorium Informatyka (I) AiR Ćwiczenia z debugowania

Wykład VII. Programowanie III - semestr III Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

Krótka Historia. Co to jest NetBeans? Historia. NetBeans Platform NetBeans IDE NetBeans Mobility Pack Zintegrowane moduły. Paczki do NetBeans.

Badanie skuteczności kampanii

Praca z kodem legacy : strategie, naprawa błędów, refaktoryzacja oraz

Od uczestników szkolenia wymagana jest umiejętność programowania w języku C oraz podstawowa znajomość obsługi systemu Linux.

Jeśli chcesz łatwo i szybko opanować podstawy C++, sięgnij po tę książkę.

Wydajny Linux. Jakub Woźniak KN Sieci Komputerowych i Systemów Rozproszonych Tenesys

Od uczestników szkolenia wymagana jest umiejętność programowania w języku C oraz podstawowa znajomość obsługi systemu Windows.

Podstawy Programowania

HumanTechnology. Projektowanie interakcji. czyli łatanie dziury w procesie produkcji

Poradnik 1: Gimp Krótko o programie

Wydajność systemów a organizacja pamięci. Krzysztof Banaś, Obliczenia wysokiej wydajności. 1

przedstawia Mariusz Gil

Testowanie oprogramowania

Optymalizacja Automatycznych Testów Regresywnych

Testowanie II. Celem zajęć jest zapoznanie studentów z oceną jakości testów przy wykorzystaniu metryk pokrycia kodu testami (ang. code coverage).

KARTA PRZEDMIOTU. Egzamin / zaliczenie. Egzamin / zaliczenie. ocenę*

Szkoła Podstawowa nr 1 w Kowarach

Szkoła Podstawowa nr 1 w Kowarach

Narzędzia do analizy działań marketingowych w internecie: Google Analytics & Webmaster Tools, analityka social media

Programy użytkowe (utilities)

Szkoła Podstawowa nr 1 w Kowarach

MonoGame. Wieloplatformowe gry w C# Mateusz Cicheński

Wskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie.

KARTA KURSU. Wstęp do programowania

Optymalizacja programów Open Source. Profilery wysokiego poziomu część 2. Krzysztof Lichota

Przyspieszenie obróbki CNC z edytorem ścieżki. narzędzia w ZW3D. ZW3D CAD/CAM Biała księga

Program szkolenia: Continuous Integration i Git

IdyllaOS. Prosty, alternatywny system operacyjny. Autor: Grzegorz Gliński. Kontakt:

Tworzenie bezpiecznego środowiska kont shellowych

SQL SERVER 2012 i nie tylko:

Adam Kotynia, Łukasz Kowalczyk

Tworzenie aplikacji na platformie Android

SPOŁECZNOŚCI INTERNETOWE

Wymagania edukacyjne z informatyki i technologii informacyjnej

Politechnika Krakowska im. Tadeusza Kościuszki. Karta przedmiotu. obowiązuje w roku akademickim 2012/2013. Przedmioty kierunkowe

Szkolenie Android dla początkujących

SYLABUS DOTYCZY CYKLU KSZTAŁCENIA realizacja w roku akademickim 2016/2017

Zaawansowane programowanie w C++ (PCP)

Wskaźnik może wskazywać na jakąś zmienną, strukturę, tablicę a nawet funkcję. Oto podstawowe operatory niezbędne do operowania wskaźnikami:

NAZWA PRZEDMIOTU/MODUŁU KSZTAŁCENIA:

ZDOBĄDŹ PRACĘ TAKĄ, JAKĄ CHCESZ! PROGRAM KURSU ON-LINE

na przykładzie EWALUACJI EX-ANTE konkursu Rozwiązania jutra w HR

Politechnika Krakowska im. Tadeusza Kościuszki. Karta przedmiotu. obowiązuje studentów rozpoczynających studia w roku akademickim 2012/2013

dziennik Instrukcja obsługi

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL III TI 4 godziny tygodniowo (4x30 tygodni =120 godzin ),

XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery

Zadanie nr 3: Sprawdzanie testu z arytmetyki

GNU GProf i GCov. przygotował: Krzysztof Jurczuk Politechnika Białostocka Wydział Informatyki Katedra Oprogramowania ul. Wiejska 45A Białystok

Procesowa specyfikacja systemów IT

JDBC w LoXiMie. Interfejs Java Database Connectivity dla systemu LoXiM. Adam Michalik 2008

Projektowanie, tworzenie aplikacji mobilnych na platformie Android

Automatyczne generowanie testów z modeli. Bogdan Bereza Automatyczne generowanie testów z modeli

Programowanie równoległe i rozproszone. Praca zbiorowa pod redakcją Andrzeja Karbowskiego i Ewy Niewiadomskiej-Szynkiewicz

Informatyczne systemy kognitywne wspomagające procesy zarządzania. Ryszard Tadeusiewicz AGH

A Study of Java`s Non-Java Memory. Remigiusz Mytyk

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

Galileo - encyklopedia internetowa Plan testów

Wstęp do programowania

ZASADY OCENIANIA Z JĘZYKA POLSKIEGO

Moc płynąca z kart graficznych

PROE wykład 2 operacje na wskaźnikach. dr inż. Jacek Naruniec

KARTA PRZEDMIOTU. Systemy czasu rzeczywistego: D1_9

Politechnika Krakowska im. Tadeusza Kościuszki. Karta przedmiotu. obowiązuje studentów rozpoczynających studia w roku akademickim 2018/2019

ArcInfo NOWY WYMIAR NAUKI SPAWANIA

PRZEDMIOTOWY SYSTEM OCENIANIA Z JĘZYKA ANGIELSKIEGO W SPOŁECZNYM GIMNAZJUM ORAZ SPOŁECZNEJ SZKOŁY PODSTAWOWEJ STO W Ciechanowie

PRZEDMIOTOWY SYSTEM OCENIANIA Z JĘZYKA ANGIELSKIEGO OBOWIĄZUJĄCY W SZKOLE PODSTAWOWEJ NR 3 W LĘDZINACH

Informatyka I stopień (I stopień / II stopień) Ogólnoakademicki (ogólno akademicki / praktyczny)

Zapisywanie algorytmów w języku programowania

Przedmiotowe zasady oceniania z zajęć komputerowych

SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE

ArcInfo, Nowy wymiar nauki spawania. ArcInfo NOWY WYMIAR NAUKI SPAWANIA (7)

Twoje dziecko i standaryzowane formy sprawdzania umiejętności

Przykłady wybranych fragmentów prac egzaminacyjnych z komentarzami Technik mechanizacji rolnictwa 321[22] (zadanie 9) 1. Zadanie egzaminacyjne

Informacje ogólne. Karol Trybulec p-programowanie.pl 1. 2 // cialo klasy. class osoba { string imie; string nazwisko; int wiek; int wzrost;

Władza i Wpływ cz.3. Mapa władzy i wpływu Jak określić skuteczność tych relacji, od których zależy nasz sukces i powodzenie zawodowe.

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki

PROGRAM CFS-DM. Menadżer dokumentacji przeciwpożarowej

Projektowanie systemu krok po kroku

Twoje dziecko i standaryzowane formy sprawdzania umiejętności

Obliczenia równoległe i rozproszone. Praca zbiorowa pod redakcją Andrzeja Karbowskiego i Ewy Niewiadomskiej-Szynkiewicz

ZASADY PROGRAMOWANIA KOMPUTERÓW

Raport ewaluacji jakości kształcenia na kierunku Kosmetologia. Rok akademicki 2011/2012

Strojenie systemu Linux pod k¹tem serwera bazy danych Oracle 9i

Tworzenie sterowników dla FreeBSD. Michał Hajduk

Jak powstaje model biznesowy? Co to jest? Modelowanie biznesowe. Model biznesowy. Jak powstaje model biznesowy? Jak firma generuje przychody?

Kurs programowania. Wstęp - wykład 0. Wojciech Macyna. 22 lutego 2016

Wszystkie problemy leżą w testach. ForProgress spółka z ograniczoną odpowiedzialnością sp.k.

Cel: Przypisujemy przyciskom określone funkcje panel górny (Panel1)

Automatyczne testowanie jądra Linuksa

Emulacja maszyny. Program udaje zupełnie inną architekturę. Musi przetłumaczyć instrukcje emulowane na instrukcje platformy, na której działa

W każdej sali najważniejszym narzędziem są prawdopodobnie Zasoby. Przyjrzyjmy się teraz temu narzędziu, któremu zmieniono poniżej nazwę na Wspólne

Dlaczego należy oceniać efektywność systemów wynagradzania? Kraków, r. Renata Kucharska-Kawalec, Kazimierz Sedlak

Zwiększ swoją produktywność

Transkrypt:

TESTOWAĆ TESTOWAĆ TESTOWAĆ TESTOWAĆ TESTOWAĆ TESTOWAĆ TESTOWAĆ

Testowanie i naprawa Loxima You cannot control what you cannot measure. Tom DeMarco Grzegorz Timoszuk gt219709@students.mimuw.edu.pl

Plan prezentacji Trudne początki. Jak to poprawić? Co i jak mierzyć? Co i jak sprawdzamy: wycieki pamięci, alokacje pamięci, problemy ze współbieżnością. Plany na przyszłość.

Trudne początki opis Loxima Bardzo mało komentarzy. Jakość kodu: nieprzemyślana struktura, nieznajomość C++, niechlujność, i tak nikt nigdy tego nie otworzy... Nie wiadomo do końca co działa a co nie... A JEDNAK DZIAŁA!!!

Jak to poprawić? Od czego zacząć? Co poprawiać? Jak bardzo ingerować w kod? Jakich narzędzi używać? Jak je wybrać? Jak zabrać się do testowania? Dlaczego tak ważne są testy? Dlaczego ciężko napisać dobre testy? Dlaczego warto mieć środowisko do testów?

Miary Na razie 3 aspetky: Wykonywane testy: wycieki pamięci, stukrotne połączenie, alokowana pamięć, 20 połączeń naraz, problemy ze współbieżnością. 1 close by 1, 12 kb insert, 12 kb insert i select na nim, Propozycje? 3x i 5x ten sam 12 kb insert. Propozycje?

Nieznajomośc C++ Przekazywanie przez wartość a nie przez referencję. Template w pliku.cpp jak to źle zrobić, żeby się kompilowało... Problemy z kompilacją. Tworzenie niepotrzebnych zmiennych na stercie...

Wycieki pamięci Przyczyny. Zapobieganie: RAII, zliczanie referencji, menadżer pamięci. Narzędzia: inwazyjne: ccmalloc, mpatrol, bezinwazyjne: YAMD, insure++, Valgrind. Wybór: Valgrind memcheck.

Valgrind memcheck Użuwają duże projekty się sprawdza. Co można wykrywać: Wycieki pamięci wg klasyfikacji still reachable possibly lost definitely lost (direct, indirect) Niepasujące do siebie alokacje/dealokacje. Używanie niezainicjalozowanych danych.

Loxim, a wycieki pamięci Test 12 kb instert. Wycieki: 60% to proste i duże 14000 12000 10000 Directly Indirectly Possibly 20% to trudne i duże 20% to małe i ciężko dokładnie określić ich status. 8000 6000 4000 Docelowo < 1MB. 2000 0 1783 1821 1832 1844 1856

Optymalizacja sterty Jaka jest motywacja? Narzędzia: Stary Valgrind Massif, Nowy Valgrind Massif, Google Performance Tools. Jak wygląda Loxim w tej metryce?

Valgrind Massif Pokazuje użycie sterty w czasie. Bezinwazyjny. Potrafi też śledzić zużycie stosu w czasie. Duża konfigurowalność. Bardzo dobry do długich złożonych testów. Dlaczego w chwili obecnej nie? Dlaczego kiedyś może tak...

Stary Massif...

Nowy Massif...

Google Performance Tools Inwazyjny, trzeba się linkować ich bilioteką. Analizuje 4 aspekty: inuse_space inuse_objects alloc_space alloc_objects Może służyć też jako narzędzie do wykrwania wycieków pamięci.

Google Performance Tools

Problemy ze współbieżnością Dlaczego to tak ważne? Bardzo łatwo popsuć!!! Dlaczego tak trudno mierzyć? Dlaczego sprawdzanie przez czytanie kodu potrzebuje wspomagania. Tracimy jeden semafor na sejsę a standardowo Linux ma ogracziczenia na 128...

Valgrind helgrind Wygodny czytelny output. Wybrany bo dobra marka... Aspekty, które są testowane: Wyścigi, Zakleszczenia, Błędne użycie POSIX'owego interfejsu Pthreads. Tak naprawdę, nie taki wspaniały... Może jednak warto coś innego?

Przykłady innych narzędzi Google Performance Tools umie też wykrywać wycieki pamięci. Sun Studio. Valgrind Cachegrind i Valgrind Callgrind. Kcachegrind. Dużo innych narzędzi do mierzenia sterty...

Co jeszcze można mierzyć? Wywołania funkcji. Wykorzystanie cache. Czas wykonywania. Wytrzymałość na duże obciążenia. Stan po długotrwałej pracy. Ile stron musimy wczytać?

Plany na przyszłość Powstaje komplesowe środowisko do testów: poprawnościowych, wydajnościowych/jakościowych, wprowadzenie testów długotrwałych.. Zchodzimy z wyciekami pamięci poniżej ustalonego poziomu i ograniczamy pozostałe błędy związane z pamięcią. Rozwiązana chociaż część problemów związanych ze współbieżnością.

Pytania? Dyskusja! Wesołych Świąt!!!. Grafika pochodzi z www.garfield.com