Зачем нужно тестировать программный продукт?

Тестирование — важнейшая составляющая любой технологии программирования. Ведущие фирмы-разработчики тратят до 50% средств всего проекта именно на тестирование ПО.

Даже в очень простых программах существуют ошибки, осложняющие жизнь пользователя. Например, в статье Задача «Суммирование чисел». Пример решения были рассмотрены ситуации, когда вроде бы правильная с точки зрения «здравого смысла» программа дает неверный результат. Простейшая классификация ошибок приведена в статье Типичные ошибки программирования, где кроме синтаксических ошибок, раздражающих начинающих программистов и абсолютно не интересных пользователю ваших программ (догадались почему?), наиболее опасными являются логические ошибки и ошибки типа Run-time. Рассмотрим еще один короткий пример.

Допустим, вам нужно написать метод нахождения площади S треугольника по трем сторонам (a, b, c). Вспомнив формулу Герона (известную, правда, еще Архимеду):

где p — полупериметр треугольника,  .

вы сразу напишете метод:

static double geron(double a, double b, double c)
{
   double p = (a + b + c) / 2;
   return Math.Sqrt(p * (p - a) * (p - b) * (p - c));
}

Добавьте ввод и вывод данных и запустите программу, например со сторонами (3, 4, 5). Это, кстати, тоже один из прямоугольных треугольников Герона, его площадь равна 6.

Предположим, что пользователь не слишком силен в геометрии, и при вводе сторон треугольника будет вводить разные числа и, даже может быть, и не числа. Занесем варианты тестов в таблицу, где a, b, c — входные данные, ожидаемый результат — это ответ,  который мы хотели бы получить от нашей программы, последний столбец — результат выполнения программы .

Номер теста a b с Площадь — ожидаемый результат Площадь — фактический результат
1 3 4 5 6 6
2 1 1 1 0,433 0,433
3 -1 -1 -1 треугольник не существует 0,433
4 -1 -1 1 треугольник не существует 0,433
5 -1 1 1 треугольник не существует 0,433
6 1 1 0 треугольник не существует 0
7 1 2 4 треугольник не существует NaN
8 a 1 1 Неверные данные Необработанное  исключение: «Входная строка имеет неверный формат»

Из 8 тестов совпадение имеется только для первых двух. Конечно, ввод нулевых и отрицательных сторон со стороны пользователя маловероятен, но возможен. В тесте 7 ответ может его и смутить, он не обязан знать, что NaN — это No a Number (результат извлечения квадратного корня из отрицательного числа). Тест 8 указывает вам, что необходима проверка вводимых данных, являются ли они числами, смотрите статью Свойства. Пример «Ввод целого числа в заданном диапазоне».

Учитывая результаты тестирования, вам следует добавить проверки:
1) являются ли исходные данные числами;
2) все ли стороны больше нуля;
3) не нарушается ли правило треугольника — сумма любых двух сторон больше третьей стороны.
Проверку условий 2 и 3 следует внести в код метода geron( ).

Рекомендую познакомиться  с  общими принципами технологии тестирования и практическими рекомендациями.


NEW: Наш Чат, в котором вы можете обсудить любые вопросы, идеи, поделиться опытом или связаться с администраторами.


Помощь проекту:

Понравилась статья? Поделиться с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x
()
x