Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Тестирование программного обеспечения. Фундамен...docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
935.81 Кб
Скачать

Глава 4: Программные ошибки 95

Что такое программная ошибка?

Одним из распространенных определений программной ошибки явля­ется расхождение между программой и ее спецификацией. Не пользуйтесь л им определением.

Расхождение между программой и ее спецификацией является ошибкой тогда, и только тогда, когда спецификация существует и она правильна.

Программа, которая соответствует плохой спецификации, и сама никуда не годится. Поэтому следующие два определения более точны.

• Если программа не делает того, чего пользователь от нее вполне обоснованно ожидает, значит, налицо программная ошибка (Майерс (Myers, 1976, с. 6)).

• Не существует ни абсолютного определения ошибок, ни точного критерия наличия их в программе. Можно лишь сказать, насколько программа не справляется со своей задачей, — это исключительно субъективная характеристика (Бейзер (Beizer, 1984, с. 12)).

Конечно, второе определение не касается таких явных ошибок, как ошибки вычислений по точно известным формулам. Майерс вообще ис­ключил из своего определения ошибки, связанные с человеческим факто­ром. Очевидно, что это совершенно самостоятельная группа ошибок, требующая специфического подхода к их анализу и устранению. Бывает довольно сложно убедить программиста, что недостаток пользовательско­го интерфейса является ошибкой или что эта ошибка очень серьезна или даже в том, что тестировщик вообще имеет право заниматься такими воп­росами. Но пользователи жалуются на подобные ошибки не меньше, чем на очевидные сбои.

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

В этой главе описываются 13 категорий, охватывающих все возможные ошибки в программном обеспечении. Несколько отличающуюся, но также очень полезную классификацию предлагает в своей книге Бейзер (Beizer, 1990).

Ошибки пользовательского интерфейса

С программой может быть трудно (или даже невозможно) работать по множеству причин. Мы объединили их все под названием “ошибки пользо­вательского интерфейса”. Вот несколько разновидностей таких ошибок.

96 Часть I: Основы

Функциональность

Функциональные недостатки имеют место, если программа не делает того, что должна, выполняет одну из своих функций плохо или не полно­стью. Хотя функции программы достаточно подробно описываются в ее спецификации, окончательное представление о том, что программа долж­на делать, существует только в умах ее пользователей.

Функциональные недостатки есть абсолютно у всех программ, поскольку ожидания пользователей — вещь субъективная: >' разных пользователей они различны. Оправдать их все просто невозможно, а попытка этого добиться может привести лишь к усложнению и потере концептуальной целостности программного продукта.

Однако во многих случаях функциональный недостаток вполне очеви­ден. Если предусмотренную программой задачу трудно выполнить, если она решается неуклюже или при определенных обстоятельствах вообще не может быть решена — проблема налицо. И когда ожидания пользователей вполне разумны и обоснованны, эту проблему без колебаний можно на­звать ошибкой.

Взаимодействие программы с пользователем

Насколько сложно пользователю разобраться в том, как работать с программой? Откуда вообще он об этом узнает? Как обстоит дело с экран­ными инструкциями и подсказками? Достаточно ли их? Понятны ли они? Имеется ли в программе интерактивная справка и может ли пользователь в случае затруднений найти в ней реальную помощь? Насколько коррект­но программа сообщает пользователю о его ошибках и объясняет, как их исправить? Нет ли в программе элементов, которые могут раздражать пользователя, сбивать его с толку или просто выглядеть неуклюже?

Организация программы

Насколько легко потеряться в вашей программе? Нет ли в ней непонят­ных команд или таких, которые легко спутать между собой? Какие ошиб­ки чаще всего делает пользователь, на что он тратит больше всего времени и почему?

Пропущенные команды

Чего в программе не хватает? Не заставляет ли программа выполнять некоторые действия странным, неестественным или крайне неэффектив­ным способом? Нельзя ли привести ее в соответствие с привычным стилем