quinta-feira, 13 de novembro de 2014

Actividades de Testes Estáticos

Os processos de testes de software consistem em actividades dinâmicas e estáticas, e cada uma destas tem as suas próprias vantagens. Um teste estático é executado sem qualquer execução do código. O teste dinâmico, por seu lado, é realizado com a execução da aplicação ou do software.

Os testes estáticos tem um papel fundamental nos processos de testes de software e possui suas próprias técnicas e actividades.

Os testes estáticos são realizados examinando o produto de software manualmente ou recorrendo a algumas ferramentas. No entanto, o software alvo de teste não é executado. O principal objectivo do teste estático é verificar se a programação e o algoritmo de software funcionam correctamente. O teste estático ajuda a indicar erros de código no início do processo de testes e permite tornar mais eficientes e produtivos os restantes testes.

duas actividades principais em testes estáticos:

  • Revisão;
  • Testes com ferramentas.

Vejamos cada um destas com mais detalhe. As actividades de revisão podem ser formais ou informais. No entanto, as actividades informais são usadas com mais frequência que as formais; em ambos os casos, o documento a ser revisto pode ser validado mais de uma vez. Os testes estáticos com ferramentas dividem-se em três grupos distintos:

  • Revisão de software (walkthrough);
  • Revisão técnica;
  • Inspecções de software.

Geralmente as revisões (walkthroughs) e as inspecções de software são feitas em conjunto com parceiros (peer-reviews).

Os testes estáticos com o uso de ferramentas automatizadas são efectuados antes da execução do código e ajudam a inspeccionar o desenho, código e facilitam outras actividades de teste. Neste tipo de testes pretende-se verificar o código de software e validam-se:

  • Estruturas do código;
  • Métricas do código;
  • Conformidade código com os padrões definidos.

Os testes estáticos com o uso de ferramentas automatizadas são geralmente efectuados antes ou ao mesmo tempo que os testes de integração e de componente.

A escolha sobre as actividades de testes depende principalmente do tipo do software a tesatar e da organização. Mas também devemos levar em conta factores como a carga dos recursos, disponibilidade de tempo e outros, de forma a conseguir a maior eficiência possível nos teste de software.

----------------------------------
Traduzido e adaptado de: Static Testing Activities

quinta-feira, 9 de outubro de 2014

Falha em caixas automáticas permite roubar dinheiro

Firma de segurança informática descobriu o vírus Tyupkin capaz de infetar algumas máquinas bancárias e fazer com que elas "despejem" todo o dinheiro que contêm (em maços de 40 notas). Isto sem sequer ser preciso usar um cartão.

A empresa especializada em segurança digital Kaspersky Labs investigou os sistemas operativos utilizados nas caixas automáticas (ATM) de várias entidades bancárias, tendo descoberto numa delas uma falha grave.

Segundo explicam os especialistas no seu blogue oficial, é possível infetar essas máquinas com o software malicioso Backdoor.MSIL.Tyupkin e a partir daí manipular o sistema diretamente, ordenando-lhe que entregue todo o dinheiro.

As máquinas em causa correm uma versão do Windows 32 bits, da Microsoft. Em risco estão países da Europa de leste, incluindo a Rússia, bem como Estados Unidos, China e Índia, indica o Kaspersky Labs.

A empresa divulgou um vídeo que demonstra como funciona a pirataria informática:



----------------------------------------
FONTE: Falha em caixas automáticas permite roubar dinheiro (DN)

quarta-feira, 8 de outubro de 2014

Falha corrigida no Bugzilla



No final de Setembro, investigadores da Check Point Software Technologies detectaram uma falha no Bugzilla, um sistema usado por programadores para registar e acompanhar bugs.

Este bug permitiria que utilizadores não autorizados tivessem conhecimento de falhas não corrigidas em grandes projectos de software.

Na segunda-feira (06-Outubro) a Mozilla Foundation disponibilizou um patch (para correcção preliminar do problema) com os principais utilizadores do Bugzilla. Desconhece-se se algum hacker terá explorado esta falha.

---------------------------------------
Fonte (em inglês): Critical Bugzilla vulnerability could give hackers access to undisclosed software flaws

quinta-feira, 25 de setembro de 2014

Nova falha de segurança massiva deixa boa parte da Internet sujeita a ataques

Está a ser apelidado de Bash Bug e de Shellshock. Especialistas em segurança informática dizem que é uma falha de segurança mais grave do que o Heartbleed. Tanto os sistemas operativos Linux como o Mac OS estão vulneráveis.

A Internet acordou hoje, 25 de setembro, outra vez em sobressalto: depois da grande falha de segurança Heartbleed, surgem provas e relatos de que existe outro bug de grande escala que afeta os sistemas operativos baseados em Linux, bem como o Mac OS da Apple.

No caso das distribuições Linux a preocupação é ainda maior visto que são usadas como sistema operativo de muitos servidores de Internet – quer isto dizer que qualquer dispositivo ligado à grande rede está sujeito a ser explorado por piratas informáticos.

Em causa está uma parte dos sistemas operativos que é conhecida como interpretadora de comandos – que faz uma tradução dos comandos entre o software e os utilizadores. Esta shell é ativada sempre que é necessário despoletar uma ação como um script de um navegador de Internet. No caso do Linux muitos dos comandos são escritos pelos próprios utilizadores para executar determinadas ações, o que aumenta ainda mais a probabilidade de ataque.

Explica a imprensa internacional, como o ZDNet, que a falha descoberta no Bash – nome da shell que é usada nas distribuições Linux e que também marca presença no Unix, que é a base do Mac OS -, faz com que um cracker possa executar vários comandos nos equipamentos dos utilizadores.

Um porta-voz da empresa de segurança Rapid7 explicou à Reuters o alarmismo da situação: atinge o nível 10, o máximo, ao nível da gravidade, e ao nível da facilidade de exploração por um pirata informático é muito fácil.

Várias equipas de segurança responsáveis por distribuições Linux – como a CentOS, Debian, RedHat – já lançaram atualizações para corrigir o problema, mas existe a possibilidade de que nos próximos meses muitas máquinas venham a ficar desprotegidas.

À semelhança do que aconteceu com o Heartbleed e depois de todos os avisos, mais de 300 mil servidores continuavam desprotegidos ao fim de dois meses da descoberta da vulnerabilidade. Três meses depois, em julho, apenas 3% dos servidores de grandes empresas mundiais estavam totalmente protegidas contra a falha de segurança.

------------------------------------
FONTE: Nova falha de segurança massiva deixa boa parte da Internet sujeita a ataques (tek.sapo.pt)

sexta-feira, 29 de agosto de 2014

Satélites europeus em órbita errada devido a erro de software

Dois satélites encomendados pela União Europeia foram acidentalmente colocados numa órbita errada após o lançamento, devido a um erro de software, tornando-se potencialmente inúteis.

O foguetão Soyuz que transportava os dois satélites
Estes dois satélites (Doresa e Milena) fazem parte do projecto Galileo que foi desenvolvido pela União Europeia com o objectivo de criar uma alternativa aos sistemas de posicionamento por satélite GPS (dos EUA) e GLONASS (da Rússia), no caso de esses países impedirem o acesso a esses sistemas devido a divergências políticas.

O sistema Galileo terá um custo superior a 5,5 mil milhões de Euros e permitirá uma precisão dez vezes superior ao sinal de GPS civil disponível na Europa. Quando estiver concluído (em 2019) será formado por 30 satélites que orbitarão a Terra a uma distância de cerca de 23.333 km. (recorde-se que Estação Espacial Internacional encontra-se a 420 km da Terra)

Os primeiros satélites foram lançados em 2011 e, no passado dia 22 de Agosto, os satélites número cinco e seis foram lançados para o espaço a partir da Guiana Francesa. Mas rapidamente ficou claro que não conseguiram alcançar a órbita correta. Os satélites deveriam seguir uma órbita circular, mas o foguetão Soyuz que os lançou colocou-os numa órbita elíptica em torno do nosso planeta.

Entretanto, o jornal russo Izvestia afirmou que um erro de software no andar superior do foguetão - que foi desenvolvido por uma empresa propriedade do governo russo - foi a causa provável. Uma fonte anónima da agência espacial russa Roscosmos disse ao jornal que um erro numa componente de software forneceu instruções de voo incorrectas para o andar superior do foguetão, lançando os satélites para um destino errado.

Segundo a Agência Espacial Europeia (ESA), apesar de estarem numa órbita errada, os satélites estão a funcionar normalmente e encontram-se sob controlo do Centro de Operações da ESA em Darmstadt, Alemanha.

A ESA está a investigar a possibilidade de recuperação parcial ou integral destes satélites para o fim previsto. Recorde-se que estes aparelhos possuem uma capacidade de propulsão limitada, sendo possível que não tenham energia ou combustível suficiente para serem colocados na órbitra correcta.

-----------------------------------------------------

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


quinta-feira, 29 de maio de 2014

A vida bipolar de um software tester

Isto é uma chatice. Estive todo o dia a fazer testes e ainda não encontrei um único problema.

Não, espera...

Isto é bom, certo? O objectivo é termos software limpo. Tudo bem, porreiro, vamos a isto! Parece que vamos conseguir pôr isto em produção amanhã de manhã... Só mais um teste ... Porra!!! Encontrei um bug! Odeio encontrar bugs na recta final! Isto é uma treta.

Não, espera...

Isto é bom, certo? É melhor apanhar os bugs hoje em QA do que amanhã em produção . É para isso que me pagam. Ui… aqui está outro bug! E mais outro! Cá vamos nós... Acabei de encontrar a mãe de todos os bugs. Isto é incrível!

Não, espera...

Isto é mau, certo? Ou fazemos um esforço e trabalhamos até mais tarde ou adiamos a entrada em produção de amanhã. Devia ter encontrado estes problemas mais cedo, teria sido muito mais fácil… Que porcaria!

Mas o que é isto? Estão a rejeitar os meus bugs??? A sério??? Que humilhação! Odeio quando os meus bugs são rejeitados!

Não, espera... Isto é bom, certo? É porreiro que os meus bugs sejam rejeitados. Menos confusão. Agora não tenho que testar tudo novamente.

Não, espera... Eu quero testar tudo outra vez.

Não, espera... talvez não queira.

Ahhhhhhh!

-----------------------------------------
Texto original em ingles: The Bipolar Life of a Software Tester


segunda-feira, 26 de maio de 2014

Bug no Software interrompe contagem de votos electrónicos na Bélgica

Um bug numa aplicação de votação electrónica levou à suspensão da divulgação de resultados eleitorais na Bélgica, anunciou hoje o Ministério do Interior Belga. No Domingo realizaram-se eleições europeias, federais e regionais e registaram-se problemas nas contagens de votos feitos em aparelhos antigos existentes em 20 dos 209 cantões belgas.

O bug no software provocou resultados incoerentes quando tentou somar os resultados os votos preferenciais dessas máquinas. A aplicação soma os resultados de diferentes formas mas deve obter sempre o mesmo resultado. Mas desta vez não foi isso que aconteceu. E, consequentemente, a contagem de votos foi imediatamente interrompida.

Este bug surgiu apesar do software ter sido especialmente desenvolvido para actos eleitorais e ter sido "testado milhares de vezes", tendo mesmo sido certificada pela PriceWaterhouseCoopers, declarou Peter Grouwels, o porta-voz do Ministério do Interior.

A meio da noite a empresa Stesud que criou o software apresentou uma solução para o problema e as contagens de votos foram retomadas.

As máquinas problemáticas (PC’s x86 da era DOS) são de dois tipos e têm sido usadas na Flandres (região flamenga). Desde 2012, alguns cantões passaram a usar um sistema de voto electrónico baseado em Linux, desenvolvido pela empresa venezuelana Smartmatic. Na Valónia (região francófona) 80% dos municípios usam o sistema tradicional com caneta e papel.

Kommer Kleijn, porta-voz da VoorEVA.be, uma organização belga que rejeita o sistema de voto electrónico porque "priva os eleitores de verificar eficazmente as eleições em que participam" descreveu os problemas como "uma catástrofe".

"Eles afirmam que a gravação dos votos foi feita na perfeição; mas quem pode confirmar isso? Nós não podemos", disse Kleijn. "Não há nenhuma maneira de provar que o bug só estava presente na aplicação usada para somar os votos e não em outras partes do sistema de votação", acrescentou.

Não é a primeira vez votando com este sistema dá problemas. "Sempre que este sistema foi utilizado, houve problemas comparáveis a este" lembrou Kleijn.

Segundo um estudo realizado por sete universidades belgas, em 2003, na cidade de Schaarbeek, por exemplo, as máquinas de voto contaram 4096 votos a mais do que eleitores registados. E, em Liège, em 2006, alguns candidatos obtiveram um resultado parcial superior ao seu resultado final, disse Kleijn.

A Bélgica é um dos poucos países europeus que ainda utilizam sistemas de voto eletrónico. Na Alemanha, o Tribunal Constitucional Federal proibiu o uso de urnas electrónicas em 2009, pois os resultados das máquinas não eram verificáveis. A Holanda proibiu a prática em 2008, após um grupo de activistas ter conseguido demonstrar que os resultados dos dois tipos de urnas electrónicas em uso podiam ser adulterados.

Em França há ainda alguns municípios que usam urnas electrónicas. E na Estónia é usado um sistema de voto electrónico via Internet que foi considerado vulnerável a vários ataques por diversos especialistas que desaconselharam o seu uso nas eleições europeias.

---------------------------------------------
A LER:
Software bug disrupts e-vote count in Belgian election (PC World)
Couac informatique, la diffusion de certains résultats en suspens (Le Soir)
Enormes bugs informatiques dans le dépouillement des elections (La Libre)

sexta-feira, 16 de maio de 2014

Cinco sinais de um Tester pouco profissional

Recentemente, tem havido muitos debates sobre o nível de profissionalismo dos testers.

Algumas pessoas argumentam que não existem testers profissionais porque a própria profissão não é formalmente especificada ou ensinada nas universidades; outros pensam que não há profissionais nesta indústria, pois esta ainda é relativamente nova. Mas por outro lado, todos consideramos natural procurar indicadores de profissionalismo na atitude das pessoas nas suas actividades e trabalho nos esforços que fazem para evoluir e aperfeiçoarem-se.

Aqui ficam alguns sinais de pouco profissionalismo nos testers:

1. Você acha que não precisa de ler o código. Porque lidamos com desenvolvimento de software, devemos saber algo sobre a sua engenharia. Podemos não ser saber escrever o código; no entanto, se não o lermos, vamos perder uma grande quantidade de informações que contribuem para o processo de testes. O código permite analisar o produto, perceber como é que as novas correcções podem afectá-lo e gerar novos bugs.

2. Você acha correcto iniciar os testes só após a conclusão da fase de desenvolvimento. A verdade é que conseguimos testar de forma eficiente, quando somos envolvidos o mais cedo possível no projecto, tal como os outros membros da equipa. Embora os testes sejam vistos como a última etapa do projecto, é fundamental participar e acompanhar o levantamento de requisitos, a análise e a fase de planeamento para entender melhor os objectivos dos testes.

3. Você normalmente não interage com o cliente. Uma vez que o seu trabalho é garantir que o produto está de acordo com todas as necessidades do utilizador, é fundamental que um tester faça validações regulares junto do cliente e tenha uma boa compreensão das expectativas dos utilizadores em relação ao produto. Só assim se conseguem fazer testes eficazes e abrangentes.

4. Você considera desnecessária a gestão de risco. Todos os testers sabem que existem algumas componentes do software que são mais propensas a bugs e que estas componentes costumam atrasar o trabalho da equipa. Por esse motivo, faz parte das funções de um tester conhecer estas situações e informar os outros. E porque nunca conseguimos testar tudo, temos que fazer a gestão de risco, atribuindo prioridades ao nosso trabalho e decidir a ordem dos testes a executar.

5. Você não tenta aumentar o seu valor como tester. Engana-se quem pensa que fazer testes não requer conhecimentos e competências especiais que permitem desenvolver a especialização em testes. Em vez de ver os testes como um trabalho pouco sério, devemos começar a construir uma estratégia profissional como testers. Devemos identificar as qualidades mais importantes que a nossa empresa exige a cada um de nós e delinear formas para as desenvolver.

O futuro dos testes de software precisa de todos nós; se deixar de ser exigente com a sua especialização profissional, então deixarão de existir testers profissionais.

---------------------------------------------------------
Texto original em inglês: Beware! 5 Signs of Being Unprofessional Tester


domingo, 11 de maio de 2014

Ford chama 750.000 veículos devido a problema de software



Em Detroit (EUA), a Ford Motor Co. Anunciou que está chamar para revisão mais de 750.000 veículos utilitários desportivos para correcção de um possível problema no software nas portas. Os veículos em causa foram vendidos nos Estados Unidos, Canadá e México.

A segunda construtora automóvel americana chamou 692.487 SUVs (incluindo cerca de 65.000 C-Max híbridos), construídos em 2013 e 2014, devido a um problema no software que pode atrasar o accionamento dos airbags laterais em alguns acidentes.

A Ford anunciou que até ao momento não foi reportado qualquer acidente ou problema relacionado com a falha agora detectada.

Além disso, a Ford também está chamar para revisão 692.744 SUVs construídos em 2013 e 2014 para corrigir possíveis defeitos nos puxadores das portas que poderiam impedir as portas de trancar correctamente. A empresa disse que as portas se poderiam abrir durante a condução, aumentando o risco de ferimentos.

-------------------------------------------------------
Fonte: Ford recalls over 750,000 vehicles for software, door-handle faults (Chicago Tribune)


domingo, 27 de abril de 2014

Testers e Programadores: podemos ser amigos?

Será verdade que os testers são aquele grupo de gente problemática como os programadores sugerem? É verdade que ninguém gosta de ser criticado, especialmente quando se trata do seu trabalho. Mas o que os testers realmente fazem é garantir a entrega ao cliente de um produto com qualidade. E é por isso que, em alguns momentos, os programadores se sentem ofendidos. Querem saber porquê? A resposta está na natureza e nas responsabilidades desses dois papéis.

Às vezes, surgem bugs graves; e por vezes, ocorre uma invasão de bugs que leva os programadores a sentirem-se irritados com o seu número e por vezes até com a pessoa. Nestes dois papéis falta a compreensão mútua em diversas áreas.

Criar um bom entendimento e relacionamento entre testers e programadores

Amizade e trabalho em equipa são as principais chaves para resolver este problema. Ser amigo de um programador - significa que se pode falar com ele e ele vai compreender o assunto e, portanto, os dois combinam esforços - pode melhorar o trabalho. Ambos devem compreender que quanto melhor e mais coordenado for o seu trabalho, melhor será o resultado alcançado. Os programadores, por seu lado, deve assegurar que o seu trabalho está livre de bugs. No entanto, os testers devem garantir que se existirem erros, estes são comunicados atempadamente e de forma adequada antes da data prevista de conclusão do projecto.

Sendo tester e passando tempo com a equipa faz com que a relação entre todos os membros, incluindo você e programadores, seja mais amigável. Ao trabalhar juntos, podemos encontrar bugs antecipadamente. E é sempre melhor para corrigi-los imediatamente, do que receber reclamações dos clientes. Com a cooperação, ou seja, com a discussão do desenho e das soluções, todos podem beneficiar; por exemplo, os programadores podem ficar a conhecer as várias questões e áreas, de modo a melhorar a qualidade do seu trabalho, e portanto, assimilando na sua mente novas ideias sobre a qualidade do produto a criar.

Os testers acabam sempre por encontrar bugs, mas também podem partilhar algumas tácticas com os programadores sobre como testar o seu trabalho. Podem ajudar os programadores a testar melhor o seu trabalho, antes de o entregar. Note-se que este processo apenas produz frutos quando todos trabalham juntos e partilham o mesmo objectivo final, ou seja, "entregar um produto de elevada qualidade" que esteja de acordo com as necessidades do cliente.

Então, qual é a melhor maneira de tornar as relações entre programadores e testers mais amigáveis?

Aqui estão alguns pensamentos sobre esta questão:
  • Partilhar. Partilhar ideias e estratégias com os programadores. Não deixar isso para os momentos em que surgem os problemas.
  • Ser amigo e ter a mente aberta com programadores para que eles não se sintam magoados. Permitir que eles partilhem qualquer coisa connosco.
  • Manter um estilo positivo de informação/reporte. Tentar ser mais diplomático.
Se tiverem outras ideias, por favor partilhem.

---------------------------------------------------
Traduzido e adaptado de: Testers Vs Developers: How To Make Them Being Friends?



segunda-feira, 21 de abril de 2014

Desafios enfrentados em testes manuais

A maioria dos desafios enfrentados em testes manuais surge devido a falhas de julgamento na análise de competências. Os desafios enfrentados são:

1. Pessoas
Sábia seleção dos membros da equipa
O maior desafio ao selecionar uma equipa para um determinado trabalho é selecionar as pessoas certas para o mesmo, pois é um fator muito importante para averiguar se será efetivamente atingido o sucesso ou não. 

Solução: Todos os testers selecionados devem ser qualificados para executarem o seu trabalho. Testers não qualificados podem tornar complexa uma tarefa simples o que pode atrasar o processo. Poderão também utilizar métodos que provocam falhas graves em testes tornando-os inapropriados. Testes manuais exigem pessoas qualificadas na área, sendo os principais requisitos a resolução de problemas, excelente capacidade de análise e comunicação.

Conhecimento do negócio
Outro grande desafio que enfrentamos é o de saber tudo sobre o processo que estamos a realizar. Esta é a única razão pela qual o conhecimento de negócio tem vindo a ganhar poder sobre competências e conhecimentos técnicos.

Solução: Um dos principais fatores que enfrentamos em testes é desenhar as condições de teste corretas. Isto requer muita análise de requisitos e também um excelente nível de conhecimento de negócio. É um conceito importante para ter uma ideia real do produto, como ele funciona, o que aumenta as capacidades de teste. Temos que, pelo menos, ganhar o conhecimento básico de negócio antes de testar um produto. Isso ajudará a investigar as principais falhas lógicas, se realmente existirem. Conhecimento de negócio é importante para compreender o máximo de conceitos possíveis.

2. Processos
Cada tester tem os seus próprios métodos e casos de teste que podem ser ligeiramente diferentes dos processos definidos pela empresa. Por isso, é importante ter informações completas sobre os processos estabelecidos pela empresa e segui-los de forma a não dar origem a testes incompletos.

Problema da atualização de requisitos
Um dos maiores desafios em testes manuais é que os requisitos do software sofrem várias atualizações devido a várias razões. O verdadeiro obstáculo reside em abordar estas razões com sucesso.

Solução: A principal razão pela qual os requisitos do software continuam a mudar ao longo do tempo é devido ao surgimento de muitos erros e bugs que tornam difícil continuar o processo de teste. Então, nesses casos, são utilizados testes de regressão para testar qualquer nova falha ou surgimento de eventuais falhas previamente resolvidas.

Selecionar os casos de teste relevantes e priorizá-los
Depois de passar pela fase de escrita dos casos de teste tendemos a relaxar por pensar que estamos no caminho certo. No entanto precisamos recordar que, mesmo depois de escrever os casos de teste corretamente, erros podem ser cometidos ao selecionar ou priorizar os mesmos. Portanto, este processo também é igualmente crítico para o sucesso de testes de software.

----------------------
Traduzido e adaptado de "Challenges of Manual Testing" por Tiago Almeida

domingo, 13 de abril de 2014

Tem calma! És um tester...

Por Eric Jacobson.

Muitos testers optaram por tornar o seu trabalho stressante, assumindo mais responsabilidades do que deviam, ocultando as suas competências com as competências de outros membros das suas equipas. Optar por tornar o seu trabalho menos stressante não só irá ajudá-lo a apreciar os testes, mas também irá permitir que você se concentre em testes, e melhorar a sua posição como líder de testes. Aqui estão algumas coisas que eu aprendi ao longo dos anos...
  • Quando as pessoas me perguntam "Será que conseguimos uma Certificação de QA para colocar isto em produção? " lembro-lhes que a escolha do momento do lançamento do produto é uma decisão de negócios; mas posso dizer-lhes muito do que eles precisam saber (por exemplo, como é que funciona actualmente sob certas condições, o que erros existem) para os ajudar a tomar essa decisão.
  • Quando ouço os utilizadores queixarem-se que o produto não trabalha para eles devido à forma como foi concebido, sinto empatia com eles... depois lembro-me que eu nunca digo aos analistas/programadores como devem construir o produto ou o que deve fazer.
  • Quando sou confrontado com coisas tecnicamente assustadoras para testar, volto-me para a minha equipa. Só tenho que fazer um olhar estúpido para a primeira pessoa com que falo, porque quando eu começar a falar com a segunda pessoa, pelo menos já aprendi com a primeira. À medida que vou partilhando as minhas ideias sobre testes, eles gradualmente mudam de básico para sofisticado. Rapidamente percebo que toda a gente na minha equipa está tão baralhada como eu.
  • Momento da Verdade. Estou à espera disso. Ando descontraído no início de uma iteração e trabalho mais e mais para o final. Mantenho o equilíbrio entre trabalho e vida privada, mantendo a minha agenda pessoal livre antes e depois de uma entrada em produção. Trabalhando até tarde com outros membros da equipa é muitas vezes tão divertido como passar uma noite calma em casa com a minha esposa (não se preocupem; ela não lê o meu blog).
  • Demasiadas coisas para testar! Muito pouco tempo! Isto por vezes ainda me stressa. Mas quando penso racionalmente, coloca a questão aos meus chefes: "tenho apenas dois dias; preferem que eu teste as novas funcionalidades ou que me concentrar em testes de regressão?". Isto habitua-os a respeitar o meu planeamento e a entender que este tem limitações. Também mostra que respeito o seu sentido de negócio e valorizo as suas opiniões.
  • O produto foi lançado mas a qualidade é uma porcaria. Ok, você pode sentir-se um pouco culpado... juntamente com os programadores e os analistas. Mas lembre-se, você não fez o código, nem o projectou. A qualidade só pode ser incluída pelos programadores (por exemplo, se não há código, não há qualidade). Se agora é uma porcaria, imagine-se o que seria antes daqueles 471 erros que você detectou!
E você? Que coisas faz para tornar os testes menos stressantes e manter sua sanidade?

-------------------------------------------------------
Texto original em inglês: You’re a Tester, Relax (Test This Blog - Eric Jacobson's Software Testing Blog)


quarta-feira, 9 de abril de 2014

As Pessoas mais Influentes nos Testes Software


Por Gregory Mooney.

Ao longo da minha carreira em testes de software houve muitos obstáculos que tive de superar para chegar onde estou hoje. Antigamente esforçava-me para testar de forma eficaz; e através de tentativa e erro fui capaz de me tornar mais eficiente.

No meu primeiro trabalho de tester, foi um desafio conseguir o respeito dos programadores que tinham um perfil mais técnico do que eu. Eu era muito jovem e inexperiente, mas com persistência e com o apoio dos meus superiores, consegui lentamente ganhar o respeito deles e tornar-me mais técnico.

Nos últimos anos, comecei lentamente a ganhar a minha independência como tester e isso deveu-se principalmente à ajuda prestada por outros testers influentes. Tendo trabalhado principalmente em espaços fechados, nunca tinha investigado a forma como outros testers se assumem no mercado; expunha-me pouco perante a comunidade dos testers e os líderes de pensamento no mundo dos testes.

Com a sua orientação, participando em conferências de testes, lendo os seus livros e artigos, tornei-me mais confiante nas minhas competências e descobri novas maneiras de olhar para o software. Estes líderes da indústria de testes ajudaram-me a ver os testes de software sob uma nova luz e a considerar a sua prática extremamente gratificante.

Assim, elaborei uma lista das pessoas mais influentes na minha formação na minha formação como tester ao longo dos últimos anos. Também recebi opiniões de outras pessoas sobre quem os influenciou nas suas carreiras. Não se tratou de uma eleição, ou uma sondagem de popularidade. Acredito que é importante entender quem - e o quê - influencia as nossas carreiras, como uma reflexão para nos tornarmos pessoas mais fortes no futuro.

Acima de tudo espero que esta lista chegue às mãos daqueles que são novos no mundo dos testes de software, para que possam aprender com essas pessoas tal como eu aprendi ao longo dos últimos anos. Tenho a certeza que teria evoluído mais rapidamente se tivesse os seus recursos disponíveis para mim.

Aristóteles

Tinha que o colocar aqui em primeiro, porque algumas das informações mais importantes sobre como encarar os testes de software deriva dos grandes filósofos da história humana. Os testes de software não são apenas uma maneira de pensar; são uma arte e uma ciência.

Aristóteles é o vencedor, não apenas por ter sido, provavelmente, o maior filósofo de todos os tempos, mas também porque deixou a sua marca em todos os aspectos da ciência. A sua maneira de pensar há mais de dois mil anos atrás, moldou a forma como hoje pensamos as ciências e as artes, incluindo os testes de software.

James Bach

James deve ser a pessoa mais franca na comunidade de testes de software. Os seus pontos de vista e código de ética podem ser difíceis de digerir para algumas pessoas, mas a sua paixão é incomparável. Ele fala com o coração e defende aquilo em que acredita.

Os seus pontos de vista baseiam-se num código de ética em testes de software e são entendidos no contexto de cada cenário que os testers enfrentam. A comunidade de testes está dividida e defensores como ele podem ser a chave para unir os testers numa única comunidade.

Não importa se se concorda ou não com os seus pontos de vista. Ele sabe que através da conversa e debate, podemos aprender mais uns com os outros do que se ficarmos sentados e nos recusarmos envolver-nos. Isto é o que ele me ensinou; e é por isso que eu tenho muito respeito pelas suas opiniões, artigos e livros.

Algum material de James Bach que eu recomendo a todos os testers demora tempo a ler:

- Lessons Learned in Software Testing (Cem Kaner, James Bach, Bret Pettichord)

Cem Kaner

Não se encontra outra pessoa com mais conhecimento no mundo dos testes do que Cem Kaner. Para lá dos testes, Kaner é doutorado em psicologia, é formado em direito e psicologia e tem sido um programador e gestor de testes. Ele é um dos fundadores Association of Software Testing. Para ser honesto, deve ser difícil descobrir algo que ele ainda não tenha feito.

Grande parte dos testes, como podem imaginar, são um exercício mental; assim podemos ver onde a licenciaturas de psicologia e filosofia são oportunas, mas, como é óbvio, eu não posso falar pelo Sr. Kaner. Tenho todo o seu material que li em alta consideração. Tenho dois dos seus livros na minha lista de coisas que quero ler... Os seus interesses variam desde as métricas até às leis da qualidade de software.


Lisa Crispin

Desde que comecei a entender as práticas Agile e a forma como o trabalho em sequências de iterações diminui a quantidade de tempo de testes, fiquei fascinado pelos testes Agile.

Trabalhei numa espécie de híbrido Waterfall/Agile, quando era tester, de modo que o Agile ainda é relativamente novo para mim. No meu anterior cargo de tester, tinha iterações bastante longas devido à falta de recursos de desenvolvimento - éramos um pequeno grupo interligado a trabalhar remotamente uns dos outros. Assim, quando comecei a aprender sobre testes em ambientes Agile, fui rapidamente a alguns dos trabalhos de Lisa (e, posteriormente, de Janet Gregory) sobre o assunto.

Lisa Crispin é formadora e profissional de testes Agile. Publicou um par de livros sobre testes e o seu website é um óptimo recurso para aprender algo novo a partir das suas próprias experiências enquanto líder Agile.


Griffin Jones

Nunca trabalhei numa indústria regulamentada e depois de ouvir algumas histórias de horror, a ideia dá-me calafrios. Já ouvi aquelas histórias de testers e programadores serem processados ​​em milhões de dólares por causa de um defeito de software ter afectado o mercado de acções ou até mesmo ser causa de morte (por exemplo, um defeito num aparelho médico). Imagine que a sua aplicação bancária tinha um defeito onde as suas informações podiam ser roubadas e usadas contra si; você estaria à espera de uma indemnização do banco.

Testar em indústrias regulamentadas não é brincadeira, e Griffin Jones sabe disso melhor do que a maioria. Se você tiver dúvidas sobre a conformidade regulamentar, sejam o cumprimento das normas da FDA ou sobre a forma como se proteger a si e à sua empresa em encontrar e construir uma boa prova para se proteger em matérias de responsabilidade, ele é a pessoa a quem perguntar.


A lista continua

Para ser honesto, poderia mencionar algumas outras pessoas que influenciaram a forma como abordo os testes de software, mas não encaixariam aqui. Para aqueles que são novos nos testes de software, estes especialistas são um bom ponto de partida. Para os profissionais mais experientes nos testes, há sempre algo mais a aprender, por isso, continuem a procurar, e com sorte poderão continuar a aprender algo de novo com um especialista diferente em cada dia.

Estejam à vontade para dizer quem foi mais influente nas vossas carreiras de testers.

---------------------------------------------


domingo, 30 de março de 2014

Erro de software provoca aviso de Tsunami no Alaska

Várias pessoas na cidade de Stika, no Alaska, acreditaram que um tsunami estava iminente quando receberam aviso que omitia a frase “Isto é um teste”. Os exercícios e simulações costumam ocorrer em muitas cidades costeiras do Alaska, mas desta vez, um erro de software terá levado a população a acreditar que se tratava de um evento real.

Segundo a rádio KWAC, um erro de software terá estado na origem da confusão. Joel Curtis, do Serviço Nacional de Meteorologia, esclareceu que a mensagem que foi transmitida usou o template de aviso real que substituiu a mensagem usada em exercícios e simulações.

Após esta simulação de tsunami, a polícia de Sitka apressou-se a esclarecer os residentes que a mensagem de alerta de tsunami foi apenas um teste.

-------------------
FONTES:
Software error leads to Tsunami warning scare in Alaska (FoxNews)
Tsunami warning test too real? (KWAC)

quinta-feira, 27 de março de 2014

FAA ordena correcção imediata ao software do Boeing 747-8


A Federal Aviation Administration (FAA) (agência federal americana para a aviação) ordenou a correcção imediata da mais recente versão do software do Boeing 747-8, declarando que foi detectado um problema que pode provocar a perda de potência durante a manobra de aterragem e causar a queda do avião. Esta é a 4ª directiva da FAA sobre este tipo de aparelho.

Por seu lado, a Boeing já veio esclarecer que o problema agora detectado nunca afectou qualquer avião em pleno voo, acrescentando que a possibilidade de ocorrência de problemas é “extremamente remota”. Entretanto, as companhias que possuem este tipo de aparelho foram aconselhadas a actualizar o respectivo software.

O Boeing 747-8 é a mais recente versão do avião conhecido como “Jumbo“. Actualmente existem dezenas deste tipo de aparelho no activo em diversas companhias aéreas.

-------------------------
FONTE: FAA tells Boeing to fix 747-8 software to avoid crash (Reuters)

domingo, 23 de março de 2014

Testes de Regressão: Manuais ou Automáticos?



A questão que surge em cada fase do desenvolvimento é que os testes de regressão após cada iteração levam muito tempo, e muitas vezes a funcionalidade que está a ser validada não sofreu alterações. Consequentemente, a possibilidade de existirem defeitos é muito baixa. Como resultado natural, chegamos a uma ideia de automatizar todos os cenários de regressão e em detrimento dos testes manuais de regressão. As vantagens são evidentes:

  • os testes automatizados são mais rápidos do que os manuais ;
  • os testes automatizados podem ser realizados em qualquer momento;
  • os testes automatizados são muito precisos;
  • a automatização pode ser utilizada em quase todos os processos de teste;
  • pode-se criar relatórios com base nos resultados da automatização.

Mas, infelizmente, a automatização dos testes de regressão tem muitas armadilhas que raramente são discutidas.

Antes de começar a automatizar testes de regressão é necessário resolver algumas questões: 
  • Que funcionalidade deve ser coberta pelos testes;
  • Definir a arquitectura dos testes automáticos;
  • Escolher uma ferramenta para automatizar de testes de regressão.
Vamos ver situações reais na prática. Na fase de mudança de testes manuais para testes automatizados, tive um projecto onde eu tinha que testar o registo de dois tipos de contas para um site em 43 domínios, consoante país. Era um autêntico inferno. O cliente não se preocupava com a qualidade da informação apresentada. Os requisitos eram os seguintes:
  • as contas são criadas sem erros fatais ;
  • os dados introduzidos coincidem com os valores que são exibidos nas configurações após a criação.
Depois de duas execuções percebi que era demais. Na altura, só conseguia ver que o número de campos de registo é diferente em alguns países e também tinha alguma experiência em programação em C#. Havia a possibilidade de automatizar os testes regressão e não hesitei. Pedi a um amigo familiarizado com automatização para descrever e mostrar como se escrevem testes. Depois de muitas perguntas, tentativas e erros, nasceu um teste simples de navegação. Descobri locators e web drivers Selenium - e eis que, todos os domínios utilizavam os mesmos locators. Pouco mais tinha para fazer: executar última regressão manual da minha vida em todos os domínios e preencher a tabela com os correspondentes campos e domínios. Outra sessão de regressão manual - um longo processo para fechar o círculo - e tudo parecia terminado.

Gozei cada uma das regressões seguintes. Pude assistir a algumas séries de TV enquanto executava a regressão. E, por sinal, cada uma demorava apenas o tempo de um episódio. Enquanto eu costumava gastar cerca de 4 a 5 horas em testes de registos nos 43 domínios, os testes de regressão automatizados demoravam 40 a 45 minutos.

Considerando isto, podemos chegar à conclusão nº1: para ver as vantagens da automatização de testes, devemos começar com os testes mais frequentes, que geralmente são positivos, e que devem ser executados após cada release.

Isso continuou durante várias releases até que a empresa decidiu oficialmente automatizar a maioria das funcionalidades. E como o cliente não era muito conhecedor em testes de automatização decidimos automatizar toda e qualquer coisa que caísse no âmbito do meu conhecimento de automatização de testes.

Como resultado, cobrimos quase todo o sistema com testes automáticos. Tudo estaria bem, mas depois de qualquer correcção alguns testes começavam a falhar. Na maioria dos casos, isso acontecia porque tínhamos grandes scripts que tinham muitos passos:

·         Num primeiro passo do teste o sistema era colocado num determinado estado; quando o erro surgia no segundo passo, já não tinha sentido executar os restantes passos;
·         Cenários longos contêm muito código e acções como estas; como resultado, repetir os primeiros passos podia fazer com que muitos testes falhassem.
·         Devido à repetição do código, os testes automáticos validam o mesmo ponto muitas vezes, o que provoca um aumento desnecessário da duração dos testes.

Com base nisso, podemos chegar à conclusão nº 2: cenários demasiado longos devem ser executados manualmente, pois consome-se muito tempo a escrevê-los e estes podem falhar devido a pequenos bugs ou erros de menor importância.

Vamos considerar uma outra situação muito interessante. O cliente pediu testes automáticos, como é habitual, e solicitou que apresentássemos alguns exemplos. Ele aprovou a ideia, e alguns dias depois adicionamos automatização de testes ao planeamento. Mas os nossos programadores atrasaram-se e, os testers tiveram que escrever testes automáticos com base numa versão provisória. Dois dias depois os programadores concluíram o trabalho, mas mais da metade dos testes automáticos falhou.

Conclusão nº 3: nunca começar a escrever testes automatizados, sem que exista uma versão estável.

Há pouco tempo atrás, tivemos uma situação engraçada. Tínhamos recebido um pedido de testes automáticos a um site e tudo tinha de ser feito rapidamente. Tudo correu melhor do que nunca. Algumas semanas depois, o cliente enviou uma carta reclamando que os testes não funcionaram. Percebemos que ele tinha iniciado um redesenho do site e todos os testes tinham falhado. Isto ensinou-me a fazer testes estáveis.

Portanto, a conclusão n º 4 é: quando for possível, usar os locators de modo que os elementos possam ser encontrados após pequenas mudanças.

Assim, as vantagens de testes manuais vêem-se claramente: não dependem de nada e podem ser feitos em qualquer momento. Prescindir dos testes manuais não vai trazer nada de bom. Testes manuais e automáticos estão inter-relacionados e complementam-se; cada um tem vantagens e desvantagens. Antes de pensar em automatizar cenários de regressão devemos avaliar o tempo a escrever os dois tipos de testes e o apoio destes. E lembre-se que os especialistas em testes manuais geralmente ganham menos do que aqueles que têm competências em automatização de testes.

Como sempre, é tudo uma questão de dinheiro. Se a automatização de cenários de teste de regressão economiza dinheiro sem perder a qualidade do produto, então pode-se alargar o leque de cenários automatizados, elevando a qualidade do produto e reduzindo custos. O ponto de equilíbrio é uma decisão de cada um de nós e depende da experiência e das preferências pessoais.

--------------------------------