WWW.DISSERS.RU

БЕСПЛАТНАЯ ЭЛЕКТРОННАЯ БИБЛИОТЕКА

   Добро пожаловать!

Pages:     | 1 |   ...   | 3 | 4 || 6 | 7 |

«Exam 70-305 and 70-315 DEVELOPING WEB APPLICATIONS WITH MICROSOFT VISUAL BASIC AND MICROSOFT VISUAL Press Сертификационный экзамен 70-305 и 70-315 Разработка Web-приложений на Microsoft Visual ...»

-- [ Страница 5 ] --

и Таблица 9-1. Атрибуты Элемент Назначение Где сведения compilation тип компоновки Раздел «Установка параметров в debug или release компоновки» этого занятия Отображает пользовательские страницы Глава с об ошибках при получе нии определенных кодов состояния HTTP Устанавливает тип аутентификации Глава Содержит список имен пользователей Глава или ролей, обладающих правом на исполнение этого приложения trace Включает трассировку для диагностики Глава ошибок или оптимизации приложения Определяет, как ASP.NET хранит Занятие 3 этой главы;

глава переменные состояния Session Устанавливает сведения о культуре Глава для локализованных приложений Занятие 2. Развертывание Web-приложения Под Web-приложения понимают его установку на сервер, для работы на котором оно предназначено. Поскольку я работают на рах, обычно им не нужна установочная программа. Этим Web-приложения отличаются от приложений которые распространяются на компакт-дисках или других носителях вместе с программой установки, копирующей и ком поненты приложения на пользовательском компьютере.

В этом занятии вы научитесь развертывать готовые Web-приложения на сервере или на сервере провайдера услуг хостинга. Вы также узнаете, какие параметры IIS и системы безопасности необходимо определить для нормальной работы Изучив материал этого занятия, вы сможете:

загрузить готовое Web-приложение на сервер службы хостинга;

создать виртуальный каталог IIS для развертывания на своем сервере;

скопировать Web-приложение в виртуальный собственного сервера;

установить компоненты и необходимые Web-приложению;

назначить права доступа для учетной записи ASPNET.

Продолжительность занятия - около минут.

Загрузка приложений на сервер провайдера Если у вас есть учетная запись службы хостинга приложений ASP.NET (регистрация в службе хостинга описана в главе I), вы можете установить свое Web-приложение на сер вер службы хостинга прямо из Visual Studio Чтобы установить свое приложение на сервере службы хостинга из Visual Studio. NET.

выполните действия.

Откройте проект, который вы хотите установить на сервер провайдера из Visual Studio 2. На начальной Visual Studio щелкните ссылку Web Hosting.

3. На Web Hosting щелкните вкладку Premier Providers или Additional Providers.

4. Найдите на странице со списком провайдеров секцию, в которой указан ваш провай дер, и щелкните Upload Directly To Your Account — Visual Studio откроет зочную страницу вашего провайдера (рис. 9-3).

5. Следуйте указанным на странице инструкциям (они могут отличаться в разных служ бах хостинга).

Развертывание приложения на собственном сервере Если ваше приложение предназначено для работы в локальной сети или у вас есть свой можно установить приложение на собственном сервере, выполнив следую действия.

Подготовьте виртуальный каталог приложения при IIS.

2. Скопируйге Web-приложение в созданный виртуальный каталог.

3. Установите в кэш глобальных сборок сервера все разделяемые ис пользуемые приложением.

4. Настройте разрешения системы безопасности на сервере, чтобы открыть доступ к не обходимым ресурсам для приложения.

В следующих разделах эти описаны подробно.

the tab the to post file! to your Рис. 9-3. Загрузка Подготовка виртуального каталога Web-приложения работают под управлением поэтому перед развертывани ем на сервере необходимо установить на сервер I1S и Для работы требуются следующие компоненты:

• IIS 5.0 или выше;

• Framework той же версии, что применялась при сборки Web-прило жения.

Необходимые серверные устанавливают с Visual Studio Убедившись, что установка выполнена корректно, создайте на сервере виртуальный ката лог приложения, выполнив следующие действия.

С помощью Проводника создайте на сервере физический каталог для хранения прило жения.

2. В IIS запустите мастер Virtual Directory Creation, чтобы создать новый виртуальный каталог на основе физического каталога, созданного на этапе 1 (подробное описание работы с этим мастером см. в главе 2).

Копирование приложения Границы Web-придожения определяются структурой его каталогов, то есть область види мости приложения начинается в его корневом каталоге и включает в себя все вложенные каталоги корневого каталога. Таким образом, установить Web-приложение не сложнее, чем перетащить содержимое каталога, в котором приложение хранилось на этапе разра в физический каталог на сервере, который вы создали только что.

В принципе, структура Web-приложения, в которых размещаются файлы содержимого, может быть произвольной, но все же следует придерживаться некоторых правил:

• сборку приложения следует хранить в каталоге /bin;

• обычно страница приложения называется или в приложении начальной по умолчанию определяется пара метрами 11S. Если по умолчанию задана, IIS отобразит когда перейдет в каталог не указав в запросе определенную страницу.

мер, пользователь может запросить указав лишь имя домена:

Если страница по умолчанию определена, IIS вернет клиенту страницу путайте страницу по умолчанию IIS и начальную страницу приложения Web Forms в Visual Studio B Visual Studio начальную страницу требуется задавать для каждого проекта. Это среде разработки, чтобы какую страницу отображать первой во время отладки. Начальная страница, заданная в Visual Studio не влияет на по умолчанию в IIS.

Установка разделяемых компонентов Если приложение использует некоторые например нестандартные эле менты управления, совместно с другими приложениями, на этом эти компоненты также необходимо установить. Порядок установки различается в зависи мости от типа компонента:

• компоненты СОМ копируют на сервер и регистрируют с помощью инструментов для регистрации компонентов СОМ;

• без строгого имени копируют в каталог приложения;

• со строгим именем помещают в кэш глобальных сборок сервера.

Обычно для компонентов СОМ собственная установочная программа, позволяющая устанавливать и удалять их из системы. Если ее нет, можно компонент на сервер и зарегистрировать с помощью утилиты MFC напри мер, так:

RegSvr различаются по типу имен, которые могут быть строгими или не строгими в от способа хранения имен в сборке. Уникальность нестрогих имен не гарантируется, поэтому при совместном использовании компонентов с нестрогими возможны конфликты. У строгих имен есть цифровая подпись и открытый ключ, которые делают конфликт невозможным. Кроме того, со строгими именами не способны вызывать неуправляемый код (такой, как компоненты что исключает конфликты из-за зависимостей.

с именами следует скопировать в каталог каждого из использующих эти компоненты, а со строгими именами можно копировать в кэш глобальных сборок сервера 9-4).

Кэш сборок (global assembly cache) — это особая папка каталога Windows, в которой хранятся разделяемые открывается эта палка, расширение оболочки Windows под названием Cache Viewer sion.dll), показанное на рис. 9-4.

Чтобы установить со строгими именами, можно их в окно Assembly Cache Viewer или скопировать при инструмента Cache следующим образом:

GacUtil.

-.- ] I Shared Web • 0, 0, Рис, 9-4. Просмотр в кэше глобальных сборок Назначение прав доступа По умолчанию процесс работает под учетной записью ASPNET, которая созда ется при установке Framework. Эта учетная запись обладает ограниченными приви легиями, что может привести к ошибкам из-за отказа в доступе, если попытается записать прочитать файл, расположенный за пределами его границ.

Если вашему приложению нужны дополнительные разрешения, выполните одно из следующих действий:

• предоставьте учетной записи доступ к необходимым файлам возможно, только если на сервере используется файловая система • переместите учетную запись в другую группу;

• при назначьте приложения другую учетную запись.

Чтобы предоставить учетной записи ASPNET доступ к файлу или папке, выполните следующие действия.

1. В окне Explorer (Проводника) выберите из меню View (в русскоязычной версии Win dows — Сервис) пункт Folder Options (Настройки вида папки) — Windows откроет диа логовое окно свойств папки.

2. Перейдите на вкладку View (Вид) и снимите флажок Use Simple File Sharing (Исполь зовать простой общий доступ к файлам) в конце списка 9-5). Щелкните ОК, что бы внести изменения и закрыть диалоговое окно.

3. В окне Explorer щелкните правой кнопкой мыши файл или папку, к которым следует предоставить доступ, и выберите из контекстного меню команду Properties (Свойства).

Windows откроет диалоговое окно свойств файла или папки.

4. Перейдите на вкладку Security (Доступ) и щелкните кнопку Add (Добавить), чтобы добавить учетную запись ASPNET к списку Group Or User Names (Группы или пользо ватели), как показано на рис. 9-6.

5. Пометьте флажками нужные разрешения. Щелкните ОК, чтобы внести изменения и закрыть диалоговое окно.

& •.

в.

of Web and О and О but as a 0 each previous at logon or files color 0 pop-up 9-5. Предоставление полного доступа к файлам.

D a a p D a D Рис. 9-6. Добавление учетной Чтобы поместить пользовательскую учетную ASPNET в другую выпол ните Из пункта меню Start выберите команду Administrative ment компьютером). Windows откроет консоль Com puter Management (Управление компьютером).

Выберите компонент Local Users And Groups (Локальные пользователи и группы), за тем в списке слева выберите Users (Пользователи), как показано на рис. 9-7.

3. Щелкните правой кнопкой мыши пользовательскую учетную ASPNET и выбе рите из контекстного меню команду Properties (Свойства) — консоль Computer Mana gement откроет окно свойств этой учетной записи (рис. 9-8).

4. Перейдите на вкладку Member Of и щелкните кнопку Add (Добавить), чтобы учетную запись ASPNET к новой группе. Щелкните чтобы внести изменения и закрыть диалоговые окна.

и, • i 1 I..

Center Test A.. - fa to the | Remote Ass for Assistance Guest Account Built-in fa access to Guest Account fa access to И " | IIS Process Accou Information ffi Storage IIS Process Accou...

Ml | 2 Sophia ! г user used the Visual | 5 О A ' • fcialyzB A A 0 va A ount 5.0 va A и A •' -;

u.sl т Рис. 9-7. Изменение учетной пользователя Рис. 9-8. Выбор группы для учетной записи ASPNET В результате добавления учетной записи ASPNET к группе Administrators Web-прило жение получит полный набор привилегий на сервере, но это угрожает безопасности, по скольку в этом случае смогут сделать Web-приложение том для взлома сервера.

Чтобы при олицетворения назначить процессу другую учетную за пись вместо ASPNET, воспользуйтесь атрибутом элемента identity из файла Например, элемент назначает для приложения учетную запись пользователя Если в приложении используется аутентификация средствами Windows, то при помо щи олицетворения можно также передавать на сервер идентификационные данные аутен пользователей. Например, следующий фрагмент файла зас тавляет исполнять Web-приложение с разрешениями пользователя, зарегистрировавшего ся для работы с приложением:

работающее на одном многопроцессорном сервере, называется в до кументации по ASP.NET Web-садом garden), а исполняемое на нескольких серверах — Web-фермой (Web farm). В этом занятии вы научитесь применять серверы с подобной кон фигурацией в собственных Изучив материал этого занятия, вы сможете:

конфигурировать для исполнения на нескольких или всех процессорах многопроцессорного сервера;

исполнять на нескольких серверах;

предоставлять нескольким экземплярам доступ к переменным Session при помощи сервера состояния;

применять базы данных SQL для совместного использования переменных состояния Session.

Продолжительность занятия — около 10 минут.

Масштабирование путем наращивания числа процессоров При использовании многопроцессорного сервера можно задать процессоры, на которых будет исполняться ASP.NET. Это делается посредством атрибута элемента process определяемого в файле сервера (см. строки, выделенные в примере ниже полужирным шрифтом):

В таблице 9-4 описаны атрибуты элемента process управляющие Web-садами.

Таблица 9-4. Атрибуты, Web-садами Имя Для исполнения Web-приложения ASP.NET на нескольких процессорах многопроцессорного этот должен быть установлен в true Задает процессоры, ASP.NET. Значение означает, что для исполнения используются все процессоры Атрибут cpuMask представляет собой битовую маску, каждый разряд которой разреша ет (если он равен I) или запрещает он равен 0) исполнение ASP.NET на определен ном процессоре сервера. Например, на сервере значение ASP.NET использовать процессоры 2 и 3, освобождая 1 для задач. Двоичное значение соответствует Исполнение приложений ASP.NET на нескольких процессорах требует особого под хода к переменных состояния Application и Session. Подробно об этом сказано далее в разделе доступа к сведениям о состоянии», Масштабирование путем числа серверов Чтобы использовать несколько серверов для обработки запросов одного HTTP-адреса, необходимо установить в сети средства балансировки нагрузки, бывают как ап паратными, так и программными.

В Windows 2000 Advanced Server и Windows 2000 Datacenter имеется Network Load Balancing (NLB), распределяющий запросы между Дополнительные све дения об установке и применении этого инструмента см. в разделе справочной системы Visual Studio озаглавленном «Network Load Balancing Provider».

Если сеть поддерживает балансировку нагрузки, можно установить на нескольких серверах, при этом запрос автоматически направляется наименее загруженному серверу.

При исполнении приложений ASP.NET на нескольких серверах необходим особый подход к использованию переменных состояния Application и Session. Подробнее об этом — в следующем разделе.

Предоставление доступа к сведениям о состоянии При использовании как Web-садов, так и Web-ферм запросы клиентов направляются для обработки наименее загруженному процессу ASP.NET, Это означает, что на сеанса клиента могут обслуживать разные или серверы. При этом следует учи тывать некоторые моменты, состояния and Session:

• переменные состояния приложения уникальны для каждого экземпляра Клиенты могут обмениваться данными через переменные состояния Application прило жений, исполняемых на Web-садах или Web-фермах:

• сеансовые переменные состояния по умолчанию хранятся внутри процесса. Чтобы сделать переменные состояния Session доступными всем сеансам, обслуживаемым Web-садом или Web-фермой, необходимо определить механизм доступа к этим переменным состояния.

Более подробно эти проблемы рассматриваются в разделах.

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

Совместное использование сведений о состоянии на уровне сеанса ASP.NET поддерживает два метода для обмена данными переменных состояния Session в Web-садах и Web-фермах:

• сервер состояния (задается сетевым адресом) — метод, простой в реализации и не требу ющий установки SQL Server;

• база данных SQL (задается SQL-соединением) обеспечивает произво при сохранении и извлечении сведений о состоянии.

Чтобы обмениваться данными переменных состояния Session при помощи сервера со стояния, выполните действия.

1. Установите значения для атрибутов и элемента mode, определяемого в файле приложения. Ниже показан пример настройки па раметров, определяющих использование сервера состояния с IP-адресом через порт 42:

2. Запустите на сервере состояния утилиту aspnet_state.exe. При установке Visual Studio Professional или Visual Studio Enterprise Architect Edition эта утилита записывается в каталог Чтобы обмениваться данными переменных состояния Session через базу данных, вы полните действия.

Установите значения для атрибутов и элемента mode, оп ределяемого в файле приложения. Например, следующие параметры опре деляют использование сервера SQL с IP-адресом 192.168.1.102:

2. Запустите InstallSqlState.sql на сервере, через который процессы будут обме ниваться данными переменных состояния Session. При установке Visual Studio Professional Edition, Visual Studio Enterprise Developer Edition или Visual Studio Enterprise Architect Edition эта утилита записывается в каталог Резюме При компоновке приложения для развертывания используйте параметр Release и уста новите атрибут из файла в false.

Файлы или идентифицируют сборку и предоставляют сведения о его версии.

Для развертывания загрузите его на сервер провайдера при инструментов Visual Studio либо просто скопируйте на сервер сборку и файлы содержимого приложения.

Назначьте пользовательской учетной записи ASPNET соответствующие привилегии.

чтобы разрешить записывать файлы и обращаться к другим ресур сам доступ к которым ограничен.

Для наблюдения за работой после его развертывания оснастки ММС Event Viewer (Просмотр событий) и Performance Logs and Alerts и оповещения восстанавливают, заменяя их сборки и файлы содержимого на сервере.

Для самовосстановления при возникновении утечек памяти и других сбоев используется рециркуляция процессов ASP.NET.

Для повышения производительности в FrontPage Server применяется кэширование часто запрашиваемых Атрибуты элемента в файле сервера позволяют создать Для создания Web-ферм необходимы компоненты балансировки нагрузки, распреде ляющие запросы между серверами.

Совместное использование переменных состояния Session в Web-садах и определяется значением элемента в файле Web.config приложения.

Практикум 9. Компоновка и развертывание Web-приложения В этом практикуме вы подготовите и выполните его развертывание на Далее вы займетесь мониторингом и настройкой приложения. Для упражнений этого практикума вам понадобится готовое приложение. Это может быть одно из жений, созданных в практикумах предыдущих глав, или ваше собственное приложение.

Поскольку методики, предлагаемые в практикуме, применимы к любым типам интересно выбрать приложение, которое вы планируете развертывать в Интернете для других пользователей или для себя.

Продолжительность практикума — около 30 минут.

Упражнение Подготовка приложения Сейчас вы скомпонуете окончательную версию пользуясь занятия 1 и следующими указаниями.

1. Введите идентификационные данные приложения и определите номер его версии в файле или 2. Откройте файл приложения и установите атрибут debug элемента compilation в false.

3. Установите параметр компоновки приложения в Release.

4. Выполните компоновку приложения.

Упражнение 2. Развертывание приложения Способ развертывания приложения зависит от типа доступного сервера. Если у вас есть учетная запись службы хостинга главу 1), воспользуйтесь инструмен тами Visual Studio для загрузки приложения на сервер провайдера.

Для развертывания приложения на собственном сервере воспользуйтесь материалами занятия 2 и следуйте указаниям, приведенным ниже, 1. С помошью IIS создайте виртуальный каталог для размещения приложения на сервере.

2. Скопируйте Web-приложение в созданный виртуальный каталог.

3. Проверьте параметры безопасности сервера;

убедитесь, что разрешений пользователь ской учетной записи ASPNET достаточно выполнения необходимых действий.

4. Если требуется, предоставьте этой учетной записи доступ к ресурсам, используемым вашим приложением.

5. Попробуйте запустить приложение на сервере, чтобы что текущие па раметры безопасности не мешают его работе.

Упражнение 3. Отображение сведений о производительности приложения на графике Сейчас вы при помощи оснастки ММС Performance and Alerts зарегистрируете в журнале число запросов, обработанных и отобразите собранные сведе ния на графике вместе с активностью процессора сервера. Примерный вид гра фика показан на рис. 9-30.

ft--- •. - !.. • Рис. 9-30. График параметров производительности Web-приложения Используя знания, полученные на занятии выполните действия.

Вызовите оснастку Performance and Alerts и подключитесь к серверу, на котором работает Web-приложение, развернутое в предыдущем упражнении. Если приложение развернуто на сервере службы Web-хостинга, подключиться к нему не удастся. В этом случае запустите локально и подключитесь к своему локальному ком пьютеру.

2. Создайте новый журнал счетчика и назовите его «Exercise 3».

3. Добавьте журнал счетчики, в таблице.

Объект Счетчик % Processor time Processor applications Anonymous requests Applications running NET Worker processes running NET Чтобы собрать сведения о сервере, начните регистрацию данных в журнале и вите ее через несколько минут.

4. Щелкните в оснастке элемент System Monitor (Системный монитор) и измените его свойства, чтобы он показывал файл журнала:

• правой кнопкой System Monitor и выберите из контекстного меню ду Properties (Свойства);

• перейдите на Source (Источник), выберите Log (Файлы журнала) и щелк ните кнопку Add чтобы добавить файлы журналов для отображения;

• перейдите на вкладку Data (Данные) и кнопку Add, чтобы добавить счет чики ASP.NET для мониторинга;

• на вкладке Properties установите для всех счетчиков ASP.NET интервал, равный 10;

• шелкните кнопку ОК, чтобы отобразить содержимое журнала на графике.

15- 5. Для просмотра данных журнала в текстовом виде кнопку Report (Просмотр отчета) в окне System Monitor.

6. Поэкспериментируйте с счетчиками (например, со счетчиками ошибок при ложений попаданий кэша и т. д.).

Упражнение 4. Настройка приложения Сейчас вы установите FrontPage Server Extensions и настроите параметры кэширо вания для По умолчанию Visual Studio устанавливает FrontPage Server Extensions одновременно с.NET-компонентами. Если в упраж нении 2 для развертывания приложения использовался сервер службы Web-хос тинга, эти действия выполнить не удастся из-за отсутствия доступа к серверу про вайдера. В этом случае, как и в упражнении 3, используйте Web-приложение, запу щенное локально.

Используя знания, полученные на занятии 3, выполните следующие действия.

1. Запустите IIS и установите FrontPage Server Extensions в виртуальный каталог сервера, в котором находится Web-приложение.

2. В IIS вызовите окно свойств виртуального каталога и перейдите на вкладку Server 3. Выберите в списке Performance элемент Tune For Pages и щелкните ОК.

4. Чтобы зарегистрировать изменения на сервере, запустите журнал счетчика, созданно го в упражнении 3.

Закрепление материала Приведенные ниже вопросы помогут вам лучше усвоить основные темы данной главы.

Если вы не сумеете ответить на вопрос, повторите материал соответствующего занятия.

Ответы для самопроверки — в приложении Вопросы и ответы» в конце книги.

1. Какие разрешения назначаются Web-приложениям по умолчанию?

2. Почему файл так важен для развертывания 3. Как задать параметры кэширования для Web-приложения?

4. Опишите особенности применения переменных состояния Session в Web-приложени ях, на Web-фермах и Web-садах.

Тестирование Web-приложений Занятие Подготовка тестирования Занятие 2. Проведение тестирования Занятие 3. Отладка приложения В этой главе Цель тестирования программного обеспечения — убедиться в его соответствии предъяв ляемым требованиям. Из этого простого положения ясно, что нельзя начинать тестирова ние без:

• полных и четко сформулированных требований к программному продукту;

• грамотно определенных задач тестирования, в противном случае когда тестирование законченным.

Обычно требования к продукту и задачи тестирования формулируются независимо от разработчиков: это делают, как правило, заказчики или администрация компании. Б этой главе рассказано, как планировать тестирование на основе требований к продукту, подго тавливать и проводить тесты, а также устранять неполадки, выявленные тестированием.

Прежде всего Для занятий по материалам этой главы вам потребуются:

• доступ к Web-серверу (через сеть или провайдера услуг хостинга) для тести рования и отладки • хотя бы одно готовое созданное в практикуме одной из глав;

• знание языка сценариев Windows (VBScript или JScript);

• установленный Application Center Test (ACT) из Visual Studio Enterprise Architect Edition — он понадобится в разделе, посвященном нагрузочному тестированию Занятие Подготовка тестирования Любой программный продукт, для широкого применения, должен прой ти тестирование. Чем сложнее продукт и чем шире круг пользователей, тем более необхо димо тестирование для его коммерческого успеха. Без тестирования нельзя быть уверен ным, что программа будет работать как надо и не придется краснеть перед ми за качество программного продукта.

В отношении программного обеспечения термин тестирование почти всегда означает автоматизированное тестирование (automated testing). Оно подразумевает применение программ, записанные действия пользователя или имитирующих рабо ту компонента с системой. Автоматизированные тесты воспроизводимы, то есть их можно проводить многократно, а их результаты измеримы (позволяют судить, выполнен тест или Эти ключевые характеристики тестирования гарантируют, что прошедший тестиро вание программный продукт соответствует предъявляемым к нему требованиям.

В этой главе описано, как составить план тестирования, использовать типы для всесторонней проверки программного продукта и создавать различные испы тательные задания при помощи Visual Studio Изучив материал этого занятия, вы сможете:

составлять план тестирования программного обеспечения;

описывать различные типы тестирования программного обеспечения;

писать задания для блочного тестирования компонентов программ;

писать задания для комплексного тестирования готовых компонентов программы;

объяснять, как обнаружить регресс приложения с помощью библиотеки тестов;

создавать задания для нагрузочного тестирования с помощью ACT;

тестировать на клиентах с различной Продолжительность занятия — около 30 минут.

Составление плана тестирования Первый шаг тестирования — разработка его плана на основе требований к программному продукту. Обычно план тестирования считается документом, на значение которого — гарантировать, что продукт:

• прошел всестороннее тестирование. не прошедший тестирование, вносит элемент неопределенности в работу приложения и повышает риск сбоев;

• соответствует предъявляемым требованиям. Чтобы программный продукт был признан соответствующим требованиям заказчика, он должен работать, как описано в его спе и поддерживать все перечисленные в ней В силу этих обстоя тельств спецификация программного продукта должна быть написана четко и ясно;

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

Наличие плана тестирования поможет избежать ручного тестирования, когда множест во разработчиков и независимо друг от друга проверяют работоспособ ность отдельных частей кода. Результаты такого тестирования обычно трудно воспроизво димы и всегда непредсказуемы. Хороший план тестирования содержит ответы на следую щие вопросы:

• как написаны тестовые задания — в плане следует описать языки и инструменты, ис пользуемые для тестирования;

• кто отвечает за тестирование — необходимо указать группы или отдельных тов, которые занимаются подготовкой и проведением когда проводится — график тестирования не должен отставать от разработки;

• где проводится тестирование и как публикуются его результаты — следует так организо вать тесты, чтобы их можно было регулярно повторять;

• что подвергается тестированию — выбор измеримых критериев и постановка конкрет ных задач позволят не пропустить момент, когда тестирование можно считать успешно завершенным, В зависимости от типа тестов на некоторые из этих вопросов можно отвечать по-раз ному. Например, за первоначальное тестирование кода обычно отвечают написавшие его разработчики, а за проверку работоспособности кода приложения в несет ответ ственность специальная группа В разделах описаны и методы тестирования, применяемые в Visual Studio Типы тестирования В плане предусмотрено проведение различных тестов, убе диться в соответствии программного требованиям заказчика и отсутствии в нем дефектов. Наиболее популярные типы тестирования описаны в таблице 10-1.

Таблица 10-1. Типы тестирования Тип Назначение Блочное Независимая проверка отдельных компонентов кода Комплексное Проверка совместной работы всех компонентов Регрессивное Выявление сбоев в работе уже реализованных функций, вызванных добавлением новых Нагрузочное (стрессовое) Проверка работы продукта при экстремальных нагрузках Тестирование Проверка работы программного продукта на всех целевых на платформе аппаратных и программных платформах Обычно эти тесты зависят друг от друга и проводятся в указанном в таблице 10-1.

Порядок тестирования отражен на диаграмме, показанной на рис. 10-1.

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

Блочное тестирование Блок — это наименьший фрагмент кода, который можно подвергнуть С точки зрения объектно-ориентированного программирования, блоками являются клас сы, свойства, методы и события. Все блоки должны пройти тестирование, прежде чем их интегрируют в проект.

Обычно задания для блочного тестирования некоторого компонента пишут его авто ры, используя тот же язык программирования, на котором написан код, или язык сценариев (например, если код написан на Basic для Новый код Блочное тирование ошибок ОК компоновки ОК Написание заглу Регрессивное тестирование ОК Нагрузочное г* или отладка ОК Тестирование И на платформе Доработка интерфейса ОК Рис. 10-1. Цикл программного продукта вания можно написать на VBScript). Процедура самотестирования блока бывает такой простой, как получение или установка значения некоторого свойства, или довольно слож ной, как, например, расчет результата на основе примерных данных с последующим срав нением полученного результата с известным эталоном.

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

Visual Basic Function TestFlashCard() As Boolean Создать объект класса Dim FlashCard As New Если обьект не If Then False и закончить на этом.

Return False If Проверить метод shuffle с помощью максимального и минимального значений.

Протестировать свойства класса.

bResult As As Integer = As Integer = Dim As Double = intFirst + intSecond If о Then Numbers add bResult = False End If Integer. MaxValue) Убедиться, что значения не повторяются.

If Then FirstNumber not unique after shuffle") End If If SecondNumber not after shuffle") End I* Проверить арифметические действия, = If - <> Then - doesn't = False End If = If * <> Then x operator doesn't multiply.

bResult - False End If If + о Then + operator doesn't add.

oResult - False If Вернуть об успехе или провале теста.

bResult Ena Function Visual static { // Создать объект класса.

FlashCard = new csFlashCards.

Если объект не if { false и закончить на этом, return false;

/I Проверить метод shuffle с максимального и значений.

// Протестировать свойства класса, = int int = double - intFirst + intSecond;

if (dblAnswer != { don't add bResult false;

Перемешать карточки.

// Убедиться, что значения не if (intFirst FirstNumber not unique after if (intSecond == SecondNumber not unique after // Проверить арифметические действия.

(FlashCard. FirstNumber :

bResult - false;

} = if (FlashCard. FirstNumber * != { x operator doesn't bResult = false;

} if (FlashCard. FirstNumber + != { + operator doesn't bResult = } Вернуть сообщение об успехе или провале теста.

return bResult;

} Важнейшей характеристикой блочного тестирования считается его полнота. Блочное тестирование должно охватить все фрагменты кода приложения и весь диапазон возмож ных значений В примере это требование выполнялось путем методу Shuffle крайних значений аргументов — MinValue и приложения должны выводить сообщения об ошибках, генерированные тестируемым элементом, чтобы не и исправление ошибок. Пре код отображает сообщения в окне Output при помощи метода Console.

Сообщения об ошибках также можно записывать в файл журнала тестирования средства ми метода Debug. или генерировать уведомления вызовом Комплексное тестирование Первый комплексный тест должен дать ответ на вопрос: компилируется ли приложение?

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

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

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

Помимо заглушек и драйверов для тестирования приложений используются тестовые интерфейсы, обеспечивающие автоматизацию комплексного тестирования. ин терфейс interface) — это набор открытых свойств и методов, с помощью которых внешняя тестирующая программа управляет тестируемыми компонентами. Вот пример тес тового интерфейса, автоматизирующего тестирование Web-формы приложения Basic DEBUG Открытый интерфейс для комплексного тестирования.

Public As String Public As String Public Function TestUI{ByVal Answer As String) As Boolean = ' Записать Answer в поле = Answer ' Исполнить обработчик события Changed.

' Проверить результат.

If = "Correct!" Then Return True Else Return False End If End Function If Visual C# DEBUG // интерфейс для тестирования.

public string public string SecondNumber;

public Answer) { FirstNumber SecondNumber = = Answer;

// Исполнить обработчик события Changed.

// if == return true;

false;

tfendif Здесь используются директивы препроцессора If случае С#), чтобы скомпилированная версия тестового интерфейса не оказалась в конечной версии программного продукта, Это важно, поскольку тестовый интерфейс доступ к внутренним механизмам приложения, которые в конечной версии следует скрыть.

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

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

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

Нагрузочное тестирование Возможно, после развертывания Web-приложения с ним будут работать не больше двух трех клиентов одновременно, а может статься, что запросов окажется тысячи. Для про верки работы в условиях резкого колебания нагрузки служит нагрузоч ное тестирование. Для подготовки и проведения нагрузочных тестов Web-приложений ис пользуется Application Center Test (ACT).

Процедура применения ACT такова.

1. Создайте тестовое задание, записав действия пользователя во время сеанса ложения с ACT.

2. Установите свойства теста, такие, как уровень нагрузки и продолжительность вания.

3. Проведите тестирование.

Обычно тестирование выполняется в цикле разработки проекта позже и не так часто, как блочное, комплексное или регрессивное тестирование. Подробно мето дика подготовки и проведения нагрузочного тестирования описана в разделах.

Запись задания для нагрузочного тестирования Чтобы записать задание для нагрузочного тестирования с помощью ACT, выполните сле дующие действия.

В ACT выберите из меню Action команду New Test — ACT запустит мастер New Test Wizard.

2. Щелкните кнопку Next — мастер откроет страницу Test Source (рис, source new by Рис. 10-2. Запись нового теста 3. Установите переключатель в положение Record A New Test и Next. Мастер откроет страницу Test Type (рис. 10-3).

4. Щелкните Next — мастер откроет страницу Browser Record (рис. 10-4).

5. Щелкните кнопку Start Recording мастер откроет окно браузера, как показано на рис. 10-5.

6. Выполните действия, которые нужно записать. Можно по очереди открыть все ницы и выполнить на них какие-либо действия.

7. Закончив, щелкните кнопку Stop Recording на странице Browser Record, затем щелк ните Next. Мастер откроет страницу Test Properties (рис. 10-6).

8. Введите имя теста и Next — мастер откроет страницу Completing New Test. Finish, чтобы завершить работу мастера.

the Рис. 10-3. Выбор языка сценариев to a new Рис. 10-4. Запуск и остановка записи Рис. 10-5. Запись выполняемых действий properties lor the new Рис. 10-6. Ввод имени теста Установка свойств теста Записанный тест появляется в списке Tests в окне ACT, как показано на рис. 10-7.

1 и If Рис. Записанный тест Тестовые задания ACT можно создавать на языках VBScript или JScript, но сам ACT записывает их только на VBScript. Чтобы установить уровень нагрузки и продолжитель ность тестирования для записанного теста, выполните действия.

1. В меню Action выберите элемент Properties ACT откроет окно свойств теста (рис. 10-8).

2. Определите уровень нагрузки, увеличивая число пользователей, одновременно рабо тающих с Web-приложением. Затем установите продолжительность тестирования, за дав время исполнения теста либо число исполняемых запросов. Закончив, щелкни те ОК.

.

Рис. 10-8. Установка уровня нагрузки и продолжительности тестирования Исполнение нагрузочного теста Чтобы нагрузочный тест в ACT, выберите из меню Action пункт Start Test ACT откроет диалоговое окно Test Status (рис. 10-9).

Рис. 10-9. Диалоговое окно Test Status Исполнение тестов в ACT и анализ их результатов более подробно описаны в занятии 2.

Тестирование на платформе В случае тестирование на платформе обычно к проверке сле моментов:

1. Web-формы корректно отображаются во всех поддерживаемых браузерах, включая все их версии;

2. если открывается в браузере, который оно не оно ото бражает соответствующее сообщение, например инструкции по загрузке нужной вер сии браузера;

3. при отсутствии на клиентском компьютере необходимых например объектов ActiveX или подключаемых (plug-in), пользователю предлагается уста новить их;

4. Web-приложение обладает приемлемой производительностью при применении медлен ных подключений, например, через модем.

Для проведения тестирования на платформе необходима лаборатория с компьютера ми, аппаратное и программное обеспечение которой представляет различные поддерживаемые вашим приложением 10-10).

Internet Explorer для Macintosh Internet Explorer 6. Модем 56,6 кбит/с Internet Explorer ЛВС Internet Explorer 4. Рис. 10-10. лаборатории для тестирования на платформе Проверка корректности отображения Web-форм требует участия человека. Поскольку в различных браузерах по-разному прорисовывает серверные элементы ления, на заключительной стадии тестирования следует предусмотреть визуальную про верку Web-приложения.

Занятие 2. Проведение тестирования На занятии вы научились тестирование и различные типы тестовых заданий с помошью Visual Studio а сейчас узнаете, как различные тесты и как получать их результаты.

Изучив материал этого вы сможете:

проводить тестирование Web-приложений с ACT;

записывать результаты и сведения о при исполнении нагрузочного теста;

имитировать в ACT разные типы браузеров и проверять наличие определенных строк в откликах браузера при тестовых тестировать сборки с помощью сервера сценариев Windows;

создавать командные файлы для сборки и тестирования сборок использовать Планировщик Windows для запуска в заданное время командных файлов, выполняющих автоматическую компоновку и тестирование в ночное время.

Продолжительность занятия — около 30 мин.

Тестирование с помощью ACT На занятии мы кратко продемонстрировали подготовку и исполнение нагрузочных тестов в ACT. В этом разделе подробнее обсуждаются вопросы настройки и исполнения тестов ACT, в том числе:

• регистрация результатов тестирования;

• настройка тестов для одновременного использования нескольких соединений;

• исполнение тестов с различными комбинациями имен и паролей пользователей;

• добавление к тесту счетчиков производительности;

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

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

Щелкните правой кнопкой элемент в левой панели окна ACT и выберите из контекст ного меню команду Properties ACT откроет окно свойств теста (рис. 10-11).

2. Перейдите на вкладку Debugging и введите в текстовое поле Folder To Save Log In путь к каталогу для хранения файлов журнала этого теста. Закончив, щелкните ОК.

В зависимости от значения свойства заданного для теста, в журналы ACT записывается разный объем данных. Чтобы его изменить, установите свойство для объекта Test в сценарии теста. Например, если включить в стро ки, ACT будет регистрировать все сообщения:

= - •-.- •, Рис. 10-11. Определение каталога для хранения файлов журнала JScript -1;

Возможные значения свойства перечислены в таблице 10-2.

Таблица 10-2. Значения свойства TraceLevel Значение Что регистрируется -1 Все данные, в том числе запросы и отклики приложения, а также любые генерируемые при вызове Trace из теста Это значение отключает регистрацию данных в журнале i Запросы и отклики приложения Сообщения, генерируемые при вызове метода Trace из сценария теста (это значение задано по умолчанию) Вызовом метода Trace объекта Test из тестового сообщения в журнал. Следующий сценарий записывает в журнал сообщение, если ACT не под ключиться к серверу:

VBScript Dim Sub Set g_oConnection = 80, If (g_oConnection is Nothing) Then "Error: to create connection to End If End Sub J Script var function { = if Unable to create connection to Использование нескольких подключений ACT способен моделировать различные уровни загруженности сервера, увеличивая число одновременных подключений. По умолчанию для отправки запросов Web-приложению ACT применяет одно подключение. Создание дополнительных подключений эквивалент но росту числа одновременно пользователей.

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

В правой панели окна ACT щелкните тест правой кнопкой и выберите из контекстно го меню элемент Properties — ACT откроет окно свойств теста (рис. 10-12).

Рис. 10-12. Увеличение числа 2. В секции Test Load Level измените число одновременных подключений и ОК.

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

Чтобы добавить в группу новых пользователей, выполните следующие 1. Щелкните элемент Users в левой панели окна ACT, чтобы раскрыть список групп пользователей.

2, Выберите группу пользователей и в таблице слева введите имена и пароли новых пользователей. На рис. 10-13 показано добавление пользователей в группу Users Group.

Рис. 10-13. Добавление к группе 3. В правой панели окна ACT шелкните правой кнопкой тест и выберите из контекстно го меню команду Properties — ACT откроет окно свойств теста (рис.

Рис. 10-14. Активация пользователей через свойства теста 4. Перейдите на вкладку Users, установите переключатель Specify Users и ОК.

ACT автоматически выбирает пользователей для каждого прогона теста, а для каждого нового подключения. Пользователей можно указать и вручную, вызывая сце нария теста метод объекта Test образом:

VBScript Sub ChangeUserO & user End Sub Script function ChangeUserO { + user name:

Добавление счетчиков производительности Счетчики производительности, добавленные к тесту, позволяют следить за производитель ностью во время нагрузочного теста. Для этих целей используются те же счетчики, что и для наблюдения за производительностью сервера при оснастки Performance Logs and Alerts консоли ММС (см. главу 9).

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

В правой панели окна ACT правой кнопкой тест и выберите из го меню команду Properties — ACT откроет окно свойств теста.

2. Перейдите на вкладку Counters и щелкните Add — ACT откроет диалоговое окно Browse Performance Counters, показанное на рис. 10-15.

Выберите интересующие вас счетчики и щелкните Add, затем Close.

3. Щелкните ОК, чтобы окно свойств теста.

При исполнении теста ACT записывает в XML-файл статистические данные о произ которые также отображаются на панели результатов теста в окне ACT (рис 10-16).

10-15. Добавление счетчиков ад** vs.

Рис. 10-16. Просмотр сведений о Имитация различных браузеров ACT способен имитировать разные типы браузеров, изменяя сведения об агенте пользо вателя в заголовке посылаемых им запросов. вы найдете в тесте Browser Type из проекта ACTSamples, который устанавливается вместе с ACT.

Скопировав тест Browser Type в свой проект теста, используйте его для проверки со вместимости приложения с разными типами браузеров, а также корректности его с браузерами, которые оно не поддерживает. Но поскольку ACT не отклики, при помоши этого теста нельзя корректно ли отображается Web -при ложение различными браузерами.

Получение содержимого откликов ACT отклик сервера в свойстве Body объекта Response. Проверить наличие ожидаемого результата в отклике позволяет функция VBScript как показано ниже:

VBScript Set oResponse = If Then Else End If JScript oResponse if else Дополнительный пример использования для поиска нужных строк в отклике приводится в теста Body, поставляемом с ACT.

Примечание Справочная система ACT содержит полное описание объектной модели те стирования, а также концептуальные сведения о нагрузочном тестировании Web-приложе ний с ACT.

Тестирование ACT ориентирован на взаимодействие с Web-приложениями посредством запросов и от кликов. Это здорово для тестирования свойств, связанных с пользовательским интерфей сом, но менее удобно для тестирования внутренних классов приложения.

Допустим, нужно выполнить блочное тестирование класса как показа но в занятии 1, но с использованием ACT. Как это сделать? Можно попробовать следую щий способ:

VBScript = Dim Set FlashCard = If (FlashCard Is Nothing) Then FlashCard not End If JScript = -1;

var FlashCard;

FlashCard = if (FlashCard == null) { FlashCard not ;

Все только работать это не будет! Поскольку применяют Framework, пространства имен не годятся в качестве аргументов метода который ожидает программный идентификатор (progID) объекта а не про странство имен.

Чтобы использовать сценарий для тестирования.NET-сборки, выполните действия.

1. Зарегистрируйте для использования с СОМ.

2. Убедитесь, что в состоянии найти 3. Создайте с progID, зарегистрированным для.NET-сборки.

Более эти действия описаны в следующих разделах.

Регистрация Для регистрации в системном реестре служит утилита RegAsm.exe, постав ляемая с Framework.

Процедура использования утилиты RegAsm.exe такова.

Вызовите окно командной строки Visual Studio Для этого выберите в меню Start элемент All Visual Studio Studio Studio Command Prompt.

2. В командной строке перейдите в каталог, регистрируемую и ис полните команду:

RegAsm.exe где — это имя регистрируемой сборки.

RegAsm.exe регистрирует открытые классы из назначая им progID, со зданные из их имени и пространства имен. Например, после регистрации сборки Flash Cards, созданной в главе 2, в реестре появится запись, показанная на рис. 10-17.

Рис. Запись системного реестра со сведениями о сборке Размещение Помимо регистрации компонентам СОМ необходимо указать путь к гу, в котором следует искать сборку. Это можно сделать вот три самых про стых способа:

1. поместить сборку в GAC (Global Assembly Cache);

2. скопировать сборку в каталог использующего ее компонента СОМ;

3. скопировать компонент СОМ в каталог сборки.

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

Исчерпывающие инструкции по созданию строгих имен и размещению сборок в GAC вы найдете в справочной системе Visual Studio Сборки, используемые только одним приложением, проше всего размещать в одном каталоге с компонентом СОМ. Этот способ особенно хорош для тестирования, когда сбор ка определенно не должна быть доступной другим приложениям.

Создание Зарегистрировав.NET-сборку и указав компонентам СОМ путь к ней, можно создать эк земпляр вызвав один из методов для создания объектов СОМ, например VBScript Чтобы попробовать применить вышеописанную методику с инструментами для тести рования, такими, как сервер Windows (Windows Scripting Host), выполните сле действия.

Зарегистрируйте сборку Web-приложения, как показано в разделе.

2. Скопируйте файл CScript.exe из каталога или \WINNT\system32 в каталог \bin Web-приложения. Эта копия CScript.exe понадобится для исполнения сце нариев тестов;

она должна быть в одном каталоге с.NET-сборкой, чтобы СОМ- и смогли взаимодействовать.

3. Создайте файл сценария VBScript (или JScript) и исполните его при помощи копии CScript.exe из каталога Следующий код демонстрирует тестирование класса с помощью сервера сценариев Windows:

VBScript Сценарий для блочного FlashCardClass Option Explicit Dim Set FlashClass = Проверить, создан ли объект.

If (FlashClass is Nothing) Then WScript.Echo "Error: FlashCardClass not End If Проверить метод Shuffle.

1, Dim X, Y x = у = Перемешать карточки еще раз.

If (x - or (y = Then WScript.Echo "Warning: Number not End If Проверить свойство Answer.

FirstNumber + Then "Success: Answer adds Else WScript.Echo "Error: Answer incorrect."

If // js Сценарий для блочного тестирования класса FlashClass;

FlashClass = new // Проверить, создан ли if (FlashClass null) { FlashCardClass } // Проверить метод Shuffle.

1000);

X. Y;

x у Перемешать карточки еще раз, 1000);

if (y Number not свойство Answer.

if + == Answer adds else Answer Для запуска этих сценариев используются следующие команды в ко мандной строке):

VBScript > JScript bin\cscript > Автоматическая компоновка и тестирование Регулярное проведение блочного, комплексного и нагрузочного тестирования гарантиру ет неизменно высокое качество программного продукта и позволяет вовремя заметить регресс. Многие группы разработчиков выполняют компоновку и тестирование каждую ночь. тестов в ночное время удобно: удается вовремя завершать разработку компонентов и не нарушать рабочий процесс, освобождая компьютеры группы других задач. Поскольку тестирование поздно ночью, его обычно в авто матическом (необслуживаемом) режиме, который освобождает от необходимости запус кать гесты вручную и следить за ходом тестирования.

Вот что надо сделать, чтобы запустить автоматическую компоновку и программы.

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

2. При помощи Планировщика Windows (Windows Task Manager) создайте график запуска командного файла;

настройте его так, чтобы он выполнялся каждую ночь;

3. Убедитесь, что компоновка и тестирование прошли успешно, изучив журналы, генери рованные соответствующими командами.

Более подробно эта процедура описана в следующих разделах.

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

• установку переменных окружения, таких, как PATH и В, которые служат для поиска компонентов, необходимых для сборки;

• запуск среды разработки Visual Studio для компоновки решения;

• запуск инструментальных программ, используемых для тестирования сборки.

Переменные окружения, требуемые Visual Studio находятся в командном файле который устанавливается в каталог Command\Tools, расположенный в ката логе Visual Studio При помощи операций копирования-вставки удается перенести строки для установки нужных переменных окружения из VsVars32.bat в свой командный файл.

Для запуска Visual Studio из командной строки используется команда DevEnv.exe с файлом решения (их расширение — в качестве параметра. Так, команда выполняет компоновку приложения в режиме отладки, записывая при этом любые сообщения об ошибках в каталог Logs:

DevEnv /build Debug > Все необходимые команды можно собрать в одном файле. Ниже показан пример ко мандного файла, который устанавливает необходимые окружения, ет компоновку приложения и запускает сценарии для тестирования полученной сборки:

Команды из устанавливающие переменные окружения Visual Studio Visual Studio Visual Studio Ссылка на каталог с общими файлами Visual Studio.

Ссылка на каталог с файлами разработки Visual Studio.

на каталог с файлами Visual C++.

Вызов среды разработки для компоновки приложения /build debug > Команды тестирования > Конец секции Планирование заданий Для планирования запуска файла в ночное время используется Windows.

Чтобы выполните следующие действия.

1. В меню Start выберите элемент Alt Tasks.

задания) — Windows откро ет папку Scheduled Tasks (Назначенные задания).

2. Дважды щелкните значок Add Scheduled Tasks (Добавить задание), чтобы запустить мастер Scheduled Task Wizard планирования заданий). Щелкните Next (Далее), затем Browse (Обзор) и выберите командный файл для запуска. Мастер откроет ницу для выбора графика запуска (рис. 10-18).

Рис. 10-18. Выбор графика запуска задания 3. Установите в положение, нужной периодичности ка, и щелкните Next - мастер для выбора времени запуска Next. Далее для ввода пароля (рис. 10-20).

Рис. Выбор времени запуска задания Рис. 10-20. Ввод имени пользователя и пароля 5. Введите имя и пароль пользовательской учетной записи, под которой будет ся задание, и кнопку Next, затем Finish Просмотр файлов журнала При Планировщика для компоновки и тестирования в необслуживаемом режиме важно изучать файлы журнала, генерируемые в процессе компоновки и тестиро вания. Показанные ранее команды для компоновки и тестирования используют оператор перенаправления вывода (>) для записи выходной в файлы журнала, распо ложенные в каталоге Log.

Файлы журнала легко просматривать в Блокноте (рис. 10-21).

ion!

В Рис. Просмотр журнала Занятие 3. Отладка приложения Тестирование — это одно из немногих дел, в которых даже неудача считается положи тельным результатом. Из этого занятия вы узнаете, как использовать такие результаты для устранения ошибок в коде (вам понадобятся знания, полученные при изучении отладоч ных средств Visual Studio в 1 главе). Вы научитесь исправлять некоторые выявленные во время тестирования, писать код для диагностики и отлаживать Web-при ложения, работающие на удаленном сервере.

Изучив материал этого вы сможете:

применять результаты блочного тестирования для исправления общих ошибок;

использовать в разработке диагностические средства, такие, как классы Debug и Trace, для вывода сообщений и генерации журналов;

конфигурировать так, чтобы он разрешал отладку с удаленных рабочих отлаживать на удаленном сервере.

Продолжительность занятия — около 30 минут.

Применение результатов тестирования Возможно, запустив блочного тестирования приложения FlashCard (см. главу вы заметили, что оно не проходит некоторые тесты. Дело в том, что FlashCard — это упро щенная демонстрационная программа, не предназначенная для коммерческого примене ния и, следовательно, не столь надежная. Это хорошее оправдание, время от времени им можно пользоваться и на работе!

А если серьезно, результаты тестирования представляют собой не что иное, как руко водство к действию. тестирование FlashCard позволяет выявить ряд ошибок. Во первых, переполнение, возникающее из-за инициализации генератора случайных чисел целочисленными аргументами MaxValue. Результат сложения чисел, близ ких к верхнему пределу значений типа integer, окажется больше допустимого для integer.

Вот соответствующий код:

Basic ' Тестирующий код Function As Boolean объект Dim FlashCard As New существует ли объект.

If Then Вернуть false и закончить на этом.

Return False End If метод shuffle с использованием максимального и значений.

свойства, If о + Then Answers don't match") End If End Function Код FlashCardClass с ошибкой.

Вычислить ответ с помощью текущего оператора, Function As Integer Select Case Case Return mintFirstNumber + mintSecondNumber ' Case Return mintFirstNumber * Case Return mintFirstNumber - mintSecondNumber Case Else Return End Select End Function Visual C# объект.

FlashCard = new существует ли объект.

if (FlashCard == null) // false и закончить на этом.

false;

метод shuffle с использованием максимального и значений.

свойства.

int intFirst int intSecond = = intFirst + intSecond;

!= Numbers don't add // Код с ошибкой.

// Вычислить ответ с помощью текущего оператора.

public case return + case return * mintSecondNumber;

case return * mintSecondNumber;

case return mintFirstNumber - mintSecondNumber;

default :

0;

} Есть два пути решения этой проблемы: ограничить допустимые значения свойства ч Second Number либо изменить тип значения, возвращаемого методом Answer.

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

Следующий код демонстрирует один из вариантов измененного метода кото рый теперь способен пройти блочное тестирование:

Visual Basic Public Function Answer 0 As Double Select Case Case Return + Case "x", Return * Case Return Case Return / Case Else Return End Select End Function Visual public double case return mintFirstNumber + mintSecondNumber;

case return mintFirstNumber * case return * mintSecondNumber;

case return mintFirstNumber default :

return 0;

Вот еще проблема с если присвоить свойству Operation значение, отличное от +, -, /, * или x, Answer просто вернет 0, что не очень хорошо.

изменения в коде гарантируют использование только допустимых Basic Public Property As String Get Operation = End Get Value As String) If Value) Then Value Else Throw New operator") End If End Set End Property C# public string { get { return { if 1) != 0) mstrOp - value;

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

Использование классов Debug и Trace В качестве инструментов для поиска ошибок и аномального поведения приложения Framework поддерживает классы и Trace, определенные в пространстве имен Sys Diagnostics. Эти классы позволяют отображать тревожные сообщения (alerts) или запи сывать некоторые сообщения зависимости от событий, происходящих внутри приложения.

Эти классы отличаются способом их обработки в конечной сборке. При компиляции конечной версии сборки все свойства и методы Debug автоматически удаляются из кода, а методы и свойства Trace остаются. Таким образом, вы получаете два уровня диагностики:

один для отладки до выпуска, а второй — для мониторинга производительности и диагно стики на местах использования программного продукта.

Поскольку классы Debug и Trace входят в одно из пространств имен для их ис пользования необходимо добавить в модули кода следующие операторы:

Visual Basic Imports Visual C# using Отображение тревожных и информационных сообщений Классы Debug и Trace поддерживают метод который проверяет некоторое значение и отображает тревожное сообщение, если при проверке получилось значение False. Метод Assert останавливает приложение при получении неожиданного результата. Например, дующий код отображает тревожное сообщение, если при сложении чисел, на форме FlashCards, получился неожиданный результат:

Basic Sub sender As e As Handles If = Then = + _ don't add Получить другой набор чисел.

Отобразить новые числа.

Ref Очистить поле, отображающее ответ.

= Else "Oops!

End End = + values don't add набор новые числа.

// голе, В случае Web-приложения тревожные сообщения отображаются на сервере. Если сер вер работает на локальном компьютере, тревожное при ис полнении этого кода появится на локальном как и ожидалось (рис.

Если работает на удаленном сервере, то тревожное сообщение можно увидеть, лишь подключившись к процессу приложения для удаленной отлад ки, но об этом чуть дальше.

i I Рис. 10-22. Вид тревожного (на локальном сервере) Методы Write и записывать сообщения без остановки приложения. По умолчанию эти сообщения отображаются во время отладки в окне Output Visual Studio Ведение журнала сообщений Debug и Trace Для регистрации сообщений, генерируемых классами отладки и трассировки после раз приложения, класс и добавьте его к набору Listeners класса Debug или Trace. Следующий код направляет отладочные на консоль сервера:

Visual Basic Add (New it г Visual Вместо этого можно записывать сообщения в файл. Для этого необходимо указать имя файла и вызвать метод Flush. Следующий код записывает в файл Results.log;

Visual Basic Visual C# Удаленная отладка Обычно отлаживают на том же компьютере, где велась его разработка, однако локальный компьютер не воспроизводит окружение, в котором приложению при дется работать. Для устранения возникающих во время работы приложений в реальных условиях, необходима возможность отладки работающего на удаленном сервере.

Для отладки приложения на удаленном сервере выполните следующие действия.

1. Установите на сервере, Web-приложение, серверные компоненты Studio для удаленной отладки.

2. Определите на сервере права доступа, необходимые для удаленной отладки приложений.

3. Подключитесь к с удаленного компьютера, на котором со бираетесь выполнять отладку, Эти действия более подробно описаны в разделах.

Установка компонентов для удаленной отладки Мастер установки Visual Studio позволяет установить компоненты для удаленной отладки, Для этого запустите на сервере программу Visual Studio Setup и выберите Full Remote Debugging (рис. 10-23).

Программа Setup установит необходимые компоненты и настроит сервер для удален ной отладки.

Определение прав доступа Для отладки серверного необходимо иметь учетную запись на этом сервере, при чем она должна быть членом группы Debugger Users, которая создается программой Visual Studio Setup во время установки компонентов для удаленной отладки. Следует удо стовериться, что в эту группу включены все пользователи, которых следует наделить пра вами на отладку приложений на этом сервере.

Чтобы добавить пользователей к группе Debugger Users, воспользуйтесь ММС (рис. 10-24).

To Remote Debugging support Managed, Script, and TSQL Caution: Windows Me on a If you to debug TSQL you can the below and skip to full debugging on all Otherwise must install runtime to ensure of all languages The Common Runtime !CLR).

Before Installing remote debugging on 98 and 1 greater.

2. NET CD click OK to ignore " (he that with to insert the Studio and open the folder.

3. Open the and 4. and install ton ana full NT 4.0, and Рис. 10-23. Установка компонентов для удаленной отладки Рис. 10-24. Добавление пользователей, уполномоченных на удаленную отладку Подключение к удаленному процессу Подключившись к работающему на удаленном сервере, Visual Studio мо жет получать сообщения, направляемые в окно Output, отображать тревожные сообще ния, генерируемые методом Assert, устанавливать точки прерывания и просматривать зна чения переменных;

кроме того, в этом случае доступно пошаговое исполнение кода на удаленном сервере.

Чтобы подключиться к удаленному процессу, выполните действия.

1. Выберите из меню Tools элемент Debug Process — Visual Studio диалого вое окно Process, показанное на рис. 10-25.

Рис. 10-25. Подключение к процессу 2. По умолчанию работают в Выберите удален ный для щелкните Attach, затем Close.

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

Чтобы установить точку прерывания удаленном процессе, выполните действия.

1. В Visual Studio ярлычок Breakpoints (рис. 10-26).

Рис. 10-26. Окно Breakpoints 2. Щелкните на панели инструментов в окне Breakpoints кнопку New — Visual Studio откроет диалоговое окно New Breakpoint (рис. 10-27).

3. В текстовом поле Function введите имя процедуры и щелкните ОК. В случае ложения проще всего остановить исполнение перед процедурой а затем расставить остальные точки прерывания, где необходимо.

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

Рис. 10-27. Установка точки прерывания Резюме • позволяет определить степень соответствия программного продукта к нему требованиям.

• Блочное тестирование проверяет работу отдельных фрагментов кода.

• Комплексное проверяет совместную работу всех компонентов.

• Регрессивные тесты позволяют убедиться, что добавленный новый код не нарушил работы кода.

• Нагрузочное тестирование проверяет работу программного продукта в условиях экстре мальных нагрузок.

• Тесты на платформе позволяют убедиться, что Web-приложение корректно отобража ется в браузерах и обладает достаточной производительностью при вании различных видов сетевых подключений.

• ACT позволяет записать действия пользователя при работе с с по мощью VBScript и воспроизвести полученный сценарий, чтобы смоделировать работу нескольких пользователей, регистрируя в приложении ошибки и пара метры производительности сервера.

• Чтобы получить возможность тестирования.NET-сборок с помощью Scripting Host, необходимо зарегистрировать сборку для использования с СОМ и скопировать сервер сценариев (CScript.exe) в каталог сборки.

• Для проведения компоновки и тестирования в необслуживаемом режиме следует со командный файл с командами для компоновки и запуска тестов и раз работать график запуска этого командного файла с Планировщика.

• Диагностические классы Debug и Trace служат для отображения тревожных сообщений и ошибочных ситуаций в процессе разработки.

• По умолчанию при компиляции окончательной версии сборки код, использующий класс а использующий класс Trace, остается.

• Visual Studio может подключиться к процессу Web-приложения, работающего на удаленном сервере, чтобы выполнить его отладку в реальных условиях.

Практикум 10. Тестирование и отладка Цель этого практикума — выполнить анализ реального плана тестирования, блочное тестирование мера и нагрузочное тестирование приложения. Вы также попрактикуетесь в пошаговом исполнении Web-приложения, ра на удаленном сервере, при помощи отладочных инструментов Studio Это позволит вам закрепить навыки, при изучении этой главы.

Продолжительность — около 30 минут.

Упражнение Анализ плана тестирования В различных компаниях применяются разные стратегии тестирования, ся и используемая терминология. В этом упражнении вы должны найти понятия, обсуждаемые в занятии в реальном плане тестирования. Для этого можно взять план тестирования компании, в которой вы работаете. Если начальство вится, попробуйте найти документацию по планированию тестирования в Интер нете, строку test как критерий поиска.

Возьмите распечатку плана тестирования и выделите все предложения, где упомина ются следующие понятия:

• блочное тестирование;

• комплексное • ручное тестирование.

Попробуйте найти в плане ответы на поставленные в занятии 1.

• Как написаны тестовые занятия?

• Кто отвечает за тестирование?

• Когда проводится тестирование?

• Где хранятся тесты и их результаты?

• Что подвергается тестированию?

Можно ли на основе собранной вами утверждать, что ный план является четким руководством по тестированию программного продукта на со ответствие предъявленным требованиям?

2. Блочное тестирование Сейчас вы на VBScript или JScript напишете для блочного тестирования классов Circle и Sphere, на базе абстрактного класса Shapes (см. главу 3).

Сценарий должен 1. можно ли создать экземпляры классов Circle и Sphere;

2. можно ли эти передавать процедурам, принимающим аргументы, объявлен ные с типом интерфейса 3. все ли свойства работают в полном диапазоне их допустимых значений;

4. все ли методы возвращают ожидаемые значения при тестировании с двумя или более наборами значений.

Как написать блочного тестирования на VBScript или JScript 1. Зарегистрируйте тестируемую сборку для использования с СОМ, запустив утилиту RegAsm.exe из командной строки Visual Studio 2. Скопируйте сервер сценариев Windows в каталог тестируемой сборки.

3. Напишите тексты сценариев на VBScript или Jscript при помощи Visual Studio Блокнота или другого текстового редактора.

4. Исполните тесты в командной строке Visual Studio используя копию из каталога сборки.

Закончив, сравните свои результаты с образцами, которые находятся на прилагае мом компакт-диске.

Упражнение 3. Нагрузочное тестирование Если на вашем компьютере установлена Visual Studio Enterprise попробуйте применить ACT для нагрузочного тестирования раз вернутого на тестовом сервере. Выберите любое из разверну тых на сервере, и выполните действия.

1. Запишите по крайней мере пять разных запросов к серверу.

2. Добавьте счетчики измеряющие доли времени, того сервером, число страниц памяти в секунду и среднюю длину очереди чтения 3. Используйте для записи результатов тестирования каталог Log, расположенный в ка талоге Web-приложения.

4. Установите свойства теста так. чтобы он исполнялся в течение 30 секунд, имитируя одновременную работу 4 пользователей.

5. Исполните тест.

6. Изучите данные счетчиков производительности сервера, отображаемые на диаграмме в окне ACT.

сравните свои результаты с примерными результатами FlashCards с использованием ACT (их можно найти на прилагаемом к книге CD).

Упражнение 4. Пошаговое исполнение Web-приложения на удаленном сервере Сейчас вы Visual Studio чтобы приостановить Web-приложе ние, на удаленном сервере, и попробуете выполнить его Для этого необходимо быть членом группы Debugger Users на сервере, кроме на сервере следует установить компоненты Visual Studio для удаленной отладки.

Пошаговое исполнение на удаленном сервере На рабочей станции откройте Web-приложение в Internet Explorer: это гарантирует, что Web-приложение будет работать на сервере тот момент, когда вы попытаетесь под ключиться к его 2. В Studio выберите из меню Tools элемент Debug Processes. Укажите сервер, на котором выполняется приложение, затем выберите процесс (его имя — и 3. Установите точку прерывания на функции 4. Переключитесь в Internet и щелкните Refresh.

5. Вернитесь в Visual Studio Обратите внимание, что исполнение удаленного при ложения остановилось на 6. Установите дополнительные точки прерывания.

7. В Visual Studio щелкните Continue, чтобы продолжить исполнение Web-прило жение до следующей точки прерывания.

Закрепление материала Приведенные ниже вопросы помогут вам лучше усвоить основные темы данной главы.

Если вы не сумеете ответить на вопрос, повторите материал занятия.

Ответы для самопроверки — в приложении «Вопросы и в конце книги.

1. Опишите связи между блочным, комплексным и регрессивным тестированием?

2. Почему нагрузочное тестирование, как правило, более важно для Web-приложения, чем для автономного 3. Чем отличаются классы Debug и 4. Какие два действия нужно выполнить, чтобы сделать компонент, расположенный в.NET-сборке, доступным компоненту СОМ?

Создание нестандартных Web-элементов управления Занятие Создание пользовательских элементов управления Занятие 2. Создание составных элементов управления Занятие 3. Создание генерируемых элементов управления 464 Создание ЭДэЬ-злеэшнюз В этой главе Нестандартные элементы управления расширяют инструментарий Web-разработчика. Они инкапсулируют ключевые элементы интерфейса и программной логики, чему их можно многократно использовать не только в одном приложении, но и в других проек тах компании. В этой главе рассказано, как создавать и применять с Web-формами не стандартные элементы управления трех типов, поддерживаемых Microsoft Visual Studio • элементы (user controls) — создаются с графи ческого интерфейса дизайнера Visual Studio путем комбинирования серверных и HTML-элементов управления;

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

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

• элементы управления (composite controls) — создаются из существующих сер верных и управления. Похожи на пользовательские, но в отличие от них создаются программно, поэтому могут быть скомпилированы в сборки лы). Последние допустимо применять в нескольких приложениях и до бавлять на панель Toolbox в Visual Studio • элементы управления (rendered controls) — генерируются кодом виде HTML-тэгов «с нуля», а не компонуются из элементов управления. По добно составным элементам управления, генерируемые элементы компи лируются и их можно добавлять на панель Toolbox. Однако, создавая генерируемые элементы управления, приходится самостоятельно писать код для решения ко торые в составных элементах автоматизированы.

Прежде всего Для изучения материалов этой главы необходимо:

• знать жизненный Web-приложений;

• владеть приемами объектно-ориентированного программирования (ООП), в чис ле методами работы с пространствами имен и сведениями о состоянии, обсуждаемыми в главе 3;

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

Однажды созданный пользовательский элемент управления можно применять на всех Web-формах проекта. Но, поскольку такие элементы управления не компилируются в сборки, им присущ ряд ограничений, не характерных для других типов элементов управ ления:

• в каждом проекте Web-приложения, где применяется некоторый элемент должна быть отдельная копия этого элемента;

• пользовательские элементы управления нельзя добавлять на панель Toolbox в Studio а только перетаскивать на поверхность Web-форму из окна Solution Explorer;

• код пользовательского элемента управления только после загрузки следовательно, значения его свойств не обновляются до срабатывания страничного события На этом занятии вы научитесь создавать пользовательские элементы и применять их с Web-формами.

Изучив материал этого вы сможете:

применять пользовательские элементы управления при создании Web-приложений;

добавлять свойства, методы и события к пользовательскому элементу управления;

интегрировать пользовательские элементы управления в Web-форму путем модификации ее HTML-кода;

активировать параметры времени разработки использование сеточной разметки) для пользовательского элемента управления.

Продолжительность занятия — около 30 минут.

Создание и применение пользовательских элементов управления Чтобы создать пользовательский элемент управления и задействовать его в Web-приложе нии, следует выполнить пять действий.

Добавьте к проекту страницу пользовательского элемента управления ниже).

2. Определите внешний вид пользовательского элемента управления при помощи ди зайнера.

3. Напишите код свойств, методов и событий элемента управления.

4. элемент управления из окна Explorer на поверх ность Web-формы, 5. Задействуйте пользовательский элемент управления в коде Web-формы. Для этого объявите его на уровне модуля, а затем вызывайте методы, свойства и события эле мента управления, где это необходимо.

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

Создание интерфейса и кода пользовательского элемента управления Пользовательские элементы управления компонуют из ютовых серверных и ментов управления, перетаскивая их с Toolbox на эле мента (Web User page). элементы хра нятся в файлах с расширением которые представляют собой файлы проекта Web приложения, подобно Web-формам или Чтобы создать пользовательский элемент управления и добавить его к нию, выполните следующие действия.

1. В меню Project выберите команду Add Web Control — Visual Studio откроет диалоговое окно Add New Item.

2. Введите в текстовом поле Name имя пользовательского элемента управления и шелк ните ОК. Visual Studio создаст пустую страницу пользовательского элемента уп равления и добавит ее к проекту, как показано на рис.

Рис. 11-1. Новая пользовательского элемента Добавив к проекту страницу пользовательского элемента определите его вид, поместив на страницу нужные серверные и HTML-элементы управления. Пользова тельские элементы управления поддерживают только потоковую разметку (flow layout).

Чтобы применить сеточную разметку (grid следует добавить HTML-элемент уп равления Grid Layout Panel — он выполняет роль контейнера управления, для которых требуется фиксированное положение на Web-форме. На рис. 11-2 показан про стой пользовательский элемент управления, созданный из двух серверных элементов уп равления Button, размешенных на поверхности Grid Layout Panel.

Элемент управления, показанный на рис. — элемента управле ния Spin: щелкая его стрелки, можно или уменьшать некоторое значение.

Ниже показан HTML-код этого примера, он пригодится нам в разделах:

POSITION: relative;

HEIGHT:

/> />.•.. -::

3s. I Рис. 11-2. Пример простого пользовательского элемента управления Свойства, методы и события пользовательского элемента управления Пользовательским элементом управления управляют из его модуля кода. Это позволяет скрыть внутреннее устройство пользовательского элемента управления, оставив лишь свойства, методы и события, необходимые для выполнения этим элементом управления своих Дважды щелкните пользовательский элемент управления, чтобы его модуль кода. Во время создания нового пользовательского элемента управления Visual Studio автоматически генерирует для него шаблон кода (рис. 11-3).

Хотя код, показанный на рис. 11-3, похож на обычный код Web-формы, у него есть существенные отличия:

• классы пользовательских элементов с ключевым словом Must (в Visual Basic или abstract (в С#), поэтому они годятся только для объяв ления других классов. В данном случае его потомки это классы элементов управления, на Web-форме;

• все классы пользовательских элементов управления являются потомками класса наследуя от него базовый набор и методов, которые необходимы для создания этого элемента управления и получения значений парамет ров времени разработки из его • событие пользовательского элемента управления срабатывает, когда он загру жается содержащей его Web-формой, то есть только после страничного события Load — помните об этом, применяя пользовательские элементы управления с Web-фор мами.

.,'•:

Рис. 11-3. Шаблон кода пользовательского элемента управления (Visual Basic Чтобы создать свойства и методы пользовательского элемента управления, которые можно вызывать из кода Web-формы, выполните действия.

Объявите открытое свойство или метод, который хотите сделать доступным в коде этот элемент управления.

2. Напишите код обработчиков событий для элементов составляющих поль зовательский элемент — эти обработчики выполняют львиную долю ра боты пользовательского элемента управления.

3. Если свойство или метод требует сохранения некоторых параметров от одного отобра жения страницы до другого, добавьте к нему код для записи и восстановления нужных значений из состояния отображения (поля элемента управления.

код демонстрирует свойство которое значение элемента управления Spin, созданного в предыдущем разделе:

Visual Basic Public Property As Integer Get Вернуть значение свойства.

Return End Get Value As Integer) Установить значение свойства.

- Value End Set End Property public int Value { { // Вернуть значение return } set { // Установить значение свойства.

= value;

} ;

Пользователь изменяет значение элемента управления Spin, щелкая его кнопки. Сле дующий код щелчки, увеличивая или уменьшая значение свойства Value в зависимости от того, какую кнопку щелкнул пользователь:

Private Sub sender As e As Handles Click -= End Sub Private Sub sender As ByVal e As Handles Увеличить значение.

Sub Visual private void sender, e) { // Уменьшить значение, 1;

\ private void e) { // Увеличить += 1;

Добавление элемента управления к Web-форме Пользовательские элементы управления можно перетащить на поверхность Web-формы прямо из окна Explorer. При этом Visual Studio генерирует Register и HTML-теги, необходимые для создания этого элемента управления на Web-форме.

Вот пример HTML-кода, сгенерированного при на Web-форме пользова тельского элемента управления Spin:

Page Register Пользовательские управления способны не только соседствовать с другими элементами управления на Web-форме, но и взаимодействовать с ними. Следующий HTML-код получился при добавлении Spin сразу после элемента управления TextBox:

Page %> Заметьте, что у пользовательского элемента управления имеется атрибут для хранения свойства Value. Во время загрузки элемента управления Spin ASP.NET устанавливает его свойства согласно значениям HTML-атрибутов.

В режиме Design этот HTML выглядит, как на рис Как из рис. в дизайнере Web-формы пользовательский элемент управле ния выглядит совсем не так, как во время выполнения: вместо кнопок со стрелками ди зайнер отображает какой-нибудь универсальный элемент управления. Увы. таково огра ничение Visual Studio здесь в режиме Design пользовательские элементы управле ния не отображаются.

Возможно, вы также заметили, что элемент управления Spin поддерживает только по токовую разметку, но это уже ограничение, присущее самому элементу управления. Что бы организовать поддержку сеточной позволяющей задавать абсолютное поло жение элемента управления на Web-форме, придется добавить код для поддержки атрибу тов стиля — этот прием мы продемонстрируем далее.

Рис. 11-4. Вид управления Spin на Web-форме Использование элементов управления в коде Создав пользовательский элемент управления и добавив его к Web-форме, можно задей ствовать его в коде. Для этого выполните следующие действия.

1. Объявите пользовательский элемент управления на уровне модуля. Следующая строка кода объявляет пользовательский элемент управления Spin, добавленный к Web-фор ме в предшествующем разделе:

Visual Protected As Spin Visual Spin 2. Теперь можно вызывать свойства, методы и события этого элемента, как у обычных элементов управления. Вот пример обработчика события, отображающего значение элемента управления Spin в текстовом поле:

Visual Basic Private Sub sender As e Handles Отобразить значение End Sub Visual void sender, e) { // Отобразить значение Spin, = } Здесь нужно отметить одну очень важную в коде вместо странич ного события используется событие Web-формы. Иначе значе ние текстового поля пользовательского элемента управления Spin не обновится значени ем HTML-атрибута пока вы не щелкнете одну из его кнопок Дело в том, что код элемента управления исполняется после обработки стра ничного события Никакие изменения, сохраненные в состоянии пользовательского элемента управления, не загружаются, пока не сработает его событие Объявление событий пользовательского элемента управления Помимо свойств и методов, пользовательские элементы управления поддерживают собы тия, ему реагировать на пользователя, работающего с Web-формой.

Чтобы добавить к пользовательскому элементу управления событие, выполните следу действия.

Объявите событие в модуле кода пользовательского элемента управления. Вот пример кода, объявляющего событие пользовательского элемента управления Spin:

Visual Basic Объявить событие элемента управления Public Event As e As Visual C# // Объявить событие.

public event Click;

2. Напишите метод, генерирующий событие. В дальнейшем это облегчит создание производных классов, поскольку те смогут переопределять этот метод Visual Basic Метод, событие.

Protected Overridable Sub e As RaiseEvent Click(Me.

End Sub Visual C# if (Click != null) { Click(this, e);

3. Поместите вызовы этого метода в код пользовательского элемента управления. Ниже показан пример кода, событие Click в ответ на щелчок любой из кно пок пользовательского элемента управления Spin:

Visual Private Sub sender As e As Handles Уменьшить Value.

-= Вызвать метод OnClick, End Sub Private Sub sender As ByVal e As Handles Увеличить значение Value.

+= ' Вызвать метод OnClick.

End Sub private void sender, e) { // Уменьшить значение Value.

1;

// Вызвать метод OnClick.

private sender, e) // значение Value.

1;

// Вызвать метод OnClick.

Чтобы задействовать событие пользовательского элемента управления в Web-форме, добавьте этот элемент управления к Web-форме, как показано ранее, и обра ботчик для его события. Вот пример обработчика, обновляющего текстовое поле it ответ на щелчок элемента управления Spin:

Visual Basic Private Sub sender As e As Handles ' Обновить при помощи обработчика ' пользовательского элемента управления.

End C# private void sender, { // Отобразить значение элемента управления Spin.

= Включение сеточной разметки Как вы знаете, у элементов управления нет встроенной поддержки солютного позиционирования на Web-форме, использующей сеточную разметку. В ASP.NET элементы поддерживают абсолютное при атрибу та style. Чтобы включить поддержку абсолютного позиционирования во время разработки, достаточно добавить атрибут style к HTML-коду, пользовательский эле мент управления в К примеру, следующий HTML определяет ский элемент управления Spin, который можно перетаскивать по поверхности Web-фор мы в режиме Design:

101;

LEFT: 248px. POSITION: TOP:

Однако, запустив Web-приложение, вы тут же столкнетесь с проблемой: во время вы полнения ASP.NET игнорирует атрибут style и отображает пользовательский элемент уп равления Spin с потоковой разметкой.

Чтобы заставить атрибут style работать, потребуется к пользовательскому эле менту управления свойство положение и размер элемента управления через атрибутов. Если элемент управления применяет контейнер (такой, как Grid Layout Panel в случае Spin), можно просто передать значение атрибута style контейнеру, как показано ниже:

Visual Basic Public Property Style() As String Get Вернуть значение атрибута style <онтейнера, End Get Set(ByVal Value As String) значение атрибута style контейнера.

= Value End Set Property Visual C# public string Style get // Вернуть значение атрибута style контейнера se // Установить значение атрибута style контейнера.

- value:

Эта методика программирования, которую иногда называют (delega tion), годится и для реализации других стандартных атрибутов элементов та ких, как Visible, или Для этого достаточно добавить к пользовательско му элементу управления свойство, которое передает контейнеру значение атрибута через свойство как показано ранее.

2. Создание составных элементов управления Составные элементы управления создаются путем объединения нескольких серверных или HTML-элементов управления в одном классе, который вместе с другими классами эле ментов управления компилируется в сборку библиотеки нестандартных эле ментов управления. Однажды созданную библиотеку нестандартных элементов управле ния можно загрузить в Studio и задействовать, подобно стандартным ным и управления.

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

Изучив материал этого занятия, вы сможете:

создавать решение, из проектов, для разработки и отладки составных элементов вручную добавлять составные элементы управления к Web-форме тестового проекта при помощи директивы Register и HTML-тегов;

формировать вид составного элемента управления, добавляя к нему элементы управления посредством метода создавать свойства, методы и события составного элемента управления;

обрабатывать изменения элемента управления, вносимые во время разработки, например изменение размеров и положения на Web-форме с сеточной разметкой;

создавать новые элементы управления, объявляя их на основе серверных элементов управления.

занятия — около 35 минут.

Создание и применение составных элементов управления создания составного управления и его применения в Web-приложе нии состоит из шести этапов.

1. Создайте решение с проектом нестандартного элемента управления.

2. Добавьте к созданному проект Web-приложения и сделайте его стартовым проектом. Проект нужен для тестирования нестандартного элемента управления во время разработки.

3. Добавьте к проекту Web-приложения ссылку на проект нестандартного элемента уп равления, а к Web-форме — HTML-элемент и директиву Register, необходимые для работы этого элемента управления.

4. Определите интерфейс составного элемента, добавляя к нему имеющие ся элементы управления с помощью его метода 5. Создайте свойства, методы и события, которые будет поддерживать составной элемент управления.

6. Скомпилируйте составной элемент управления и протестируйте его. Хотя этот этап указан последним в списке, следует выполнять его в конце из предшествую этапов.

В разделах эти действия описаны более подробно.

Создание проекта нестандартного элемента управления Составные и генерируемые элементы управления — это типы нестандартных элементов управления, представляющие собой классы, при которых получаются сбор ки. Большинство поведенческой логики эти классы наследуют от класса В за висимости от типа создаваемых элементов управления, в них также реализуются различ ные интерфейсы. В этом и следующем занятии при обсуждении нестандартных управления имеются в виду именно составные и генерируемые элементы всего начать разработку такого элемента управления с помощью про екта Web Control Library из Visual Studio Чтобы создать элемент управления на основе шаблона, выполните следующие дей ствия.

1. Выберите из меню File элемент — Visual Studio откроет диалоговое окно New Project, показанное на рис.

Install Button Window Forms Web Array El Calendar Web Forms System. Windows. Forms Version:

Рис. Создание проекта нестандартного элемента 2. На панели Templates щелкните значок Web Control Library, введите в текстовое поле Name имя проекта и щелкните ОК. В результате Visual Studio создаст проект, содержащий код для единственного нестандартного элемента управления с именем (рис.

Кол. показанный на рис. представляет собой заготовку нестандартного управления. В нем объявлен класс с единственным свойством Text:

Visual Basic Imports Imports _ Public Class Inherits Dim _text As String _ Property As String Get Return _text End Get Set(ByVal Value As String) _text - Value End Set End Property Protected Overrides Sub output As Sub End Class Рис. 11-6. Шаблон кода нестандартного элемента управления (на Visual Basic Visual C# System;

using using /// description class :

set { = value;

/// this control to the output parameter /// The HTML writer to write out to override void output) { } Возможно, в этом коде вы встретите ряд незнакомых элементов, некоторые из них описаны таблице 11-1. Структура шаблона нестандартного Название Описание Фрагмент шаблона Определяют параметры времени разработки Атрибуты для элемента управления, то есть содержимое окна свойств этого нестандар тного элемента управления, отображаемое Visual Studio Любой нестандартный элемент управления Inherits Базовый класс является потомком одного из базовых : классов элементов управления Атрибуты Подобно атрибутам класса, определяют свойства параметры времени разработки для свойства Property As Определение Устанавливает поведение свойства во время public string Text свойства выполнения. Квадратные скобки о том, что в качестве имени свойств разрешается применять ключевые слова (хотя в данном примере это не так) Protected Overrides Sub Метод Render Выполняет рендеринг нестандартного output As элемента управления. Это переопределенный метод Render базового класса protected override void output) В следующих разделах разъясняется, как добавлять и изменять эти части шаблона при создании составного элемента управления. Подробно об атрибутах рассказано в разделе «Design-Time Attributes справочной системы Visual Studio Создание тестового проекта Поскольку для проекта нестандартного элемента управления, созданного в предыдущем разделе, задан выходной тип «Class его можно только вызывать из другого при ложения и нельзя исполнять как самостоятельное приложение. Для исполнения и отлад ки нестандартного элемента управления в Visual Studio необходимо добавить к теку щему решению еще один проект.

Чтобы создать и добавить к решению проект для тестирования нестандартного эле мента управления, выполните следующие действия.

1. Откройте проект нестандартного элемента управления и выберите из меню File эле мент Add Project — Visual Studio откроет диалоговое окно New Project.

2. На панели Templates выберите шаблон ASP.NET Web Application, введите в текстовом поле Location имя проекта и шелкните ОК. В результате Visual Studio создаст новый проект Web-приложения и добавит его к решению.

3. В окне Solution Explorer шелкните правой кнопкой проект Web-приложения и те из контекстного меню элемент Set As Startup Project. Visual сделает проект стартовым и выделит его имя в окне Solution Explorer полу жирным шрифтом.

4. В окне Solution Explorer шелкните правой кнопкой элемент References проекта Web приложения и выберите из контекстного меню элемент Add Reference — Visual Studio откроет диалоговое окно Add Reference Рис. 11-7. Добавление ссылки на проект 5. Перейдите на вкладку Projects и шелкните кнопку Select, чтобы к проекту Web-приложения ссылку на проект нестандартного элемента управления, и шелкните ОК. Visual Studio добавит ссылку в окно Solution Explorer (рис.

Рис. 11-8. Решение в окне Solution Explorer В результате в проект указанной ссылки сборка с нестандарт ным элементом управления копируется в каталог /bin и этот элемент управления становится доступным При внесении любых изменений в сборку нестандартного элемента управления ее копия в каталоге Web-приложения обнов ляется автоматически.

Разрабатывая нестандартный элемент управления, помните: тестовое Web-приложе ние не «увидит» никаких изменений, пока вы не перекомпилируете сборку с элементом управления. автоматически выполняется при запуске Web-приложения, но не при переключении между окнами элемента и тестирующего Web-при ложения в режиме Design. Чтобы увидеть изменения, внесенные в элемент управления в режиме Design, сначала его следует перекомпилировать и только потом переключаться на тестирующее приложение.

Добавление нестандартного элемента управления к тестовому проекту Для тестирования и отладки нестандартного элемента управления необходимо добавить его экземпляр к Web-форме тестового созданного в предыдущем разде ле. Это делается следующим образом.

1. Откройте Web-форму тестового Web-приложения и переключитесь в режим HTML, щелкнув ярлычок HTML в левом нижнем углу окна Design.

2. Поместите в начало Web-формы директиву Register. Вот пример директивы, рующей сборку нестандартного элемента управления с именем Register 3. Создайте экземпляр нестандартного элемента управления на с помощью HTML-тегов. Ниже показан пример HTML-тега, который создает экземпляр элемента управления написанного в предыдущем разделе:

/> В случае нестандартных элементов у директивы Register возможны три ат рибута (таблица 11-2).

Таблица 11-2. Атрибуты директивы Имя Группа пользовательского элемента управления. Например, префикс определяет принадлежность к серверным элементам управления ASP.NET.

Служит для создания именования, элементы управления Namespace Имя проекта и пространство имен сборки нестандартного элемента управления, в котором находится регистрируемый элемент управления. Visual Basic неявно использует имя проекта в качестве пространства имен, поэтому для эле ментов управления, написанных на Visual Basic в качестве значения этого атрибута следует указывать имя проекта Assembly Имя сборки содержащей нестандартный элемент управления.

В должна быть ссылка на сборку элемента управления.

Как говорилось ранее, добавление ссылки на сборку означает ее копирование в каталог Префикс, заданный атрибутом директивы составляет первую часть HTML-элемента, нестандартный элемент управления. Вторую его часть составляют имена проекта и класса элемента управления в сборке. Таким образом, если и имя класса — то для создания элемента ления потребуется HTML-элемент.../>.

Нестандартные элементы управления способны не только сосуществовать на Web-фор мах с другими элементами управления, но и взаимодействовать с ними. Например, следу ющий HTML-код определяет нестандартный элемент управления ный сразу после элемента управления Button:

Page Register /> is a control" /> что у нестандартных элементов управления имеется атрибут Text для хране ния одноименного свойства. HTML-атрибутам, значения свойств нестандарт ных элементов управления можно хранить в HTML-коле. В отличие от пользовательских элементов управления, нестандартные элементы управления корректно отображаются дизайнером Visual Studio (рис.

Рис. 11-9. Нестандартный элемент управления WebControll на поверхности Web-формы (во время разработки) Создание Следует отметить еще один момент: если выбрать нестандартный элемент управления в окне дизайнера, Visual Studio покажет его свойства в окне Properties. В этом смыс ле нестандартные элементы также полностью поддерживаются Visual Studio — в от личие от пользовательских элементов управления, Чтобы применить нестандартный элемент управления в коде, достаточно ссылаться на него, как на обычный элемент обработчик события Click кнопки увеличивает нестандартного элемента управления Visual Basic Private Sub sender As e As Handles Увеличить значение свойства Text нестандартного элемента управления.

= + Sub Visual C# private void sender, e) { // Преобразовать строку в число.

int intText = 0;

{ intText = } catch { intText = 0;

} // Увеличить полученное число, intText ++;

// Отобразить результат в элементе управления.

custTest.Text } При исполнении этого кода (в составе тестового Web-приложения) отобра зит на нестандартный элемент управления и серверный элемент управления Button 11-10).

Даже если несколько раз щелкнуть кнопку, созданную предыдущим кодом, отобража емое формой значение никогда не превысит 1. В чем же дело? А в том, что в шаблоне нестандартного генерированном Visual Studio отсутствует код для сохранения значений свойств между отображениями Такой код придется до бавлять самостоятельно, но об этом — в следующих разделах.

Определение вида составного элемента управления Графический интерфейс составного элемента управления создается путем добавления име ющихся серверных или управления к его набору Controls при метода который является переопределенным методом базового класса.

Рис. 11-10. Нестандартный элемент управления на поверхности Web-формы (во время выполнения) Определение облика составного элемента управления показано на примере го кода. Этот код создает составной элемент управления MathBox. Он состоит из элемен тов управления TextBox, Button и Label, объявленных на уровне класса и, следовательно, доступных всем процедурам класса. определяет внешний вид составного элемента управления, добавляя к его набору Controls указанные элементы уп равления, а также несколько элементов управления Literal.

Visual Basic Public Class MathBox Inherits Dim txtMath As New As New Dim As New Label() Этот код определяет вид составного элемента управления.

Protected Overrides Sub Добавить дочерние элементы Задать свойство для элемента TextBox и добавить его в набор.

= Начать новую строку.

Задать свойство Text для элемента управления Button и добавить его в набор.

= "Sum" 17- Добавить элементы управления Label и Literal для ' отображения результата.

End Sub Class Visual C# public class MathBox :

{ TextBox txtMath = new Button = new Label = new Label();

private string text;

protected override void < // Добавить дочерние элементы управления.

// Задать свойство для элемента управления // TextBox и добавить его в набор, = Начать новую строку // Задать свойство Text для элемента управления Button и добавить его в набор.

= "Sum";

// Добавить элементы и Literal для отображения результата.

) Далее на этом занятии мы будем работать с классом MathBox. Добавьте код MathBox к проекту составного элемента управления, созданного в разделах, чтобы за тем добавить этот элемент к тестовому Директива использо ванная ранее для добавления поможет решить эту задачу, а также создать экземпляр MathBox. Вот необходимый HTML-код:

/> Если добавить нестандартный элемент управления на Web-форму в его нынешнем со стоянии, то во время он выглядит как небольшой зеленый прямоугольник, но во время исполнения вид кардинально (рис. 11-11).

Рис. 11-11. Вид составного элемента управления во время выполнения Как видите, пока MathBox не отображается должным образом во время поскольку у него нет ни одного свойства времени разработки. Мы решим эту проблему в следующем разделе.

При составных элементов управления не нужно переопределять метод Несмотря на это, в шаблоне кода нестандартного элемента управления, генерируемом Visual Studio метод Render переопределяется. Поэтому при использовании шаблона необходимо удалить из него метод Render, сгенерированный Visual Studio либо из менить его так, чтобы он делегировал рендеринг обратно базовому классу (вызывая метод из базового класса), как показано здесь:

Visual Basic Поскольку з составном элементе метод Render не базовому классу.

Protected Overrides Sub Render(ByVal As Eno Sub Visual C# Создание свойств и методов Нестандартный элемент управления Math Box берет числа, введенные в его текстовое поле, складывает их и возвращает результат. Для решения этой задачи ему два свойства: — для хранения массива с введенными числами и Result — для хранения суммы этих чисел. Кроме того, потребуется метод Sum для выполнения вычислений.

Pages:     | 1 |   ...   | 3 | 4 || 6 | 7 |



© 2011 www.dissers.ru - «Бесплатная электронная библиотека»

Материалы этого сайта размещены для ознакомления, все права принадлежат их авторам.
Если Вы не согласны с тем, что Ваш материал размещён на этом сайте, пожалуйста, напишите нам, мы в течении 1-2 рабочих дней удалим его.