DevOps Summit Brasil 2016: +10 Ferramentas para Melhorar a Qualidade de seu Software

capa-palestra-devops-summit-brasil

No último final de semana, tivemos a primeira edição do DevOps Summit Brasil 2016. Foi um evento de 2 dias e eu tive o prazer de palestrar no segundo dia sobre o tema que é o título deste post.

Logo após encerrar a minha palestra que apresentou ferramentas como Code Analysis, Code Clone, Code Metrics, IntelliTest, Code Coverage, Selenium, Application Insights e SonarQube, comecei a ter feedbacks de pessoas que estavam muito interessadas em assistir o conteúdo, mas que não puderam porque a sala estava um pouco cheia.

sala-cheia-devops-summit andre-dias-devops-summit

Para que ninguém se sinta prejudicado e mesmo para que os que não puderam comparecer ao evento tenham acesso ao conteúdo, decidi gravar a palestra e disponibilizar aqui no blog.

Abaixo vocês podem ter acesso aos slides e também a gravação da palestra.

Slides

Vídeo

Espero que gostem.

Abraços
André Dias

Semana de Tecnologia Microsoft na Uninove

A Uninove, em parceria com a Microsoft Brasil, está realizando a Semana de Tecnologia Microsoft em suas unidades. Trata-se de um mês inteiro de palestras sendo que a cada semana, um campus diferente recebe o evento.

Nas duas últimas semanas, tivemos o evento passando pelas unidades da Vergueiro e da Vila Maria onde tive a oportunidade de palestrar nas duas.

Palestrar para estudantes do 1º ao 4º ano é um desafio e tanto e foi uma experiência nova pra mim. Afinal, como convencer um aluno do 1º semestre que uma palestra sobre testes manuais, um assunto que grande parte dos profissionais acham chato, pode ser interessante e pode contribuir muito para a carreira dele?

Pela sala cheia até as 22:30 acredito que consegui entregar a mensagem, ou pode ser também que o pessoal queria demais os brindes 🙂 Mas o fato é que achei muito bacana a iniciativa da faculdade de colocar frente a frente alunos e profissionais do mercado falando, não só sobre tecnologia e ferramentas, mas também carreira, mercado de trabalho e dicas de conteúdos gratuitos para especialização. Infelizmente, não tive toda essa oportunidade quando me formei.

Abaixo, podemos ver os slides das palestras e vídeos que cobrem os assuntos que foram abordados nos dois eventos.

Slides

Testes Manuais com Microsoft Teste Manager

Testes Exploratórios com Teste Manager

Espero que gostem.

Abraços e até a próxima,
André Dias

Vídeo: Teste Exploratório com Microsoft Test Manager 2012

Ano novo, blog novo, canal no Youtube novo e conteúdo novo sobre novas ferramentas. E nada melhor para estrear o canal no Youtube do que apresentar uma das funcionalidades mais fantásticas do Microsoft Test Manager 2012. A funcionalidade de Testes Exploratórios.

Imagine o seguinte cenário: Você chega para trabalhar e tem uma nova aplicação para testar. Quando você vai procurar os requisitos, você não os encontra. Você procura por casos de testes e nada. E aí? Bom, você consegue o telefone do Analista de Negócios, bate um papo rapidamente com ele, entende a dinâmica da aplicação e pronto. É isso que você tem de informação para planejar e realizar os seus testes.

É neste momento que a funcionalidade de Teste Exploratório se destaca. Ela permite que você comece a utilizar o Test Manager, porém sem a necessidade de ter um Plano de Teste formal, uma Suíte de Testes bem definida ou ainda Casos de Testes bem detalhados. Porém, você continua tendo todos os recursos como rastreabilidade, evidências, abertura de bugs de forma integrada e você tem ainda a possibilidade de gerar casos de testes a partir de um Bug encontrado. Sem dúvida uma ferramenta fantástica que é o sonho de consumo de qualquer testador.

Confira abaixo um vídeo bem curtinho de apenas 15 minutos onde todos esses recursos são explorados.

Abraços e até a próxima

Tudo o que você precisa saber sobre testes no Visual Studio – Parte 3

Dando continuidade à série de vídeos sobre testes com o Visual Studio 2010, acabamos de publicar a 3a. parte na Lambda3 TV. Neste terceiro episódio, abordamos os seguintes assuntos:

  • Microsoft Test Manager
    • Criação e configuração de planos de teste
    • Criação de test suites a partir de user stories
    • Criação de casos de teste
    • Execução de casos de testes com o test runner
    • Criação de casos de teste com diferentes configurações de browser
    • Execução de Casos de Testes utilizando FireFox
    • Geração de bugs a partir do test runner
    • Anexo automático de evidências como vídeos, screenshots, Intellitrace, event log e system information nos bugs.
    • Gerenciamento de bugs e casos de testes
    • Identificação e verificação de bugs corrigidos
    • Identificação e re-teste de casos de testes impactados
    • Criação de casos de teste com fonte de dados (parâmetros)
    • Databind de casos de teste com a aplicação
    • Execução de casos de testes com parâmetros diferentes
  • Coded UI
    • Geração de teste automatizado a partir de um caso de teste do Test Manager
    • Inclusão de assertions
    • Geração de código de teste do zero
    • Execução de um caso de teste complexo (cenário de compra de produto)
  • Build (apenas utilização)
    • Integração Contínua
    • Deployment automático no IIS

Se você perdeu os últimos dois episódios, não deixe de acessá-los:

Abraços e até a próxima
André Dias

Tudo o que você precisa saber sobre testes no Visual Studio – Parte 2

Dando continuidade à série de vídeos sobre testes com o Visual Studio 2010, acabamos de publicar a 2a. parte na Lambda3 TV. Neste segundo episódio, abordamos os seguintes assuntos:

  • Testes de Métodos Privados
    • PrivateObject
    • PrivateType
  • Asserts
    • Assert
    • CollectionAssert
    • StringAssert
  • TraceContext
  • Atributos Inicialização/Finalização
    • [AssemblyInitialize]
    • [AssemblyCleanup]
    • [ClassInitialize]
    • [ClassCleanup]
    • [TestInitialize]
    • [TestCleanup]
  • Ordered Test
  • TDD (Test Driven Development)
  • Refactoring

Se você perdeu o episódio anterior, não deixe de assistí-lo.

Gostaria de ver outros assuntos sobre testes ou algum outro conteúdo completamente diferente? Deixe seu comentário abaixo.

Até a próxima,
André Dias

Tudo o que você precisa saber sobre testes no Visual Studio – Parte 1

Acabamos de inaugurar mais um canal de comunicação entre a Lambda3 e a comunidade, a Lambda3 TV. Trata-se de um canal no YouTube, onde iremos publicar não só conteúdo técnico, mas também treinamentos gratuitos, entrevistas entre outros conteúdos relevantes para a comunidade.

Para inaugurar este canal, acabei de publicar um vídeo que faz parte de uma série onde falarei sobre diversas ferramentas e frameworks de testes que estão presentes na plataforma Visual Studio ALM. Confira:

 

Abraços e até a próxima,
André Dias

Customizando o template de Teste Manual do Visual Studio 2008

Ultimamente temos visto um grande crescimento na adoção de metodologias ágeis e com isso os Testes Unitários e TDD (Test Driven Development) viraram assuntos da moda. Sem dúvida, isso tem colaborado muito para o aumento da qualidade e do sucesso dos projetos que entregamos, porém, temos um tipo de teste que anda meio esquecido, o bom e velho teste manual.

Isso mesmo, aquele teste sem nenhum nível de automação, realizado por um testador que muitas vezes não conhece nada sobre programação, mas que tem aquele incrível dom de encontrar defeitos como ninguém. Uma simples navegada pelo sistema e voilà, diversos defeitos encontrados que não foram identificados pelos testes automatizados. Podem ser defeitos de acessibilidade, defeitos de integração, ou mesmo testes de cenários que seriam difíceis de reproduzir automaticamente como a perda de uma conexão de rede ou um teste de segurança.

Por esses e outros motivos que ainda é fundamental incluirmos os testes manuais na nossa disciplina de testes dentro do ALM (Application Lifecycle Management) e para quem trabalha com o Visual Studio 2008 Test Edition ou Team Suite isso é muito simples, basta você criar um projeto de teste e adicionar um teste manual e pronto. O Visual Studio vai abrir um template em um editor de texto para você codificar o seu Test Case e gerenciá-lo como se fosse um teste unitário.

O template pedirá pra você dar um nome, uma descrição, preencher o objetivo e os passos necessários para a execução do teste. É um template simples, em inglês e bem abrangente. Porém, pode ser que ele não atenda a sua necessidade ou que você já tenha um template no seu processo e que você gostaria de utilizá-lo. Então chega de blá blá blá e vamos ver como fazer isso na prática.

Criando o template

  1. A forma mais fácil de criar um novo template é editar um já existente, então acesse o diretório de templates do Visual Studio localizado em C:Program FilesMicrosoft Visual Studio 9.0Common7IDEItemTemplatesCSharp1033 e copie o arquivo ManualTestWordFormat.zip.
  2. Descompacte o arquivo zip e você verá dois arquivos ManualTest.mht e ManualTest.vstemplate. Renomeie-os para algo como TesteManualFormatoWord.mht e TesteManualFormatoWord.vstemplate
  3. Abra o arquivo TesteManualFormatoWord.mht no Word e defina o seu template da forma que achar melhor. 
  4. Em seguida edite o arquivo TesteManualFormatoWord.vstemplate em algum editor XML ou mesmo no notepad. Os campos que você precisará alterar são: Name, Description, DefaultName, TemplateID (deve ser único) e ProjectItem
  5. Remova o elemento TestProjectData
  6. Salve-o e compacte os dois arquivos em um arquivo .zip. Vale lembrar que os arquivos devem estar na raiz do zip.

Registrando o novo template de manual test no Visual Studio

Agora que temos o template redefinido, basta seguirmos alguns passos para publicamos o template no Visual Studio.

  1. Copie o arquivo para C:Program FilesMicrosoft Visual Studio 9.0Common7IDEItemTemplatesCSharp1033.

    Nota: Veja que você está colocando o arquivo em uma pasta de template específica para C#, logo o template só estará disponível se o projeto de teste for criado para esta linguagem. Para disponibilizar o template para outras linguagens, copie o template para as pastas das respectivas linguagens, no caso do Visual Basic é C:Program FilesMicrosoft Visual Studio 9.0Common7IDEItemTemplatesVisualBasic1033.

  2. Será necessário alterar também o elemento ProjectType do arquivo TesteManualFormatoWord.vstemplate caso você queria portar o template para outras linguagens. 
  3. Feche o Visual Studio caso ele esteja aberto e uma vez que o template esteja no local correto, precisamos acessar o prompt de comando do Visual Studio em Start -> All Programs -> Microsoft Visual Studio 2008 -> Visual Studio Tools -> Visual Studio 2008 Command Prompt e digitar o seguinte comando: devenv /installVSTemplates

Se tudo funcionou corretamente, quando você for adicionar um novo teste no Visual Studio, verá uma janela como a janela abaixo:

VS2008 New Test Window

E em seguida visualizará o seu template customizado conforme a seguinte imagem:

VS2008Manual Test Customized

Como vocês podem ver, eu aproveitei o post para traduzir o template original do Visual Studio então se você quiser registrá-lo na sua IDE, basta baixá-lo aqui e seguir os procedimentos acima.

Abraços e até a próxima!
André Dias

Pesquisa sobre Testes Unitários

O portal The Server Side .NET fez uma pesquisa bastante interessante sobre a utilização dos testes unitários. A pesquisa foi realizada em dois momentos, o primeiro em Fevereiro de 2006 e um outro agora em Outubro de 2008 e levantou basicamente se testes unitários são executados e de que forma eles são executados. Confira o resultado:

Respostas 2008 2006
Testes unitários não são executados 17% 13%
O Teste unitário é informal 40% 46%
O casos de testes são documentados 9% 11%
O casos de testes e a execução são documentados 14% 16%
Utilizamos a abordagem de TDD 20% 14%

A pesquisa chegou a conclusão de que as pessoas que já faziam testes unitários, evoluíram para uma abordagem de TDD (Test Driven Development), porém as pessoas que não praticam o teste unitário possuem diversas razões, entre elas o simples fato de sentirem que o teste unitário não agrega nenhum valor ao negócio ou até mesmo por achar essa prática difícil.

Se você faz parte desse grupo de pessoas que não praticam testes, seja ele unitários ou não, pelos motivos citados acima, convido-o a conhecer um pouco do Visual Studio Team System 2008 Test Edition.

O VSTS Test Edition permite que você faça com, muita facilidade, testes unitários, testes web, testes de carga, verificação de cobertura de código, gerenciamento de test cases e muito mais. Com isso, a desculpa de que fazer teste é difícil não vale mais, mas se você ainda acha que isso não agrega valor ao seu negócio, comece a avaliar os relatórios que são gerados baseados nesses dados coletados e você conseguirá ver a qualidade do seu projeto sendo apresentada em gráficos em tempo real.

Infelizmente, tenho apenas um post publicado sobre o assunto, este falando sobre testes unitários com code coverage, mas em breve pretendo falar um pouco mais sobre essa fantástica ferramenta.

Até a próxima e bons testes.
André Dias

Teste Unitário e Code Coverage com Visual Studio

Ultimamente tenho visto muita gente falar sobre testes unitários, metodologias ágeis, garantia de qualidade, mas implementar o tal do teste unitário que é bom mesmo, são poucas empresas que conheço que fazem isso de verdade.

Quando digo que são poucas, não estou me refirindo a você abrir o Visual Studio, criar um projetinho de teste e criar um método simples para testar apenas o “caminho feliz” do seu método, estou falando de você planejar os seus testes unitários antes e criar vários métodos de testes para cobrir todas, ou pelo menos a maioria, das situações que o seu método possa executar.

Isso engloba em testar range de valores, parametros opcionais, se as exceções são levantadas corretamente e por aí vai. Se for preciso utlizar Mock Objects, ótimo, vamos fazer isso também, mas é extremamente importante que você faça métodos de testes que sejam eficientes e não apenas para dizer que está utilizando testes unitários na sua aplicação.

Um recurso muito útil presente no Visual Studio (edições pra Developer e Tester) é o Code Coverage. Esse recurso ligado junto com os testes unitários permite ao usuário acompanhar visualmente quais trechos do código foram testados ou não.

Vamos ver um exemplo de como ele funciona:

1. Vamos criar um projeto do tipo Class Library e adicionar uma classe Calculadora como o exemplo abaixo:


public class Calculadora
{
public static float Dividir(float d1, float d2)
{
if (d2 == 0)
{
throw new DivideByZeroException();
}
else
{
return d1 / d2;
}
}

public static int Soma(int a, int b)
{
return a + b;
}
}

2. Em seguida , vamos adicionar um projeto do tipo Test Project e adicionar uma classe chamada CalculadoraTest com o seguinte código:


[TestClass]
public class CalculadoraTest
{
[TestMethod]
public void DivisaoComumTeste()
{
float resultado = Calculadora.Dividir(6, 3);
float esperado = 2;

Assert.AreEqual(esperado, resultado);
}
}

Veja que a classe de teste possui apenas um método e não está cobrindo a situação de divisão por zero, e nem o método Soma. Isso não quer dizer que o método não funcione, mas ele não foi testado.

Se rodarmos esse teste, teremos o seguinte resultado:

Até aí nada de muito interessante, a janela mostra apenas que o teste foi executado com sucesso. O grande barato é quando ligamos o Code Coverage o colamos os testes unitários para rodar junto.

Para habilitar o Code Coverage, vá no arquivo localtestrun.testrunconfig da sua solução e você verá a seguinte tela:

Marque o Assembly CodeCoverageSample.dll e mande rodar os testes novamente. Quando terminar os testes, acesse o menu Test/Windows/Code Coverage Results e veja que coisa linda 🙂

O Visual Studio te dá a porcentagem de código testado agrupados por métodos, classes, namespaces e assemblies e além disso marca no código por quais trechos ele passou ou não.

Dessa forma fica muito fácil visualizar que temos que escrever mais métodos de testes para testar a situação da divisão por zero e para garantir que o método de soma está funcionando corretamente.

Agora que já conhecemos o Code Coverage, é só definirmos uma meta para o nosso projeto (80, 90, 100% de cobertura) e brigar com o seu gerente pra ele alocar tempo para você criar métodos de testes que cubram todo o seu código 🙂

Um grande abraço

André Dias