Разработка web приложений для тестирования. Особенности тестирования web-приложений. Совместимость с операционными системами

, информационный шум , логические ошибки , раскрытие информации , SQL Injection , "stress" , Нагрузочное тестирование , тестирование производительности , Объемное тестирование , Объемное стабильности , visual test , probing , sniffing , firebug , RDP , load generation , tester , quality manager , тестирование web-сервера , Моделирование Транзакций , Метод Метод "Анализ данных на стороне клиента"Анализ данных на стороне клиентаМетод "Анализ данных на стороне клиента" , Метод Анализ Сетевого Трафика , Проверка HTML-кода , профилировщик , граф вызовов , call graph , code coverage , подсветка синтаксиса , Вьювер , development tools , смещение элементов , иерархический список , breakpoint , билд , Internet Explorer Developer Tools , functional decomposition , data-driven , время выполнения , кэш , валидность , DHTML , css

Презентацию к данной лекции Вы можете скачать .

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

19.1.1. Введение

Вычислительные и коммуникационные системы используются все чаще и с каждым днем все глубже входят в нашу повседневную жизнь. Компании и отдельные пользователи все больше зависят в своей работе от web-приложений. Веб-приложения соединяют различные отделы внутри компаний, различные компании и простых пользователей. Веб-приложения очень динамичны, а их функциональные возможности непрерывно растут. Непрерывно возрастает потоковый трафик средств информации и запросов, формируемых переносными и встроенными устройствами. Вследствие этого возрастает сложность систем такого рода. Очевидно, что для понимания, анализа, разработки и управления такими системами нужны количественные методы и модели, которые помогают оценить различные сценарии функционирования, исследовать структуру и состояние больших систем. Наблюдаются тенденции к постоянному росту спроса на Веб-службы. Таким образом, проблемы, связанные с недостаточной производительностью будут возникать и в будущем, и, в конце концов, они станут превалирующими при планировании и вводе в эксплуатацию новых Веб-служб и увеличении пользователей Интернета. Веб-приложения становятся все более распространенными и все более сложными, играя, таким образом, основную роль в большинстве онлайновых проектов. Как и во всех системах, основанных на взаимодействии между клиентом и сервером, уязвимости Веб-приложений обычно возникают из-за некорректной обработки запросов клиента и/или недостаточной проверки входной информации со стороны разработчика.

В первой части данной лекции мы рассмотрим вопросы специфичные для тестирования и отладки Веб-приложений.

Будут рассмотрены принципы следующих подходов к тестированию Веб-приложений [ , ]:

  • функциональное тестирование ;
  • тестирование пользовательского интерфейса ;
  • тестирование удобства использования ;
  • нагрузочное и стрессовое тестирование ;
  • проверка ссылок и HTML-кода;
  • тестирование безопасности .

Также будет приведен обзор средств автоматизации тестирования Веб-приложений.

С общими вопросами тестирования и верификации информационных систем предлагается ознакомиться в курсе Интернет Университета Информационных Технологий "Верификация программного обеспечения" .

Во второй части лекции будут рассмотрены подходы и инструментальные средства отладки CSS, а также отладки и профилирования JavaScript.

19.1.2. Подходы к функциональному тестированию Веб-приложений

Функциональное тестирование ( functional testing ) – процесс верификации соответствия функционирования продукта его начальным спецификациям . Характерным примером может быть проверка того, что программа подсчета выплат по банковской ссуде выдает корректные выкладки на любые введенные сумму ссуды и срок ее возврата. Обычно подобные проверки проводятся вручную, иногда к этому подключаются конечные пользователи в качестве бета-тестеров. Однако программные системы становятся все сложнее, а комбинации различных входных параметров и поддерживаемых операционных систем нередко исчисляются десятками и сотнями.

Перечислим некоторые из методов функционального тестирования веб-приложений [ , ]:

  1. Record & Play – основан на возможности средств автоматизации тестирования автоматически генерировать код.
  2. Functional Decomposition – в основе лежит разбиение всех компонент фреймворка по функциональному признаку на бизнес-функции (реализуют/проверяют бизнес-функциональность приложения), user-defined функции (вспомогательные функции, которые еще имеют привязку к тестируемому приложению или к конкретному проекту), утилиты (функции общего назначения, не привязанные к конкретному приложению, технологии, проекту).
  3. Data-driven – основан на том, что к некоторому тесту или группе тестов привязывается источник данных, и этот тест или набор тестов циклически выполняется для каждой записи из этого источника данных. Вполне может применяться в комбинации с другими подходами.
  4. Keyword-driven – представляет собой фактически движок для обработки посылаемых ему команд, а сами инструкции выносятся во внешний источник данных.
  5. Object-driven – основан на том, что основные ходовые части фреймворка реализованы в виде объектов, что позволяет собирать тесты по кирпичикам.
  6. Model-based – основан на том, что тестируемое приложение (или его части) описывается в виде некоторой поведенческой модели.

Самым распространенным является подход, называемый Capture & Playback (другие названия – Record & Playback , Capture & Replay) . Суть этого подхода заключается в том, что сценарии тестирования создаются на основе работы пользователя с тестируемым приложением. Инструмент перехватывает и записывает действия пользователя, результат каждого действия также запоминается и служит эталоном для последующих проверок. При этом в большинстве инструментов, реализующих этот подход, воздействия (например, нажатие кнопки мыши) связываются не с координатами текущего положения мыши, а с объектами HTML-интерфейса (кнопки, поля ввода и т.д.), на которые происходит воздействие, и их атрибутами. При тестировании инструмент автоматически воспроизводит ранее записанные действия и сравнивает их результаты с эталонными, точность сравнения может настраиваться. Можно также добавлять дополнительные проверки – задавать условия на свойства объектов (цвет, расположение, размер и т.д.) или на функциональность приложения (содержимое сообщения и т.д.).

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

Вместе с тем, у подхода имеется ряд существенных недостатков. Для разработки тестов не предоставляется никакой автоматизации; фактически, инструмент записывает процесс ручного тестирования . Если в процессе записи теста обнаружена ошибка, то в большинстве случаев создать тест для последующего использования невозможно, пока ошибка не будет исправлена (инструмент должен запомнить правильный результат для проверки). При изменении тестируемого приложения набор тестов трудно поддерживать в актуальном состоянии, так как тесты для изменившихся частей приложения приходится записывать заново.

19.1.3. Тестирование пользовательского интерфейса

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

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

С другой стороны пользовательский интерфейс – "лицо" системы, и от его продуманности зависит эффективность работы пользователя с системой. Факторы, влияющие на эффективность работы, в меньшей степени поддаются формализации в виде конкретных требований к отдельным элементам, однако должны быть учтены в виде общих рекомендаций и принципов построения пользовательского интерфейса программной системы. Проверка интерфейса на эффективность человеко-машинного взаимодействия получила название проверки удобства использования (usability verification, в русскоязычной литературе в качестве перевода термина usability часто используют слово "практичность").

Функциональное тестирование пользовательского интерфейса состоит из пяти фаз :

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

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

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

При сборе информации о выполнении тестовых примеров, как правило, применяются технологии анализа выводимых на экран форм и их элементов (в случае графического интерфейса) или выводимого на экран текста (в случае текстового), а не проверка значений тех или иных переменных, устанавливаемых программной системой.

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

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

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

19.1.3.1. Ручное тестирование

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

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

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

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

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

Duration 11:28:40

Тестирование веб-приложений 2.0 - Полный список уроков

Развернуть / Свернуть
  • Урок 1. Общая теория. Что такое тестирование и что такое программа 00:07:27
  • Урок 2. Что нужно тестировать 00:09:53
  • Урок 3. Структура программы и её интерфейсы 00:10:45
  • Урок 4. Внутреннее устройство браузера 00:05:38
  • Урок 5. HyperText Markup Language (HTML) 00:11:02
  • Урок 6. Тестирование разметки 00:18:14
  • Урок 7. Тестирование текстового содержимого страниц 00:06:03
  • Урок 8. Тестирование ссылок 00:12:17
  • Урок 9. Тестирование локализации 00:06:51
  • Урок 10. Клиент-серверная архитектура 00:14:01
  • Урок 11. HyperText Transfer Protocol (HTTP) 00:09:58
  • Урок 12. Перехват запросов и ответов 00:14:52
  • Урок 13. HTTP. Продолжение 00:22:10
  • Урок 14. Протоколирование запросов и ответов на сервере 00:12:35
  • Урок 15. User-Agent - браузеры и боты 00:12:36
  • Урок 16. Отправка на сервер поддельных запросов 00:07:59
  • Урок 17. Адреса ресурсов. Domain Name Service (DNS) 00:13:47
  • Урок 18. Что происходит с запросом на сервере 00:14:08
  • Урок 19. Генерация полезной нагрузки 00:14:24
  • Урок 20. Источники данных (файлы, база данных) 00:15:46
  • Урок 21. Кеширование данных на стороне сервера 00:12:06
  • Урок 22. Многоуровневая архитектура 00:12:01
  • Урок 23. Аутентификация и авторизация 00:21:46
  • Урок 24. Тестирование прав доступа 00:13:19
  • Урок 25. Тестирование производительности серверной части 00:12:15
  • Урок 26. Ввод данных в формы 00:14:32
  • Урок 27. Типы запросов GET и POST 00:09:41
  • Урок 28. Неявные параметры запроса 00:07:32
  • Урок 29. Функциональное тестирование 00:18:04
  • Урок 30. Автоматизация функционального тестирования 00:19:35
  • Урок 31. Тестирование производительности 00:13:23
  • Урок 32. Тестирование защищенности 00:18:14
  • Урок 33. Cascading Style Sheets (CSS) 00:09:03
  • Урок 34. Cascading Style Sheets (CSS), продолжение 00:14:41
  • Урок 35. Автоматическая проверка CSS 00:12:09
  • Урок 36. Тестирование верстки (layout) 00:10:43
  • Урок 37. Адаптивная верстка 00:10:44
  • Урок 38. Семантическая верстка 00:06:40
  • Урок 39. JavaScript 00:13:33
  • Урок 40. Анимация без JavaScript 00:04:53
  • Урок 41. Document Object Model (DOM) 00:12:48
  • Урок 42. Валидация данных в формах 00:14:06
  • Урок 43. Асинхронные запросы (AJAX) 00:13:27
  • Урок 44. Одностраничники (Single Page Application, SPA) 00:10:16
  • Урок 45. REST API 00:16:09
  • Урок 46. Клиентская производительность 00:10:59
  • Урок 47. Инструменты для оценки клиентской производительности 00:14:18
  • Урок 48. Оптимизация клиентской производительности 00:13:45
  • Урок 49. Тестирование функциональности 00:18:13
  • Урок 50. Тестирование производительности 00:13:30
  • Урок 51. Тестирование удобства использования и доступности 00:19:13
  • Урок 52. Мониторинг 00:13:02
  • Урок 53. Сплит-тестирование 00:14:09
  • Урок 54. Оптимизация для поисковиков и социальных сетей 00:09:25

Курс посвящен особенностям тестирования веб-приложений (HTML, CSS, JavaScript) и специфике применения техник тест-дизайна для приложений такого типа. Тренинг полностью перезаписан весной 2018 года. Чем тестирование веб-приложений отличается от тестирования каких-нибудь других приложений? При тестировании веб-приложений применяются те же самые классические методы и техники проектирования тестов. Веб-приложения обычно имеют более простой интерфейс, чем "десктопные" программы. Браузером все умеют пользоваться, для этого не нужны какие-то специальные навыки.

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

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

После прохождения тренинга учащийся будет:

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

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

, recall , информационный шум , логические ошибки , раскрытие информации , SQL Injection , "stress" , Нагрузочное тестирование , тестирование производительности , Объемное тестирование , Объемное стабильности , visual test , probing , sniffing , firebug , RDP , load generation , tester , quality manager , тестирование web-сервера , Моделирование Транзакций , Метод Метод "Анализ данных на стороне клиента"Анализ данных на стороне клиентаМетод "Анализ данных на стороне клиента" , Метод Анализ Сетевого Трафика , Проверка HTML-кода , профилировщик , граф вызовов , call graph , code coverage , подсветка синтаксиса , Вьювер , development tools , смещение элементов , иерархический список , breakpoint , билд , Internet Explorer Developer Tools , functional decomposition , data-driven , время выполнения , кэш , валидность , DHTML , css

Презентацию к данной лекции Вы можете скачать .

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

19.1.1. Введение

Вычислительные и коммуникационные системы используются все чаще и с каждым днем все глубже входят в нашу повседневную жизнь. Компании и отдельные пользователи все больше зависят в своей работе от web-приложений. Веб-приложения соединяют различные отделы внутри компаний, различные компании и простых пользователей. Веб-приложения очень динамичны, а их функциональные возможности непрерывно растут. Непрерывно возрастает потоковый трафик средств информации и запросов, формируемых переносными и встроенными устройствами. Вследствие этого возрастает сложность систем такого рода. Очевидно, что для понимания, анализа, разработки и управления такими системами нужны количественные методы и модели, которые помогают оценить различные сценарии функционирования, исследовать структуру и состояние больших систем. Наблюдаются тенденции к постоянному росту спроса на Веб-службы. Таким образом, проблемы, связанные с недостаточной производительностью будут возникать и в будущем, и, в конце концов, они станут превалирующими при планировании и вводе в эксплуатацию новых Веб-служб и увеличении пользователей Интернета. Веб-приложения становятся все более распространенными и все более сложными, играя, таким образом, основную роль в большинстве онлайновых проектов. Как и во всех системах, основанных на взаимодействии между клиентом и сервером, уязвимости Веб-приложений обычно возникают из-за некорректной обработки запросов клиента и/или недостаточной проверки входной информации со стороны разработчика.

В первой части данной лекции мы рассмотрим вопросы специфичные для тестирования и отладки Веб-приложений.

Будут рассмотрены принципы следующих подходов к тестированию Веб-приложений [ , ]:

  • функциональное тестирование ;
  • тестирование пользовательского интерфейса ;
  • тестирование удобства использования ;
  • нагрузочное и стрессовое тестирование ;
  • проверка ссылок и HTML-кода;
  • тестирование безопасности .

Также будет приведен обзор средств автоматизации тестирования Веб-приложений.

С общими вопросами тестирования и верификации информационных систем предлагается ознакомиться в курсе Интернет Университета Информационных Технологий "Верификация программного обеспечения" .

Во второй части лекции будут рассмотрены подходы и инструментальные средства отладки CSS, а также отладки и профилирования JavaScript.

19.1.2. Подходы к функциональному тестированию Веб-приложений

Функциональное тестирование ( functional testing ) – процесс верификации соответствия функционирования продукта его начальным спецификациям . Характерным примером может быть проверка того, что программа подсчета выплат по банковской ссуде выдает корректные выкладки на любые введенные сумму ссуды и срок ее возврата. Обычно подобные проверки проводятся вручную, иногда к этому подключаются конечные пользователи в качестве бета-тестеров. Однако программные системы становятся все сложнее, а комбинации различных входных параметров и поддерживаемых операционных систем нередко исчисляются десятками и сотнями.

Перечислим некоторые из методов функционального тестирования веб-приложений [ , ]:

  1. Record & Play – основан на возможности средств автоматизации тестирования автоматически генерировать код.
  2. Functional Decomposition – в основе лежит разбиение всех компонент фреймворка по функциональному признаку на бизнес-функции (реализуют/проверяют бизнес-функциональность приложения), user-defined функции (вспомогательные функции, которые еще имеют привязку к тестируемому приложению или к конкретному проекту), утилиты (функции общего назначения, не привязанные к конкретному приложению, технологии, проекту).
  3. Data-driven – основан на том, что к некоторому тесту или группе тестов привязывается источник данных, и этот тест или набор тестов циклически выполняется для каждой записи из этого источника данных. Вполне может применяться в комбинации с другими подходами.
  4. Keyword-driven – представляет собой фактически движок для обработки посылаемых ему команд, а сами инструкции выносятся во внешний источник данных.
  5. Object-driven – основан на том, что основные ходовые части фреймворка реализованы в виде объектов, что позволяет собирать тесты по кирпичикам.
  6. Model-based – основан на том, что тестируемое приложение (или его части) описывается в виде некоторой поведенческой модели.

Самым распространенным является подход, называемый Capture & Playback (другие названия – Record & Playback , Capture & Replay) . Суть этого подхода заключается в том, что сценарии тестирования создаются на основе работы пользователя с тестируемым приложением. Инструмент перехватывает и записывает действия пользователя, результат каждого действия также запоминается и служит эталоном для последующих проверок. При этом в большинстве инструментов, реализующих этот подход, воздействия (например, нажатие кнопки мыши) связываются не с координатами текущего положения мыши, а с объектами HTML-интерфейса (кнопки, поля ввода и т.д.), на которые происходит воздействие, и их атрибутами. При тестировании инструмент автоматически воспроизводит ранее записанные действия и сравнивает их результаты с эталонными, точность сравнения может настраиваться. Можно также добавлять дополнительные проверки – задавать условия на свойства объектов (цвет, расположение, размер и т.д.) или на функциональность приложения (содержимое сообщения и т.д.).

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

Вместе с тем, у подхода имеется ряд существенных недостатков. Для разработки тестов не предоставляется никакой автоматизации; фактически, инструмент записывает процесс ручного тестирования . Если в процессе записи теста обнаружена ошибка, то в большинстве случаев создать тест для последующего использования невозможно, пока ошибка не будет исправлена (инструмент должен запомнить правильный результат для проверки). При изменении тестируемого приложения набор тестов трудно поддерживать в актуальном состоянии, так как тесты для изменившихся частей приложения приходится записывать заново.

19.1.3. Тестирование пользовательского интерфейса

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

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

С другой стороны пользовательский интерфейс – "лицо" системы, и от его продуманности зависит эффективность работы пользователя с системой. Факторы, влияющие на эффективность работы, в меньшей степени поддаются формализации в виде конкретных требований к отдельным элементам, однако должны быть учтены в виде общих рекомендаций и принципов построения пользовательского интерфейса программной системы. Проверка интерфейса на эффективность человеко-машинного взаимодействия получила название проверки удобства использования (usability verification, в русскоязычной литературе в качестве перевода термина usability часто используют слово "практичность").

Функциональное тестирование пользовательского интерфейса состоит из пяти фаз :

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

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

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

При сборе информации о выполнении тестовых примеров, как правило, применяются технологии анализа выводимых на экран форм и их элементов (в случае графического интерфейса) или выводимого на экран текста (в случае текстового), а не проверка значений тех или иных переменных, устанавливаемых программной системой.

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

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

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

19.1.3.1. Ручное тестирование

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

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

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

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

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

Всё это требует определённого опыта и практики.

Ниже перечислено 7 лайфхаков, которые используются для автоматизации web – тестов, и которые должны оправдать вложенные в неё инвестиции.

  1. Выполнение реальных сценариев

Очень важно знать реальный сценарий, чтобы правильно заавтоматизировать тест-кейс. По возможности надо избегать mock-и и выполнять всё на “живом” приложении. В таком случае можно быть увереным в результате автотеста и в том, что проверка прошла, как надо.

  1. Запускать автотесты ежедневно после последнего коммита

Тут двоякая ситуация. На некоторых проектах коммиты мержатся в течении всего дня. И такого понятия, как “дневной коммит” не существует. В таком случае следует выбрать время для запуска автотестов. С одной стороны это кажется утомительным, но с другой – очень полезно при частых обновлениях приложения. Баги отлавливаются на ранних стадиях, когда проблемные участки ещё не пустили корни.

  1. Сокращение времени выполнения теста и увеличение тестового покрытия

Порой этого трудно добиться, тут нужен определённый опыт и технические знания. При правильном применении методологий тестирования и оптимального использования программных инструментов можно, если и не сократить время пробега теста до минимума, то хотя бы как-то его уменьшить. Также большую роль играет и вид тестирования: API и end-to-end тестирования гораздо быстрее UI – тестирования.

  1. Проверить браузерную и платформенную совместимости

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

  1. Составить отчёт по найденным багам в самом начале

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

  1. Переиспользование тестовых методов и сценариев

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

  1. Регулярная отчётность

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

    7 хаков автоматизированного тестирования web-приложений, которые вы должны знать

    http://сайт/wp-content/uploads/2017/04/website-test-automation-150x150.jpg

    Будучи автоматизированным тестировщиком вы ежедневно должны отлавливать различные баги, даже в своём фреймворке. Это ничего не говорит о вашей компетентности или о том, что компания вкладывает мало ресурсов в тестирование. В основном проблемы кроются в слабосвязанном коде, сложных процессах и интеграциях. Кроме того, процесс непрерывной интеграции требует много усилий и времени, чтобы гарантировать, что приложение […]

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

Для обеспечения качества разрабатываемых веб-приложений QA команда XB Software проводит целый набор всевозможных тестов, включая:

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

Юзабилити-тестирование — для проверки удобства пользования интерфейсом веб-приложения. При проведении данного вида тестирования проверяется навигация, а также эргономичность и информативность пользовательского интерфейса.

Кроссбраузерное тестирование и мультиплатформенное тестирование — для проверки работы веб-приложения в различных браузерах и на разных платформах. Мы проверяем, насколько хорошо выполнена верстка веб-приложения и работаем совместно с заказчиком над исключением любых дефектов верстки.

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

QA команда XB Software тестирует приложения различной сложности, включая простые веб-приложения, комплексные веб-приложения и приложения повышенной сложности.

Особенности тестирования простых веб-приложений

Простые веб-приложения включают в себя различные сайты, электронные магазины, а также SPA-приложения, размещенные на одной странице, и простые веб-сервисы.

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

Особенности тестирования комплексных веб-приложений

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

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

Особенности тестирования веб-приложений повышенной сложности

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

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