Тестирование веб-приложений

В учебных программах по дисциплине "Обеспечение качества и тестирование программ" есть темы:

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

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

«Основы инженерии качества программных систем», Филипп Андон, Галина Коваль, Татьяна Коротун, Екатерина Лаврищева, В. Суслов, Академпериодика, 2007. 325-329 страница:

Web-приложения можно рассматривать как клиент/серверные приложения, в которых функциональность реализуется как на серверной, так и на клиентской стороне, а пользовательский интерфейс имеет стандартизированную архитектуру, в которой [44]:

  1. для взаимодействия с пользователем используется Web-браузер;
  2. взаимодействие с пользователем четко разделяется на этапы, в течение которых браузер работает с одним описанием интерфейса, а эти этапы, в свою очередь, разделяются однозначно локализуемыми обращениями от браузера к приложению;
  3. для описания интерфейса применяется стандартное представление;
  4. взаимодействие между браузером и приложением осуществляется по стандартному протоколу (HTTP) и четко формализовано;
  5. функциональность Web-приложения распределена между удаленным сервером и клиентскими компьютерами пользователей.

Таким образом, тестирование Web-приложений проводится на трех уровнях:

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

В целом, тестирование основано на использовании сценариев, описывающих последовательность действий виртуальных пользователей.

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

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

...Пример общего контрольного вопросника для проверки удобства применения интерфейса Web-сайта, который может быть полезен для планирования тестирования (опубликован компанией IT-Online) [45]. Контрольные вопросы для проверки удобства применения Web-приложений:

Архитектура и навигация сайта

  • Соответствует ли структура сайта целям, для достижения которых он предназначен? Понятна ли схема навигации?
  • Можно ли определить, в каком месте сайта вы находитесь?
  • Легко ли найти на сайте нужную информацию?
  • Разумно ли количество элементов в панелях навигации? Логично ли отсортированы элементы?
  • Соответствуют ли названия гиперссылок названиям страницы?
  • Отчетливо ли выделены гиперссылки?
  • Отчетливо ли выделена ссылка на главную страницу?
  • Существует ли возможность поиска информации на сайте?
  • Существует ли карта сайта?
  • Каждая ли страница позволяет понять, на каком сайте вы находитесь?
  • Можно ли управлять навигацией по сайту?

Планировка и дизайн сайта

  • Не превышает ли размер страницы размер окна?
  • Повторяется ли схема планировки на всех страницах?
  • Существует ли отчетливый фокус на каждой странице?
  • Видна ли визуально планировка?
  • Эффективно ли используется выравнивание и группировка?
  • Достаточно ли хорош контраст?
  • Не громоздкая ли планировка?
  • Нравится ли вам сайт эстетически?

Содержание сайта

  • Понятны и лаконичны ли тексты на сайте?
  • Организован ли текст в виде небольших блоков?
  • Встречаются ли в тексте грамматические и орфографические ошибки и опечатки?
  • Содержат ли страницы вводный текст?
  • Поддерживают ли мультимедийные компоненты задачи пользователя?
  • Являются ли единицы измерения, используемые на сайте, понятными?
  • Представлены ли на сайте время и дата создания страниц?
  • Представлены ли на сайте номера контактных телефонов?
  • Представлены ли на сайте адреса с почтовыми индексами?

Формы и взаимодействие

  • Соответствуют ли формы задачам пользователя?
  • Поддерживают ли диалоги логичную последовательность шагов?
  • Очевидна ли кнопка или ссылка для перехода к следующему шагу диалога?
  • Все ли элементы форм используются по назначению?
  • Сгруппированы ли элементы формы по смысловому назначению?
  • Понятно ли выглядит кнопка отправки формы?

Графика

  • Приемлемо ли качество используемой графики?
  • Все ли графические элементы имеют альтернативные текстовые надписи?
  • Содержат ли графические элементы информацию о размере файла?
  • Оптимизированы ли графические элементы для передачи по Интернету?
  • Реагируют ли графические элементы на движения мышки?
  • Используется ли анимация?
  • Приемлем ли объем графических файлов?

Цвета

  • Подходящий ли выбор цветов для сайта?
  • Не слишком ли много цветов?
  • Используются ли цвета логично и последовательно?
  • Адекватно ли различаются цвета в черно-белом режиме?

Оформление текста

  • Понятны ли тексты?
  • Приемлем ли размер шрифта?
  • Имеет ли шрифт подходящий цвет и достаточно ли он контрастный? - Отформатирован ли текст так, чтобы в строке было от 10 до 12 слов?
  • Достаточна ли ширины поля вокруг текста?

Устойчивость к ошибкам

  • Должен ли пользователь что-нибудь запоминать, переходя между страницами?
  • Возникает ли предупреждение при попытке совершения необратимых действий?
  • Можно ли отменить рискованные действия?
  • Перехватываются ли возникающие ошибки локально, без обращения к серверу?
  • Содержат ли страницы с сообщением о возникших ошибках полезную информацию?
  • Содержат ли страницы с пустыми результатами поиска советы по расширению условий поиска?
  • Существует ли система контекстной помощи (справки)?
  • Структурирована ли помощь по задачам пользователя? Объясняет ли она пользователю, как совершить то или иное действие?

Платформа и особенности реализация

  • Достаточно ли быстро происходит загрузка страниц (от 3 до 15 секунд)?
  • Все ли гиперссылки работают правильно?
  • Существуют ли поврежденные графические элементы?
  • Написан ли текст на страницах так, чтобы его могли найти поисковые системы?
  • Работает ли сайт с разными браузерами пользователя?
  • Работает ли сайт на мониторах высокого и низкого разрешения?
  • Используются ли нестандартные plug-in? Являются ли они необходимыми и полезными?

Вопросы тестирования серверной части Web-приложений рассмотрены в разных источниках [Whittaker J.A. How to Break Web Software; Nguyen H., Johnson R., Hackett M. Testing Applications on the Web; Мельбурн Д., Джорм Д. Тестирование web-приложений "на проникновение"; Стотлемайер Д. Тестирование Web-приложений], например, в [Сортов А.А., Хорошилов А.В. Функциональное тестирование Web-приложений на основе технологии UniTesK.] предложена оригинальная технология тестирования UniTesK.

Наряду с функциональным тестированием в Web-приложениях возрастает роль тестирования технических характеристик, прежде всего, надежности и восстанавливаемости, безопасности, производительности, конфигурации (в разных браузерах и платформах).

Вопросы тестирования безопасности охватывают, помимо проверки корректности ввода, анализ таких распространенных аспектов «уязвимости» Web- приложений, как плохие механизмы аутентификации, логические ошибки, непреднамеренное раскрытие информации, а также традиционные ошибки в обычных приложениях. Так, в работе [Мельбурн Д., Джорм Д. Тестирование web-приложений "на проникновение"] предложена методология систематического тестирования, охватывающая следующие аспекты проверки:

1. Идентификация окружения web-приложения. Включает анализ информации об используемых языках скриптов, Web-сервере, операционной системе. Для извлечения такой информации рекомендуется:

  • проанализировать отклик на HTTP-запросы HEAD и OPTIONS (из заголовка или любой страницы, содержащей строку SERVER);
  • исследовать формат и текст информации о 404-й ошибке сервера (и других). Некоторые системы имеют легко узнаваемые сообщения об ошибках, а также часто позволяют узнать версии используемых языков. Можно преднамеренно запросить страницы, приводящие к подобным ошибкам, а также использовать альтернативные методы запроса (POST, PUT и т.п.) для извлечения информации из сервера;
  • проверить распознаваемые типы файлов/расширения/каталоги. Многие Web-серверы по-разному реагируют на запросы файлов с поддерживаемыми и неизвестными расширениями. Следует попытаться запросить файлы со стандартными расширениями, такими как “.ASP”, “.HTM”, “.PHP”, “.EXE”, и следить за появлением какого-либо необычного результата или кодов ошибок;
  • проверить исходные тексты доступных страниц. Исходный текст страницы, сгенерированной Web-приложением, может указывать на используемое программное окружение;
  • попытаться исказить входные данные для получения ошибок в скриптах. Это также позволит получить информацию об окружении Web-приложения;
  • использовать сканирование TCP/ICMP и сервисов. Для этого рекомендуется использовать анализаторы приложений (в частности, Amap и WebServerFP) или средства сканирования Nmap и Queso.

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

3. Определение механизмов аутентификации. Необходимо проверить, как выбранный механизм применяется к каждому ресурсу, используемому Web-приложением. Для этого следует попытаться получить доступ ко всем ресурсам через каждую точку входа. Многие Web-системы предлагают средства поддержки сессий, основанные на сохранении в cookie или Session-ID псевдоуникальной строки, характеризующей их статус. В том случае, если данная строка является простым хэшем или строкой, составленной из известных элементов, система может оказаться уязвимой к таким видам атаки, как, например, прямой перебор, повторная отправка, или попытка восстановления.

Некоторые особенности тестирования Web-приложений связаны с процессом разработки. Как правило, для создания Web-приложений используются методы «ускоренной» разработки, в которых:

  • тестирование встроено в жизненный цикл и выполняется параллельно с разработкой;
  • небольшие проектные группы (или один Web-дизайнер);
  • активное участие заказчика (не всегда возможно);
  • очень сжатые сроки разработки версий ограничивают время на тщательное планирование и выполнение тестирования;
  • фаза интеграции Web-приложения обычно отсутствует (нет интеграционного тестирования) поэтому основное внимание уделяется функциональному тестированию приложений в моделируемой среде и системному – в реальной среде;
  • стадия сопровождения и развития – неотъемлемая часть жизненный цикл, следовательно, требуется постоянное регрессионное тестирование.

Сжатые сроки тестирования приводят к необходимости его автоматизации. Особенно это касается тестирования производительности и надежности сервера. Перечень наиболее распространенных инструментов тестирования различных фирм-производителей можно найти в приложении 4.

Среди множества публикаций по тестированию можно выделить переводную монографию [50], посвященную вопросам тестирования Web-приложений, а также перечень статей, посвященных разным аспектам тестирования в Интернет, например, на сайте R.S. Pressman & Associates, Inc.

Инструменты тестирования Web-приложений

Название Краткая характеристика Разработчик
IBM Rational Web Developer Инструмент для быстрой разработки, тестирования и развертывания web- приложений web-служб и приложе- ний Java в среде IDE IBM Rational http://rational.aplana.ru/products
IBM Rational XDE Tester. Инструмент для функционального и регрессионного тестирования Java- и Web-приложений. IBM Rational http://rational.aplana.ru/products
e-TEST suite Набор интегрированных инструментов для тестирования Web-приложений: e-Manager Enterprise – управление процессом тестирования; e-Tester – автоматизированное функ- циональное и регрессионное тестирование; e-Load – тестирование производительности. Empirix http://www.empirix.com
Microsoft Web Application Stress Tool Тестирование производительности Web-сервера для среды Windows. Microsoft www.javausergroup.at/events/was.pdf
PureLoad Web Инструмент тестирования Web-серверов для платформ Windows, Sun Solaris, Red Hat Linux. Minq Software www.minq.se/products/pureload/doc/html/web/users-guide/index.html
LoadRunner Анализ производительности крупных распределенных ИС. Поддерживает тестирование Web-серверов, баз данных, компонентов COM, Java-Beans, виртуальных машин Java и т.д Mercury Interactive http://www.mercury.com/us/pro ducts
QALoad Инструмент тестирования и анализа Web-серверов, FTP-серверов, серверов баз данных, а также распределенных систем, построенных на основе CORBA Compuware www.compuware.com/products/qacenter/qaload/detail.htm

Литература к главе 7:

Программа дисциплины "Обеспечение качества и тестирование" для направления 231000.62 - "Программная инженерия" подготовки бакалавра, Ганичев Антон Александрович, Национальный исследовательский университ "Высшая школа экономии", Факультет Компьютерных наук, Департаметр Программной инженерии, 2014 год. 7/10 страниц:

Тема 9. Нефункциональные виды тестирования

  • Нагрузочное тестирование
  • Тестирование защищенности, безопасности, устойчивости
  • Тестирование безопасности Web приложений
  • Тестирование удобства использования
  • Инструментальные средства поддержки

Литература по теме:

  1. “How to Break Web Software”, Mike Andrews/James A. Whittaker, 2006, I Addison-Wesley Publishing Co. 2006. ISBN: 0201796198, Chapter 2-7
  2. “Головоломки на PHP для Хакера” М.В. Кузнецов, И.В. Симдянов, СПб БХВ- Петербург, 2006. ISBN 5-94157-837-7 стр. 16-47
  3. “Software Testing” (2nd Edition) Ron Patton.Sams Publishing 2005 ; ISBN: 0-672-32798-8 стр. 176 - 188

24.02.2018

results for ""

    No results matching ""