Чтение онлайн

на главную

Жанры

tестирование dot com
Шрифт:

синтаксический баг (syntax bug).

Прелесть синтаксических багов заключается в том, что они, явля-

ясь ошибками в языке программирования, находятся компай-

лером (например, в случае с C++) автоматически. Последний

выдает на экран сообщение об ошибке и принципиально не соз-

Цикл разработки ПО

101

дает исполняемый файл, пока проблема не будет зафиксирована

(в скриптовых языках, таких, как Python, исполняемым

файлом

является сам файл с кодом и синтаксические баги находит интер-

претатор языка).

Пример

Вот первая программка любого изучающего C++:

1. #include <iostream.h> 2.

3. voidmain

4. {

5. cout<< "Hello, World!<< endl;

6. }

Текст этой программки находится в файле syntax_error.cpp. По-

пробуем ее скомпилировать:

~> C++ syntax error, cpp

syntax_error.cpp:5: unterminated string or character constant

syntaxerror.cpp: 5: possible real start of unterminated constant

Последние две строчки — это текст об ошибке, выданный ком-

пайлером из-за того, что мы не закрыли кавычки в строке 5 после

World! Никакого исполняемого файла создано не было. Если мы

исправим эту ошибку, то файл без проблем скомпилируется.

Тестировщики обязаны устройству Вселенной за то, что есть ло-

гические баги (logical bugs). Эти баги, как следует из их назва-

ния, — это ошибки в логике кода, т.е. код компилируется без син-

таксических ошибок, но фактический результат исполнения этого

кода не соответствует ожидаемому результату.

Пример

Спецификация:

"7.2. Пользователь должен ввести два целых числа от 1 до 12,

после чего программа выведет на экран их среднее арифмети-

ческое".

Код:

1. #include <iostream.h> 2.

3. voidmain

4. {

5. int first number = 0;

6. int secondjnumber = 0;

7. float average = 0.0;

102

Тестирование Дот Ком. Часть 1

8.

9. //get first number

10. cout« "Enter first number:";

11. cin » first_n umber;

12.

13.

14. //get second number

15. cout« "Enter second number:";

16. cin » second number; 17.

18. //calculate average

19. average = firstjiumber+second_number/2.0; 20.

21. //output result

22. cout« "Average = "« average « endl; 23.

24. }

Тестирование:

Enter first number: 9 Enter

second number: 2 Average

=10

Согласно спецификации результатом исполнения программы

должно быть среднее арифметическое двух чисел, т.е. в нашем

случае 5,5 (ожидаемый результат). Фактический же результат

оказался равен 10.

5,5 не равно 10, соответственно у нас есть логический баг.

Проблема, кстати, в строке 19, которая должна была звучать так

(были пропущены скобки):

19. average = (first_number+second_number)/2.0.

Кстати, в приведенном пункте спека есть баг, так как непонятно, какое

максимально допустимое целое число: 11 или 12? Программист, увидев

этот баг, должен был сделать уточнение у продюсера и обязать того

исправить спек. Если максимальное число = 12, то точная формулировка

должна быть следующей: "7.2. Пользователь должен ввести два целых

числа от 1 до 12 включительно, после чего программа выведет на экран

их среднее арифметическое".

Кстати, программист заложил в коде еще один логический баг, так как

согласно спеку код должен принять только действительный ввод, кото-

рым являются целые числа 1 — 1 1 (или 1 — 12).

Поделиться:
Популярные книги

Клан

Русич Антон
2. Долгий путь домой
Фантастика:
боевая фантастика
космическая фантастика
5.60
рейтинг книги
Клан

Не кровный Брат

Безрукова Елена
Любовные романы:
эро литература
6.83
рейтинг книги
Не кровный Брат

На границе империй. Том 9. Часть 2

INDIGO
15. Фортуна дама переменчивая
Фантастика:
космическая фантастика
попаданцы
5.00
рейтинг книги
На границе империй. Том 9. Часть 2

Последний Паладин. Том 2

Саваровский Роман
2. Путь Паладина
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Последний Паладин. Том 2

Кодекс Охотника. Книга XXI

Винокуров Юрий
21. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Охотника. Книга XXI

Кодекс Охотника. Книга XIII

Винокуров Юрий
13. Кодекс Охотника
Фантастика:
боевая фантастика
попаданцы
аниме
7.50
рейтинг книги
Кодекс Охотника. Книга XIII

Как я строил магическую империю 2

Зубов Константин
2. Как я строил магическую империю
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Как я строил магическую империю 2

Вдова на выданье

Шах Ольга
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Вдова на выданье

Пустоши

Сай Ярослав
1. Медорфенов
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Пустоши

Последний попаданец 5

Зубов Константин
5. Последний попаданец
Фантастика:
юмористическая фантастика
рпг
5.00
рейтинг книги
Последний попаданец 5

Заставь меня остановиться 2

Юнина Наталья
2. Заставь меня остановиться
Любовные романы:
современные любовные романы
6.29
рейтинг книги
Заставь меня остановиться 2

Курсант: Назад в СССР 7

Дамиров Рафаэль
7. Курсант
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Курсант: Назад в СССР 7

Эволюция мага

Лисина Александра
2. Гибрид
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Эволюция мага

Болотник 3

Панченко Андрей Алексеевич
3. Болотник
Фантастика:
попаданцы
альтернативная история
6.25
рейтинг книги
Болотник 3