sábado, 23 de julho de 2011

A Ascensão do Teste de Software - Por Edgard Davidson

Post interessante do blog: http://edgarddavidson.com/


Por muito tempo o teste de software foi visto como uma atividade do processo de desenvolvimento de software que no papel era extremamente importante e necessária para atingir a qualidade do produto de software, mas na prática, por muitas empresas, tornou-se uma das atividades mais negligenciada.   Por esse motivo enraizou-se uma péssima cultura em relação à atividades de testes, que, quanto a importância, ficou à margem da construções do software e que, se desse tempo, era executada. A negligência, por muito tempo da referida atividade gerou algumas "afirmações" que hoje soam como piadas:
  • "…Implemente, se der tempo agente testa."
  • "o importante é entregar… os testes, deixa que o cliente faz pra gente…"
  • "o prazo vai estourar…Então sacrifique os testes…"
  • "entregue com bugs, mas entregue em dia, depois agente arruma…"
  • "sabemos que nosso software está cheio de bugs, então vamos cobrar uma manutenção mensal do nosso cliente para consertá-los…"
  • “testar não é uma atividade importante…"
  • ”…como vamos testar se não temos tempo?"
  • "…testar pra que? perda de tempo."
  • "pra desenvolver sem teste é X, com teste é X2…'"
Fico impressionado! Dá até medo! Imagine se a indústria de aviação fosse igual a de software. Quantos aviões cairiam por dia? Imagine se a indústria farmacêutica fosse igual a de software. Você confiaria nos remédios? Imagine se o projeto do modelo do seu carro fosse construído como esses softwares?  Você andaria em um elevador que foi construído com essa mesma metodologia? "Instale o elevador aí… depois o cliente testa pra gente…"
Quando fala de teste, estou me referindo também a qualidade do software. Apesar de não serem sinônimos, mas com certeza o nível de qualidade dos teste de software é um fator, entre vários outros que definem a qualidade do produto final.
Por outro lado, do ponto de vista do  profissional, o teste de software possuia algunsPRE-conceitos:
  • “testar é uma atividade chata e cansativa…"
  • "testar paga mal…"
  • "não gosto e não sei programar… logo vou trabalhar na área de teste…"
  • "minha empresa não valoriza a área de testes…"
  • "testar é ficar encontrando erros dos outros…"
  • “maus programadores viram testadores…”
  • "…subatividade?"
  • "qualquer um pode testar…"
Hoje, no entanto, o teste "virou o jogo" com a popularização de processos emergentes de desenvolvimento de software como eXtreme Programming. Práticas como TDD e BDD fornecem uma novo paradigma no desenvolvimento. Hoje, com a ascensão do teste de software, novas "afirmações" foram geradas:
  • "a qualidade do produto é inegociável…"
  • "primeiro escrevemos nossos testes unitários, depois implementamos…"
  • "entregar software sem um boa cobertura de teste unitário tornou-se amadorismo…"
  • "ausência de teste unitário é antiético… "
  • "não consegue executar teste de carga, performance e segurança no seu sistema? Sua equipe está com débito técnico…"
  • "nossa integração é contínua e automatizada…"
  • "nossos testes são automatizados…"
  • "temos cada linha de código da aplicação, temos três linhas de teste…"
  • "nos preocupamos com a cobertura dos testes, com casos de teste que refletem os requisitos de negócio…"
  • "enquanto os testes não passarem 100% o produto não é entregue…"
  • "entregue menos, mas entregue funcionando…"
  • "quem quebrar o deploy paga dez flexões…"