background image

 

 

Poprawność 

Poprawność 

programów. 

programów. 

Błąd, źródła błędów.

Błąd, źródła błędów.

background image

 

 

BUG

BUG

• to w żargonie informatycznym, 

wyrażenie oznaczające pewien 

błąd

usterkę

 – niepożądane, powtarzające 

się przy zajściu określonych czynników 

działanie programu, wynikające z 

błędu człowieka na jednym z etapów 

tworzenia oprogramowania, zwykle na 

etapie projektowania lub tworzenia 

kodu źródłowego.

 

background image

 

 

Pochodzenie nazwy „BUG”

Pochodzenie nazwy „BUG”

• Wprowadzenie do 

użycia 
wspomnianego 
terminu 
angielskiego jest 
przypisywane 
admirał 

Grace 

Brewster Murray 
Hopper

background image

 

 

Pochodzenie nazwy „BUG”

Pochodzenie nazwy „BUG”

• Podczas prowadzonych w 

1945

 lub 

1947

 

r

. pracach z prymitywnym 

komputerem 

Harvard Mark II

 

operator stwierdził jego nieprawidłowe 
działanie i po poszukiwaniach 
przyczyny znalazł pomiędzy gołymi 
przewodami przekaźnika drobnego 
insekta (ang. 

bug

) ćmę, która 

powodowała spięcie.

 

background image

 

 

DEBUGERY

DEBUGERY

• Bug jako nazwa błędu programistycznego 

występuje w nazwach programów 

pomagających usuwać błędy, tzw. 

debugerów

 

• Programy  te  pozwalają  śledzić  wartości 

określonych 

zmiennych 

rejestrów 

wykorzystywanych  w  programie  do  momentu 

wystąpienia 

błędu 

celem 

znalezienia 

dokładnego  miejsca  w 

kodzie  źródłowym

które należy zmienić, by bug się nie pojawiał.

background image

 

 

Systemy zbierania informacji o 

usterkach 

i niedogodnościach w 

programach

 

 

• BUGZILLA

W systemie Bugzilla błąd może zgłosić 
każdy,  przez  określenie  warunków,  w 
jakich  się  pojawia.  Zgłoszenie  jest 
następnie  przydzielane  określonemu 
programiście, 

system 

zawiera 

aktualne  informacje  o  postępach  w 
naprawianiu usterki.

background image

 

 

Ilość  bugów  na  linijkę  kodu  jest  w 
przybliżeniu  niezależna  od  języka, 
czyli 

program 

tej 

samej 

funkcjonalności  napisany  w  języku 
wyższego  poziomu  (np. 

Perl

  czy 

Python

)  będzie  miał  mniej  bugów 

niż  w  języku  niższego  poziomu 
(

Java

C

, czy 

asembler

).

background image

 

 

Ilość błędów można 

znacząco ograniczyć 

poprzez:

 

pisanie testów

pisanie testów - 

 - 

testy te powinny być 

w miarę możliwości zautomatyzowane – 

komputer potrafi przeprowadzić o kilka 

rzędów wielkości więcej testów na 
godzinę niż człowiek

 

 

ręczne audyty kodu

ręczne audyty kodu

 -

 -

 

 

jawne opisanie 

założeń jakie przyjmuje kod (np. co do 

typów danych wejściowych, czy 
spodziewanego sposobu użycia)

 

 

background image

 

 

Ilość błędów można 

znacząco ograniczyć 

poprzez:

unikanie trudnych w analizie 

unikanie trudnych w analizie 

konstrukcji 

konstrukcji 

(jak słynne goto, czy 

ewaluacja kodu w trakcie wykonania)

używanie narzędzi 

używanie narzędzi 

wykrywających podejrzane 

wykrywających podejrzane 

fragmenty kodu

fragmenty kodu

 (lint, ostrzeżenia 

kompilatora). 

 

background image

 

 

TESTOWANIE PROGRAMÓW

TESTOWANIE PROGRAMÓW

• Czasem bugi wykrywa się przez 

karmienie programu losowymi 
danymi i sprawdzanie 
otrzymywanych odpowiedzi. 
Ponieważ typowe bugi dotyczą 
wielu danych, wykrywa się w ten 
sposób większość bugów.

 

background image

 

 

TESTOWANIE PROGRAMÓW

TESTOWANIE PROGRAMÓW

• zwykle testuje się osobno podzespoły 

programu, oraz program w całości 
(zakładając przy tym, że podzespoły 
działają poprawnie)

• testowanie w środowisku sztucznym, za 

pomocą emulatorów sprzętu, sieci czy 
sztucznego karmienia programu 
wydarzeniami udającymi użytkowników 

background image

 

 

TESTOWANIE PROGRAMÓW

TESTOWANIE PROGRAMÓW

• Testy  pisze  się  zwykle  w  późnej  fazie 

rozwoju oprogramowania. 

• W  metodologii 

extreme  programming

 

testy  pisze  się  zanim  rozpocznie  się 
pisanie danej części oprogramowania, co 
ma zmniejszyć liczbę błędów.

• Do  tworzenia  testów  i  zarządzania  nimi 

istnieje  wiele  systemów,  tzw. 

testing 

frameworks

, takich jak 

XUnit

.

background image

 

 

OGÓLNY BŁĄD 

OGÓLNY BŁĄD 

OCHRONY

OCHRONY

• (ang. 

general 

protection 

fault

architekturze 

Intel 

x86

 

jest 

błędem 

pojawiającym  się,  gdy  bieżąco  wykonywany 

program  komputerowy  w  jakiś  sposób 

narusza  zasady  sprzętu,  na  którym  jest 

wykonywany. 

• Błędy,  które  powodują  wystąpienie  ogólnego 

błędu ochrony, są zazwyczaj nieodwracalne i 

uważa  się,  że  najbezpieczniejszą  reakcją  na 

nie jest przerwanie programu.

background image

 

 

PRZYCZYNY BŁĘDÓW

PRZYCZYNY BŁĘDÓW

background image

 

 

Wyróżnia się cztery typy 
zdarzeń, które powodują 
powstanie błędu: 

• Błędy pamięci 

• Błędy braku uprawnień 

• Błędne zachowanie 

• Błędy formatu 

background image

 

 

Błędy pamięci

Błędy pamięci

 

 

• Ten przypadek zachodzi, gdy 

program próbuje wykonać operację 
na 

części pamięci komputera

do której nie powinien mieć 
dostępu. 

background image

 

 

Błąd pamięci obejmuje:

Błąd pamięci obejmuje:

• Pisanie do 

pamięci tylko do odczytu

 (ang. 

read-only) 

• Próbę  wykonania  bajtów  z  pamięci,  która 

nie jest przeznaczona na instrukcje 

• Próbę  odczytania  danych  z  pamięci 

przeznaczonej na instrukcje 

• Inne konflikty pomiędzy przeznaczeniem 

pamięci a jej użytkowaniem przez 
program 

background image

 

 

Błędy braku uprawnień

Błędy braku uprawnień

 

 

• W komputerze są obszary, które są 

zarezerwowane do wyłącznego 
użytku 

systemu operacyjnego

• Jeśli program, który nie jest częścią 

systemu operacyjnego próbuje użyć 
któregoś z nich, może spowodować 
to powstanie błędu ochrony

background image

 

 

Błędne zachowanie

Błędne zachowanie

 

 

• Specyfikacja architektury 

Intela

 zawiera 

pewne konwencje, do których programy 
powinny się stosować, przeważnie ze 
względu na ochronę poprawności 
danych w programach i pomiędzy nimi.

• Program, który ich nie przestrzega, 

może spowodować powstanie ogólnego 
błędu ochrony.

 

background image

 

 

Błędy formatu

Błędy formatu

 

 

• Ogólny błąd ochrony może się pojawić, 

jeśli instrukcja załadowana przez 

procesor

 jest nieprawidłowa lub zbyt 

długa.

 

background image

 

 

Ogólny błąd ochrony może 

zostać wywołany z wielu różnych 

powodów:

 

• błędy naruszenia segmentacji poprzez 

przekroczenie granic segmentu 

• błędy naruszenia segmentacji poprzez 

złamanie reguł dostępu do segmentu 

• nieprawidłowa zawartość rejestrów 

segmentowych 

• dostęp do pamięci przy użyciu DS, ES, FS, 

lub GS, gdy zawierają one zerowy selektor 

• przełączanie zadań (TSS) 

background image

 

 

  

  

Z A D A N I A

Z A D A N I A

Start
...

background image

 

 

1. Co w języku informatyków oznacza 

wyrażenie „bug”?

a)

a)

Kod źródłowy

Kod źródłowy

b)

b)

Błąd, usterka

Błąd, usterka

2.

2.

Nazwa „bug” wprowadzona została 

Nazwa „bug” wprowadzona została 

przez:

przez:

a)

a)

Grace Murray Hopper

Grace Murray Hopper

b)

b)

Aleksandra Kopers’a

Aleksandra Kopers’a

DALE
J

WYJD
Ź

background image

 

 

3. Debugery to:

a) Błędy pamięci
b) Programy usuwające błędy

4. Wskaż zdanie prawdziwe:

a) Program napisany w języku 

wyższego poziomu będzie mieć 

więcej błędów niż napisany w języku 

niższego poziomu.

b) Błędy powstają głównie na etapie 

tworzenia kodu źródłowego.

DALE
J

WYJD
Ź

WSTEC
Z

a

b

background image

 

 

5. W metodologii extreme 

programming testy pisze się zanim 
rozpocznie się pisanie danej części 
oprogramowania, co ma 
zmniejszyć liczbę błędów.

6. Czym jest ogólny błąd ochrony?

PRAWDA

FAŁSZ

WSTEC
Z

DALE
J

WYJD
Ź

background image

 

 

7. Jeśli instrukcja załadowana przez 

procesor

 jest nieprawidłowa lub zbyt 

długa mamy do czynienia z błędem:

a) Braku uprawnień
b) Formatu

8. Co to jest i do czego służy Bugzilla?

WSTEC
Z

DALE
J

WYJD
Ź

background image

 

 

9. Jeśli program, który nie jest 

częścią systemu operacyjnego 
próbuje użyć obszarów, które są 
zarezerwowane do wyłącznego 
użytku 

systemu

 

operacyjnego

wtedy nie może to spowodować 
powstania błędu ochrony.

WSTEC
Z

KONIE
C

background image

 

 

DOBRA ODPOWIEDŹ

DOBRA ODPOWIEDŹ

POWRÓT

POWRÓT

background image

 

 

ZŁA ODPOWIEDŹ

ZŁA ODPOWIEDŹ

POWRÓT

POWRÓT

background image

 

 

OGÓLNY BŁĄD 

OGÓLNY BŁĄD 

OCHRONY

OCHRONY

• (ang. 

general  protection  fault

)  w 

architekturze 

Intel  x86

  jest błędem 

pojawiającym  się,  gdy  bieżąco 
wykonywany 

program 

komputerowy 

jakiś 

sposób 

narusza zasady sprzętu, na którym 
jest wykonywany. 

background image

 

 

W  systemie  Bugzilla  błąd  może 

zgłosić  każdy,  przez  określenie 
warunków, w jakich się pojawia. 

Zgłoszenie 

jest 

następnie 

przydzielane 

określonemu 

programiście,  a  system  zawiera 
aktualne  informacje  o  postępach  w 
naprawianiu usterki.

BUGZILLA

background image

 

 

KONIEC

KONIEC


Document Outline