Что Вы используете для Модульного теста свою сеть UI? [закрытый]

У меня есть рабочий solulion, используя ответы от @John и @Arpad link и @RobWinch link

Я использую Spring Security 3.2.9 и jQuery 1.10.2.

Расширить класс Spring, чтобы вызвать ответ 4XX только из запросов AJAX:

public class CustomLoginUrlAuthenticationEntryPoint extends LoginUrlAuthenticationEntryPoint {

    public CustomLoginUrlAuthenticationEntryPoint(final String loginFormUrl) {
        super(loginFormUrl);
    }

    // For AJAX requests for user that isn't logged in, need to return 403 status.
    // For normal requests, Spring does a (302) redirect to login.jsp which the browser handles normally.
    @Override
    public void commence(final HttpServletRequest request,
                         final HttpServletResponse response,
                         final AuthenticationException authException)
            throws IOException, ServletException {
        if ("XMLHttpRequest".equals(request.getHeader("X-Requested-With"))) {
            response.sendError(HttpServletResponse.SC_FORBIDDEN, "Access Denied");
        } else {
            super.commence(request, response, authException);
        }
    }
}

applicationContext-security.xml

  
        
     
    
...
    
        
    
...

    
      
        
          
            
              
            
            
            
          
        
      
    

В моих JSP добавьте глобальный обработчик ошибок AJAX, как показано здесь здесь

  $( document ).ajaxError(function( event, jqxhr, settings, thrownError ) {
      if ( jqxhr.status === 403 ) {
          window.location = "login.jsp";
      } else {
          if(thrownError != null) {
              alert(thrownError);
          } else {
              alert("error");
          }
      }
  });

. Также удалите существующие обработчики ошибок из вызовов AJAX в JSP-страницах:

        var str = $("#viewForm").serialize();
        $.ajax({
            url: "get_mongoDB_doc_versions.do",
            type: "post",
            data: str,
            cache: false,
            async: false,
            dataType: "json",
            success: function(data) { ... },
//            error: function (jqXHR, textStatus, errorStr) {
//                 if(textStatus != null)
//                     alert(textStatus);
//                 else if(errorStr != null)
//                     alert(errorStr);
//                 else
//                     alert("error");
//            }
        });

Надеюсь, что это поможет другим.

Update1 Я обнаружил, что мне нужно добавить параметр (always-use-default-target = "true") в конфигурацию формы входа. Это было необходимо, так как после запроса AJAX перенаправляется на страницу входа (из-за истекшего сеанса), Spring запоминает предыдущий запрос AJAX и автоматически перенаправляет его после входа в систему. Это приведет к отображению возвращаемого JSON на странице браузера. Конечно, не то, что я хочу.

Update2 Вместо использования always-use-default-target="true" используйте пример @RobWinch блокировки запросов AJAX из requstCache. Это позволяет нормальным ссылкам перенаправляться на исходную цель после входа в систему, но AJAX переходит на домашнюю страницу после входа в систему.

33
задан Chris 23 August 2008 в 19:49
поделиться

14 ответов

Мы используем Watin в моем месте занятости, мы - магазин .NET, таким образом, это решение имело большой смысл. Мы на самом деле запустили с Watir (исходная рубиновая реализация) и переключились после. Это было довольно хорошее решение для нас до сих пор

10
ответ дан 27 November 2019 в 18:11
поделиться

Мы используем WatiN для тестирования системы, и QUnit для поблочного тестирования JavaScript.

0
ответ дан 27 November 2019 в 18:11
поделиться

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

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

2
ответ дан 27 November 2019 в 18:11
поделиться

Я главным образом использую CubicTest, который является плагином затмения, который позволяет Вам определить тесты графически. Это может экспортировать/выполнить тесты через несколько библиотек, включая воду и селен. Большинство людей просто использует бегуна Селена все же.

Полное раскрытие: я - один из разработчиков, таким образом, я отчасти смещаюсь :)

Более тщательно изучают здесь: cubictest.openqa.org

-Erlend

3
ответ дан 27 November 2019 в 18:11
поделиться

Сетка Селена может запустить Ваши веб-тесты через несколько машин параллельно, которые могут ускорить веб-процесс тестирования

3
ответ дан 27 November 2019 в 18:11
поделиться

Мы используем Ядро Селена, но переключаем постепенно на Селен RC, который намного более хорош и легче справиться. Мы записали много пользовательского кода для создания тестового прогона на наших Непрерывных Серверах интеграции, некоторые из них в параллельных комплектах для выполнения быстрее.

Одна вещь, которую Вы найдете, состоит в том, что Селен, кажется, перезапускает браузер для каждого теста (можно установить его, чтобы не сделать это, но мы получили проблемы памяти, когда мы сделали это). Это может быть медленно в Firefox, но не слишком плохо в IE (одно время, я благодарен за ОС Bill Gates's integraion).

3
ответ дан 27 November 2019 в 18:11
поделиться

Выезд веб-Тест Canoo . Это - открытый исходный код и основывалось на платформе МУРАВЬЯ.

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

3
ответ дан 27 November 2019 в 18:11
поделиться

Мы используем Выпуск Тестера Visual Studio 2008 года.

Профессионалы: Очень хороший в получении взаимодействия с пользователем

вызовы Ajax Получений

очень легко отобразить ввод данных пользователем на базу данных, XML или файл CSV

, полученный тест может быть преобразован в C# для большего количества управления

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

Недостатки:

Выпуск Тестера VS2008 является отдельным SKU от нормального Developer Edition, что означает дополнительные расходы

, можно быть аллергическими на Microsoft ;-)

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

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

у Нас есть несколько стандартных тестовых типов UI:

Тест Меню: Входят в систему как определенный пользователь (или пользовательский тип/роль) и удостоверяются, что все необходимые пункты меню доступны

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

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

Тест Ввода данных: Создают новый recrords из файла данных, очистка база данных, чтобы позволить тестам работать многократно

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

4
ответ дан 27 November 2019 в 18:11
поделиться

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

4
ответ дан 27 November 2019 в 18:11
поделиться

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

, Если Вы делаете это, затем единственный код в UI будет кодом, который вызывает бэкенд, таким образом, просто тестирование бэкенда достаточно.

я использовал ASP NUnit в прошлом (в моем задании), и если бы Вы настаиваете на поблочном тестировании Ваш UI, я настоятельно рекомендовал бы Вам использовать ЧТО-ЛИБО кроме ASP NUnit. Это - боль для работы с, и тесты имеют тенденцию делаться недействительным (бывший должный быть пересмотренными) после даже самые незначительные изменения UI (даже если предметы тестов на самом деле не изменяются).

6
ответ дан 27 November 2019 в 18:11
поделиться

Я - огромный поклонник Селена. При высказывании 'поблочного тестирования сеть ui' не точно точна, поскольку некоторые комментарии упомянули. Однако я действительно нахожу, что Селен невероятно полезен для выполнения подобных принятие и тесты исправности на UI.

А хороший способ начать использует Селен IDE в качестве части Вашей разработки. Т.е., просто имейте IDE, открытый, поскольку Вы разрабатываете и пишете свой тест, когда Вы идете для сокращения dev времени. (Вместо того, чтобы иметь необходимость вручную пройти UI, чтобы перейти к сути дела, где можно протестировать то, что Вы продолжаете работать, просто нажимает кнопку и Селен, IDE будет заботиться об этом для Вас. Это экономит время!)

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

я думаю, как что-либо еще, если Вы приложите усилия к надлежащему изучению инструмента тестирования (например, Селен), то Ваше усилие окупится чрезвычайно. Вы упоминаете, что Ваша компания уже использует Селен, чтобы сделать тестирование UI. Здорово. Работа с ним. Если Вы находите, что Селен трудно использует, или сбивающий с толку, придерживается его. Кривая обучения действительно не все, что погружается, после того как Вы изучаете API немного.

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

17
ответ дан 27 November 2019 в 18:11
поделиться

Мы использовали JSunit некоторое время, чтобы сделать модульные тесты... это не могут быть те же виды тестов, о которых Вы говорите, но это является большим для обеспечения Ваших работ JavaScript, как Вы ожидаете.

Вы выполняете его в браузере, и это может быть установлено в сборке Муравья быть автоматически выполненным против набора браузеров на наборе платформ удаленно (таким образом, можно удостовериться, что код является перекрестным браузером, а также удостоверьтесь, что логика корректна).

я не думаю, что это заменяет Селен, но это дополняет его хорошо.

4
ответ дан 27 November 2019 в 18:11
поделиться

Я использовал WATIR, который довольно хорош. Мне понравился он, потому что это - Ruby и допускает тестирование интерактивности, доступных элементов и парсинга исходного кода. Я не использовал его некоторое время, но я предполагаю, что это поправилось.

Это, предположительно, портируется к Firefox и Safari, но это происходило некоторое время теперь.

3
ответ дан 27 November 2019 в 18:11
поделиться

Molybdenum построен поверх Selenium и имеет некоторые дополнительные возможности.

0
ответ дан 27 November 2019 в 18:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: