Разработка программного модуля для компьютерной игры
Дипломная работа - Компьютеры, программирование
Другие дипломы по предмету Компьютеры, программирование
е базовой библиотеки для работы с зип-архивами была выбрана open-source разработка zlib. Эта библиотека работает на уровне последовательностей байт и реализует наиболее простые и распространенные алгоритмы deflate и inflate. Средства этой библиотеки были использованы при написании специфических потоков, позволяющих на лету архивировать и распаковывать данные.
2.3.2 Шифрация по алгоритму CRC32
Шифрация по алгоритму CRC32 была выполнена самостоятельно, поскольку средства, имевшиеся, например, в zlib, в разумные сроки задействовать не удалось. Алгоритм был реализован по описанию в источнике [16] и снабжен известным набором контрольных сумм.
2.4 Тестирование
В связи с потенциальным ущербом от каждой программной ошибки и возрастающей сложностью локализации и исправления ошибок по ходу роста программы раннее и частое тестирование становится важной частью процесса разработки. При тестировании VFS широко применялся метод модульного тестирования, описанный в источнике [6], позволивший избежать большого количества ошибок на этапе тестов функционала, затребованного в ТЗ.
2.4.1 Модульное тестирование
Цели тестирования
Мы не можем протестировать программу во всех аспектах, поскольку число их, в том числе из-за сочетаний аппаратно-программных платформ, стремится к бесконечности. Следовательно, тестирование не может показать отсутствие ошибок в программе - для этого есть доказательство корректности. Тестирование может только показать присутствие ошибок.
Время, затраченное на тестирование, стоит достаточно дорого, и необходимо получить от этих затрат наибольшую отдачу. Ниже приведены золотые правила тестирования:
) цель: максимизировать количество и важность обнаруженных дефектов на каждый рубль затрат;
) поэтому: нужно начинать тестирование рано;
) ограниченность: тестирование может установить только наличие дефектов и никогда - их отсутствие;
) для доказательства отсутствия дефектов нужно использовать доказательства корректности.
Рис. 2.9. Типы тестирования
Значение модульного тестирования
Цель модульного тестирования - проверить структуру. Наименьшими частями программы являются функции (методы). Следующим по величине элементом является модуль (класс), иногда комбинация модулей. Модульное тестирование является дополнением к инспектированию и использованию формальных методов проверки корректности.
Типичный план модульного тестирования.
Типичный план, основанный на стандарте IEEE 1008-1987, показан на рис. 2.10. Далее поясняются основные шаги:
) входными данными для планирования теста являются требования и детальный проект; выходными - модульный план тестирования;
) следующий шаг - получение входных и выходных данных, ассоциирующихся с каждым тестом; результатом является набор тестов;
) исполнение тестов.
Рис. 2.10. План модульного тестирования
2.4.2 Типы тестов
Черный ящик, серый ящик и прозрачный ящик
Тестированием черного ящика называется процесс, когда проверяется исключительно соответствие и правильность выходных и выходных данных. Такие тесты могут быть эффективными, если мы можем убедиться, что они охватывают весь диапазон возможных проверок такого рода.
Целью тестирования прозрачного ящика является нахождение наиболее ненадежных путей программы. Для этого программа подвергается декомпозиции до получения путей управления и данных.
Тестирование серого ящика подразумевает нечто среднее между перечисленными методами или их комбинацию.
Разбиение равнозначности для черного ящика
Разбиение равнозначности - это разбиение множества входных данных на подмножества так, чтобы успешное прохождение теста с одним значением гарантировало успешное прохождение с любым другим значением из подмножества.
Анализ граничных требований для черного ящика
Граничные условия появляются после разбиения значений параметров по равнозначности. Они так же являются диапазонами, требующими проверки, и условно могут считаться равнозначными.
Утверждения и решения для тестирования прозрачного ящика
Каждое утверждение в программе должно быть проверено хотя бы одним тестом. Анализ каждого утверждения обязателен. Обзор решений гарантирует, что программа выполняет каждую ветвь алгоритма. То есть, необходимо построить такое множество тестов, чтобы каждое да и нет блок-схемы можно было получить каким-либо тестом из набора.
Тестирование на основе инвариантов
Инварианты - это утверждения, связывающие переменные. Это своего рода выражение состояний, которое можно использовать как ограничение множества значений параметров. Это значит, что в некоторых случаях мы можем положить, что некоторые сочетания значений переменных не встретятся в программе никогда.
Использование случайных величин
После того, как выполнены разбиение равнозначности и анализ граничных требований, во избежание предвзятости, наиболее правильным для генерации значения из диапазона будет запустить генератор случайных чисел.
2.4.3 Планирование модульных тестов
Систематический подход к тестированию необходим, поскольку число модулей, нуждающихся в тестировании, может быть очень велико. Один из способов спланировать модульное тестирование:
) определить принципы модульного тестирования:
а) назначить о