УДК 004.054
Даются понятия “набора данных” операционной системы (ОС) z/OS и “файла” для UNIX-подобных ОС. Рассматриваются структура и особенности внутренней организации одного из библиотечных наборов данных ОС z/OS - PDSE (Partitioned Data Set Extended). Определяются наиболее важные задачи тестирования PDSE набора данных. Описываются существующие средства, применяемые для верификации наборов данных, такие, как команды и встроенные утилиты ОС z/OS. Производится их анализ и указываются проблемы, препятствующие процессу автоматизации тестирования. Описываются реализованные тестовые сценарии и их функциональное назначение, а также анализируются текущие подходы к решению поставленных задач и обсуждается идея создания средств автоматизации тестирования.
Ключевые слова: операционные системы, наборы данных, тестирование, автоматизация, верификация.
ОС z/OS, разработанная компанией IBM, предназначается для поддержки архитектуры z/Architecture, которая используется в мейнфреймах на платформе zSeries. Ввиду того, что эволюция данной ОС берёт свои истоки от платформы S/360, выпущенной IBM в 60-х годах прошлого века, структура ОС и заложенные в ней принципы отличаются от распространённых в настоящее время UNIX-подобных ОС, что ставит задачи по разработке средств автоматизации тестирования, учитывающих особенности данной ОС.
В UNIX-подобных ОС организация данных (их формат) осуществляется приложением. Для таких ОС минимальной единицей информации, является бит, в то время как в z/OS формат данных определяется ОС уже при создании, а минимальной единицей информации, оперируемой ОС, является запись, представляющая собой набор связанных данных, к которым в дальнейшем приложение получает доступ. Ввиду указанных особенностей файлы в z/OS именуются наборами данных, а их внутренняя структура - организацией набора данных.
Современные мейнфреймы в процессе размещения данных используют дисковые приводы IBM 3380 и 3390. В настоящее время структура данных приводов эмулируется из дисковых массивов RAID уровня 5 при помощи устройств IBM 2150 Enterprise StorageServer® (рис. 1). Более подробно процесс эмуляции описан в [1].
Рис. 1. Эмуляция устройств 3390
Таким образом, z/OS при размещении наборов данных взаимодействует с томами типа 3390/3380, структура которых представлена на рис. 2.
Рис. 2. Структура тома набора данных
В каждом цилиндре содержится 15 треков. Размер каждого трека составляет 47 476 Байт для тома 3380 и 56 664 для 3390 [2]. Размещение наборов данных во внешней памяти происходит в соответствии со структурой томов.
В ОС z/OS выделяют следующие типы организации наборов данных:
Одним из библиотечных наборов является набор данных PDSE, широко используемый при обработке данных в z/OS и имеющий сложную организацию, которая требует дополнительных затрат в процессе тестирования.
При создании PDSE-набора данных область внешней памяти разбивается на равные блоки по 4 КБ, именуемые страницами, в которых содержатся блоки оглавления и разделов (данных). Для вновь созданного PDSE-набора его физическая структура в памяти представлена на рис. 3 [3].
Рис. 3. Физическая структура вновь созданного PDSE-набора
PDSE-наборы могут динамически расширяться при добавлении и удалении разделов с данными. В них поддерживается механизм повторного использования пространства после удаления или перемещения разделов. Структура PDSE-наборов с данными показана на рис. 4 [3].
Рис. 4. Структура PDSE-наборов с данными
Для обеспечения динамического расширения оглавление набора данных, а также изменения параметров разделов блоки оглавления распределяются разрывным образом вместе с блоками данных.
Оглавление имеет индексную организацию, состоящую из Attribute directory (AD) и Name directory (ND) страниц, которые обеспечивают взаимосвязь со страницами разделов.
AD-страницы имеют иерархическую структуру, реализованную по принципу В-дерева, и содержат информацию об атрибутах разделов (время создания, время последнего изменения, информацию о размере и т. д.), а также о самом наборе данных.
Разделы PDSE отслеживаются посредством идентификатора FSN (files sequence number). Указатель на страницу, содержащую данные раздела, хранится в FPM-карте фрагментов (fragment parcel map).
ND-страницы так же организованы по принципу В-дерева и связывают индивидуальные имена разделов с их FSN-идентификаторами.
Внутренняя структура элементов оглавления представлена на рис. 5 [3].
Рис. 5. Внутренняя структура элементов оглавления
Наиболее часто используемые страницы оглавления кэшируются в виртуальную память для ускорения доступа к данным.
Важными задачами тестирования являются проверка целостности и доступности данных. Можно выделить следующие ключевые моменты задач тестирования:
В случае необходимости обработки большого объёма задач, таких, как бизнес-транзакции и запросы к базам данных, несколько систем z/OS объединяют в кластер, что позволяет увеличить производительность и осуществлять параллельный доступ для чтения и записи к общим данным. Организация кластера осуществляется с помощью определённых программных и аппаратных ресурсов, для архитектуры zSeries кластер организуется по технологии Parallel Sysplex [4]. В такой ситуации набор данных PDSE позволяет производить доступ к разным разделам данных совместно с несколькими системами.
Одним из ключевых моментов в приведенном случае является проверка соответствия индексных структур AD- и ND-страниц, расположенных в виртуальной и во внешней памяти (рис. 6).
Рис. 6. Индексные структуры в виртуальной и внешней памяти
В таких условиях немаловажной является проверка «состязательных» ситуаций с целью подтверждения корректности работы алгоритма по предоставлению доступа к данным.
Описанные выше задачи предполагают формирование разнородных конфигураций ОС. На данный момент применяется технология виртуальных машин.
На рис. 7 приведена употребляемая в настоящее время структура среды тестирования, использующая ОС z/VM [5] в качестве средства виртуализации.
Рис. 7. Структура среды тестирования
Основные задачи по запуску тестов выполняются программой планировщиком, которая реализует алгоритм распределения и загрузки виртуальных машин. Библиотека тестов содержит экземпляры тестов, созданные в процессе эволюции системы в течение более двадцати лет [6].
Неуклонный рост числа регрессионных тестов, связанный с постоянной эволюцией ОС и ограниченностью ресурсов виртуальной среды, приводит к необходимости решения проблем с отбором подмножества тестов для выборочного тестирования отдельных функций и компонент ОС, запуском этих подмножеств и автоматизированным анализом результатов тестирования.
ОС z/OS предоставляет ряд утилит и сервисов, используемых при тестировании PDSE наборов данных:
Описанные выше средства предоставляют широкие возможности по определению проблемы, но в большинстве случаев требуют ручного ввода и анализа полученных отчётов для последующей диагностики неисправности, что в случае исполнения группы автоматизированных тестов весьма трудоемко.
Разработка тестов ведется с использование HLASM-ассемблера высокого уровня (High-level Assembler) [8], интерпретируемого языка программирования REXX (REstructured eXtended eXecutor), язык управления заданиями JCL (Job Control Language) [9], а также другие проприетарные средства.
Проверка работоспособности PDSE предполагает проведение следующих тестов:
В виртуальной среде точное определение характеристик производительности PDSE наборов данных, таких, как загруженность центрального процессора и интенсивность операций ввода-вывода не даёт ввиду ограниченности ресурсов однозначных результатов. Тем не менее, критериями проверки служат показатели подсистем System Management Facility и Resource Measurement Facility.
Большинство приведенных сценариев реализовано; они применяются в соответствии с регламентом тестирования организации.
В то же время, в процессе эксплуатации ОС обнаруживаются ошибки, в том числе и в PDSE, к примеру [12], что говорит о неполном решении задачи тестирования. Кроме того, актуальным является решение задач автоматизации тестирования (см., например, [13], где рассматривается процесс разработки фреймворка, служащего для автоматизации регрессионного тестирования для z/OS).
Рассмотрены особенности структуры библиотечного PDSE-набора данных z/OS. Сформулированы основные задачи тестирования и проведён анализ текущих решений, а также внутренних средств z/OS, используемых для решения задач тестирования. Подчеркнуты необходимость разработки дополнительных тестов, проверяющих корректность работы тех частей системы, которые были подвержены изменениям, а также определение тестов в регрессионной базе, подлежащих модификации в связи с изменением тестируемых параметров, и создание новых тестов, увеличивающих тестовое покрытие на основе анализа существующих тестов. Также указано на актуальность разработки средств автоматизации тестирования, которые позволят обеспечить снижение трудоёмкости и повысят эффективность тестирования за счет подбора надлежащих тестов и автоматического анализа их результатов.