7.3 Тестирање и дебаговање програма¶
Аутоматско тестирање програма¶
У програмирању је веома важно да програми које напишеш увек дају тачне резултате. Најчешћи начин да се провери коректност програма је да се он покрене на већем броју унапред припремљених тест примера (у којима су дате различите вредности улазних параметара) и да се провери да ли на њима даје очекиване резултате. Ако програм на њима исправно ради, веома је вероватно да ће исправно радити и на свим другим примерима. Трудили смо се да у наставку омогућимо аутоматско тестирање на што већем броју задатака. Један такав је и наредни.
![](../_static/img/question-mark.png)
Марко је прочитао књигу за три дана. Првог дана је прочитао 100 страна. Другог дана је прочитао 17 страна више него првог, а трећег два пута више него другог. Колико та књига има страна? Напиши програм који то одређује, а ради исправно и када је број страна прочитаних првог дана другачији.
Програм је у тренутном облику неисправан (увек исписује нулу).
Притисни дугме Тест и видећеш да резултати који се добију нису једнаки оним очекиваним, а приказаће ти се поља црвене боје, што указује на грешке.
Поправи претходни програм тако што ћеш изменити само оне редове који
су обележени (иза наредбе стоји коментар # popravi ovaj red*) -
остале редове не дирај. Када завршиш, поново притисни
дугме Тест. Ако је све у реду, приказаће ти се три
поља зелене боје. Наиме, када притиснеш то дугме, програм се тестира на
основу неколико унапред припремљених тестова. Програм се неколико пута
пушта испочетка (за сваки тест по једном), али тако да се уместо
вредности 100
, променљивој prvi_dan
додељују неке друге
вредности (у овом конкретном примеру покушава се са вредностима
84
, 122
и 153
). Након тога, програм који си
написао израчунава укупан број страна и резултат који је твој
програм израчунао се пореди са стварним бројем страна књиге за тај
тест (за улаз 84
стварни број страна је 387
, за улаз 122
стварни број страна је 539
, а за улаз 153
стварни број страна
је 663
). Ако се та два броја поклапају, на том случају за ту почетну
вредност се приказује зелена боја, а ако не, приказује се црвена боја.
Извршавање корак по корак - дебаговање¶
Корисна техника која помаже да се боље разуме неки програм, али и да се уоче и исправе евентуалне грешке у програму, јесте то да се програм извршава корак по корак, тј. да се извршава једна по једна његова наредба, при чему се након сваке извршене наредбе прати вредност променљивих у програму.
Извршавање програма корак по корак уз праћење вредности свих међурезултата назива се дебаговање (требљење од бубица) и веома је важна техника за откривање грешака у програмима. У старим рачунарима који су били велики као читава соба, дешавало се да мољци и сличне бубе уђу у рачунар и проузрокују неки квар. Од тада се све грешке у програмима називају багови, тј. бубице (енг. bugs).
Илуструјмо ову могућност на сајту Петље кроз наредни, једноставни, пример.
Воћњак са јабукама¶
![](../_static/img/question-mark.png)
Пера је засадио 380 стабала јабуке. Ђура је засадио 142 стабла јабука више од Пере, а Мика је засадио два пута више стабала од Пере. Колико су стабала засадили укупно?
Исправи следећи програм тако да исправно израчунава колико су стабала засадили укупно (програм треба исправно да ради и ако се број стабала које је засадио Пера промени).
Притисни сада дугме Корак по корак. Оно ти пружа могућност да
програм извршаваш корак по корак. Дугметом Forward извршаваш
наредну наредбу (ону обележену црвеном стрелицом). Наредба која је
претходно извршена обележена је светло-плавом стрелицом. У делу
Frames можеш видети вредности свих до сада израчунатих резултата,
док у прозору тога можеш видети излаз програма (резултате одштампане
наредбом print
).
И у овом задатку је омогућено аутоматско тестирање, па дугметом Тест провери да ли је твоје решење тачно.
Дебаговање у окружењу IDLE¶
Напредније програме нећеш писати на сајту Петље, већ на свом рачунару у специјализованом развојном окружењу (програму) за писање програма, какво је Python IDLE. Таква окружења такође омогућавају извршавање програма корак по корак, уз праћење вредности променљивих, тј. дебаговање. Детаљан опис како се ово ради дат је у последњој лекцији овог курса.