Рекомендации по проектированию, отладке и тестированию программ

Рекомендации по проектированию, отладке и тестированию программ

Рискуя дать совет, противоречащий высказываниям во многих других книгах и технических статьях, в которых основной упор делается на тестировании и уже затем рассматривается все остальное, лично я порекомендовал бы вам распределить свои усилия таким образом, чтобы нашлось время для ознакомления с особенностями проектирования, реализации и использования известных моделей программирования. Лучший метод отладки заключается, прежде всего, в недопущении ошибок; разумеется, такие советы легче давать, чем им следовать. Тем не менее, когда начинают проявляться программные дефекты — а это происходит всегда – наиболее эффективным методом обнаружения и исправления основных причин дефектов является тщательное исследование кода в сочетании с отладкой.

Не возлагайте слишком большие надежды на тестирование программ, ибо каким бы тщательным и обширным оно ни было, многие серьезные дефекты от вас все равно ускользнут. Тестирование способно лишь выявлять дефекты; оно не может служить доказательством отсутствия дефектов и указывает лишь на их симптомы, а не на причины, которые их породили. Для наглядности могу сослаться на личный опыт, приведя в качестве примера версию программы, включающую функцию ожидания сложного семафора, построенную на основе модели CV, в которой конечный интервал ожидания не использовался. Дефект, который мог приводить к блокированию потока на неопределенное время, никак не проявлял себя на протяжении года, пока, в конечном счете, что-то пошло не так, как надо. Мне удалось обнаружить ошибку путем простого просмотра кода, благодаря пониманию принципов, лежащих в основе работы модели переменных условий.

Не следует переоценивать и помощь, которую вам может оказать отладка, поскольку отладчики изменяют временное поведение программы, маскируя возникновение условий состязательности, то есть именно то, что вы хотели бы исследовать. Так, вряд ли можно ожидать, что с помощью отладчика вам удастся выявить проблемы, обусловленные неправильным выбором типа события (автоматически сбрасываемым или сбрасываемым вручную) или функции (SetEvent или PulseEvent). Всегда тщательно продумывайте, чего именно вы хотите добиться, применяя те или иные средства.

В заключение следует подчеркнуть, что тестирование программ с использованием как можно более широкого круга платформ, включая SMP, составляет важнейшую часть любого проекта, целью которого является разработка многопоточного программного обеспечения.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

4 Указания по тестированию

Из книги Пакеты программ. Требования к качеству и тестирование автора Автор неизвестен

4 Указания по тестированию Указания, приведенные в 4.1-4.5, определяют порядок тестирования продукта на соответствие его требованиям к качеству. Данные указания охватывают как тестирование для характеристик, присущих всем аналогичным продуктам, так и тестирование для


4.2 Работы по тестированию

Из книги Отладка систем реального времени [Обзор] автора Костюхин К А

4.2 Работы по тестированию Описание продукта, документация пользователя, программы и любые данные, поставляемые как части пакета программ:- должны быть протестированы на соответствие требованиям раздела 3;- могут быть протестированы на соответствие рекомендациям


4.2. Некоторые подходы к отладке распределенных приложений

Из книги Практика и проблематика моделирования бизнес-процессов автора Всяких Е И

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


Замечания по отладке службы

Из книги Инфраструктуры открытых ключей автора Полянская Ольга Юрьевна

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


6.5. ПОДХОД К ПРОЕКТИРОВАНИЮ АРХИТЕКТУРЫ СИСТЕМЫ НА ОСНОВЕ АБСТРАКТНЫХ МАШИН ДЕЙКСТРЫ

Из книги Как тестируют в Google автора Уиттакер Джеймс

6.5. ПОДХОД К ПРОЕКТИРОВАНИЮ АРХИТЕКТУРЫ СИСТЕМЫ НА ОСНОВЕ АБСТРАКТНЫХ МАШИН ДЕЙКСТРЫ Самый нижний уровень абстракции — это уровень аппаратуры. Каждый уровень реализует абстрактную машину с все большими возможностями.Принцип 1. На каждом уровне абсолютно ничего не


11.4. ПОДХОДЫ К ПРОЕКТИРОВАНИЮ ТЕСТОВ

Из книги Разработка ядра Linux автора Лав Роберт

11.4. ПОДХОДЫ К ПРОЕКТИРОВАНИЮ ТЕСТОВ Рассмотрим два самых противоположных подхода к проектированию тестов.Сторонник первого подхода ориентируется только на стратегию тестирования, называемую стратегией "черного ящика", тестированием с управлением по данным или


Стандарты и руководства по проектированию безопасности

Из книги UNIX — универсальная среда программирования автора Пайк Роб

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


Глава 3. Кто такой инженер по тестированию

Из книги автора

Глава 3. Кто такой инженер по тестированию Разработчики в тестировании в Google создают, настраивают, поддерживают и развивают инфраструктуру для автоматического тестирования. Инженеры по тестированию играют другую роль — они ориентированы на «человеческую сторону»: как


Инженер по тестированию

Из книги автора

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


Как мы нанимаем инженеров по тестированию

Из книги автора

Как мы нанимаем инженеров по тестированию Мы в Google серьезно подходим к найму людей. У большинства наших инженеров высшее образование в области компьютерных технологий. В очень немногих учебных заведениях учат тестированию, поэтому до сих пор есть проблемы с наймом


Собеседование с инженерами по тестированию

Из книги автора

Собеседование с инженерами по тестированию Ура, мы обнаружили необходимую комбинацию навыков и немедленно зовем кандидата на интервью. Нас часто спрашивают, как мы собеседуем инженеров по тестированию, причем это самый частый вопрос, который нам задают буквально везде.


Директор по тестированию

Из книги автора

Директор по тестированию Директор по тестированию в Google — личность самодостаточная. Трудно написать о нем целую главу и точно определить, кто же такой директор по тестированию, потому что каждый обладает полной независимостью и использует ее на всю катушку. У них есть


Ограничение частоты следования событий при отладке

Из книги автора

Ограничение частоты следования событий при отладке Часто необходимо встроить в код отладочные проверки (с соответствующими функциями вывода информации), чтобы визуально производить мониторинг проблемы. Однако, в ядре некоторые функции вызываются по много раз в