Автоматизированное тестирование (без пользовательского интерфейса) для существующего компонента Flash - PullRequest
3 голосов
/ 20 октября 2008

Я создаю и поддерживаю набор компонентов Flash, который распространяется среди издателей и позволяет им интегрироваться с нашей системой. В настоящее время компонент не имеет пользовательского интерфейса и просто содержит скомпилированный код для запросов к нашим системным серверам, анализа ответа и изменения параметров, отправляемых в запросе. Есть версии As2 и AS3 для Flex и CS3. Наш типичный рабочий процесс выглядит так:

1.) Загрузить компонент 2.) установить параметры на компонент 3.) сообщить компоненту запросить нашу систему 4.) ждать события о том, что ответ получен и проанализирован 5.) вызов методов на компоненте для извлечения и использования проанализированных данных

В последнее время мы много говорили об автоматизации тестирования этих компонентов, и кажется, что вокруг таких фреймворков, как AsUnit и FlexUnit, много шума. Тем не менее, я никогда не мог понять, как я могу эффективно использовать один из них. Примеры и учебные пособия всегда экономят на реальных примерах и вместо этого предоставляют несколько классов и избыточный код для проверки, возвращает ли примерная функция num1 + num2.

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

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

У меня вопрос: есть ли способ автоматизировать тестирование существующего, широко распространенного, установленного Flash-компонента, не полностью переработав его, чтобы он вписался в среду тестирования? Или я неправильно понимаю основы тестирования, и это уже возможно?

ОБНОВЛЕНИЕ : Спасибо за ответы. Я начал интегрировать свой компонент с AsUnit и думаю, что довольно хорошо понимаю, как он может мне помочь. Тем не менее, AS2 AsUnit не поддерживает асинхронные тестовые случаи, и мне трудно найти инфраструктуру модульного тестирования AS2, которая делает. Асинхронное тестирование действительно важно для этого проекта. У кого-нибудь есть какие-либо рекомендации для другой структуры? Спасибо!

Ответы [ 3 ]

3 голосов
/ 21 октября 2008

Мы используем FlexUnit в нашем проекте, и я очень доволен этим. Предполагая, что ваш проект был разработан с довольно слабой степенью связности, вам не нужно вообще ничего менять (если вообще что-то), чтобы протестировать ваш код. Если вы уже используете инфраструктуру MVC, такую ​​как Cairngorm или PureMVC , FlexUnit должен интегрироваться довольно безболезненно.

Однако я скажу, что мой опыт работы с модульным тестированием Flash / Flex далеко не такой положительный, как с другими языками, такими как Ruby или .NET, по трем причинам. Во-первых, это то, что такой высокий уровень кода ActionScript связан с пользовательским интерфейсом, и этот тип кода сложно, если не невозможно, протестировать. Другая причина заключается в том, что тестер не подходит для подключения к среде непрерывной интеграции, такой как CruiseControl.NET или CruiseControl.rb , поскольку для его запуска требуется человек. и нажимайте кнопки. Наконец, огромное преимущество модульного тестирования обычно заключается в том, что вы можете запускать его вместе с инструментом анализа покрытия, таким как NCover или rcov . Flash / Flex не поддается такому анализу без модифицированного компилятора, такого как Flexcover .

2 голосов
/ 12 мая 2009

Рад слышать, что вы пошли с AsUnit!

AsUnit является единственной платформой для модульных тестов, которая даст вам согласованный опыт в ActionScript 2 и ActionScript 3. Он не зависит от каких-либо внешних платформ - особенно Flex, и не должно возникать реальных проблем с созданием тестов для вашего проекта после факт.

В последних сборках AsUnit есть поддержка асинхронного тестирования в ActionScript 2. Ветвь as25 находится здесь:

http://github.com/lukebayes/asunit

1 голос
/ 21 октября 2008

Хотя у меня никогда не было возможности работать с юнит-тестером в actionscript, на работе мы создали фреймворк, который:

  1. скомпилировал скрипт (ы) внутри тестового приложения, в нашем случае с flex
  2. настроить приложение таймера (сторожевого таймера) на случай сбоя цикла
  3. запустил приложение, которое, в свою очередь:
    • подключен к бэкэнду PHP для получения контрольного примера
    • подал тест на компонент
    • прочитайте результаты и отправьте их обратно
  4. сторожевой таймер запускает и убивает приложение в зависимости от того, что произойдет раньше:
    • Таймер истек (разумное время ожидания)
    • заявка отправила обратно результаты
  5. если были запущены другие тесты, перейдите к 2.

Определенно не элегантно, но сделал работу (это было со скриптами AS1)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...