Пример поиска и исправления ошибки
Отладка обеспечивает локализацию ошибок, поиск причин ошибок и соответствующую корректировку программы (Пример 2.1, Пример 2.2).
// Метод вычисляет неотрицательную // степень n числа x static public double Power(double x, int n) { double z=1; for (int i=1;n>=i;i++) { z = z*x; } return z; } Пример 2.1. Исходный текст метода Powerdouble Power(double x,int n) { double z=1; int i; for(i=1;n>=i;i++) { z=z*x; } return z; } Пример 2.1.1. Исходный текст метода PowerЕсли вызвать метод Power с отрицательным значением степени n Power(2,-1), то получим некорректный результат - 2. Исправим метод так, чтобы ошибочное значение параметра (недопустимое по спецификации значение) идентифицировалось специальным сообщением, а возвращаемый результат был равен 1 (Пример 2.2).
// Метод вычисляет неотрицательную // степень n числа x static public double PowerNonNeg(double x, int n) { double z=1; if (n>0) { for (int i=1;n>=i;i++) { z = z*x; } } else Console.WriteLine( "Ошибка ! Степень числа n" + " должна быть больше 0."); return z; } Пример 2.2. Скорректированный исходный текстdouble PowerNonNeg(double x, int n) { double z=1; int i; if (n>0) { for (i=1;n>=i;i++) { z = z*x; } } else printf("Ошибка! Степень числа n должна быть больше 0.\n"); return z; } Пример 2.2.1. Скорректированный исходный текстЕсли вызвать скорректированный метод PowerNonNeg(2,-1) с отрицательным значением параметра степени, то сообщение об ошибке будет выдано автоматически.
Судить о правильности или неправильности результатов выполнения программы можно только сравнивая спецификацию желаемой функции с результатами ее вычисления.
Тестирование разделяют на статическое и динамическое:
Статическое тестирование выявляет формальными методами анализа без выполнения тестируемой программы неверные конструкции или неверные отношения объектов программы (ошибки формального задания) с помощью специальных инструментов контроля кода – CodeChecker.
Динамическое тестирование (собственно тестирование) осуществляет выявление ошибок только на выполняющейся программе с помощью специальных инструментов автоматизации тестирования – Testbed [9] или Testbench.