• Nie Znaleziono Wyników

Pracownia Technik Obliczeniowych Debugowanie i testy Paweł Daniluk

N/A
N/A
Protected

Academic year: 2021

Share "Pracownia Technik Obliczeniowych Debugowanie i testy Paweł Daniluk"

Copied!
10
0
0

Pełen tekst

(1)

Pracownia Technik Obliczeniowych

Debugowanie i testy

Paweł Daniluk

Wydział Fizyki

Wiosna 2016

(2)

komunikaty diagnostyczne asercje

debugowanie post-mortem debugowanie step-by-step

Błędy często występują “losowo”.

(3)

Przykład

profile_test.py

#! / u s r / b i n / p y t h o n i m p o r t random

f o r i i n x r a n g e( 1 0 0 0 0 ) : a=random . r a n d i n t ( 1 , 1 0 ) b=random . r a n d i n t ( 1 , 1 0 ) c=random . r a n d i n t ( 1 , 1 0 ) c/=a−b

Co jest przyczyną wyjątku? Jakie wartości a, b i c go powodują?

(4)

#!/ u s r / b i n / p y t h o n

i m p o r t random i m p o r t math

d e f n a t n u m b e r ( ) :

r e s=random . r a n d i n t ( 0 , 1 0 0 0 ) i f ( random . r a n d i n t ( 0 , 1 0 0 0 ) > 9 9 8 ) :

r e s=−r e s r e t u r n r e s

t a b =[ n a t n u m b e r ( ) f o r _ i n x r a n g e ( 2 0 0 ) ]

sum=0 f o r i i n t a b :

sum+=math . s q r t ( i ) p r i n t sum

(5)

Przykład

1 Debugowanie post-mortem nie daje odpowiedzi, skąd biorą się liczby ujemne.

2 Można uruchomić program pod kontrolą ipdb i przejść po wszystkich instrukcjach.

3 Breakpoint: break 14

4 Breakpoint warunkowy: break 10, res<0

(6)

i m p o r t i p d b ; i p d b . s e t _ t r a c e ( )

(7)

Testy jednostkowe

https://docs.python.org/2/library/unittest.html

(8)

Jak konstruować testy jednostkowe?

wymagania, które musi spełniać program (np. tożsamości algebraiczne)

przypadki szczególne, które powinny być obsłużone błędy i problemy wykryte podczas eksploatacji

(9)

Zadanie 1

Wypróbuj przykład z dokumentacji do modułu unittest.

(10)

Zaimplementuj klasę Complex realizującą podstawowe operacje na liczbach zespolonych oraz testy jednostkowe do niej.

Cytaty

Powiązane dokumenty

Powłoka systemu (shell) jest doskonałym narzędziem, które pozwala zrobić sporo więcej niż tylko uruchamiać programy.. Shell jest kompletnym

Uruchom dwa wsady: ten z zadania 2 i dodatkowy, który po zakończeniu pierwszego zliczy maszyny, na które

Systemy UNIXowe mają z reguły ten sam układ katalogów.. /bin Podstawowe pliki wykonywalne dostępne dla wszystkich (np. cat,

Można również uruchamiać profilowanie określonych fragmentów z poziomu

W programie może występować co najwyżej jedna funkcja o danej

Paradygmat obiektowy doskonale nadaje się do opisywania struktury i stanu dużych systemów.. Niestety takie systemy rzadko kiedy pozostają niezmienne

javax.sql.rowset.serial Provides utility classes to allow serializable mappings be- tween SQL types and data types in the Java programming language.. javax.sql.rowset.spi The

okno przestrzeni roboczej (Workspace) - wyświetla listę zmiennych utworzonych w programie podając standardowo ich nazwy oraz