Categories: Técnicas e Métodos

[caso Ingresso.com] – A importância dos testes não funcionais

Muitas vezes nos preocupamos tanto com os Testes Funcionais (principalmente quem faz uso de metodologias ágeis) que não reservamos tempo para testes não funcionais como testes de segurança, de desempenho, de usabilidade entre outros.

Foi exatamente isto que muitas pessoas pensaram quando viram o ‘escândalo’ causado por Marco Agner através das suas descobertas de falhas no site ingressos.com.

Em seu blog ele publicou em 03 de maio de 2014, falhas de segurança no site do serviço prestado pela empresa Ingressos.com caracterizando como falhas críticas por dois motivos:

  • Expõem informações de clientes;
  • Coloca em risco o principal serviço oferecido;

Estas falhas, apensar de extremamente graves, nada mais é que descobrir o ID de um parâmetro GET recebido por um arquivo .php.

Explicando melhor o comando GET, basicamente é você ter uma URL parecida com isto:

http://exemplo.com.br/arquivoexemplo.php?nome=ROGER

E alterar os valores correspondentes com o que você procura, no exemplo acima estou buscando os dados de ‘ROGER’ , se eu quiser ver os dados do
Paulo, alteramos para ‘PAULO’ ao invés de ‘ROGER’ , se eu quiser ver os dados da Maria, então portanto, ‘MARIA’ ao invés de ‘ROGER’.

Ex.: http://exemplo.com.br/arquivoexemplo.php?nome=PAULO
Ex.: http://exemplo.com.br/arquivoexemplo.php?nome=MARIA

Agora, a descoberta do autor que foi a grande jogada, veja como era banal:

Esta é a impressão de um ingresso, isto mesmo, ingresso!

Perceba acima o ‘ID’ com o número: 29042014 28557363 359458690931, e agora veja os dados da compra que ele realizou:

Buscando o ID novamente então: 29042014 28557363 359458690931, logo na primeira visualização já percebe-se que os primeiros dígitos são a data e os últimos dígitos são a hora que o usuário efetuou a compra. Portanto agora faltava descobrir os outros números que foram encontrados no código, como mostra o autor através de uma imagem:

Ok, código descoberto, alterasse para o código de uma outra pessoa e pimpa! Abre o ingresso meu, seu, de quem quiser. Além disto o autor destaca que poderia alterar o código ilustrado na imagem acima e sem informar os outros dígitos que também funcionava.

O post original de Marco Agner está disponível através deste link. (Acessado em 04/03/2015)

Ou em forma de impressão (.pdf) através deste link.

Repercussão

A falha descoberta por Agner teve grande repercussão especialmente nos sites da INFO e EXAME onde impulsionaram a notícia do feito do autor.

Veja na INFO através deste link.

Veja na EXAME através deste link.

Equipes Ágeis x Testes não funcionais

Equipes ágeis inicialmente tendem a garantir a funcionalidade dos incrementos para depois atacar as não funcionalidades como segurança e desempenho, por exemplo. Isto quando o ‘Líder de Testes’ traça este tipo de estratégia.

Este assunto já é bastante antigo, Scott Ambler causou muita discussão quando ele declarou em 2008: “O conceito de product backlog do Scrum
funciona bem para requisitos funcionais simples, mas… se torna insuficiente para requisitos não-funcionais e restrições de arquitetura.” através deste artigo no site Dr.Dobb’ s.

Seu artigo também teve bastante repercussão naquela época especialmente no Scrum Development Yahoo Group (Grupo de Desenvolvimento em Scrum do Yahoo) no qual uma das soluções para este tipo de problema foi que os requisitos deste tipo seriam tratados na ‘Definição de Pronto’ do time. Isto é, cada história não é considerada pronta até que tenha sido determinado que a implementação da estória satisfaça o requisito não funcional, de desempenho, por exemplo. Esta análise seria feita através de um processo de revisão e/ou testes de carga.

Conclusão

Testes não funcionais são sempre muito importantes, como Agner nos mostrou, o que ocorre é que algumas empresas ainda não perceberam a importância da Qualidade de Software em seu processo de desenvolvimento, empresas com fluxo muito intenso como a I ngresso.com, no exemplo de Agner, deve-se realizar testes não funcionais para não deixar lacunas como o desenvolvedor encontrou. Portanto é provado que existem problemas na equipe de Qualidade de Software desta empresa.

Provavelmente um usuário leigo não encontraria as falhas que o desenvolvedor encontrou, mesmo assim ainda continua sendo uma falha encontrada e repercutida no ambiente de produção no qual os custos desta falha serão bastante alto, pois não pode-se dizer que a utilização dos serviços desta empresa são seguros na presente data.

Considero o teste funcional o mais importante pois antes de realizar qualquer validação sobre um incremento devemos saber se ele cumpre os requisitos estabelecidos, ao efetuar testes não funcionais a um incremento no qual seus requisitos não foram validados corre-se o risco da
entrega ser falha e consequentemente um incremento não utilizável. Portanto, antes de qualquer teste, sugiro o teste funcional para após deste providenciar os testes não funcionais.

Concorda com isto? (comente abaixo)

Roger Ritter

Em 2009, iniciou a sua trajetória em busca da Qualidade de Software em Passo Fundo/RS onde se formou em Ciência da Computação pela UPF. Após, iniciou pesquisas relacionadas a BDD (Behavior Driven Development), buscando mais agilidade em ambientes ágeis de desenvolvimento (com framework Scrum e Kanban). Em 2018, concluiu o título de Mestre pela Universidade Federal do Rio Grande do Sul (UFRGS) e obteve o certificado internacional de atuação em Qualidade de Software (04075-BR ISTQB). Roger sempre esteve em contato com a área profissional aplicando técnicas e métodos ágeis na prática, em empresas como a Dell, Globo, Unimed, Banrisul e outras. É CEO Founder, da empresa Orni.com.br onde também aplica metodologias ágeis e qualidade de software agindo, na prática, com problemas cotidianos da indústria de software. Roger Ritter Em jul/2020

Últimas Notícias

Teste de Software – Modelo Relato de Defeito

O relato de BUG é sempre desafiador, pois alguns confiam em ferramentas, outros em post it's e até alguns no…

4 anos atrás

Teste de Software em Sistemas do Tribunal de Justiça no Mato Grosso do Sul

Em Campo Grande-MS, no EJUD (Escola Judicial do Estado do Mato Grosso do Sul), Roger Ritter ministrou 4 módulos do…

4 anos atrás

Palestra sobre Scrum na Uniderp de Campo Grande-MS

Convidado pela UNIDERP, na cidade de Campo Grande - MS, Roger Ritter palestrou para mais de 350 alunos sobre Scrum.…

4 anos atrás

[Dissertação] Reúso de cenários BDD para minimizar o esforço de migração de testes para a plataforma Android

Olá, ainda estou construindo este artigo. Mas para você não ficar sem conteúdo, acesse a minha Dissertação Publicada UFRGS

4 anos atrás

Teste de Software em Urnas Eletrônicas no Tribunal Regional Eleitoral de Aracaju-SE

Em jun/2018 Roger Ritter ministrou o curso de planejamento de teste de software para urnas eletrônicas em Aracaju, no estado…

4 anos atrás

Quality Assurance Vs Quality Control

Recentemente, em uma breve apresentação busquei explicar dois tipos conhecidos de profissionais de Qualidade de Software, o mais conhecido QA…

9 anos atrás