Методы тестирования программного обеспечения. Степанченко И.В. - 35 стр.

UptoLike

Составители: 

37
близок к нулю, а результат не может быть сохранен в типе частного
(превышает его).
5. Существуют ли неточности при работе с двоичными числами?
6. Не выходит ли значение переменной за пределы установленного
диапазона?
Может ли значение переменной выходить за пределы установ-
ленного для нее логического диапазона? Например, для операторов,
присваивающих значение переменной probability (вероятность), мо-
жет быть произведена проверка, будет ли полученное значение все-
гда положительным и не превышающим единицу. Другие диапазоны
могут зависеть от области решаемых задач.
7. Правильно ли осуществляется деление целых чисел?
Встречается ли неверное использование целой арифметики, осо-
бенно деления? Например, если i – целая величина, то выражение
2*i/2 = i
зависит от того, является значение i четным или нечет-
ным, и от того, какое действиеумножение или делениевыполня-
ется первым.
2.4.4. Ошибки при сравнениях
Сводный список вопросов таков:
1. Сравниваются ли величины несовместимых типов? Например, число
со строкой?
2. Сравниваются ли величины различных типов?
Например, переменная типа int с переменной типа long? Каждый
язык ведет себя в этих случаях по-своему, проверьте это по его опи-
санию. Как выполняются преобразования типов в этих случаях?
3. Корректны ли отношения сравнения?
Иногда возникает путаница понятий «наибольший», «наимень-
ший», «больше чем», «меньше чем».
4. Корректны ли булевские выражения?
Если выражения очень сложные, имеет смысл преобразовать их
или
проверять обратное утверждение.
5. Понятен ли порядок следования операторов?
Верны ли предположения о порядке оценки и следовании опера-
торов для выражений, содержащих более одного булевского опера-
тора? Иными словами, если задано выражение (А == 2) &&
(В == 2) || (С == 3), понятно ли, какая из операций выполня-
ется первой: И или ИЛИ?
6. Понятна ли
процедура разбора компилятором булевских выражений?
Влияет ли на результат выполнения программы способ, которым
конкретный компилятор выполняет булевские выражения? Напри-
мер, оператор
if ((x != 0) && ((y/x) > z))
     близок к нулю, а результат не может быть сохранен в типе частного
     (превышает его).
5.   Существуют ли неточности при работе с двоичными числами?
6.   Не выходит ли значение переменной за пределы установленного
     диапазона?
          Может ли значение переменной выходить за пределы установ-
     ленного для нее логического диапазона? Например, для операторов,
     присваивающих значение переменной probability (вероятность), мо-
     жет быть произведена проверка, будет ли полученное значение все-
     гда положительным и не превышающим единицу. Другие диапазоны
     могут зависеть от области решаемых задач.
7.   Правильно ли осуществляется деление целых чисел?
          Встречается ли неверное использование целой арифметики, осо-
     бенно деления? Например, если i – целая величина, то выражение
     2*i/2 = i зависит от того, является значение i четным или нечет-
     ным, и от того, какое действие – умножение или деление – выполня-
     ется первым.
                       2.4.4. Ошибки при сравнениях
         Сводный список вопросов таков:
1.   Сравниваются ли величины несовместимых типов? Например, число
     со строкой?
2.   Сравниваются ли величины различных типов?
          Например, переменная типа int с переменной типа long? Каждый
     язык ведет себя в этих случаях по-своему, проверьте это по его опи-
     санию. Как выполняются преобразования типов в этих случаях?
3.   Корректны ли отношения сравнения?
          Иногда возникает путаница понятий «наибольший», «наимень-
     ший», «больше чем», «меньше чем».
4.   Корректны ли булевские выражения?
          Если выражения очень сложные, имеет смысл преобразовать их
     или проверять обратное утверждение.
5.   Понятен ли порядок следования операторов?
          Верны ли предположения о порядке оценки и следовании опера-
     торов для выражений, содержащих более одного булевского опера-
     тора? Иными словами, если задано выражение (А == 2) &&
     (В == 2) || (С == 3), понятно ли, какая из операций выполня-
     ется первой: И или ИЛИ?
6.   Понятна ли процедура разбора компилятором булевских выражений?
          Влияет ли на результат выполнения программы способ, которым
     конкретный компилятор выполняет булевские выражения? Напри-
     мер, оператор
                    if ((x != 0) && ((y/x) > z))
                                   37