Kurs rozszerzony języka Python

Podobne dokumenty
Kurs języka Python. Wykład 11. Marcin Młotkowski. 4 stycznia Kontrola poprawności podczas biegu programu. 2 Testowanie oprogramowania

Programowanie w Ruby

Spis treści. Dekoratory. 1 Dekoratory 1.1 Zadanie Zadanie Zadanie Zadanie 4

Testowanie aplikacji. Kurs języka Ruby

Python. Wprowadzenie. Jolanta Bachan

Zaawansowany kurs języka Python

Podstawy programowania w Pythonie

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

Spis treści. Funkcje. 1 Funkcje 1.1 Zadanie Zadanie Zadanie Zadanie Zadanie Zadanie Zadanie 7

Zaawansowany kurs języka Python

Instrukcja 10 Laboratorium 13 Testy akceptacyjne z wykorzystaniem narzędzia FitNesse

Programowanie obiektowe

Zaawansowany kurs języka Python

Zaawansowane aplikacje WWW - laboratorium

Programowanie w Ruby

Programowanie w Ruby

Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu.

Zaawansowany kurs języka Python

Kurs rozszerzony języka Python

Ćwiczenie 5. Python 3: Programowanie obiektowe i dziedziczenie

MS Visual Studio 2005 Team Suite - Performance Tool

Wstęp do programowania

Testowanie I. Celem zajęć jest zapoznanie studentów z podstawami testowania ze szczególnym uwzględnieniem testowania jednostkowego.

Zaawansowany kurs języka Python

Kurs języka Python. Wątki

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

ASP.NET MVC. Podstawy. Zaawansowane programowanie internetowe Instrukcja nr 3

Laboratorium z przedmiotu: Inżynieria Oprogramowania INP002017_ Laboratorium 11 Testy akceptacyjne z wykorzystaniem narzędzia FitNesse

Programowanie obiektowe

Zaawansowane aplikacje internetowe - laboratorium

2. Kliknij Insert->Userform. Jeżeli Toolbox nie pojawi się automatycznie, kliknij View -> Toolbox. Otrzymany widok powinien być jak poniżej.

Testy aplikacji webowych

Język Python. Język Python 1/35

Laboratorium 1 - Programowanie proceduralne i obiektowe

Kurs rozszerzony języka Python

Języki i techniki programowania Ćwiczenia 2

D:\DYDAKTYKA\ZAI_BIS\_Ćwiczenia_wzorce\04\04_poprawiony.doc 2009-lis-23, 17:44

Wykład 7: Pakiety i Interfejsy

- Narzędzie Windows Forms. - Przykładowe aplikacje. Wyższa Metody Szkoła programowania Techniczno Ekonomiczna 1 w Świdnicy

Kurs rozszerzony języka Python

C++ - [1-3] Debugowanie w Qt Creator

Zaawansowane aplikacje internetowe

Sphinx - system dokumentacji dla Pythona

Testowanie II. Cel zajęć. Pokrycie kodu

Krótki kurs obsługi środowiska programistycznego Turbo Pascal z 12 Opracował Jan T. Biernat. Wstęp

Wstęp do informatyki. stęp do informatyki Polecenia (cz.2)

Automaty do zadań specjalnych. Olga Maciaszek-Sharma, Artur Kotow Wersja 1,

Kurs języka Python. Wykład 5. Marcin Młotkowski. 9 listopada Rodzaje parametrów funkcji. 2 Biblioteka Tk. 3 Układanie kontrolek w oknie

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

Podstawy programowania: Python. Wprowadzenie. Jolanta Bachan

Język Python (2) Język Python (2) 1/36

Automatyzacja testów aplikacji webowych w Selenium podstawy. Natalia Krawczyk

Programowanie w języku Python. Grażyna Koba

Podstawy wykorzystania bibliotek DLL w skryptach oprogramowania InTouch

Język Python (3) Język Python (3) 1/35

Systemy Rozproszone. Spis treści. Temat projektu: Regułowy system analizujacy logi. autorzy: Rafał Sadłowski, Sebastian Falkus, Michał Różycki

Zaawansowany kurs języka Python

Microsoft Test Manager

Programowanie poprzez testy z wykorzystaniem JUnit

Programowanie obiektowe zastosowanie języka Java SE

Python jest interpreterem poleceń. Mamy dwie możliwości wydawania owych poleceń:

Klasy i obiekty cz II

Wykład 2 Wybrane konstrukcje obiektowych języków programowania (1)

Politechnika Łódzka. Instytut Systemów Inżynierii Elektrycznej. Laboratorium cyfrowej techniki pomiarowej. Ćwiczenie 4

EPI: Interfejs Graficzny 2011/2012 Laboratorium nr 2 Programowanie obiektowe

Wprowadzenie do Python

Wstęp do programowania

Instrukcja użytkownika aplikacji npodpis r.

Kurs WWW. Paweł Rajba.

2) W wyświetlonym oknie należy zaznaczyć chęć utworzenia nowej aplikacji (wygląd okna może się różnić od powyższego); kliknąć OK

1. Pierwszy program. Kompilator ignoruje komentarze; zadaniem komentarza jest bowiem wyjaśnienie programu człowiekowi.

Program szkoleniowy. 24 h dydaktycznych (18 h zegarowych) NAZWA SZCZEGÓŁY CZAS

Pobieranie argumentów wiersza polecenia

Wstęp do programowania

Python wprowadzenie. Warszawa, 24 marca PROGRAMOWANIE I SZKOLENIA

Jak przenieść bazę danych na zdalny serwer?

rozdział 4: ZMIENNE I INSTRUKCJE

UML a kod w C++ i Javie. Przypadki użycia. Diagramy klas. Klasy użytkowników i wykorzystywane funkcje. Związki pomiędzy przypadkami.

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

Scenariusz lekcji. Scenariusz lekcji 1 TEMAT LEKCJI: 2 CELE LEKCJI: 2.1 Wiadomości: 2.2 Umiejętności: 3 METODY NAUCZANIA: 4 ŚRODKI DYDAKTYCZNE:

REFERAT PRACY DYPLOMOWEJ

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

Kurs języka Python Wykład 8. Przetwarzanie tekstu Wyrażenia regularne Biblioteka urllib Parsowanie html'a XML

Podstawy programowania III WYKŁAD 6

Podstawy programowania skrót z wykładów:

Politechnika Gdańska Katedra Optoelektroniki i Systemów Elektronicznych

Podstawy programowania w Pythonie

Przykład rozwiązywania problemu w programie DSS1OPT

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

Sposoby wykrywania i usuwania błędów. Tomasz Borzyszkowski

Wstęp do programowania

Programowanie i projektowanie obiektowe

Programowanie w Ruby

MATLAB tworzenie własnych funkcji

Katalog książek cz. 3: Web Service

Wstęp do Pythona. Janusz Szwabiński. Python w obliczeniach numerycznych (C) 2005 Janusz Szwabiński p.1/36

Technologie informacyjne: Excel i Python

FAQ: /PL Data: 3/07/2013 Konfiguracja współpracy programów PC Access i Microsoft Excel ze sterownikiem S7-1200

Wprowadzenie do programowania w języku Visual Basic. Podstawowe instrukcje języka

Instrukcja użytkownika aplikacji npodpis r.

Transkrypt:

8 grudnia 2017

Plan wykładu 1 2 3 4 5 Środowisko StoryText gtklogger

Plan wykładu 1 2 3 4 5 Środowisko StoryText gtklogger

Asercje Asercja to formuła logiczna; Asercji używa się do kontrolowania czy np. wartość zmiennej ma odpowiedni typ lub mieści się w pożądanym zakresie; Do kontroli używa się instrukcji assert wyrażenie W przypadku niespełnienia wyrażenia zgłaszany jest wyjątek AssertionError

Przykład użycia asercji def dodaj(x, y): assert type(x) == type(1) assert type(y) == type(1) return x + y

Przykład użycia asercji def dodaj(x, y): assert type(x) == type(1) assert type(y) == type(1) return x + y >>> dodaj( dwa, dwa ) Traceback (most recent call last): File "asercje.py", line 14, in <module> print(dodaj("dwa", "dwa")) File "asercje.py", line 6, in dodaj assert type(x) == type(1) AssertionError

Uwagi Asercje spowalniają działanie programu.

Wyłączanie asercji Asercje są sprawdzane w zależności od zmiennej logicznej debug ; domyślna wartość: True; zmiennej debug nie można modyfikować w czasie wykonywania programu W przypadku uruchomienia programu z opcją -O (optymalizacja) wartością debug jest False.

Inne wykorzystanie debug if debug : print (dodaj(2,2)) print (dodaj( dwa, dwa ))

Plan wykładu 1 2 3 4 5 Środowisko StoryText gtklogger

Wprowadzenie do testowania Test jednostkowy(ang. unit test) Test sprawdzający poprawność pojedynczego elementu oprogramowania: metody, klasy czy procedury.

Wprowadzenie do testowania Test jednostkowy(ang. unit test) Test sprawdzający poprawność pojedynczego elementu oprogramowania: metody, klasy czy procedury. Zestaw testów (ang. test suite) Implementuje się zestawy testów, które można uruchomić automatycznie.

Wprowadzenie do testowania Test jednostkowy(ang. unit test) Test sprawdzający poprawność pojedynczego elementu oprogramowania: metody, klasy czy procedury. Zestaw testów (ang. test suite) Implementuje się zestawy testów, które można uruchomić automatycznie. Testy regresyjne Testy przeprowadzane po wprowadzeniu zmian do dobrze działającego kodu.

Testy jednostkowe Testy jednostkowe można traktować jako specyfikację klasy bądź modułu.

Testowanie Co jest testowane: czy poprawne dane dają poprawny wynik; czy niepoprawne dane dają oczekiwany (np. niepoprawny wynik) lub wyjątek.

Narzędzia do testowania w Pythonie PyUnit PyDoc

Zadanie Napisać funkcję decapitalize z argumentem typu string i zwracającą string Unifikacja imienia i nazwiska do postaci Imie Nazwisko, np. decapitalize( JAN KOWALSKI ): Jan Kowalski Kontrola typu, gdy argument nie jest typu string, zgłaszany jest wyjątek ArgumentNotStringError

PyUnit Testy są zebrane w odrębnym pliku (plikach) Można wskazywać, jakie testy mają być wykonane

Implementacja class ArgumentNotStringError(Exception): pass def decapitalize(nazwisko): Zamiana napisów (imion i nazwisk) pisanych wielkimi literami

Unittest Implementacja import unittest import types class TestDeCapitalize(unittest.TestCase):

Zamiana na poprawną postać znanewartosci = [ ( jan KoWaLski, Jan Kowalski ), ( claude levi-strauss, Claude Levi-Strauss ), ( JeRzy august MniSzEch, Jerzy August Mniszech ) ] class TestdeCapitalize def testprosty(self): Proste sprawdzenia for zly, dobry in self.znanewartosci: res = decapitalize(zly) self.assertequal(dobry, res)

Test na identyczność definicja danych listanazwisk = [ Benedykt Polak, Fryderyk Joliot-Curie ] def testident(self): Nie zamieni poprawnych nazwisk for nazw in self.listanazwisk: self.assertequal(nazw, decapitalize(nazw), Zmiana poprawnego nazwiska! )

Niepoprawne wyniki psuj = [ ( SpYtko z MeLsztyna, Spytko z Melsztyna ), ( SkaRbiMIr Z rodu AwDańców, Skarbimir z rodu Awdańców ), ] def testzly(self): Nie radzi sobie for zly, dobry in self.psuj: res = decapitalize(zly) self.assertnotequal(dobry, res)

Przypomnienie class ArgumentNotStringError(Exception): pass def decapitalize(nazwisko): Zamiana napisów (imion i nazwisk) pisanych wielkimi literami if type(nazwisko)!= type( ): raise ArgumentNotStringError Metoda testująca def testdziedzina(self): self.assertraises(argumentnotstringerror, decapitalize, 10)

Podsumowanie testy.py import unittest, types import testowany modul class TestdeCapitalize(unittest.TestCase): def testprosty(self):... def testident(self):... def testdziedzina(self):... if name == main : unittest.main()

Uzupełnienie Metoda TestDeCapitalize.setUp(self) Inicjowanie wstępne wykonywane przed każdym testem (zakładanie baz danych i tabel, tworzenie plików/tabel z przykładowymi danymi).

Uzupełnienie Metoda TestDeCapitalize.setUp(self) Inicjowanie wstępne wykonywane przed każdym testem (zakładanie baz danych i tabel, tworzenie plików/tabel z przykładowymi danymi). Metoda TestDeCapitalize.tearDown(self) sprzątanie wykonywane po każdym teście (usuwanie tymczasowych plików etc).

Uruchomienie python testy.py -v testdziedzina ( main.testy)... ok Nie zamieni poprawnych nazwisk... ok Proste sprawdzenia... ok Nie radzi sobie... ok -------------------------------------------- Ran 5 tests in 0.001s OK

Zarządzanie zestawami testów zestaw testow.py s1 = TestyDeCapitalize() s2 = modul.innetesty() alltests = unittest.testsuite([s1, s2]) unittest.texttestrunner(verbosity=3).run(alltests)

Testowanie za pomocą pakietu doctest Przypomnienie print (modul. doc ) help(modul)

Testy w komentarzach def decapitalize(nazwisko): Zamiana napisów (nazwisk) pisanych wielkimi literami. Przykłady: >>> [decapitalize(n) for n in [ Kaz WieLki, Stefan Batory ]] [ Kaz Wielki, Stefan Batory ] >>> decapitalize( Henryk Walezy ) Henryk Walezy >>> decapitalize(2) Traceback (most recent call last):... ArgumentNotStringError

Uruchomienie testów if name == main : import doctest doctest.testmod()

doctest wynik Trying: [decapitalize(n) for n in [ Kaz WieLki, Stefan Batory ]] Expecting: [ Kaz Wielki, Stefan Batory ] ok Trying: decapitalize( Henryk Walezy ) Expecting: Henryk Walezy ok

Trying: decapitalize(2) Expecting: Traceback (most recent call last):... ArgumentNotStringError ok

2 items had no tests: main main.argumentnotstringerror 1 items passed all tests: 3 tests in main.decapitalize 3 tests in 3 items. 3 passed and 0 failed. Test passed.

Plan wykładu 1 2 3 4 5 Środowisko StoryText gtklogger

Pomiar wydajności fragmentu kodu Klasa timeit.timer import timeit t = timeit.timer(stmt= [6,5,4,3,2,1].sort() ) print ( czas %.2f sec % t.timeit())

Pomiar wydajności fragmentu kodu Klasa timeit.timer import timeit t = timeit.timer(stmt= [6,5,4,3,2,1].sort() ) print ( czas %.2f sec % t.timeit()) Python 2.6 import timeit print ( czas %.2f sec % timeit.timeit(stmt= [6,5,4,3,2,1].sort() ))

Pomiar wydajności całego programu Z linii poleceń $ python -m timeit [3,2,1].sort() Wynik 1000000 loops, best of 3: 0.483 usec per loop

Profilowanie Profilowanie dostarcza informacji o czasie wykonywania poszczególnych funkcji, liczbie wywołań etc.

Przykład profilowania Wywołanie $ python -m profile my doctest.py Wynik 19287 function calls (19035 primitive calls) in 0.350 CPU sec ncalls tottime percall cumtime percall filename:lineno(function) Ordered by: standard name 1 0.000 0.000 0.010 0.010 :0( import ) 3 0.000 0.000 0.000 0.000 :0(_getframe) 1 0.000 0.000 0.000 0.000 :0(allocate_lock) 1436 0.000 0.000 0.000 0.000 :0(append) 4 0.000 0.000 0.000 0.000 :0(callable)

Plan wykładu 1 2 3 4 5 Środowisko StoryText gtklogger

pdb Wywołanie $ python -m pdb mymodule.py (pdb) help (pdb)

Plan wykładu Środowisko StoryText gtklogger 1 2 3 4 5 Środowisko StoryText gtklogger

StoryText (dawniej PyUseCase) Środowisko StoryText gtklogger nagrywanie akcji (jaka kontrolka, jaka akcja); odtwarzanie nagrania; rejestracja odtwarzania.

StoryText (dawniej PyUseCase) Środowisko StoryText gtklogger nagrywanie akcji (jaka kontrolka, jaka akcja); odtwarzanie nagrania; rejestracja odtwarzania. System ma własne GUI do nagrywania i zarządzania scenariuszami. Jest też wtyczka do Eclipse.

Przykład logu odtwarzania Środowisko StoryText gtklogger ---------- Window The Video Store ---------- Focus widget is Movie Name Menu Bar : File (+) New Movie Name, Text entry, Button Add, Button De Button Sort, Button Clear Showing Notebook with tabs: text info, video view Viewing page video view Showing Movie Tree with columns: Movie Name Shortcuts:, Button _New ----------------------------------------------

Analiza logu Środowisko StoryText gtklogger TextTest Framework przeznaczony do testowania programów pracujących w trybie tekstowym (generujących wyniki do strumieni wyjściowych stdout i stderr).

Analiza logu Środowisko StoryText gtklogger TextTest Framework przeznaczony do testowania programów pracujących w trybie tekstowym (generujących wyniki do strumieni wyjściowych stdout i stderr). TextTest może być wykorzystany do analizy logów z odtwarzania aplikacji PyGTK.

Asercje Środowisko StoryText gtklogger Testowanie polega na porównywaniu tekstowego wyniku z oczekiwanym.

gtklogger Środowisko StoryText gtklogger Oprogramowanie stworzone w National Institute of Standards and Technology.

Rejestrowanie scenariuszy użycia Środowisko StoryText gtklogger Instrumentacja programu Dodanie do kodu źródłowego specjalnych metod do logowania.

Przykład Środowisko StoryText gtklogger window = gtk.window() gtklogger.newtoplevelwidget(window, Top ) button = gtk.button( Naciśnij ) gtklogger.setwidgetname(button, czerwony ) gtklogger.connect(button, clicked, buttoncb)

Przykład Środowisko StoryText gtklogger window = gtk.window() gtklogger.newtoplevelwidget(window, Top ) button = gtk.button( Naciśnij ) gtklogger.setwidgetname(button, czerwony ) gtklogger.connect(button, clicked, buttoncb) Rozpoczęcie/zakończenie rejestracji gtklogger.start()/gtklogger.stop()

Plik z logiem Środowisko StoryText gtklogger Plik z logiem to prawie program w Pythonie. Można go uzupełnić o własne asercje.

Uruchomienie scenariusza Środowisko StoryText gtklogger gtklogger.replay()