Você está na página 1de 5

Introduo a Testes Automatizados: (*) Quem sou eu?

(@thiagoghisi) - O que me habilita para falar um pouco de teste s para vocs? 2003 - SENAI e o Poder da Programao em Pascal. 2004 - Robocod Java 2005 - Tcnico em Informtica com Habilitao em Redes de Computadores 2006 - Cincia da Computao (Unisul) 2006/1 - Tcnico de Informtica (Tractebel Energia/Consult System) 2007/1 - PUIC: Testes, CMMI e Extreme Programming 2007/2 - Sequencial Java (Unisul) 2007/3 - Techpeople 2008 - Testes Automatizados na prtica. (testNG, MockObjects, DbUnit, Fit, Fitnesse, Selenium, JMeter) 2009/1 - SCJP 6.0 2009/2 - giles 2009 2010/1 - Agile Brazil 2010 2010/2 - TCC: Shell para desenvolvimento de Sistemas Especialistas na We b. (0% de cobertura de Testes Automatizados) //Estou at hoje para disponibilizar o fonte 2010/3 - MPS.BR Nvel F (Techpeople) 2011/1 - CMMI ML2 (Techpeople) 2011/2 - Bacharel em Cincia da Computao (Unisul) 2011/3 - FISL 12 2011/4 - DojoTuba 2011/5 - Consultor MPS.BR 2011/6 - TDC Floripa 2011/7 - QCon SP (*) Enquete para um melhor direcionamento da apresentao: - Quem j ouviu falar e sabe o que so Testes Automatizados? - Quem j usou algum tipo de Teste Automatizado em alguma aplicao que desenv olveu profissionalmente? - Quem FREQUENTEMENTE faz Testes Automatizados? - Quem SEMPRE faz Testes Automatizados? - Quem faz TDD do incio ao fim? (*) Testes automatizados/Automao de teste so/: * Uso de software para a controlar a execuo do teste de software, COMPARAN DO RESULTADOS ESPERADOS COM OS RESULTADOS REAIS. * A automao o processo de escrita de uma programa de computador para reali zar o teste. * A automao de teste pode ser comeada a partir de um processo manua l de teste j estabelecido e formalizado.

(*) Porque fazer Testes Automatizados? * Apesar do teste manual de software permitir encontrar vrios erros em um a aplicao, um trabalho maante e consome bastante tempo. * As vantagens da automao tornam-se mais evidentes para os casos dos produ tos que possuem longa vida no mercado, porque mesmo pequenas correes no cdigo da ap licao podem causar a quebra de funcionalidades que antes funcionavam.

* Mas o aspecto mais crtico deste cenrio o efeito bola de neve . Como necess o muito esforo para executar todo o conjunto de testes manuais, dificilmente a ca da correo de um erro, a bateria de testes ser executada novamente como seria desejve l. M * Testes automatizados desempenham um papel importantissmo na refatorao. El es so utilizados para cada passo simples da refatorao que for executado, seja verif icado se todo o sistema ainda continua ntegro, at a refatorao ser totalmente concluda . Esta medida de segurana garante que os desenvolvedores ao refatorar, correro um risco bem menor de introduzir erros no software. (*) Relao entre Testes Automatizados, Qualidade Interna e Refactoring (*) Principais/Conceituao tipos de Testes Automatizados: (*) CAIXA-PRETA: - Aplicvel em todas as fases/tipos de Testes. - Teste de caixa-preta um teste de software para verificar a sada dos dados usando entradas de vrios tipos. Tais entradas no so escolhidas conforme a estrutura do programa. Quanto mais entradas so fornecidas, mais rico ser o teste . (*) CAIXA-BRANCA: - Aplicavl - Difere do o sistema desconsiderada, istema. - O teste mas a execuo ignora esse - Cobertura nca somente quando se conhece o algoritmo teste de caixa-preta, em que a perspectiva interna d sendo testadas e mensuradas somente as interfaces do s modelado conhecendo-se a estrutura interna do sistema, aspecto, como na caixa-preta. de Testes totalmente baseada em principios Caixa Bra

(*) Testes de Unidade (Fase 1) - O primeiro tipo de teste que se deve fazer so os de unidade. - Uma unidade pode ser entendida como o menor trecho de cdigo de um sistema que pode ser testado. Normalmente um mtodo. - O teste de uma unidade o tipo mais importante de teste para a grande maioria das situaes, j que ele que deve testar se um algoritmo faz o que deveria ser feito e garantir que o cdigo encapsulado por uma unidade deve produzir o efeito colateral esperado - Outra vantagem importante que o teste de unidade focalizado e m um trecho especfico do cdigo, desta forma os erros encontrados so facilmente loca lizados, diminuindo o tempo gasto com depurao. (*) TDD Quer aprender a fazer TDD? --> DojoTuba - XUnit (API) --> JUnit (Implementao para Java) --> No tem desculpa para no usar em outras linguagens - MockObjects, realmente so necessrios? (*) Testes de Integrao

- JUnit com DbUnit e totalmente ou quase integralmente sem Mocks (*) Testes de Aceitao ou de Interface

- Visa a verificar se o que foi implementado atende corretamente ao que o cliente esperava, ou seja, validar o sistema do ponto de vista do cliente - Estes testes so realizados atravs da interface de usurio, que pod e ser, por exemplo, um console textual, uma interface de uma aplicao local ou uma interface Web - Para se testar uma funcionalidade necessrio a simulao das aes de u usurio interagindo com o programa, isto , um clique do mouse, uma tecla pressiona da, uma opo selecionada, entre outras aes. - Este um tipo de teste bem abrangente, pois envolve todas as ca madas do sistema, dependendo da modelagem correta da base de dados, do funcionam ento correto dos mdulos internos do sistema, da integrao entre eles e da interao do u surio com a interface. Portanto,escrever bons testes de aceitao que verifiquem adeq uadamente todos estes componentes uma tarefa no-trivial que exige um bom conhecim ento e experincia. - Selenium Server (o interpretador, um server em java, um JARZO) - Selenium IDE (FIREFOX) --> exporta para todos os clientes - Selenium Client (Vrias Linguagens: Java, PHP, Ruby, Python) --> No tem desculpas para no usar! - Dicas de formas de como usar o Selenium: - Page Objects - BDD: JBehave Cucumber RSpec (*) Testes de Stress e Desempenho: - JMeter e Ataques DoS (Se eu executar 100 Threads na minha maqu ina nada acontece por eu estar no mesmo ponto de saida de rede agora se eu passa r esse script do JMeter para 100 devs ao redor do mundo, conectados em saidas di ferentes garanto que fazemos a maior parte dos servidores tremer)

(*) Dica: Caractersticas de bons Testes Automatizados (Principalmente de Unidade) > F.I.R.S.T Fast Idenpendent Repeatable Self-validating Timely

(*) Alertas: * Tambm, pode no ser efetivo na procura de classes especficas de defeitos * <SER???> A automao de teste pode ser cara, e geralmente usada em conjunto com tcnicas manuais. * A documentao/especificao executvel do software. Vale muito mais que centena s de documentos de requisitos.

* Qual seria a melhor documentao para se manter depois dos Testes? Segundo Brooks, o Manual de Usurio atualizado o que basta pois ele sempre dever estar atu alizado sobre o que o sistema faz hoje e no o que fez algum dia ou o que foi dese jado que ele fizesse. (*) Fazer Testes Automatizados Antes, Durante ou Depois do Desenvolvimento? O que a Filosofia Lean (Toyota) pode nos dizer sobre isso? - Fazer Certo da Primeira Vez , que em agilidade traduzido como Test First e Andon, que parar a linha, leva naturalmente concluso bvia de fazer testes antes e testes sempre. No faz sentido pensar o contrrio. Fora que eu vejo muito po uca gente falar de Cross Functional Teams (ou Feature Teams), e mesmo empresas q ue adotam metodologias geis ainda trabalham com departamentos funcionais, ou Compone nt Teams . Numa cultura gil isso no faz sentido: cada equipe precisa ter pessoas de diferentes especialidades trabalhando ao mesmo tempo, com empowerment para segui rem sozinhas. - Inspecionar para prevenir defeitos bom; inspecionar para encont rar defeitos desperdcio Shigeo Shing - prevenir defeitos mais fcil e barato que identific-los e corrigi -los. Resumo: Faa TDD para evitar desperdcio! (*) Testes automatizados devem: * Atuar como especificao das funcionalidade * Atuar como documentao executvel (*) Concluses:

- "Desenvolvimento de software uma tarefa complexa que exige conheciment o tcnico, organizao, ateno, criatividade e tambm muita comunicao. previsvel que, s momentos do desenvolvimento, em algumas das milhares de linhas de cdigo, alguns destes requisitos falhe, mas imprevisvel o momento no qual eles iro falhar. Por i sso, imprescindvel que exista uma maneira fcil e gil de executar todos os testes em qualquer instante, e isso s vivel com o auxlio de testes automatizados"

- "A automao dos testes d segurana equipe para fazer alteraes no cdigo, se r manuteno, refatorao ou at mesmo para adio de novas funcionalidades. Alm disso, re ntar casos de teste atravs de programas possibilita a criao de testes mais elaborad os e complexos, que podero ser repetidos identicamente inmeras vezes e a qualquer momento." - "Conseqentemente, a quantidade de tempo gasto com a verificao do sistema aumenta, enquanto diminui o tempo gasto com a identificao e correo de erros, j que el es tendem a ser encontrados mais cedo. medida que o tempo passa, o sistema vai c rescendo e os programadores vo esquecendo certos detalhes de implementao, por isso quanto mais tarde um erro for encontrado, mais trabalhosa ser a depurao para a sua localizao" - Fazer testes automatizados est relacionado com ser ou no profissional! - No comeo e por muito tempo vai doer fazer, vai ser difcil, uma mudana de paradigma.

- Tento que sei muito Isto : equencia que eu

fazer Testes Automatizados desde 2007 e, a cada dia, vejo que o pouco em relao ao que eu ainda tenho que aprender sobre Testes. Eu no fao testes automatizados da forma que eu gostaria nem com a fr gostaria. Existe algum culpado por isso? Sim, eu!

- <VIDEO> Sensacional Vdeo do Uncle Bob! - Imagine um mdico que parou de estudar...Software is learnign! - Precisamos convencer nossos superiores que testes automatizados so impo rtantes e que so eles que vo ganhar com isso! Questo que fica no AR: O que uma empresa deve investir primeiro: Base de Engenharia X Base de Gerencia? possvel gerenciar o crescimento de uma bola de neve?