Pergunta

Estamos nos estágios iniciais de um grande projeto, e decidiram que alguma forma de teste de UI automatizado é provavelmente vai ser útil para nós, mas ainda não resolvido exatamente como isso vai funcionar ...

O principal objetivo é automatizar a instalação básica e run-through do aplicativo, por isso, se um desenvolvedor faz com que um grande quebra (por exemplo: aplicativo não será instalado, a rede não conecta, a janela não vai exibição, etc) os testadores não tem que perder seu tempo (e ficar irritado por) instalar e configurar uma compilação quebrado

Um objetivo secundário é ajudar os testadores quando se lida com tarefas repetitivas.

A minha pergunta é: Quem deve criar esses tipos de testes? O pressuposto implícito na nossa equipa tem sido que os testadores irá fazê-lo, mas tudo que li na net sempre parece implicar que os desenvolvedores irá criá-los, como uma espécie de 'teste de unidade prolongado'.

Alguns pensamentos:

  • Os desenvolvedores parecem estar em uma posição muito melhor para fazer isso, uma vez que eles sabem o controle ID de, classes, etc, e ter uma melhor imagem muito de como o aplicativo está trabalhando

  • Os testadores têm a vantagem de não saber como o aplicativo está funcionando, e, portanto, pode produzir testes que podem ser muito mais útil

  • Eu escrevi alguns scripts iniciais utilizando IronRuby e White . Isso tem funcionado muito bem, e é poderoso o suficiente para fazer literalmente nada, mas então você precisa ser capaz de escrever código para escrever os testes de interface do usuário

  • Todas as ferramentas de teste de interface do usuário automatizados, tentámos (TestComplete, etc) parecem ser incrivelmente complexa e frágil, e enquanto os testadores pode usá-los, ele leva cerca de 100 vezes mais tempo e eles estão constantemente correr em "complexidade acidental" causado pelas ferramentas de teste de interface do usuário.

  • Os nossos testadores não pode código, e enquanto eles são muito inteligente, tudo o que eu tenho foram olhares engraçados quando eu sugeri que os testadores poderia escrever scripts Ruby simples (mesmo que disse que os scripts são cerca de 100 vezes mais fácil de ler e gravação do que a bagunça mutilado de botões e datagrids que parece ser o padrão para ferramentas automatizadas de teste de interface do usuário).

Eu realmente aprecio qualquer feedback de outras pessoas que já experimentaram de automação da interface do usuário em uma equipe de desenvolvedores e testadores. Quem fez o quê, e isso funcionou bem? Agradecemos antecipadamente!

Editar: O aplicativo em questão é uma aplicação C # WPF "cliente rico", que se conecta a um servidor usando WCF

Foi útil?

Solução

Idealmente, deve ser realmente QA que acabam por escrever os testes. O problema com o uso de uma solução programática é a curva de aprendizagem envolvida na obtenção das pessoas QA até a velocidade com o uso da ferramenta. Desenvolvedores podem certamente ajudar com esta curva de aprendizagem e ajuda o processo de mentoring, mas ainda leva tempo e é um obstáculo ao desenvolvimento.

A alternativa é usar uma ferramenta gráfica simples que faz uma linguagem (e dados de scripts) e permite QA para construir scripts visualmente, se aprofundar nos detalhes mais finos da língua somente quando realmente necessário - desenvolvimento também pode envolver-se aqui também.

As tentativas mais bem sucedidas que eu vi sido definitivamente com o último, mas essa configuração é a parte mais difícil. O selênio tem funcionado bem para aplicações web simples e fios simples através da aplicação. JMeter também (para conversas web scripts para serviços web) tem funcionado bem ... Outra opção que é a de em casa construída de equipamento de teste - uma ferramenta simples por cima de uma linguagem de script (Groovy, Python, Ruby) que permite QA para colocar os dados de teste para a aplicação, quer através de uma interface gráfica ou através de arquivos de dados. Os arquivos de dados podem ser arquivos simples propriedades, ou em casos mais complexos estruturados (algo como YAML ou mesmo Excel) arquivos de dados. Dessa forma, eles podem construir os testes de fumo básicas para começar, e depois expandir isso em vários testes conduzidos de cenário.

Finalmente ... Eu acho que aplicativos rich client são muito mais difíceis de teste, desta forma, mas isso depende da natureza da linguagem e as ferramentas disponíveis para você ...

Outras dicas

Na minha experiência, testadores que código pode vai mudar de emprego para um aumento de salário como desenvolvedores.

Eu concordo com você sobre as ferramentas de teste de interface do usuário automatizadas. Todo lugar que eu trabalhei que era rico o suficiente para pagar WinRunner ou LoadRunner não podia pagar os funcionários para realmente usá-lo. Os preços podem ter mudado, mas naquela época, estas eram na alta de 5 dígitos para marcas de baixo preço de 6 dígitos (pense o preço de uma casa de partida). Os produtos eram difíceis de usar, e geralmente eram mantidos desinstalado em um armário trancado, porque todo mundo estava com medo de ficar em apuros para quebrá-los.

Eu trabalhei ao longo de 7 anos como um desenvolvedor de aplicativos antes de eu finalmente mudou para testes e automatização de testes. O teste é muito mais desafiador do que a codificação, e qualquer desenvolvedor de automação que quer ter sucesso deve dominar testar habilidades.

Algum tempo atrás eu coloquei meus pensamentos sobre matrizes de habilidades em um par de posts.

Se interessado em discutir:

http://automation-beyond.com/ 2009/05/28 / qa-automation-habilidade-matrizes /

Graças.

Eu acho que ter os desenvolvedores a escrever os testes serão dos mais uso. Dessa forma, você pode obter "verificação de quebra" em todo o seu ciclo de dev, não apenas no final. Se você noturno compilações automatizadas, você pode pegar e corrigir erros quando eles são pequenos, antes que elas cresçam em enormes, meio, insetos comedores de homens.

E os testadores propondo os testes, e os desenvolvedores realmente escrevê-lo?

Eu acredito que num primeiro momento, depende em grande medida as ferramentas que você usa.

Nossa empresa utiliza atualmente selênio (Nós somos uma loja de Java).

O Selenium IDE (que registra as ações no Firefox) funciona bem, mas os desenvolvedores precisam erros manualmente corretas que faz contra os nossos webapps, por isso não é realmente apropriado para QA a testes de escrever.

Uma coisa que eu tentei no passado (com algum sucesso), era escrever funções de biblioteca como invólucros para as funções de selênio. Eles lido como Inglês simples:

selenium.clickButton("Button Text")

... mas nos bastidores verificar layout e marcas no botão adequado, tem um id etc.

Infelizmente, isso exigiu muita configurado para permitir fácil escrita de testes.

Eu recentemente tomou conhecimento de uma ferramenta chamada Torça (de Thoughtworks, construída sobre o motor Eclipse), que é um wrapper para Selenium, permitindo testes de estilo inglês simples para ser escrito. Estou esperando para ser capaz de fornecer isso para os testadores, que podem escrever afirmações simples na planície Inglês!

Ele cria automaticamente tocos para novas afirmações também, então os testadores poderia escrever os testes, e passá-las para os desenvolvedores se eles precisam de um novo código.

Eu encontrei a opção mais razoável é ter especificações suficientes tal que as pessoas QA pode stub fora o teste, basicamente, descobrir o que eles querem de teste em cada 'tela' ou em cada componente, e stub aqueles fora. Os topos devem ser nomeados de tal forma que eles são muito descritivo sobre o que eles estão testando. Isso também oferece uma maneira de cristalizar requisitos funcionais. Na verdade, fazendo as exigências desta forma são particularmente fáceis, e as pessoas de ajuda não-técnicos realmente trabalho através das águas barrentas do seu próprio embora processo.

Os canhotos podem ser preenchidos através de uma combinação de QA / pessoas dev. Isso permite que você barata QA trem pessoas a respeito de como escrever testes, e eles tipicamente ingerir-lo, uma vez que promove a segurança no emprego.

Eu acho que depende principalmente do nível de habilidade de sua equipe de teste, as ferramentas disponíveis, ea cultura de equipe com relação a como os desenvolvedores e testadores interagem uns com os outros. Minha situação atual é que temos uma equipe de teste relativamente técnica. Todos os testadores devem ter habilidades de desenvolvimento. No nosso caso, testadores escrever UI Automation. Se a sua equipe de teste não tem essas habilidades não será configurado para o sucesso. Nesse caso, pode ser melhor para os desenvolvedores a escrever-lhe de automação de interface do usuário.

Outros fatores a considerar:

O que outras tarefas de teste estão na placa dos testadores? Quem são seus clientes e quais são suas expectativas quanto à qualidade? Qual é o nível de habilidade da equipe de desenvolvimento e qual é a sua vontade de assumir o trabalho de automação de teste?

-Ron

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