NAnt com testes de integração de banco de dados e integração, eventualmente, contínua
-
03-07-2019 - |
Pergunta
Eu tenho vindo a explorar diferentes estratégias para a execução de testes de integração dentro de alguns scripts de construção Nant. Normalmente, um número de diferentes scripts são acorrentado em uma construção monolítica que tem alvos separados: staging (construir uma versão de teste, como compilação), construção (apenas construir as coisas), integração (construir o material e executar os testes de integração). Isso funciona razoavelmente bem, o destino de compilação leva cerca de um terço do tempo para executar como o alvo a integração e não é dolorosamente longo para que eu não me vejo inclinado a executá-lo com freqüência.
O alvo integração, por outro lado leva tempo suficiente para que eu não quero fazê-lo muitas vezes - de preferência antes que eu estou pronto para fazer um deploy. Será que isso parece ser uma estratégia razoável? IOW, estou fazendo certo?
O plano é eventualmente passar esse projeto para integração contínua. Eu sou novo para a coisa toda de integração contínua, mas eu acho que entendo o conceito de "quebrar a compilação" assim que eu estou querendo saber quais são algumas boas práticas para pegar a fim de fazer mais do mesmo?
Qualquer boas fontes de lendo sobre este assunto seria apreciada também. Obrigado!
Solução
Sim, você está no caminho certo. O que você precisa fazer agora é ligar o seu alvo nant para um processo automatizado. Eu recomendo usar uma ou outra equipe da cidade ou Cruise Control para como sua ferramenta de CI. Depois de ter sua configuração do servidor automatizado você pode executar a sua construção e testes de unidade em cada check-in (Integração Contínua). Seus testes de integração poderia então executar durante a noite ou no fim de semana, já que normalmente levam mais tempo para ser executado. Se os testes de integração for bem sucedido, então você pode ter um trabalho que vai implantar em alguns QA ou outro servidor.
Outras dicas
Parece que você está 99% do caminho até lá. Meu conselho é apenas mergulhar e começar a fazê-lo. Você vai aprender muito mais pelo fato de tomar a mergulhar e fazê-lo do que pelo pensamento sobre se você está fazendo certo.
Nossa empresa está usando atualmente CruiseControl e eu, pessoalmente, acho que é ótimo.
Veja este tópico relacionado O que é um processo de construção bom CI / a>
Você está no caminho certo. Se você estiver usando uma ferramenta CI decente, você deve ser capaz de definir cada configuração como um projeto separado que aciona o próximo passo na cadeia ... ou seja sucessfull testes disparadores de compilação que implantação gatilho que desencadeia a integração etc
Desta forma o seu ealiest "break" pára a linha por assim dizer.
Nós usamos CruiseControl para construir, unidade-teste, configuração e implantação, testes de integração são executados e cobertura de código, testes de aceitação executados, e um pacote para a liberação. Isto é com um sistema de oito ou mais serviços da Web, e uma dúzia ou mais bases de dados, todas com a configuração interralated e dependências de implantação com em vários ambientes com diferentes configurações (anythin de caixas individuais para caixas redundent para cada componente)