Подтвердить что ты не робот

Selenium Critique

Я просто хотел узнать мнение людей, которые работали с Selenium (http://selenium.openqa.org). У меня большой опыт работы с WaTiN, и я даже написал для него набор записей. Он создавал какой-то хорошо структурированный код, но, будучи поддержанным только мной, кажется, что моя компания почти отказалась от него.

Если у вас был селен, у вас был большой успех?

Я буду использовать .NET 3.5, хорошо ли с ним работает Selenium?

Является ли код чистым или просто списком всех взаимодействий? (http://blogs.conchango.com/richardgriffin/archive/2006/11/14/Testing-Design-Pattern-for-using-WATiR_2F00_N.aspx)

Насколько хорошо работает пакет распределенного тестирования?

Любые другие жалобы или комплименты в системе будет принята с благодарностью!

4b9b3361

Ответ 1

Если вы используете Selenium IDE для генерации кода, то вы просто получите список всех действий, которые будет выполнять selenium. Для меня Selenium IDE - это хороший способ начать или сделать быстрый тест "попробуй и посмотри". Но когда вы думаете о удобстве обслуживания и более читабельном коде, вы должны написать свой собственный код.

Хороший способ добиться хорошего кода selenium - использовать Шаблон объекта страницы таким образом, чтобы код представлял ваш навигационный поток. Вот хороший пример, который я вижу в Coding Dojo Floripa (из Бразилии):

public class GoogleTest {

    private Selenium selenium;

    @Before
    public void setUp() throws Exception {
            selenium = new DefaultSelenium("localhost", 4444, "*firefox",
                            "http://www.google.com/webhp?hl=en");
            selenium.start();
    }

    @Test
    public void codingDojoShouldBeInFirstPageOfResults() {
            GoogleHomePage home = new GoogleHomePage(selenium);
            GoogleSearchResults searchResults = home.searchFor("coding dojo");
            String firstEntry = searchResults.getResult(0);
            assertEquals("Coding Dojo Wiki: FrontPage", firstEntry);
    }

    @After
    public void tearDown() throws Exception {
            selenium.stop();
    }

}


public class GoogleHomePage {

    private final Selenium selenium;

    public GoogleHomePage(Selenium selenium) {
            this.selenium = selenium;
            this.selenium.open("http://www.google.com/webhp?hl=en");
            if (!"Google".equals(selenium.getTitle())) {
                    throw new IllegalStateException("Not the Google Home Page");
            }
    }

    public GoogleSearchResults searchFor(String string) {
            selenium.type("q", string);
            selenium.click("btnG");
            selenium.waitForPageToLoad("5000");
            return new GoogleSearchResults(string, selenium);
    }
}

public class GoogleSearchResults {

    private final Selenium selenium;

    public GoogleSearchResults(String string, Selenium selenium) {
            this.selenium = selenium;
            if (!(string + " - Google Search").equals(selenium.getTitle())) {
                    throw new IllegalStateException(
                                    "This is not the Google Results Page");
            }
    }

    public String getResult(int i) {
            String nameXPath = "xpath=id('res')/div[1]/div[" + (i + 1) + "]/h2/a";
            return selenium.getText(nameXPath);
    }
}

Надеюсь, что поможет

Ответ 2

Я использую Selenium Remote Control для тестирования приложений ASP.Net(это то, что я предполагаю, что вы тоже будете нацелены), и он отлично работает.

Если вы никогда не использовали Selenium, смотрите некоторые из screencasts для использования Selenium IDE. Это даст вам хорошее представление о том, как работает "Селен". IDE - плагин firefox, который в основном позволяет вам разрабатывать быстрые тесты записи и воспроизведения по мере продвижения. Однако для более крупных наборов тестов или для написания действительно поддерживаемых тестов я бы рекомендовал Selenium Remote Control. (IDE потрясающе, если вы только начинаете.)

Selenium Remote Control позволяет использовать ваш любимый язык и модульную систему тестирования для управления веб-браузером для выполнения ваших тестов. Если вам больше всего нравится С#/NUnit, вы можете написать свои тесты таким образом и использовать все нули, которые вам нравятся. (Например, плагин Test-Driven.net). Кроме того, поскольку ваши тесты написаны на высоком уровне, вы можете делать такие вещи, как наследование определенного класса тестов, которые вы можете использовать, чтобы сделать ваш реальный код метода тестирования более чистым. (Или, по крайней мере, так, как я пишу свои тесты. Это позволяет мне тестировать сложные сценарии, которые сохраняют мой счетчик строк метода на разумном количестве.)

Вы упомянули распределенное тестирование. К сожалению, я не нашел способ использовать проект Selenium Grid с помощью NUnit. Selenium Grid позволяет выполнять ваш тестовый пакет по нескольким другим машинам и экземплярам браузера. Таким образом, вместо того, чтобы проходить через 200 тестовых методов один за другим (т.е. Серийно), вы могли бы распределить нагрузку, скажем, четыре экземпляра Grid (т.е. Работающие в четырех разных экземплярах браузеров за раз) на одной машине или на нескольких машинах в зависимости от о том, как распределены вы хотите получить.

Если вы пишете свои тесты на Java или PHP, возможно, вам повезет больше. Я ожидаю, что это будет доступно через NUnit с выпуском NUnit2.5, который будет включать pNUnit для параллельного тестирования.

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

Ответ 3

Я начал работать с Selenium IDE и Selenium Core. Это, безусловно, хорошие инструменты, чтобы вы начали. Но они не очень мощные, поскольку вы можете использовать только командный язык Selenese, Selenium HTML.

Теперь я использую Selenium Remote Control с драйвером Ruby, который позволяет мне использовать то, что предлагает Ruby. Я тестирую множество сред: Windows 2000, XP, Vista, Mac 10.4/10.5 и для каждого из них, Safari 2/3, Firefox 2/3, Internet Explorer 6/7.

Selenium утверждает, что совместим со всеми этими ОС и браузерами, хотя в настоящее время у меня проблемы с Internet Explorer (на мой первый вопрос о StackOverflow об этом, собственно, и есть). Но я не знаю никаких других инструментов, которые являются такими мощными и работают со многими платформами.

Самая большая проблема, с которой я столкнулся с Selenium, - разбор DOM. JavaScript childNodes ненадежен, потому что Safari/Firefox игнорирует пробелы и комментарии узлов, в то время как Internet Explorer этого не делает. XPath в Internet Explorer в 10-20 раз медленнее, чем в SF/FF. innerHTML не всегда надежный в IE.

Ответ 4

Selenium - довольно приличный инструмент, но есть пара вещей, которые нужно учитывать:

  • Selenium IDE и ядро ​​Selenium не имеют 100% одинаковой функциональности. Например, щелчок правой кнопкой мыши поддерживается IDE, но в текущем выпуске ядра его нет. Однако использование более новой версии из своего репозитория решает это.

  • В случае ext js, gwt и т.д. убедитесь, что у вас есть правильные идентификаторы для ваших элементов отображения вместо автоматически генерируемых (случайных).

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

Ответ 5

Я большой поклонник Селена. Тем не менее, одна из основных проблем, которые нужно знать заранее, заключается в том, что Selenium IDE имеет много проблем с всплывающими окнами. Эти проблемы не сохраняются в Selenium RC, но это может сделать развитие немного головной болью.