Повторное использование сценариев IBM Rational Functional Tester с обновленными приложениями и устранение ошибок

Источник: IBM
Грейс Чен

Описание:

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

Сценарии должны поддерживать работу с приложениями, находящимися в разработке

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

Сценарии обнаруживают изменения, не являющиеся ошибками

Рассмотрим следующую ситуацию. Когда разработчики обновляют или изменяют приложение, они меняют также заголовок окна в соответствии с версией приложения. В сохраненной карте сценариев собраны объекты из различных карт объектов различных экранов приложения. Каждая карта объектов использует один и тот же объект окна в качестве родительского для всех объектов в иерархии. Заголовок окна - критически важное свойство, используемое для идентификации объекта. При воспроизведении сохраненных сценариев с новой версией приложения, в которой изменены заголовки окон, будут часто возникать ошибки ObjectNotFound. IBM® Rational® Functional Tester считает измененные заголовки ошибками, поскольку они не соответствуют заголовкам в сценарии.

Алгоритмы распознавания объектов Rational Functional Tester основаны не только на самом объекте. Они проверяют также свойства объектов, которые находятся выше в иерархии, проверяя цепочку предков до самого верхнего объекта.

Перенастройка сотен значений весовых коэффициентов свойств требует значительных затрат времени

Чтобы Rational Functional Tester перестал считать изменения свойств ошибками, необходимо уменьшить весовой коэффициент критичного свойства до 0. В конце концов, измененный заголовок окна не является ошибкой. В результате Rational Functional Tester не будет использовать данное свойство для идентификации объекта. Однако в Rational Functional Tester глобальной настройки для уменьшения весового коэффициента заголовка окна, по-видимому, нет. Это означает, что его необходимо вручную изменить в каждой карте, содержащей соответствующий объект. Представьте, что у вас есть сотни карт объектов, которые нужно изменить. Оцените время, которое может понадобиться для каждой итерации.

Настройка сценариев на поиск ошибок, а не допустимых изменений кода

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

Вспомогательный суперкласс действительно полезен

Для создания вспомогательного суперкласса, меняющего весовой коэффициент свойств объекта:

  1. В Rational Functional Tester щелкните правой кнопкой мыши на названии проекта и выберите Add Test Folder.


Рисунок 1. Создание папки суперкласса
Рисунок 1. Создание папки суперкласса

  1. Создайте файл вспомогательного суперкласса: выберите File > New > Helper Superclass.


Рисунок 2. Создание папки суперкласса
Рисунок 2. Создание папки суперкласса

  1. В поле Folder введите путь к папке.
  2. Выберите название проекта в списке Project.
  3. Введите имя класса в поле Script name.


Рисунок 3. Указание имени вспомогательного суперкласса, проекта и папки
Рисунок 3. Указание имени вспомогательного суперкласса, проекта и папки

  1. Нажмите кнопку Finish. Rational Functional Tester создает сценарий в редакторе Java Editor. Этот сценарий можно использовать для ручного ввода Java-кода.
  2. Введите метод, доступный для сценария. Используйте для создания вашего метода приведенный в следующем листинге код, изменив его в соответствии с вашим проектом.


Листинг 1. Исходный код вспомогательного суперкласса

package superclasses;
import java.io.File;
import java.util.Enumeration;
import com.rational.test.ft.object.map.IMappedTestObject;
import com.rational.test.ft.object.map.ObjectMap;
import com.rational.test.ft.script.RationalTestScript;

public abstract class ScriptSuperClass extends RationalTestScript
{
        public void changeweight(){
         // Получить относительный путь к карте объектов для сценария.
        String map=this.getScriptName().toString().replace(".", "//");
        String mapName = "resources//"+map+".rftxmap";
        // Путь к проекту
        String projectDir = "C:\\youtprojectLocation";
        // Открыть файл карты объектов
          File f = new File(projectDir, mapName);
          ObjectMap om = ObjectMap.load(f);
                  Enumeration e = om.elements();
                  while (e.hasMoreElements()){
        // Найти объект по его роли в UI.
                      IMappedTestObject obj = (IMappedTestObject) e.nextElement();
              String role = obj.getRole().toString();
        	if(role.equals("Document")){
        		Object titleValue = obj.getProperty(".title");	
                //уменьшить весовой коэффициент заголовка.
                obj.setProperty(".title", titleValue, 0); 
                 }
        // Сохранить карту объектов
        ObjectMap.store(om, f);
        }
    }
}

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

Ввод вспомогательного суперкласса в действие

  1. В Rational Functional Tester щелкните правой кнопкой мыши на сценарии, в котором вы собираетесь использовать метод только что созданного суперкласса.
  2. Выберите Properties.


Рисунок 4. Свойства сценария
Рисунок 4. Свойства сценария

  1. Выделите Functional Test Script в правой панели и нажмите кнопку Browse рядом с полем Helper Superclass. Откроется окно спецификации.
  2. Введите первый символ имени пользовательского вспомогательного суперкласса в поле Select default helper superclass for the script (выбор вспомогательного суперкласса по умолчанию для сценария). Rational Functional Tester предложит список подходящих элементов.
  3. Выберите нужный элемент и нажмите кнопку OK.


Рисунок 5. Выбор суперкласса для сценария
Рисунок 5. Выбор суперкласса для сценария

  1. Вызовите метод вспомогательного суперкласса в сценарии.


Рисунок 6. Вызов метода суперкласса
Рисунок 6. Вызов метода суперкласса

Изменения тестов - это важно

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


Страница сайта http://test.interface.ru
Оригинал находится по адресу http://test.interface.ru/home.asp?artId=26466