Navigation bar
  Print document Start Previous page
 122 of 179 
Next page End  

122
Существуют два подхода к проверке программ — прагматический и доказательный. При
прагматическом подходе проверка программ выполняется на ЭВМ путем тестирования.
Тестирование
— это проверка программ на ЭВМ с помощью некоторого набора тестов. Ясно, что
тестирование не дает гарантий правильности выполнения программ на всех допустимых данных.
Следовательно, тестирование в общем случае не может дать и не дает полных гарантий отсутствия
ошибок в программах.
Напомним, что отладка программ
— это процесс поиска и исправления ошибок в программах на
ЭВМ. Однако поскольку поиск ошибок при отладке программ проводится с помощью тестов, то полных
гарантий нахождения и исправления всех ошибок в программах отладка не дает и в принципе дать не
может.
По этой же причине неясно, когда процесс отладки программ — процесс поиска и исправления
ошибок на ЭВМ — может считаться завершенным. А выявлены или нет все ошибки в программе при ее
отладке не может сказать никто.
Таким образом, прагматический подход чреват созданием программ, содержащих ошибки даже
после «завершения» отладки, что и наблюдается практически во всех больших программах для ЭВМ.
Рассмотрим в качестве иллюстрации принципов тестирования алгоритм и программу вычисления
максимума из трех чисел: а, b, с.
алг «максимум трех чисел»        
'максимум трех чисел 
нач                              
cls 
ввод (а, b, с)                     
    input a, b, с 
если а > b то                    
    if а > b then
тах := a                        
       max = a 
инеc b > с то                    
    elseif b > с then
тах := b                        
       mах = b 
инеc с > а то                    
    elseif с > a then
тах:= с                       
       mах = с 
кесли                          
    end if 
вывод («тах=»,тах)            
    ? «mах=»; mах 
кон                           
end
Запуск этой программы на ЭВМ можно проверить на следующих данных:
Tecт1       
Тест2       
Тест3
? 1 1 2    
? 1 2 3    
? 3 2 1 
max = 2 
max = 3   
max = 3
Все три результата правильные. Отладку программы после запуска этих примеров можно было бы
считать завершенной. Однако есть контрпример:    
                              
Контрпример1
? 2 1 3
max = 2
Но этот результат - неправильный. Следовательно, алгоритм и программа содержат ошибки. Но
сколько этих ошибок - одна, две, а может быть больше?
При доказательном подходе разработка алгоритмов и программ предполагает составление
спецификаций и доказательство их правильности по отношению к этим спецификациям. Процесс
разработки программ считается завершенным после проверки их на ЭВМ и предоставлении
доказательств отсутствия ошибок.
Доказательства правильности алгоритмов и программ, равно как и любые другие доказательства,
строятся на основе суждений и рассуждений. В данном случае суждения и рассуждения касаются
результатов выполнения алгоритмов и программ с теми или иными данными.
Сайт создан в системе uCoz