Основы тестирования и отладки Веб-приложений
19.1.8. Проверка HTML-кода
Еще одним типом тестирования является проверка верности HTML-кода страниц сайта [23]. Для такого рода тестирования написано множество утилит – от простых скриптов на Perl до мощных валидаторов, проверяющих весь сайт на соответствие стандартам (а некоторые валидаторы могут в автоматическом режиме исправлять найденные недочеты, например, пропущенные закрывающие теги и т.д.). Часто такие средства встраивают в Веб-редакторы, существуют браузеры с встроенными валидаторами.
Например, FireBug интегрируется с браузером Firefox, чтобы обогатить инструментарий разработчика [24]. Вы сможете редактировать, отлаживать и исследовать CSS, HTML и JavaScript вживую, на любой веб-странице. Firebug предоставляет возможность делать экспериментальные изменения в HTML и смотреть, как они тут же отображаются на странице, производить мониторинг сетевых запросов.
В комплекте с IE8 поставляется инструмент "средства разработчика", который, по сути, является аналогом FireBug [25].
19.1.9. Обзор автоматизации тестирования
В процессе создания информационных систем нередки ошибки и дефекты – это вполне ожидаемое и нормальное явление, а в условиях ограниченных временных ресурсов и высоких требований к качеству программных продуктов неизбежно возникает необходимость в организации эффективного контроля и управления всем процессом тестирования. Контроль качества ПО невозможен сегодня без автоматизации всех задач тестирования [20].
Ручное тестирование является затратным по времени, трудоемким и часто монотонным процессом. Оно приводит к возникновению проблем, особенно при ограниченных ресурсах и жестких сроках. Если вам нужно улучшить тестирование приложений для проверки корректности их работы, важно двигаться в сторону автоматизации всех ручных задач тестирования.
В современных условиях, когда циклы разработки сокращаются, автоматизированное тестирование позволяет как профессионалам, так и новичкам быстро достичь высококачественных результатов тестирования приложений. Инструментальные средства автоматизации записывают взаимодействие пользователей с приложением, а сформированные на этой основе сценарии используются для последующих тестов. В двух словах, автоматизация тестирования позволяет оптимизировать качество сложных приложений эффективным по стоимости способом за приемлемое время. Это помогает быстрее выпустить программное обеспечение более высокого качества.
Процесс автоматизации тестирования делится на три этапа [20]:
- Запись. Сценарий тестирования записывается "на лету" по мере работы пользователя с приложением. Можно также вставить точки верификации (verification points) для проверки ответа системы и сделать сценарии тестирования зависящими от данных, чтобы выполнять один и тот же сценарий с различными наборами входных данных.
- Улучшение. Добавление кода, выполняющего разнообразные функции. Типичные изменения сценариев тестирования – условное ветвление, рефакторинг и обработка исключительных ситуаций.
- Воспроизведение. Выполнение сценариев, эмулирующих действия, которые выполнял пользователь приложения при записи теста. Расхождения регистрируются, и тестировщик может сделать вывод о том, хорошо ли функционирует приложение или регрессионное тестирование выявило проблемы.
Для автоматизации тестирования существует большое количество приложений. Наиболее популярные из них:
- HP LoadRunner, HP QuickTest Professional, HP Quality Center;
- Segue SilkPerformer;
- IBM Rational FunctionalTester, IBM Rational PerformanceTester, IBM Rational TestStudio;
- AutomatedQA TestComplete.
HP LoadRunner – программный продукт для автоматизации нагрузочного тестирования широкого набора программных сред и протоколов [21]. Поддерживает SOA, работу с Web-сервисами, Ajax, RDP, SQL, продуктами Citrix, платформы Java, .Net, а также все основные ERP- и CRM-приложения от PeopleSoft, Oracle, SAP и Siebel. Пакет HP LoadRunner включает в себя более 60 мониторов сбора данных о тестируемой инфраструктуре и предоставляет детальную диагностику по работе приложений.
HP LoadRunner состоит из следующих приложений [22]:
- Virtual User Generator (VuGen) – служит для разработки нагрузочных скриптов;
- Load Generator – служит для генерации нагрузки (генерации виртуальных пользователей);
- Controller – служит для разработки и запуска сценариев нагрузки;
- Analysis – служит для анализа результатов нагрузочного тестирования.
Средства от IBM Rational [21]:
- IBM Rational Robot – универсальное средство автоматизации тестирования общего назначения для команд разработчиков, выполняющих функциональное тестирование клиент-серверных приложений. Дает возможность обнаруживать неполадки в ПО благодаря расширению сценариев тестирования средствами условной логики, позволяющей целиком охватить тестируемое приложение. Robot позволяет создавать сценарии тестирования с вызовом внешних библиотек DLL или исполняемых модулей.
- IBM Rational Performance Tester – инструмент нагрузочного и стрессового тестирования, с помощью которого можно выявлять проблемы системной производительности и их причины. Позволяет создавать тесты без написания кода и, не требуя навыков программирования. Обеспечивает гибкие возможности моделирования и эмуляции различных пользовательских нагрузок. Выполняет сбор и интеграцию данных о серверных ресурсах с данными о производительности приложений, получаемыми в режиме реального времени.
- IBM Rational Functional Tester – набор средств автоматизированного тестирования, позволяющих выполнять функциональное и регрессионное тестирование, тестирование пользовательского интерфейса и тестирование, управляемое данными. Инструмент применяет технологию ScriptAssure (бесшовная проверка достоверности динамических данных) и функции поиска соответствия по шаблону, позволяющие повысить устойчивость сценариев тестирования в условиях частых изменений пользовательских интерфейсов приложений. Тестировщики могут выбрать язык сценариев для разработки и настройки тестов: Java в среде Eclipse или Microsoft Visual Basic .Net в среде Visual Studio .Net.
- IBM Rational Quality Manager – решение для реализации процессов управления тестированием и качеством, поддерживает сотрудничество участников групп по разработке программных продуктов, предоставляя им возможность обмениваться информацией, применять средства автоматизации для сокращения графиков выполнения проектов, а также составлять отчеты по проектным показателям для принятия обоснованных решений. Rational Quality Manager может быть дополнен средством управления ресурсами тестирования Rational Test Lab, обеспечивающим учет ресурсов тестирования (серверов), их бронирование, автоматизацию развертывания тестовой среды на сервере и запуск скриптов тестирования, а также отчетность по использованию ресурсов тестирования.
- Rational Quality Manager и Rational Test Lab созданы на базе открытой платформы Jazz, которая предоставляет стандартные интерфейсы и удобные возможности для интеграции с решениями партнеров и других производителей.
19.1.10. Ключевые термины
Функциональное тестирование, Тестирование пользовательского интерфейса, Ручное тестирование, Сценарии, Тестирования удобства использования, Проверка ссылок, Тестирование безопасности, Нагрузочное тестирование, Тестирование производительности, Стрессовое тестирование, Объемное тестирование, Тестирование стабильности, Моделирование Транзакций, Метод "Анализ данных на стороне клиента", Метод "Анализ Сетевого Трафика", Автоматизации тестирования, Проверка HTML-кода.
19.2. Отладка Веб-приложений
19.2.1. Введение
Отладка – этап разработки компьютерной программы, на котором обнаруживают, локализуют и устраняют ошибки [26]. Чтобы понять, где возникла ошибка, приходится:
- узнавать текущие значения переменных;
- и выяснять, по какому пути выполнялась программа.
Существуют две взаимодополняющие технологии отладки.
- Использование отладчиков – программ, которые включают в себя пользовательский интерфейс для пошагового выполнения программы: оператор за оператором, функция за функцией, с остановками на некоторых строках исходного кода или при достижении определённого условия.
- Вывод текущего состояния программы с помощью расположенных в критических точках программы операторов вывода – на экран, принтер, громкоговоритель или в файл. Вывод отладочных сведений в файл называется журналированием.
Современный процесс веб-разработки включает не только работу с HTML, но и отладку сценариев, и проверку оформления страниц. По этой причине все основные браузеры, под которые производится верстка и оптимизация большинства страниц, включает в себя специальные средства для веб-мастеров.
В JavaScript доступ к отладчикам становится особенно полезным при разработке крупных нетривиальных программ из-за различий в реализациях разных браузеров (в частности, в отношении объектной модели документа) [27]. Полезно иметь доступ к отладчику для каждого из браузеров, в которых будет работать веб-приложение.
По состоянию на начало 2010 года, Internet Explorer, Firefox, Safari, Google Chrome, а также Opera имеют отладчики сценариев.
Internet Explorer имеет три отладчика: Microsoft Visual Studio – самый полный из них, следом за ним следует Microsoft Script Editor (компонент Microsoft Office), и, наконец, свободный Microsoft Script Debugger, который гораздо более простой, чем два других. Бесплатный Microsoft Visual Web Developer Express предоставляет ограниченную версию с отладочной функцией JavaScript в Microsoft Visual Studio. В восьмой версии в IE вместе с инструментами для разработчиков появился встроенный отладчик.
В Opera также имеется собственный отладчик – Opera Dragonfly.
Разрабатываемые веб-приложения в Firefox можно отлаживать при помощи расширений Firebug и Venkman.
В Safari входит отладчик JavaScript WebKit Web Inspector. Этот же отладчик доступен и в других браузерах, использующих WebKit: Google Chrome, Arora, Rekonq, Midori и др.
Профилирование – сбор характеристик работы программы, таких как время выполнения отдельных фрагментов (обычно подпрограмм), число верно предсказанных условных переходов, число кэш промахов и т. д. [28]. Инструмент, используемый для анализа работы, называют профилировщиком. Обычно выполняется совместно с оптимизацией программы.
Характеристики могут быть аппаратными (время) или вызванные программным обеспечением (функциональный запрос). Инструментальные средства анализа программы чрезвычайно важны для того, чтобы понять поведение программы. Проектировщики ПО нуждаются в таких инструментальных средствах, чтобы оценить, как хорошо выполнена работа. Программисты нуждаются в инструментальных средствах, чтобы проанализировать их программы и идентифицировать критические участки программы.
Это часто используется, чтобы определить, как долго выполняются определенные части программы, как часто они выполняются, или генерировать граф вызовов (Call Graph). Обычно эта информация используется, чтобы идентифицировать те участки программы, которые работают больше всего. Эти трудоёмкие участки могут быть оптимизированы, чтобы выполняться быстрее. Это – также общая методика для отладки.
Также выделяют анализ покрытия (Code Coverage) – процесс выявления неиспользуемых участков кода при помощи, например, многократного запуска программы.
В табл. 19.2 приведено сравнение средств отладки кода страниц разными браузерами [29].
* – поддерживается на стороннем веб-сервисе
Рассмотрим подробнее средства отладки и профилирования Internet Explorer 8 и Mozilla Firefox.