Блок 1. Что представляет собой тестирование
Тестирование программного обеспечения - проверка соответствия между реальным и ожидаемым поведением программы, осуществляемая на конечном наборе тестов, выбранном определенным образом.
Тестировщик - специалист, занимающийся тестированием, он моделирует различные ситуации, которые могут возникнуть в процессе использования программы (чтобы разработчики смогли исправить обнаруженные ошибки).
Цель тестирования
Цель тестирования - это нахождение ошибок в программе до того, как их найдут пользователи.
Цель тестировщика
Цель тестировщика - найти как можно больше ошибок, и чем серьезнее найденные проблемы, тем лучше. В конечном счете большинство ошибок исправляют, и качество программы улучшается.
Блок 2. Как определить качество ПО (стандарты ISO, критерии качества, метрики)
Понятие «качество ПО» имеет множество трактовок. И тестировщик, и программист дадут свое толкование этого термина.
Если вкратце, то качество программы определяется следующим:
• возможностями, благодаря которым она понравится пользователю;
• недостатками, которые вынуждают пользователя приобрести другую программу.
Вне зависимости от определения, качество, как и его отсутствие, зависит от деятельности всех участников процесса разработки ПО и отлаженности и настройки самого процесса.
Характеристики качества ПО
Наиболее распространенная модель описания качества ПО представлена в серии стандартов ISO 9126 Многоуровневая Модель Качества программного обеспечения.
Она описывает внутреннее и внешнее качество программного обеспечения по следующим шести критериям:
|
1. Функциональность (Functionality) - что ПО должно делать;
2. Надежность (Reliability) - насколько оно должно быть надежно;
3. Удобство использования (Usability) - насколько им должно быть удобно пользоваться;
4. Эффективность (Efficiency) - насколько оно должно быть эффективно;
5. Удобство сопровождения (Maintainability) - насколько удобно должно быть его сопровождение;
6. Портативность (Portability) - насколько оно должно быть переносимо и заменяемо.
Метрики качества
Наряду с атрибутами качества, стандарт ISO 9126 определяет наборы метрик для оценки (получения численного значения) каждого атрибута:
1. Полнота реализации функций;
2. Корректность реализации функций;
3. Отношение числа обнаруженных дефектов к прогнозируемому;
4. Отношение числа проведенных тестов к общему их числу;
5. Отношение числа доступных проектных документов к указанному в их списке;
6. Наглядность и полнота документации.
Как контролировать качество системы?
Как точно узнать, что программа делает именно то, что нужно, и ничего другого? Как определить, что она достаточно надежна, переносима, удобна в использовании? Ответы на этот вопрос можно получить с помощью процессов верификации и валидации.
Блок 3. Категории программных ошибок
Не существует ни абсолютного определения ошибок, ни точного критерия наличия их в программе. Можно лишь сказать, насколько программа не справляется со своей задачей — это исключительно субъективная характеристика.
Программная ошибка (в простонародье, баг – «bug») - изъян в разработке программы, который вызывает несоответствие ожидаемых результатов выполнения программы и фактически полученных результатов.
|
Это узкое определение, более подробную информацию вы получите на лекции, но стоит обратить внимание на то, что ошибка может возникнуть на любой стадии разработки проекта. Будьте бдительны, господа исследователи!
Коварные баги имеют свою категорийность, охватывающую все возможные варианты:
Ошибки пользовательского интерфейса
1. Функциональность
2. Взаимодействие программы с пользователем
3. Организация программы
4. Пропущенные команды
5. Производительность
6. Выходные данные
Обработка ошибок
Процедуры обработки ошибок — это очень важная часть программы. В них тоже часто встречаются ошибки. Кроме того, правильно определив ошибку, программа не всегда выдает о ней достаточно информативное сообщение.
Ошибки, связанные с обработкой граничных условий
Простейшими граничными условиями являются числовые. Но существует и много других граничных ситуаций. Любой аспект работы программы, к которому применимы понятия больше или меньше, раньше или позже, первый или последний, короче или длиннее, обязательно должен быть проверен на границах диапазона. Внутри диапазонов программа обычно работает прекрасно, а вот на их границах порой случаются самые неожиданные отклонения.
Ошибки вычислений
Даже самые простые арифметические операции всегда чреваты ошибками. Одними из самых распространенных среди математических ошибок являются ошибки округления. После нескольких промежуточных вычислений может оказаться, что 2 + 2 = -1, даже если на промежуточных этапах не было логических ошибок.
|
Начальное и последующие состояния
Бывает, что при выполнении какой-либо функции программы сбой происходит только однажды — при самом первом обращении к этой функции. Такую ошибку невозможно повторить (точнее, для ее повторения нужно установить новую копию программы). Но не стоит думать, что ошибка, проявляющаяся только при первом запуске программы, безвредна: ведь это будет первое, с чем столкнется каждый новый пользователь.
Ошибки управления потоком
Если по логике программы вслед за первым действием должно быть выполнено второе, а она выполняет третье, значит, в управлении потоком допущена ошибка. Такие ошибки трудно пропустить:
в худшем случае в работе программы произойдет сбой, а при менее серьезной ошибке она просто "забредет не туда".
Ошибки передачи или интерпретации данных
Один модуль может передавать данные другому или даже другой про грамме. Некоторые данные могут передаваться между модулями множество раз, и на каком-то этапе они могут быть разрушены или неверно интерпретированы. Изменения, внесенные одной из частей программы, могут потеряться или достичь не всех частей системы, где они важны.
Ситуация гонок
Описывается так: предположим, в системе ожидаются два события, А и Б. Первым может произойти любое из них. Но если первым произойдет событие А, выполнение программы продолжится, а если первым наступит событие Б, то в работе программы произойдет сбой. Программист полагал, что первым всегда должно быть событие А, и не ожидал, что Б может выиграть гонки.
Перегрузки
Программа может не справляться с повышенными нагрузками. Например, она может не выдерживать интенсивной и длительной эксплуатации или не справляться со слишком большими объемами данных.
Аппаратное обеспечение
Программы могут посылать устройствам неверные данные, игнорировать их сообщения об ошибках, пытаться использовать устройства, которые заняты или вообще отсутствуют. Даже если нужное устройство просто сломано, программа должна понять это, а не сбоить при попытке к нему обратиться.
Контроль версий
Бывает, что старые ошибки вдруг всплывают снова из-за того, что программа скомпонована с устаревшей версией одной из подпрограмм. Поэтому версии всех составляющих проекта обязательно должны централизованно контролироваться.
Документация
Документация считается частью программного продукта. И если она плохо написана, пользователь может подумать, что и сама программа требует значительных доработок.
Ошибки тестирования
Если программист допускает по полторы ошибки на каждую строку программного кода, то сколько их допускает тестировщик на каждый тест? Обнаружение ошибок, допущенных тестировщиками, — дело обычное. Конечно, если таких ошибок будет слишком много, вы быстро потеряете доверие остальных членов команды. Но нужно иметь в виду, что иногда ошибки тестировщика отражают проблемы пользовательского интерфейса: если программа заставляет пользователя делать ошибки, значит, с ней что- то не так. Конечно, многие ошибки тестирования вызваны просто неверными тестовыми данными.
И в заключение – в качестве бонуса на лекции вас ожидает тест для оценки себя как тестировщика:)