Создаем сертифицированное приложение для Windows 7
Ни одна из современных операционных систем не содержит абсолютно всех требуемых пользователями приложений в составе штатных компонентов. По этой причине под каждую ОС сторонние разработчики создают собственные программы, так или иначе использующие ее возможности или расширяющие ее функции. Как с этим обстоит дело в Windows 7? Из чего состоит экосистема новой ОС? Каким требованиям должен удовлетворять продукт, чтобы получить заключение о совместимости с Windows 7?Сторонний разработчик (преимущественно, речь идет о независимом вендоре программного обеспечения – ISV) стремится к получению сертификата о соответствии своего приложения с операционной системой по двум основным причинам. Во-первых, именно наличие этого свидетельства говорит о том, что его разработка выполнена именно под эту данную операционную систему и будет работать на ней наиболее эффективно, надежно и безопасно. На это обращают внимание пользователи, когда мигрируют с предыдущих версий ОС, уточняя вопросы совместимости при обращении в техподдержку вендора и на тематических форумах. Это особенно важно для защитного ПО, системных утилит, офисных продуктов, игр, корпоративных ИС, профессиональных пакетов и так далее. Во-вторых, создание сертифицированного приложения дает независимым разработчикам дополнительный стимул использовать инновационные технологии в своих продуктах, повышая их функциональность, удобство использования, качество реализации и так далее. Подобные вопросы затрагивают, в основном, различные мультимедиа-продукты, а также программы, используемые в повседневной работе, отчасти пересекаясь с теми категориями, которые перечислены выше.
Среди программ сертификации приложений под ОС мы рассмотрим последнюю на сегодняшний день программу Compatible with Windows 7. Она пользуется высокой популярностью среди разработчиков ПО, как в мире, так и в России, в частности. В нашей стране на состояние середины декабря в ней приняло участие порядка 40 компаний, а сертификат совместимости получили около 120 приложений.
Требования к качеству
Согласно требованиям Microsoft, право использовать логотип "Совместимо с Windows 7" могут получить далеко не все приложения, разработанные под Windows 7. Во-первых, они должны быть самостоятельными и исполняться в отдельном программном процессе (хотя могут и требовать наличия установленного в системе другого приложения). Поэтому так называемые "плагины" и дополнения, устанавливаемые на существующие программы, не могут получить логотип о совместимости. Не подлежат сертификации и различные веб-приложения, запускаемые в виде Java-апплетов в браузере, компоненты консоли управления системой, драйвера для аппаратных компонентов, а также библиотеки или среды разработки. Любые составные части (например, дополнительные утилиты) сертифицируемого продукта также обязательно отвечать общим критериям программы сертификации. Дополнительные компоненты, необходимые для запуска и работы продукта, по возможности также должны соответствовать критериям сертификации. Исключением являются компоненты Windows 7 и Windows 7 SDK, а также обновления, загружаемые через Центр обновления Windows.
Согласно общим требованиям, предъявляемым Microsoft к продуктам, претендующим на получение логотипа "Совместимо c Windows 7", разработчик должен гарантировать, что его приложение не является вредоносным ПО, использует применяющиеся в ОС механизмы обработки ошибок, отладки и устранения сбоев, защиты и предотвращения фатальных ошибок (DEP и так далее), не изменяет системные ресурсы, поддерживает "чистую" установку и удаление (не оставляя после этого "хвостов"), работает не только на 32-, но и на 64-битной архитектуре, соответствует требованиям UAC (для разделения привилегий запуска и доступа программы к ресурсам компьютера или пользовательским данным), корректно взаимодействует с системой при выполнении перезагрузки (не блокирует ее), загрузки компьютера в Безопасном режиме (не загружается), смене пользователя (работает параллельно с несколькими учетными записями без сбоев). Кроме того, производитель программного обеспечения должен обеспечить соответствие пользовательского интерфейса своего продукта с тем, что в данный момент используется в Windows 7 – поддержка High DPI для графических элементов, совместимость с функциями Рабочего стола и его отдельных частей (компоненты Aero, "списки" Jumplist и так далее), работа с Unicode-кодировкой, ассоциацию с программами по умолчанию.
Качество в подробностях
Для проведения сертификации программного обеспечения компания должна подготовить тестовую среду. Это должен быть компьютер (или компьютеры, если проводится тестирование программы для сетевого использования) с установленной Windows 7 32-битной или 64-битной максимально возможного издания (это необязательное условие). В системе должен быть созданы три учетных записи – администраторская и две обычных пользовательских. Компьютер должен быть оснащен видеокартой, поддерживающей DirectX 10 для тестирования поведения приложения в интерфейсе Aero. После этого тестировщик загружает и устанавливает Windows 7 Software Development Kit (SDK) (некоторые из утилит, входящие в этот пакет, нужны для подписания бинарных компонентов приложения цифровой подписью Microsoft Code Signing Authenticode, а также для проверки инсталляторов), после чего производит установку Windows 7 Client Software Logo Toolkit. Дальнейшие действия связаны с запуском тестов, которые проводятся в виде интерактивного Мастера или поодиночке с запуском команд в консоли. Рассмотрим основные этапы проверки.
Первые несколько шагов связаны с поведением инсталлятора приложения. На этом этапе проверяется, насколько корректно устанавливается продукт – помещаются ли его файлы в системные каталоги %ProgramFiles%, %AppData% или %LocalAppData% и доступны ли конфигурационные файлы, расположенные в них. Здесь же проводится проверка запуска инсталлятора от разных учетных записей – от администраторской (с запросом логина и пароля) и пользовательской с обязательной проверкой по окончании установки, от какого пользователя производится запуск исполняемого файла программы. Аналогичным образом проверяется настройка приложения (не переходят ли параметры при настройке под одной учетной записью в другую, что недопустимо). Windows 7 Client Software Logo Toolkit также отслеживает поведение инсталлятора при добавлении/удалении записей из системного реестра (речь идет о прописывании пути до программы деинсталляции в ветке HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall\) и проверке версии ОС (с помощью AppVerifier). Кроме этого, сертифицируемое приложение не должно выводить систему в перезагрузку после установки, а также корректно устанавливаться в случае обновления Windows 7 с одной версии на другую.
Следующий этап проверки – это непосредственный запуск программы на целевой машине. Здесь тестируется поведение программы не только на Windows 7, но и на последующих версиях (с помощью AppVerifier) и проверяется наличие объявленных в manifest-файлах параметров запуска с разными ключами. После этого пакет пытается запустить программу от обычной учетной записи; от другого пользователя при "горячем" переключении входа в систему; а также работоспособность служб, связанных с многопользовательской поддержкой (службы терминального доступа, удаленный Рабочий стол, Общий доступ к папкам и так далее). Здесь же определяется, могут ли пользователи с меньшими привилегиями получить доступ к данными других профилей на компьютере (это недопустимо), работает ли программа на 64-битной архитектуре, корректно ли она ассоциируется с типами файлов в программах по умолчанию, правильно она их обрабатывает. Для приложений, использующих функции браузера IE8 проверяется также поведение программы при отсутствии этого браузера (в европейских изданиях Windows 7) и наличие удовлетворенных зависимостей компонентов того и другого продукта.
В составе Windows 7 Client Software Logo Toolkit есть и тесты по проверке пользовательского интерфейса. Они проверяют качество прорисовки всех графических компонентов на крупном разрешении и масштабировании от 125%, поддержку Aero (отсутствие черных полей, качество иконок в панели задач, корректность переключения по Win+Tab, адекватность заливки окон при перемещении их по областям Рабочего стола, сворачивании и разворачивании).
На этапе проверки под названием Reliability проводится тест надежности и безопасности программного обеспечения. В область проверки попадают функции программы по записи данных в защищенные системные каталоги (%systemroot%, %systemroot%\system32) (это недопустимо) и проверка невозможности записи от учетной записи простого пользователя в %programfiles%. Остальные тесты касаются поведения самого приложения при перезагрузке системы, возникновении сбоев (использует ли программа Windows Error Reporting).
На последнем этапе проводится проверка наличия подписи у всех бинарных файлов продукта, а также включенных в его дистрибутив драйверов (есть они есть); правильности использования сетевого стека, в частности IP-адресации, корректного функционирования приложения в связке с Windows Firewall (работа с портами, создание правил на этапе установки программы и их удаление после деинсталляции ее); а также проверка использования в именах файлов коротких имен (это недопустимо).
Интерпретация результатов
По окончании проверки Windows 7 Client Software Logo Toolkit выводится отчет, в котором указывается, прошло ли приложение тест или нет. Критерием успешной проверки является содержимое отчета, создаваемого утилитой тестирования – статус Pass или Pass with Warning для всех выполненных испытаний. После этого разработчик программного обеспечения должен передать в Microsoft эти результаты, для чего ему потребуется зарегистрироваться на сайте winqual.microsoft.com. При завершении автоматической проверки и подписания в электронной форме лицензионного соглашения продукту будет присвоен логотип "Compatible with Windows 7". Для включения криптографической подписи исполняемого кода программы разработчику потребуется получить цифровое удостоверение VeriSign.
Дополнительно российские вендоры могут заявить о том, что их программы совместимы с Windows 7, если зарегистрируются в "Зеленом свете", проекте, посвященном продвижению независимых разработок. Попасть в российский каталог инновационных решений партнеров Microsoft, можно, отправив запрос по электронной почте его модераторам.
Microsoft предоставляет независимым сторонним разработчикам исчерпывающие набор инструментов для сертификации приложений и документации по их использованию. Общие требования к качеству продукции, ее безопасности и надежности понятны и не вызывают двухсмысленной трактовки.
Российские независимые разработчики программного обеспечения рассказали CNews, что для них процедура сертификации Windows 7 представляет максимально упрощенной и автоматизированной. "Разработчик самостоятельно тестирует продукт, после чего автоматически создается файл-отчет, который необходимо отправить в Microsoft для проверки. После этого сертификат выдается незамедлительно", - объясняет Наталья Худякова, исполнительный директор Movavi, вендора мультимедиа-продуктов. По ее мнению, корпорация Microsoft создала все необходимые условия для быстрой и безболезненной сертификации: версии Windows 7 были доступны для разработчиков задолго до официального выпуска, были созданы многочисленные подробные инструкции о прохождении сертификации, тест-кейсы. Об этом же говорят и в компании Agnitum,вендоре антивирусного программного обеспечения, продукты которого в числе первых получили поддержку новой системы за 3 месяца до официального выпуска. "Для добавления продукта в список программного обеспечения, имеющего поддержку Windows7, достаточно выпустить версию с поддержкой новой ОС и получить цифровую подпись от Microsoft, выполнив также ряд несложных технических требований к предоставлению информации на сайте", - замечает Виталий Янко, коммерческий директор Agnitum.