segunda-feira, 30 de junho de 2014

Um bug de software que viajou até Marte


Um bug potencialmente perigoso foi encontrado numa componente de software com 20 anos de idade e considerada tão eficaz que tem sido usado em smartphones, automóveis, aviões e no veículo que viajou até ao planeta Marte, a Mars Rover Curiosity.

Em 1994, Markus Oberhumer criou um algoritmo de compressão de dados (Lempel-Ziv-Oberhumer, LZO) que se mostrou tão rápido a descomprimir informações que passou a ser usado em todo o mundo. Para isto contribuiu o facto de Oberhumer ter publicado o software com licença Open Source.

Na semana passada, Oberhumer lançou a versão 2.07 da LZO, e avisou que as versões anteriores eram passíveis de buffer overrun. Isto significa que é possível criar um conjunto de dados comprimidos que executaria um pedaço de código malicioso quando o software tentasse descompactá-lo.

A falha só se manifesta em circunstâncias muito específicas, levando Oberhumer a sugerir que as "implicações práticas são limitadas". Mas a natureza do código e a popularidade do software levam a crer que a correcção do problema em todo o mundo será um enorme esforço.

-------------------------------------------------------
Notícia completa em inglês: Software bug found on Mars Curiosity rover


segunda-feira, 23 de junho de 2014

10 Regras Básicas sobre Automatização de Testes

Testar software é uma tarefa difícil e automatizar testes de software é o sonho de todos os testers, analistas e programadores. No entanto, a automatização é um processo que tem de ser bem compreendido, que exige muita prática, e no qual devemos seguir alguns conceitos básicos. Vamos descrever alguns desses conceitos básicos e mostrar que a automatização pode ser fácil se for feita correctamente.

Regra 1: Ler e aprender conceitos básicos

Os programadores mais qualificados necessitam de rever os seus conhecimentos ao longo do tempo; aprender é uma necessidade. A automatização não é mais que que uma mera avaliação dos passos a executar por um programa, escrevendo instruções detalhadas.

Regra 2: Estar preparado para enfrentar a automatização no projecto

A prática é a única forma de obter conhecimento válido. Seleccione uma qualquer ferramenta de testes open source disponível, instale-a e aprenda a usá-la no seu tempo livre. Qualquer uma serve. O importante é praticar, compreender e ganhar experiência para estar pronto para enfrentar um projecto real quando for necessário.

Regra 3: Os conceitos básicos são os mesmos, basta explorá-los

Além das diferentes particularidades, todas as linguagens de programação funcionam basicamente com os mesmos conceitos como variáveis, parâmetros, funções, diferentes tipos de dados, ciclos, declarações condicionais, arrays, etc. Depois de os compreender e recordar, qualquer pessoa deve ser capaz de aplicar esse conhecimento em qualquer linguagem de programação. Reserve algum tempo, cerca de duas semanas, para compreender as bases da programação.

Regra 4: Não desistir quando o primeiro programa falhar

Os russos têm um provérbio maravilhoso: a primeira panqueca é uma confusão. Isso significa que é muito provável que a primeira tentativa de qualquer coisa irá falhar, mas todas as seguintes terão melhor resultado, e com isso podemos ganhar experiência no processo. Não importa o quanto sabemos da teoria; provavelmente, a primeira execução prática será decepcionante. Por isso, temos que continuar.

Regra 5: Olhar para o código como um processo, não como magia

Sempre que um principiante olha para o código, este parece incrivelmente complexo. No entanto, depois de produzir algum código eficaz, conseguiremos reconhecer os padrões e procedimentos, tornando a leitura do código muito mais fácil. Depois podemos ver as instruções do programa, claras como água, e perceber a sua lógica.

Regra 6: Explorar a ferramenta

A melhor maneira de conhecer uma ferramenta é explorar as suas funcionalidades uma a uma. De forma sistemática, devemos seleccionar cada uma das opções e subopções de menu e inspeccionar as respectivas funcionalidades. Se existir uma barra com botões, estes devem conter as funcionalidades mais comuns. A maioria dos itens costuma ter nomes auto-explicativos.

Regra 7: Procurar Ajuda

Sempre que nos sentimos num impasse devemos procurar algum texto explicativo na secção de ajuda. Geralmente esta contém boas explicações e instruções sobre cada funcionalidade da ferramenta. Leia-a atentamente para conseguir dominar a ferramenta.

Regra 8: Praticar muito

Devemos encarar os testes de software com um processo de validação. Isto permite concluir se o código é funcional ou não. Os testes automatizados devem permitir concluir a mesma coisa, e apresentando resultados claros (sim/não; o teste passou ou falhou) em vez de resultados em bruto que necessitam de interpretação.

Regra 9: Melhorar o nosso Trabalho

Todas as coisas bem-feitas podem ser feitas ainda melhor. Investir na revisão e melhoramento dos nossos projectos é um caminho para melhorar as nossas competências e levar-nos a novos desafios.

Regra 10: Automatização nem sempre é necessária

Apesar de ser muito útil, a automatização não é nada mais do que um instrumento de testes. Nem sempre os projectos necessitam de automatizar os seus testes. Devemos escolher a melhor forma de testar (manual ou automático) de acordo com as necessidades de cada projecto.

Conclusão:

Essas regras não são obrigatórias, mas são simples e óbvias. Seguindo-as podemos melhorar as nossas competências e evoluir como testers.

-----------------------------------------------------
Traduzido e adaptado de: 10 Basic Rules For Beginners In Automation Testing