УДК 004.65
Басов А.С.
студент 2 курса магистратуры кафедры информатики и вычислительной техники Сибирский государственный университет науки и технологий имени академика М. Ф. Решетнева (Россия, г. Красноярск)
ОБЗОР МЕХАНИЗМОВ ТЕСТИРОВАНИЯ БАЗ ДАННЫХ
Аннотация: в данной работе освещены основные подходы к тестированию баз данных, их классификация, достоинства и недостатки. Рассмотрены механизмы функционального и нагрузочного тестирования, в том числе основанные на бизнес-процессах и сценариях действий пользователя. Подчеркнута важность применения аудита и правильного выбора исходных данных для тестирования. Приведены особенности работы специального инструментария для тестирования производительности. Оценена зависимость результатов от согласованности хранимых данных. Сделаны выводы об особенностях тестирования баз данных.
Ключевые слова: база данных, модульное тестирование, нагрузочное тестирование, датафикация, аудит.
Современные условия организации рабочего процесса на предприятиях требуют проектирования сложных, в том числе распределенных, баз данных. При этом широкое распространение получили различные программные системы, призванные служить интерфейсом пользователя при работе с БД. Подход к тестированию подобной системы отличается от такового для обычного приложения. Поскольку для работы с БД используется непроцедурный язык запросов SQL, классические методы белого и черного ящика не подходят для разработки тестов.
Согласно ГОСТ, оценка качества программной продукции осуществляется по следующим критериям: функциональность, надежность, практичность, эффективность, сопровождаемость, мобильность. При этом тестировать можно отдельные компоненты системы (модульное тестирование), их связи (интеграционное) или всю систему в целом (системное). Типовая программная система, использующая БД, как правило, состоит из следующих компонентов:
• база данных;
• пользовательский веб-интерфейс;
• серверная часть, отвечающая за связь интерфейса и БД;
• модуль отчетов (если они не интегрированы в интерфейс).
Целесообразной является оценка функциональности БД в виде
модульного тестирования интерфейсов и отчетов, системного тестирования приложения по утвержденным в техническом задании бизнес-процессам, оценка надежности в виде нагрузочного тестирования. При этом могут применяться специальные метрики.
Поскольку язык SQL непроцедурный, правильность написания запросов можно проверить лишь на конкретных массивах данных, составленных с учетом используемой схемы БД. При этом нужно иметь эталонные результаты выполнения запросов.
Данные, загружаемые в БД для тестирования, должны предоставлять возможность тестирования всех деталей пользовательского интерфейса и отчетов. Поэтому процесс тестирования тесно связан с датафикацией -формированием целостных полезных данных для заполнения БД.
Данные в БД можно условно разделить на две части: исходные (первичные) и вторичные. Исходные данные должны быть загружены в БД до начала работы системы и до ее тестирования (например, перечень географических объектов для системы, связанной с путешествиями). Для проверки правильности введенных исходных данных разрабатываются
сверочные отчеты. Зачастую для генерации непротиворечивых данных требуется выполнить отдельное исследование. Вторичные данные появляются в БД в процессе эксплуатациисистемы, поэтому процедура их загрузки также подлежит тестированию, которое облегчается использованием аудита.
Аудит применяют для отслеживания изменений БД и осуществляется следующим образом. Из бизнес-процессов выделяют действия пользователя, модифицирующие БД: добавление, редактирование и удаление данных.
На этапе тестирования имеет смысл организовать расширенный аудит для контроля подробностей всех изменений. По окончании тестирования база аудита может быть удалена или сокращена для ускорения работы системы.
Функциональное тестирование системы.
Ошибка (баг) - это любое несоответствие работы приложения спецификациям (техническому заданию), а также тому, что ожидает от приложения пользователь в процессе работы с ним. Если исходить из такого определения ошибки, следует учитывать не только корректность выполнения операций, но и дружественность интерфейса. Дружественность предполагает, что пользователь понимает, к чему может привести та или иная его активность в системе, и это понимание совпадает с реальным процессом работы приложения.
Наиболее общий метод тестирования - выделение сценариев действий пользователя и отслеживание выполнения программы на них, с указанием расхождений с бизнес-процессами. По результатам тестирования системы с применением заданных сценариев составляют протокол тестирования, где указана подробная информация о найденных ошибках.
Модульное тестирование интерфейса в случае с БД часто сводится к оценке его дружественности пользователю. В частности, проверяются: соответствие названий кнопок и назначенных им операций, ссылки, переходы, заложенные в интерфейс, валидация вводимых данных. Тестирование отчетов представляет собой проверку выдаваемых результатов в соответствии с заданными входными параметрами.
По итогам тестирования составляется документ «Программа и методика испытаний», который регламентирует приемку разработанной системы заказчиком.
Нагрузочное тестирование.
Нагрузочное тестирование, или тестирование производительности - это автоматизированное тестирование, имитирующие работу определенного количества пользователей на каком-либо разделяемом ресурсе. Основные виды нагрузочного тестирования: тестирование производительности, стрессовое тестирование, объемное тестирование, тестирование стабильности или надежности.
Задачей тестирования производительности является определения масштабируемости приложения под нагрузкой, при этом происходит:
• измерение времени выполнения выбранных операций при определенных интенсивностях выполнения этих операций;
• определение количества пользователей, одновременно работающих с приложением;
• определение границ приемлемой производительности при увеличении нагрузки;
• исследование производительности на высоких, предельных, стрессовых нагрузках.
Стрессовое тестирование позволяет проверить, насколько система в целом работоспособна в условиях стресса, и оценить ее способность к регенерации, т.е. к возвращению к нормальному состоянию после прекращения воздействия стресса. Одной из задач при стрессовом тестировании может быть оценка деградации производительности.
Задачей тестирования стабильности (надежности) является проверка работоспособности приложения при длительном тестировании со средним уровнем нагрузки. Время выполнения операций может играть в данном случае второстепенную роль. При этом на первое место выходит отсутствие утечек
памяти, перезапуска серверов под нагрузкой и другие аспекты, влияющие именно на стабильность работы.
Нагрузочное тестирование проводят с помощью специальных средств, таких как Apache JMeter, HP LoadRunner. Данные инструменты имеют возможность создания большого количества запросов с помощью нескольких компьютеров при управлении процессом с одного из них.
Для отдельных операций работы с БД разрабатывают тест-кейсы. С помощью прокси-сервера имитируется работа реального сервера. После формирования необходимых запросов в инструментах нагрузочного тестирования задается число виртуальных пользователей, выполняющих эти запросы на определенном промежутке времени. Система мониторинга позволяет наблюдать за тем, в какой момент времени и при каком количестве виртуальных пользователей сервер начинает занимать дополнительные ресурсы.
Сложность и глубина тестирования БД определяются техническим заданием на систему и разработанной схемой данных. Процессы тестирования и датафикации тесно связаны, так как без правильно сформированных данных тестирование приложения не имеет смысла.
Следует помнить, что никакое тестирование не может обеспечить гарантии работоспособности системы, так как оно ограничено некоторыми условиями. Требуется довести до сведения пользователя, что делать в случае некорректной реакции системы на его действия, предусмотреть соответствующие разделы в руководствах пользователя и администратора.
СПИСОК ЛИТЕРАТУРЫ:
Нагрузочное тестирование. [Электронный ресурс]: URL: http://www.protesting.ru/testing/types/loadtesttypes.html (дата обращения: 08.05.20).
Рудюк Е.П., Соломатин А.А. Оценка производительности сервера базы данных путем применения нагрузочного тестирования // Наука, техника и образование: электрон, 2016. № 4 (9). С. 97-106.
Суслов Ю.Б. Анализ параметров баз данных и разработка системы метрик тестирования баз данных // Сборник трудов рег. научно-технической очно-заочной конф. (Ижевск, 21 мая 2016). Ижевск: Изд-во Ижевского государственный технический ун-та им. М.Т. Калашникова, 2016. С. 75-81.