Gostaria de tentar implementar algum TDD em nossos aplicativos da web para reduzir regressões e melhorar a qualidade da versão, mas não estou convencido de quão bem os testes automatizados podem ser executados com algo tão macio quanto os aplicativos da web.
Eu li e experimentei TDD e testes de unidade, mas os exemplos são funcionalidades "sólidas" e bastante simples, como conversores de moeda, e assim por diante.
Existem recursos que podem ajudar no teste de unidade de sistemas de gerenciamento e publicação de conteúdo? Que tal testar a unidade de um carrinho de compras / loja (produtos físicos e online)? AJAX?
Pesquisando no "Desenvolvimento Orientado para Testes na Web", apenas me traz artigos antigos de vários anos atrás, que cobrem os mesmos exemplos de funções semelhantes a calculadoras ou discussões sobre por que o TDD é melhor do que qualquer coisa (sem exemplos).
fonte
Respostas:
Isenção de responsabilidade: não criei aplicativos da Web nem testei aplicativos da Web. A seguir, são apenas informações que eu absorvi em minhas caminhadas aleatórias na esfera da informação.
Construa seu aplicativo da Web de maneira a poder testar as regras de negócios isoladamente. Se você se encontra testando regras de negócios por meio da interface com o usuário, talvez seja hora de pensar em redesenhar.
Quando se trata de testar a interface do usuário, substitua suas regras de negócios por implementações simuladas que respondem de maneiras previsíveis.
As duas regras acima foram retiradas da palestra de Bob Martin no RailsConf 2010 . A conversa não é sobre TDD e a seção em que ele menciona os testes é curta e está no meio.
Existem ferramentas como JsUnit , JSSpec , YUI Test para testar JavaScript e Selenium e Watir para testar UI.
A Pragmatic Bookshelf tem alguns livros que cobrem o teste de aplicativos da web. Uma lista de livros marcados com Testing está em http://www.pragprog.com/categories/design . Os livros de teste de aplicativos da Web Pragmatic Bookshelf são focados principalmente em Ruby e Rails, mas devem ser genericamente aplicáveis.
fonte
O JavaScript é um livro muito bom de Christian Johansen, o desenvolvedor por trás do Sinon.js e Buster.js , que aborda assuntos como (retirado do site):
Atualmente, usamos o Sinon.js com o Mocha, mas estamos prontos para mudar para o Buster.js, pois seus recursos são realmente legais!
fonte
Em um projeto em que trabalhei recentemente, o desenvolvedor principal decidiu usar o Unity para simplificar a simulação e o TDD em um aplicativo da Web grande - eu acho que o uso do Unity geralmente será acompanhado pelo TDD é um aplicativo da Web.
Investigar o teste de unidade CMS provavelmente levará a um beco sem saída, porque simplesmente não há uma coisa razoável para zombar. Não vejo o que pode ser testado sem zombar do tráfego http das páginas - e nesse ponto o teste tem pouco valor.
Eu acho que uma regra prática útil para aplicativos da Web é que, se ele pode usar uma simulação para reduzir a complexidade, provavelmente pode ser testado em unidade.
Portanto, em um aplicativo da Web, você pode simular seu banco de dados para testar unidades diferentes partes da camada ou modelo de acesso a dados; você pode simular a entrada do usuário para testar a unidade ou a interface do usuário e assim por diante.
fonte
Eu escrevi um livro sobre TDD para desenvolvimento web com Python + Django. abrange TDD, tanto com testes de ponta a ponta / funcionais (selênio) quanto com testes de "unidade" de nível inferior. Abordo também práticas modernas de desenvolvimento, como integrar o git ao seu fluxo de trabalho, implantar em um servidor e automatizar e testar isso, integração contínua, zombaria e isolamento de teste e muito mais:
http://www.obeythetestinggoat.com/
(ou http://shop.oreilly.com/product/0636920051091.do )
fonte