Список распространенных программных ошибок

В приложении к книге "Тестирование программного обеспечения" Сэм Канер, Джек Фолк и Енг Кек Нгуен рассказывают о списке распространенных программных ошибок, как основе работы тестировщика:

Формировать список возможных ошибок по ходу работы - плохая практика. Гораздо удобнее и надежнее иметь раз и навсегда составленный готовый список, из которого можно будет отбирать то, что подходит для каждой конкретной программы... Тестируя новую программу, вы будете не только отбирать подходящие элементы приведенного списка, но и дополнять его новыми описаниями ошибок. Поэтому лучше всего хранить его в электронном виде, чтобы он всегда был под рукой и его без труда можно было редактировать.

Мэтт Тэллес и Юань Хсих в книге «Наука отладки» отмечают:

В индустрии программного обеспечения мы очень мало делаем того, что можно назвать, посмертным анализом ошибки. Мы не задаем таких вопросов, как, каким образом ошибка была, обнаружена, как она возникла и что мы можем сделать, чтобы предотвратить ее. Если мы все же, проводим посмертный анализ, мы так редко документируем наши открытия, что наше знание недоступно другим людям... Действительно ли посмертный анализ ошибки поможет нам создать лучший продукт? Мы считаем, что, ответ на этот вопрос ­ да! В 1981 году фирма NEC осуществила план, призванный помочь разработчикам, программ и менеджерам проектов учиться на ошибках. Был создан каталог ошибок, наблюдавшихся во, многих корпоративных проектах. Это поддержало разработчиков в поисках причин отказов программ и в, предотвращении их повторного появления. За 10 лет, прошедших с запуска проекта, разработчики, извлекли много уроков и стали способны применять этот опыт для повышения своей производительности, и понижения числа ошибок.

Следуя совету авторов, решил хранить список распространенных программных ошибок в электронном виде, дополнять список случаями из практики и использовать для тестирования программных продуктов. Первым шагом сформирую на основе готового списка список ошибок для конкретной программы. Включу в список все ошибки, что только могут встретиться в программе, независимо от того, насколько вероятно их появление. Вторым шагом разработаю тесты для выявления каждой включенной в список ошибки. Третьим шагом подстрахую план тестирования, проверив, охватывает ли план все классы ошибок из списка. Четвертым шагом выявлю трудновоспроизводимые ошибки, соотнося симптомы ошибки с ошибками из списка. Пятым шагом сосредоточусь на представителях класса ошибок к которому относится найденная ошибка.

В оригинальном списке Канера, Фолка и Нгуена содержится порядка 400 ошибок и каждая из них с той или иной степенью ясности относится к определенному классу, содержит описание и примеры. В представленном ниже списке не 400, а 21 ошибка с описанием классиков тестирования и добавленными мной примерами из практики. По мере обнаружения новых примеров ошибок буду обновлять список распространенных программных ошибок.

  1. Ошибки пользовательского интерфейса. Функциональность. Неадекватность реализации базовых функций. К одной из ключевых функций программы невозможно обратиться и если она реализована слишком узко или слишком медленно работает, такая программа не годится для реальной эксплуатации.
    • Случай 1: пользователем нажать кнопку выбора города нахождения, не появляется попап с вариантами для выбора.
    • Случай 2: в мобильной версии сайта выбрать одну из меток к статье и в результатах поиска по меткам получить сообщение "Нет статей по выбранным меткам".
    • Случай 3: ввести на главной странице сайта в форме подписки на рассылку почтовый адрес и нажать кнопку "Подписаться". Результатом получить графический индикатор выполнения действия без подтверждения о подписке.
    • Случай 4: в форме подписке по почте ввести почтовый адрес, нажать кнопку "Подписаться", получить перезагрузку страницы и отображение адреса почты в URL.
    • Случай 5: не загружаются графические анонсы статей на главной странице сайта.
    • Случай 6: в браузере Mozilla Firefox на главной страница форума нажать кнопку Создать тему, не получить попапа создания темы и в консоли браузера увидеть ошибку "ReferenceError event is not defined forum.ensure.min.js".
    • Случай 7: для слайдера изображений не ограничили минимально допустимый размер загружаемого изображения, а фоном сделали белое изображение. Выбрали белый цвет кнопок переключения элементов слайдера. При загрузке мелких изображений сливаются кнопки переключения элементов слайдера с белым фоном.
  2. Ошибки пользовательского интерфейса. Функциональность. Пропущенная функция. Все, о чем пользователю необходимо знать, должно отображаться на экране. Желательно также, чтобы на экране отображалась информация, которую среднестатистический пользователь найдет полезной.
    • Случай 1: пройти в подрубрику сайта и не обнаружить счетчика числа тем, предусмотренный в макете страницы.
    • Случай 2: прокрутить страницу до конца, у пагинатора присутствуют цифры и отсутствуют стрелки навигации.
    • Случай 3: пройти в подрубрику и не обнаружить кнопку "Создать тему", предусмотренную в макете страницы.
    • Случай 4: пройти в раздел форума и обратить внимание на темы с ответами экспертов, не обнаружить графического и текстового вывода информации об ответе эксперта и кнопки "Читать ответ эксперта".
  3. Ошибки пользовательского интерфейса. Функциональность. Неверно работающая функция. Функция программы должна выполнять одно (как правило, в соответствии со спецификацией), а делает нечто другое.
    • Случай 1: удалить пару комментариев к теме форума, обратить внимание на показания счетчика в 0 комментариев, несмотря на присутствие в теме еще двух комментариев.
    • Случай 2: пройти через поисковик Google в AMP-версию статьи и обратить внимание на кнопки поделиться в социальных сети. Кнопки ссылаются на название статьи и переносят в шапку статьи, вместо отправки данных в социальные сети.
    • Случай 3: в новой версии дизайна страницы проверить размеры изображений. В теле статьи веб-сервис должен выводить анонсные изображения размером 120х70px, выводит изображения в другом размере - 120х120px.
    • Случай 4: количество выводимых на странице анонсов должны составлять 20 штук, а мы выводим только 15 штук.
    • Случай 5: в спецификации от стороннего разработчика программного обеспечения указано на необходимость для каждого изображения в HTML-коде проставлять атрибуты width, height и заполнять атрибуты значениями. В HTML-коде страницы сначала обнаружено наличие атрибутов, не заполнены значения.
    • Случай 6: в спецификации от стороннего разработчика программного обеспечения указано на необходимость указывать в HTML-коде на все изображения используемые в материале. Фактически же потеряли часть изображений.
  4. Ошибки пользовательского интерфейса. Функциональность. Программа не делает того, что ожидает от нее пользователь.
    • Случай 1: отправить комментарий к теме форума и не увидеть появление комментария на странице. Перезагрузить страницу и снова не увидеть комментарий. Еще раз перезагрузить страницу и обнаружить комментарий.
  5. Ошибки пользовательского интерфейса. Взаимодействие пользователя и программы. Ошибки отображения. Отображена неверная или неполная строка.
    • Случай 1: на главной странице раздела обрезаны аватарки и имена пользователей.
    • Случай 2: в профиле "звезды" в полной версии сайта обрезана последнюю строку в заголовке к изображению.
    • Случай 3: в профиле "звезды" в полной версии сайта в блоке "Читайте также" обрезана половина высоты текста в четвертой строке.
  6. Ошибки пользовательского интерфейса. Взаимодействие пользователя и программы. Организация экрана. Организация команд и способы их ввода. Нестандартное использование клавиатуры. Принятие недопустимого ввода.
    • Случай 1: в аналитику ChartBeat не попадают статьи со спецсимволами в названии.
  7. Ошибки пользовательского интерфейса. Взаимодействие пользователя и программы. Организация экрана. Организация команд и способы их ввода. Нестандартное использование клавиатуры. Невозможность использования клавиш управления курсором, функциональных клавиш и клавиш редактирования.
    • Случай 1: пройти в редактирование статьи и воспользоваться комбинацией клавиш Ctrl+S, получить не сохранение страницы, а окно с текстом ошибки "Error. No form element found".
  8. Ошибки пользовательского интерфейса. Взаимодействие пользователя и программы. Организация экрана. Организация команд и способы их ввода. Нестандартное использование клавиатуры. Неэстетическое оформление экрана. Это субъективная, но все же достаточно четко распознаваемая характеристика. Пользуйтесь собственным чувством гармонии, а в случае неуверенности обращайтесь к мнению других. Распространенными эстетическими недоработками являются: неудачное сочетание цветов, не­равномерное расположение элементов, их непропорциональные размеры, невыровненные строки и столбцы данных.
    • Случай 1: в браузере Safari в новой версии "подвала" веб-сервиса одни составляющие элементы расположены в центре, а другие составляющие элементы прижаты к левой стороне.
    • Случай 2: на iPhone с iOS 10 в Yandex.Browser вставить в статью код с изображением Instagram, в результате чего iframe выходит за сетку контента, а значки наезжают на текст.
    • Случай 3: четыре кнопки расположены в ряд, а пятая рядом с ними расположена на 3-4px выше остального ряда.
    • Случай 4: один из элементов оформления верстки вставлен не в виде изображения, а в виде спецсимола, например, значок "Стрелка". Браузеры по мере своих возможностей отображают спецсимвол, который выглядит как артефакт дизайна из 90-ых годов.
  9. Ошибки пользовательского интерфейса. Взаимодействие пользователя и программы. Организация экрана. Организация команд и способы их ввода. Потери времени. Выбор, который не может быть сделан.
    • Случай 1: пройти в профиль пользователя и в подразделе "Последние действия" воспользоваться имеющейся кнопкй "Показать еще...", которая появляется и является активной для использования даже при отсутствие данных внутри.
    • Случай 2: в голосовании с большим числом ответов попытаться воспользоваться той же кнопкой "Показать ещё", которая исчезает и не показывает дополнительного материала, которого просто нет.
  10. Ошибки пользовательского интерфейса. Взаимодействие пользователя и программы. Организация экрана. Организация команд и способы их ввода. Предотвращение неприятностей. Отсутствие возможности периодического сохранения данных. Если пользователь вводит большое количество данных, программа дол­жна уметь сохранять их через определенные интервалы времени. Это гаран­тирует, что при любом сбое большая часть введенной информации будет сохранена. Данная функция может включаться и отключаться по желанию пользователя.
    • Случай 1: пройти в форму создания новой статьи и заполнить 18 полей, нажать кнопку "Сохранить" и получить сообщение "Проблема При Сохранении XML".
  11. Ошибки пользовательского интерфейса. Взаимодействие пользователя и программы. Пропущенная информация. Отсутствие инструкций на экране. Невозможно определить, выполнена ли данная программе команда.
    • Случай 1: нажать кнопку "Зарегистрироваться" и не дождаться результата. Затем обратить внимание в панели разработчика на вкладку Network, с просмотром Preview одного из запросов, где есть сообщение о незаполненной капче, которая не отобразилась на странице регистрации.
    • Случай 2: пройти из почты по ссылке с кодом активации учетной записи на сайте, не увидеть подтверждения об успешной активации. Пройти по ссылке второй раз и только тогда увидеть информацию об ошибке операции, поскольку активация была выполнена ранее.
  12. Ошибки пользовательского интерфейса. Взаимодействие пользователя и программы. Неверная или смущающая пользователя информация. Неточные названия команд и функций.
    • Случай 1: оставить на сайте комментарий, воспользоваться кнопкой "Редактировать", изменить текст комментария, не найти кнопку "Сохранить" и воспользоваться имеющейся кнопкой "Ответить".
  13. Ошибки пользовательского интерфейса. Справочная система и сообщения об ошибках. Отказ в предоставлении ресурсов без объяснения причины. Если программе не удается использовать принтер, модем, дополнительную память или другие ресурсы, она должна не только сообщить пользователю о неудаче, но и объяснить ее причины. Сообщения "Принтер уже используется" и "Принтер не подключен" требуют от пользователя разных действий.
    • Случай 1: пройти в форму создания новой статьи и заполнить 18 полей, нажать кнопку "Сохранить" и получить сообщение "Проблема При Сохранении XML".
  14. Ошибки пользовательского интерфейса. Справочная система и сообщения об ошибках. Фактическая ошибка. Нередко в документации и сообщениях программы приводятся неверные примеры того, как правильно выполнить то или иное действие. Одни из них устарели, другие неверны с "рождения". На одном из последних циклов тестирования все они должны быть тщательно проверены.
    • Случай 1: вызвать всплывающее окно входа в учетную запись на сайте, заполнить поле E-mail и получить сообщение "Введите корректный логин-пароль" при фактическом отсутствии формы с названием "Логин".
    • Случай 2: вызвать всплывающее окно создания новой теме форума, приложить картинку, получить уведомление "Необходимо авторизоваться для добавления изображения к комментарию" при фактическом добавлении изображения к теме форума.
    • Случай 3: форма загрузки изображения имеет приписку "Картинка (211x127 px)", тогда как на выходе получаем изображения размером 240х160px.
  15. Ошибки пользовательского интерфейса. Производительность. Время ответа. Хорошая программа не должна заставлять пользователя ждать. Она мгновенно распознает команды пользователя и назначает им наивысший приоритет. Например, введите несколько строк текста, пока текстовый процессиор переформатирует экран. Он должен немедленно прекратить форматирование и отобразить введенный текст.
    • Случай 1: на тестовой среде в одном из разделов воспользоваться кнопкой "Показать еще" и ждать 07 секунд до загрузки дополнительной информации.
  16. Ошибки пользовательского интерфейса. Кто здесь главный. Навязывание ненужных ограничений.
    • Случай 1: в панели администратора веб-сайта в разделе со списком пользователей поисковой запрос выполняется только после выбора пользователем одного из предложенных вариантов запроса. Использование кнопки "Поиск" или клавиши Enter при водит к обновлению страницы и появлению в строке поискового запроса значения "0".
  17. Ошибки пользовательского интерфейса. Кто здесь главный. Запрос информации без необходимости.
    • Случай 1: в панели администратора веб-сайта в разделе редактирования статьи не вносить изменения в материал и попытаться закрыть окно браузера, вызвав предупреждение о несохраненном материале.
  18. Ошибки обработки или интерпретации данных. Порча данных, хранящихся на внешнем устройстве. Объем данных слишком велик для процесса-получателя.
    • Случай 1: попытаться сохранить материал и не получить результат, а в Apache_error запись "PHP Fatal error: Allowed memory size of 536870912 bytes exhausted (tried to allocate 5619 bytes) in ... db_class.php".
  19. Обработка ошибок. Неадекватная проверка пользовательского ввода. Недостаточно просто сказать человеку, что он не должен вводить чисел, состоящих больше чем из трех цифр. Программа должна проверить, действительно ли введенные данные соответствуют этому условию. Если пользователь может что-то ввести, программа должна адекватно на это среагировать.
    • Случай 1: в всплывающем окне авторизации пользователя в поле e-mail ввести любое значение, в том числе и без символа at (@).
  20. Повышенные нагрузки. Системе не возвращена неиспользуемая память.
    • Случай: в диспетчере задач браузера Google Chrome 57 обратить внимание на работу расширения и обнаружить потребление 1.7 гигабайта оперативной памяти.
  21. Ошибки тестирования. Не замечена проблема. Тестировщик не знает, каким должен быть правильный вариант.
    • Случай 1: при описании ожидаемого результата по объекту "ссылка" не учитывал, какого типа ссылка передо мной и не фиксировал атрибуты ссылки, например, target или class.
  22. Дефект спецификации. "Ситуация, когда сама спецификация имеет проблему, так как мы ожидаем (или по крайней мере должны ожидать), что в спеке будут подробности о тексте ошибки, а в реальности их там нет", «Тестирование Дот Ком, или Пособие по жестокому обращению с багами в интернет-стартапах», Роман Савин.

    • Случай 1: при подготовке нового дизайна почтовой рассылки не выработан ни графический, ни текстовый guideline, в результате чего у программиста отсутствует понимание как должны вести себя элементы "Название" и "Анонсный текст" при наведении курсора мыши, какие элементы должны быть кликабельными.
    • Случай 2: указание в описании задачи "Доработка на фронте у такого опроса: ставим куку на указанный период". Отсутствует на название куки, какое будет иметь значение кука. В результате frontend вообще не ставит пользователю cookie, а делает запись в Local Storage браузера, а простановкой cookie занимается backend.
    • Случай 3: в задаче и документации отсутствует блок-схема, описывающей алгоритм работы компонента. Руководитель проекта объясняет свое видение на словах, менеджер что-то слушает, программист кивает, механизм работы письменно никто не описывает. Задача в качестве головоломки приходит на тестирование, обнаруживаются сбои.

    14.05.2017

results for ""

    No results matching ""