Pergunta

Nós usamos testes para verificar a funcionalidade da nossa aplicação web automatizado. A fim de fazer afirmações em casos de teste menos complicado e mais flexíveis, estamos considerando a introdução de 'testids', isto é, IDs no HTML de marcação que ajuda testcases encontrar e verificar os elementos da página. Além disso, esses testids permitiria testes de integração mais específicos que estão atualmente impossível devido aos dados limitados sobre as páginas.

No entanto, aqui é o que nos faz hesitar:

  • introduzindo IDs de teste meios mudando a testada para o teste de
  • segurança - nós iria revelar IDs de objeto de domínio internos e outras informações que de outra forma não seriam visíveis na página
  • padrões - dependendo de como nós colocamos os testids na marcação que provavelmente violam o uso semântico de um elemento ou atributo (por exemplo, 'id' ou atributos 'classe', outros elementos HTML destina , etc.)
  • interferência - testids poderia interferir com o código do aplicativo
  • desempenho - testids são marcação desnecessário (para o usuário) e aumentar o tamanho página (somente significativo sobre grandes páginas)

Limitando testids para teste / ensaio HTML não parece ser uma boa idéia, porque nós obviamente quer código de teste que serão utilizados na produção e não queremos que nossos test / ambiente de teste para se comportar de forma diferente. Na verdade, atualmente executar partes de nossas suites de teste contra o sistema ao vivo após autorização.

Você acha que testids são uma boa idéia e se assim como você colocá-los na marcação?


Alguns marcação de exemplo para demonstrar o que estou falando:

<!-- this test id allows an integration test to verify that
  the carrot 188271 is in fact green but exposes the id to the user -->
<tr id="testid-carrot-id-188271">
    <td class="color">green</td>
    <td class="size">doesn't matter</td>
</tr>
Foi útil?

Solução

Eu diria que os benefícios do teste mais fácil e melhor superam os riscos percebidos. Eu suponho que você está falando sobre algo como o seguinte: adicionando id = 'resultDetail' a um elemento detalhes resultado na sua página de modo que é mais fácil encontrar para o teste automatizado. Eu francamente não vejo o mal nisso. Se eu estou tomando uma visão excessivamente simplista, talvez você poderia jogar um pouco de marcação de amostra para nos dar uma idéia melhor do que você está considerando.

Depois de ter visto a sua marcação de exemplo, eu não vejo nenhum problema em ter o id disponível para o usuário. Muitas aplicações expõem ids de domínio. Por uma questão de fato, na minha experiência, muitas vezes esses IDs de domínio são uma parte integrante da interface do usuário - muitas vezes ids será links que você pode clicar para obter mais detalhes, para editar, apagar, etc ...

Outras dicas

Eu nunca deixaria código destina-se a testar em um site ao vivo. Isso é apenas mau princípio e convidando hacking.

Enquanto seus IDs de teste são formatados de modo que eles não colidir com outros IDs na página (IDs devem ser únicos) e não estão sendo referenciado por qualquer código ao vivo (se você não pode determinar que há algo maior errado aqui), então não deve haver qualquer diferença no comportamento entre o local de teste com os IDs e o site viver sem eles.

Na minha opinião, a melhor prática é a concepção de tal forma que seu código de teste executa corretamente em seu site desenvolvimento e você sabe que a remoção não prejudicar o seu site ao vivo. Eu ficaria preocupado se o meu site precisava ter a versão ao vivo testados regularmente para fazer certo se ele está funcionando.

Você considerou usando outra coisa para identificar elementos, como XPath? Eu não tenho nenhuma idéia de como dinâmica de suas páginas são, mas XPath pode ser bastante específico em que elemento que deseja.

Pessoalmente, eu não iria inchar o HTML de produção com ids de teste.

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