4. Тестирование WEB-приложений

Назад Содержание Дальше

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

 

Рассмотрим особенности работы с веб-приложениями. Во-первых, веб-приложения работают не со стандартными GUI-объектами, а с классами, соответствующими модели DOM. Соответственно, это требует подключения соответствующего расширения. Точнее, его надо активировать. Для этого:

  • Открываем броузер, под который будут разрабатываться скрипты, открываем некоторую страницу
  • открываем SilkTest
  • выбираем Tools > Enable Extensions
  • В появившемся окне выбираем нужное приложение, жмем Select
  • Далее появится диалог настройки расширений броузера. Выбираем пункт DOM, жмем OK
  • Появится окно с сообщением, что активация расширений выполнена успешно.
  • Закрываем окно

Эта процедура проделывается один раз. Если у вас возникли трудности с подключением расширения, обратитесь к главам 8. Использование расширений и 8.4 Расширения Explorer’а, в которых рассказывается, как подключить расширения вручную.

 

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

 

Как видно, применяются эти элементы по-разному, соответственно и работать с ними надо по-разному. Но все по порядку. Фрейм тоже имеет свои особенности. Во-первых, для всех веб-приложений есть только одно главное окно. Это окно Browser. Это универсальное окно броузера. Есть конечно другие окна, которые соответствуют уже конкретным броузерам (IE, Netscape), но это окно является универсальным для них.
Во-вторых, все страницы записываются как объекты BrowserChild, у которых родительским окном является Browser. Это вызывает целый ряд трудностей, но все они в целом связаны с тем, что одновременно может быть открыто несколько окон броузера и нужно что-то сделать на той странице, которая в данный момент не является активной. Активировать ее не так-то и просто. BrowserChild-окна наследуют функциональность ChildWin-окон и работать с ними можно так же, как и с дочерним окном документа в однодокументном приложении. Самая большая трудность заключается в том, что без дополнительных настроек или дополнительной функциональности этим окнам нельзя сделать SetActive. Такая операция вызовет исключение.
В-третьих, существует возможность регулировать распознавание объектов, то есть указать, какие объекты распознать, а какие нет. Это относится к объектам типа HtmlMeta,HtmlHidden,XMLNode,HtmlText,HtmlForm. Это связано с тем, что SilkTest обрабатывает HTML код и если распознавать все имеющиеся объекты, то их получится очень много и соответственно Агенту потребуется больше времени для нахождения нужных элементов. Также, это полезно тем, кто получает первоначальный фрейм путем записи деклараций окон. В этом случае сгенерируется очень много объектов, среди которых будет очень много “мусора”. Например, объекты HtmlMeta,HtmlHidden редко учавствуют в скрипте и как правило они не нужны. Поэтому, значительно проще запретить распознавание таких объектов, чем очищать их из месива сгенерированного кода. Регулируется уровень распознавания объектов следующим образом:

  • Выбираем меню Options > Extensions
  • В появившемся диалоге выбираем броузер, для которого мы делаем настройки и нажимаем на кнопку Extensions…
  • В появившемся диалоге настроек устанавливаем/сбрасываем флажки для тех элементов, с которыми нам нужно работать или не нужно работать.

Здесь это все настраивается. Не будем спешить с закрытием диалога настроек, так как есть еще одна особенность веб-приложений, которая в принципе попадает под данный пункт, но эта особенность вызывает достаточно большое количество проблем ( и вопросов по их решению ). Поэтому рассмотрение данного вопроса вынесено отдельно. Итак …
В-четвертых, существует возможность регулирования уровня распознавания таблиц с нулевой шириной линий. Таблицы в HTML, как уже говорилось, могут использоваться по-разному – и как средство наглядного представления/группировки данных и как средство форматного расположения элементов ( например элементов управления на форме). Таблицы могут быть вложенными. Также следует отметить тот факт, что если в HTML с таблицами работают построчно (то есть описывается таблица построчно), то SilkTest разбивает таблицу на колонки, для чего имеется отдельный класс HtmlColumn. Такой подход для SilkTest-а вполне оправдан, если данные действительно расположены в таблице со строками и столбцами, но если таблица используется только для форматирования и не представляет из себя регулярной сетки, то тогда описание фрейма будет представлять из себя достаточно страшное зрелище. Соответственно, нужно задать некоторый уровень распознавания, при котором таблицы видны только до определенного уровня вложенности. Для этих целей в диалоге настройки расширений ( который я просил не закрывать) есть ползунок в секции Borderless Table. В этой секции как раз и регулируется уровень распознавания таблиц с нулевой границей. В зависимости от этого уровня, таблицы распознаются по-разному. В нижеприведенной таблице указаны правила распознавания таблиц с нулевой толщиной границы:
Если рассматриваемая ячейка таблицы не содержит элементов ввода

Содержит ли таблица вложенные таблицы Содержит какая-либо из вложенных таблиц элементы ввода Уровень вложенности таблиц Значение уровня распознавания таблиц
Нет - - 0 < x < 0.30
Да Нет 1 0.3 < x < 0.60
Да Нет 2 0.6 < x < 0.75
Да Нет > 2 1
Да Да не имеет значения 1

Если рассматриваемая ячейка таблицы содержит элементы ввода

Содержит ли таблица вложенные таблицы Содержит какая-либо из вложенных таблиц элементы ввода Уровень вложенности таблиц Значение уровня распознавания таблиц
Нет - - 0.75 < x < 0.9
Да Нет 1-2 0.75 < x < 0.9
Да Нет 3 0.91 < x < 0.99
Да Нет > 3 1
Да Да не имеет значения 1

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


Назад Содержание Дальше