Pergunta

Eu só queria algumas opiniões de pessoas que foram executados selênio ( http://selenium.openqa.org ) eu tive muita experiência com WatiN e até mesmo escreveu uma suite de gravação para ele. Eu tive que produzir algum código bem estruturado, mas somente sendo mantido por mim parece que minha empresa todos, mas abandonou. Se você executar o selênio você teve muito sucesso? Vou estar usando .NET 3.5, faz Selenium trabalhar bem com isso? É o código produzido limpo ou simplesmente uma lista de toda a interação? ( http: / /blogs.conchango.com/richardgriffin/archive/2006/11/14/Testing-Design-Pattern-for-using-WATiR_2F00_N.aspx ) Como bem o distribuídos testando justo suíte?

Quaisquer outras queixas ou elogios sobre o sistema seria muito apreciada!

Foi útil?

Solução

Se você estiver usando Selenium IDE para gera código, então você só obter uma lista de todas as ações que executa selênio vontade. Para mim, Selenium IDE é uma boa maneira de iniciar ou fazer um rápido "tentar e ver" test. Mas, quando você pensa sobre manutenção e código mais legível, você deve escrever seu próprio código.

Uma boa maneira de alcançar um bom código de selênio é usar a Página Objecto Padrão de uma forma que o código representa o fluxo de navegação. Aqui está um exemplo bom que eu vejo em Coding Dojo Floripa (do Brasil):

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);
    }
}

Espero que ajude

Outras dicas

Eu estou usando Selenium Remote Control, a fim de testar aplicativos ASP.Net (que é o que eu estou supondo que você vai ser targetting bem), e ele funciona muito bem.

Se você nunca usou o selênio, assistir a alguns dos screencasts para usando Selenium IDE. Isto lhe dará uma boa idéia de como funciona 'Selenium'. O IDE é um plugin firefox que basicamente permite que você desenvolva testes record-and-play rápidas que você vá. Para conjuntos de testes maiores ou para escrever testes realmente sustentáveis, porém, eu recomendo Selenium Remote Control. (O IDE é ótimo se você está apenas começando um começo embora.)

Selenium Remote Control permite que você use o seu quadro linguagem e testes unitários favorito para dirigir um navegador web a fim de executar os testes. Se você está mais confortável com C # / NUnit, você pode escrever seus testes dessa forma e utilizar todas as guloseimas NUnit que você gosta. (Por exemplo, o Test-Driven.net plug-in). Também, desde que os testes são escritos em uma linguagem de alto nível, você é capaz de fazer coisas como herdam de uma classe de teste particular que você pode usar para fazer o seu código de método de teste muito mais limpo real. (Ou pelo menos isso é o jeito que eu escrever meus testes. Deixa-me testar cenários complexos que mantêm o meu método de teste de linha de contagem em um número razoável.)

Você menciona distribuídos testes. Infelizmente eu não encontrei uma maneira de usar o projeto da selênio Grade com NUnit. Selênio grade permite que você execute o seu conjunto de testes ao longo de vários diferentes máquinas e instâncias do browser. Então, ao invés de correr através digamos 200 métodos de ensaio um após o outro (isto é, em série), você pode distribuir a carga ao longo de dizer quatro instâncias grade (ou seja, correndo em quatro instâncias diferentes navegadores ao mesmo tempo) em uma única máquina ou máquinas múltiplas dependendo sobre como distribuída você deseja obter.

Se você escrever seus testes em Java ou PHP, porém, você poderia ter melhor sorte. Eu estou esperando que este seja acessível via NUnit com o lançamento do NUnit2.5 que incluirá pNUnit para o teste paralelo.

Se você tem alguma dúvida sobre o selênio, apenas esclarecer sua pergunta original e eu vou ser feliz para tentar ajudá-lo. (Selênio é apenas uma daquelas ferramentas que eu uso todos os dias, então eu gosto de ajudar para obter novas pessoas iniciados com ele ..)

Eu comecei com Selenium IDE e selênio Core. Essas são definitivamente boas ferramentas para você começar. Mas eles não são muito poderoso, já que você só pode usar Selenese, do Selenium comando-by-comando linguagem baseada em HTML.

Agora eu uso Selenium Remote Control com o driver Ruby, o que me permite utilizar o que ofertas Ruby. Eu testar muitos ambientes:. Windows 2000, XP, Vista, Mac 10.4 / 10.5, e para cada um daqueles que se aplicam, Safari 2/3, Firefox 2/3, Internet Explorer 6/7

Selenium reivindicações para ser compatível com todos os OS de e navegadores, embora eu estou tendo problemas atualmente com o Internet Explorer (a minha primeira pergunta sobre StackOverflow é sobre isso, na verdade). Mas eu não sei de quaisquer outros instrumentos que são este poderoso e trabalha com tantas plataformas.

O maior problema que eu tive com selênio é a análise DOM. childNodes de JavaScript não é confiável porque Safari / Firefox ignorar espaços em branco e nós de comentário, enquanto o Internet Explorer não. XPath no Internet Explorer é 10-20 vezes mais lento do que em SF / FF. innerHTML nem sempre é confiável no IE.

O selênio é ferramenta bastante decente, mas há algumas coisas a observar:

  • Selenium IDE e núcleo de selênio não compartilham 100% de mesma funcionalidade. Por exemplo botão direito do mouse é suportado pelo IDE, mas liberação do núcleo atual não tem isso. No entanto, usando uma versão mais recente de seus resolve repositório isso.

  • Em caso de js ext, gwt etc ter certeza de que IDs apropriados para seus elementos, em vez dos gerados automaticamente (aleatório) de exibição.

  • A manutenção de casos de teste. Já vi casos em que um grande esforço foi colocado em testes de selênio e boa cobertura. Mais tarde, os testes começaram a falhar como a pessoa criá-los estava ocupado com outras tarefas e ninguém mais queria tocá-los. Mas isso foi questão com a gerência, não selênio.

Eu sou um grande fã de selênio. Uma pegadinha principal que é bom saber sobre antes do tempo, porém, é que Selenium IDE tem um monte de problemas com janelas pop-up. Estes problemas não persistem em Selenium RC, mas pode tornar o desenvolvimento de um pouco de dor de cabeça.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top