sábado, 13 de fevereiro de 2010

Gerenciando o Tempo

Há alguns dias eu estava discutindo a importância de se gerenciar adequadamente o tempo dos nossos projetos de teste. E apesar disso parecer tão óbvio, cheguei a conclusão que quase nunca conseguimos fazer isso muito bem, nem nos projetos, nem em nossa vida profissional ou mesmo na pessoal.

Geralmente gastamos grande parte do nosso tempo em atividades que agregam pouco valor e nem percebemos isso. É um tempo enorme lendo um caminhão de e-mails, navegando na web sem muita direção, ou simplesmente sentados à frente de uma TV, ao final de um dia pesado de trabalho.

É interessante sempre repensarmos a priorização que fazemos em nossas vidas, para que seja possível encontrar o equilíbrio entre as atividades que temos no dia-a-dia, conseguindo conciliar a vida profissional e pessoal, mantendo o prazer e a motivação nessas duas frentes.

Quando conseguimos identificar com clareza as atividades que são mais importantes e as colocamos numa sequência adequada, temos mais chances de executar a maior parte delas, o que pode nos trazer grande satisfação e sentimento de realização. Sem esse cuidado em identificar claramente o que precisamos ou queremos fazer e sem uma priorização adequada, dificilmente realizamos muita coisa.

Esse raciocínio é totalmente válido para as atividades de teste em nossos projetos, pois normalmente temos um escopo de teste muito maior que o tempo disponível para testá-lo adequadamente. Assim, se conseguirmos priorizar os nossos requisitos de teste, poderemos direcionar nossos esforços para aquilo que tem maior relevância. Não esqueçamos do Princípio de Pareto ao priorizarmos os nossos esforços.

É importante lembrarmos sempre de estabelecer prioridades e não querermos fazer tudo ao mesmo tempo. Dê importância ao que é importante.

domingo, 7 de fevereiro de 2010

Falando sobre Automação de Testes

Recebemos em Brasília no dia 05/02, em um evento direcionado aos profissionais de teste do Banco do Brasil, o consultor e instrutor na área de testes e qualidade, José Correia da Iterasys, que nos apresentou sua visão sobre o processo de testes e estratégias de automação.

A palestra tratou dos desafios da automação de testes, dos aspectos positivos e das possíveis frustrações. Foi ressaltada a importância de um bom planejamento, por parte da organização, nessa fase de automação do seu processo de  testes, abordando muito além da simples execução automatizada de atividades com maior velocidade. É necessário também que os processos sejam efetivamente melhorados.

Alguns aspectos abordados:

"Testar mais é possível" - Um forte argumento utilizado em defesa da automação é o ganho de produtividade decorrente. Mas para que isso realmente aconteça, não basta apenas automatizar o processo atual. É necessário pensar na melhor forma de se implementar a automação. "Mais, não necessariamente é melhor". "Se um processo produz um produto com defeito, automatizar esse processo só servirá para produzir uma grande quantidade de produtos defeituosos em menos tempo".

"Vai ficar pior antes de melhorar"- Ao automatizar os testes, possivelmente o processo ficará mais caro e lento, pois existe uma curva de aprendizagem. Somente depois de algum tempo é que os ganhos da automação serão percebidos.

"Vocabulário de Testes" - É um grande desafio no mercado de testes brasileiro, pois cada empresa tem um vocabulário diferente. As certificações têm um grande papel na unificação desse vocabulário.

"Testar melhor" -  Importante a utilização de uma metodologia de testes. Foi descrito o  Modelo V em sua representação mais conhecida e também como uma sequência de 8 peneiras (Requisitos, Análise, Arquitetura, Codificação, Testes Unitários, de Integração, Sistema e Aceitação), sendo que o profissional de testes pode participar em todas as fases do processo, pois qualidade deve ser uma preocupação em todas elas. Ao passar por todas essas peneiras, o produto possivelmente terá mais qualidade.

"Ferramentas de Automação" - Foram citados os principais tipos de ferramentas que apóiam o processo de testes: Planejamento de Testes, Gerência de Configuração, Virtualização, Registro de Defeitos, Padrões e Práticas, Cobertura de Código, Testes Unitários, Performance, Segurança e Robôs.

"ISO 9126 " - Características de Qualidade - Necessidade de se ampliar o escopo dos testes, utilizando o conjunto de características e sub-características de qualidade para direcionar os esforços da equipe.

"Testar mais rápido" - Para que isso seja possível é preciso antecipar os testes, acompanhando o processo de desenvolvimento desde suas fases iniciais. É preciso também saber quando interromper os testes. O tempo das áreas de negócio pode ser diferente do tempo da qualidade. 

"Testar a coisa certa" - Para se ter segurança do que se está testando, são necessárias ferramentas para Gerenciamento de Testes, Gerenciamento de Defeitos e Gerência de Configuração.

"Testar no ambiente certo" - O ambiente de testes foi descrito como um conjunto de fatores , não apenas de hardware. Fazem parte do ambiente, por exemplo, as pessoas envolvidas nas atividades de teste, softwares como ferramentas de teste, documentações do sistema, além do próprio hardware e ambiente físico.

"Virtualização" - Foi abordada a reprodução de ambientes de teste. No futuro os ambientes de produção também serão virtualizados, permitindo que os testes de uma aplicação sejam realizados compartilhando as mesmas condições de hardware e software disponíveis no ambiente produtivo.

"Testar mais barato" - Quando os testes se iniciam mais cedo dentro do ciclo de desenvolvimento, tem-se menos retrabalho e menor tempo para a liberação das soluções.

"Testar o que realmente importa" - Utilizar o gerenciamento de riscos para priorizar o que é mais importante, auxiliando no direcionamento dos esforços de teste. Uma estratégia de teste bem elaborada, considerando prioridades, é o que diferencia um teste produtivo de um teste improdutivo. Foram abordados também o Princípio de Pareto e o Diagrama de Causa e Efeito,ou Ishikawa, como ferramentas importantes para se priorizar o escopo de teste.

Concluindo sua palestra, José Correia ressaltou que o grande desafio na introdução da automação de testes numa organização não é aprender a utilizar as ferramentas ou se escolher a melhor ferramenta do mercado. O maior desafio é ter um processo robusto, que dê o embasamento necessário às atividades de teste.

Na sequência da palestra, foram abordadas as características das principais certificações em teste, especificamente a CSTE, a CBTS e a CTFL. Nessa exposição, foi ressaltada a grande oportunidade existente na área de testes e qualidade, onde temos uma carência enorme de profissionais e mesmo de conhecimentos sobre os temas da área. Os profissionais pioneiros certamente terão destaque nesse contexto.

Ao José Correia, o nosso agradecimento por compartilhar sua experiência profissional e vasto conhecimento. Esperamos tê-lo novamente conosco em outros eventos, contribuindo para a disseminação da cultura de testes e para o fortalecimento da área de testes e qualidade.

sábado, 6 de fevereiro de 2010

O futuro do Teste de Software

Aconteceu recentemente no DFTestes, uma boa discussão sobre o futuro do Teste de Software e gostaria de compartilhar com os leitores do Base de Teste a minha visão sobre esse tema.

Vejo o mercado de testes de software crescendo com muita velocidade nos últimos anos.
Há 3 ou 4 anos atrás, poucas empresas tinham equipes de teste independentes bem estruturadas. Hoje vemos essa estrutura se multiplicar, tanto em empresas que trabalham com desenvolvimento, como naquelas que utilizam os serviços de fábricas de teste para validar as aplicações desenvolvidas por terceiros.

A terceirização de serviços de teste é uma forte tendência, complementando a capacidade de teste interna das organizações. A especialização conseguida com as estruturas de fábrica trazem muitos benefícios para o contratante, principalmente na escalabilidade no atendimento de suas demandas e na independência dos testes em relação ao desenvolvimento.

Com esse mercado aquecido, as empresas investirão maior esforço na seleção de seus times, pois aquelas que estiverem melhor estruturadas, vencerão a corrida pelos melhores contratos. Por outro lado, os profissionais de teste também deverão investir mais em sua empregabilidade. Nesse aspecto, as certificações serão um grande diferencial, principalmente aquelas que conseguirem distinguir profissionais com maior conhecimento e experiência.

Venho comentando há tempos com alguns colegas, que o teste é o carro chefe para a melhoria de muitos processos. É um processo que catalisa uma mudança cultural nas organizações, na direção de uma busca contínua pela qualidade.

É bonito ver isso acontecendo com a nossa área e saber que fazemos parte desse movimento!

sábado, 9 de janeiro de 2010

Garantia da Qualidade de Software

Conforme o QAI - Quality Assurance Institute, o processo de Garantia da Qualidade é formado por um conjunto planejado e sistemático de atividades, que tem por objetivo prover confiança sobre a conformidade de produtos e serviços a requisitos especificados e que venham ao encontro das necessidades dos usuários. Já para o MPS-br - Melhoria do Processo de Software Brasileiro, o propósito do processo Garantia da Qualidade é assegurar que os produtos de trabalho e a execução dos processos estão em conformidade com os planos e recursos predefinidos.

Estas duas visões normalmente conduzem a uma confusão muito comum, ao compararmos os processos de Controle e de Garantia de Qualidade de Software. Notamos que o conceito de Garantia da Qualidade é muito próximo daquele que já discutimos sobre o Controle da Qualidade, principalmente pelo fato de os dois processos definirem atividades que tratam da qualidade do software.

Entretanto, a Garantia da Qualidade tem seu foco na prevenção de inconformidades e na melhoria contínua de processos, enquanto o Controle da Qualidade busca identificar e corrigir estas inconformidades, num processo muito mais reativo. Esses dois processos são complementares e muitas vezes são executados através de atividades semelhantes, como na aplicação de Listas de Verificação ou checklists. A grande diferença é o foco em prevenção ou em detecção.

Assim, se você estiver verificando um documento com a intenção de identificar e corrigir eventuais inconformidades, certamente estará trabalhando em uma atividade de Controle da Qualidade. Mas se o seu objetivo é avaliar o processo que gerou este documento, procurando analisar suas fragilidades e otimizar a execução das atividades previstas, estará trabalhando na Garantia da Qualidade deste processo.

Então, como diferenciar esses dois processos no dia-a-dia? Não parece muito fácil, mas uma forma bem simples é lembrarmos das palavras Prevenção e Detecção.
    • Prevenção refere-se à Garantia da Qualidade
    • Detecção refere-se ao Controle da Qualidade
Esta diferenciação é válida, principalmente no contexto do Teste de Software e das certificações como a CSTE. Entretanto, observando a definição de Garantia da Qualidade feita pelo MPS-br, percebemos que é importante termos o cuidado de avaliar o contexto onde os termos Controle e Garantia são utilizados, para construirmos o entendimento mais adequado a cada caso.


Referências

Guia de Implementação - Parte 2 - Fundamentação para Implementação Nível F do MR-MPS
Disponível em: http://www.softex.br/mpsbr/...

Guide to the CSTE COMMON BODY OF KNOWLEDGE - Version 6.2 - 2006
QAI - Quality Assurance Institute

    domingo, 3 de janeiro de 2010

    Controle da Qualidade de Software

    Controle da Qualidade, no contexto de software, é o processo que compara um produto com normas, padrões e requisitos estabelecidos, procurando identificar inconformidades, para que estas possam ser corrigidas antes que o produto chegue ao seu ambiente de uso. Tendo seu foco na detecção de defeitos, trata-se de um processo essencial na indústria de software atual, cada vez mais competitiva e exigente. Nessa indústria, qualidade não é mais diferencial competitivo, mas requisito básico para que os produtos desenvolvidos sejam bem recebidos pelo mercado.

    Ao contrário do que se pode imaginar de um processo que busca por defeitos em produtos, o Controle da Qualidade não ocorre apenas ao final de um processo produtivo, principalmente quando falamos de desenvolvimento de software. O Controle da Qualidade pode ser aplicado sobre os produtos do processo de desenvolvimento desde suas fases iniciais, permitindo que produtos intermediários sejam verificados e que os defeitos identificados sejam corrigidos antes que se propaguem às fases seguintes da construção do software.

    Dessa forma, podemos controlar a qualidade de um Documento de Especificação de Requisitos ou de um Modelo de Dados por exemplo, identificando precocemente defeitos que poderiam causar grandes prejuízos  no futuro. Isso é possível, dentre outras formas, através da aplicação de Listas de Verificação sobre os documentos gerados durante a construção do software ou pela aplicação de Testes de Software. Quando as inconformidades identificadas são corrigidas, as fases seguintes do processo de desenvolvimento recebem insumos de maior qualidade, o que contribui substancialmente para a qualidade final do software.

    Investir na detecção de defeitos, através de um Controle da Qualidade sistemático, é muito mais que uma forma eficiente de se reduzir o custo total do software, ao evitar prejuízos decorrentes de falhas em produção. Envolve a satisfação do cliente final, que espera receber um software com qualidade superior e que atenda satisfatoriamente as suas expectativas.