Bug no Gmail

Estava desenvolvendo a funcionalidade de aplicação de tags para as menções no Vizir, e durante o desenvolvimento tomei como base do comportamento dessa funcionalidade,  a aplicação de labels do Gmail.

Durante o estudo do funcionamento da criação dos labels no Gmail, acabei encontrando um bug interessante, que mostra bem como nem sempre podemos cobrir todas as situações de erro, uma vez que elas são muitas.

Para quem não conhece essa funcionalidade do Gmail ou não usa o Gmail, segue uma breve explicação sobre ela:

Você quer aplicar um label (marcação) para um e-mail, por exemplo: todos os e-mails de promoções com o label “promoções”. O que essa funcionalidade faz, é exatamente prover uma maneira de aplicar labels aos seus e-mails.

Vamos direto em como reproduzir o bug:

  1. Clique no checkbox ao lado do e-mail que você quer aplicar o label;
  2. Clique no combo-box Labels;
  3. Clique na opção Create new (um pop-up irá aparecer);
  4. Digite o nome do seu label e clique no botão OK (“OK” para um botão de criação é estranho hein, poderíamos sugerir uma melhoria).

Pronto, viu o bug? Não?

Sem um screenshot fica difícil, neh. Segue abaixo uma imagem com cada passo feito, clique nela para visualizar numa resolução maior .

E agora viu o “danado”?

Se você nunca usou essa funcionalidade dessa maneira (tem como usar ela criando filtros pré-definidos), está descontado. Mas se você já usou deve/deveria ter reparado que faltou algo.

Quando você aplica um label na mensagem duas coisas acontecem:

  • Uma mensagem aparece em cima da box dos e-mails, avisando que a “conversação” foi adicionada no label (The conversation has been added to “qualidadebr”.)
  • O e-mail/conversação é marcado com o label.

O que faltou foi a segunda forma de notificação, o label não foi adicionado no e-mail (visualmente, se você atualizar a página irá visualizar o e-mail com o novo label). O interessante que esse bug só ocorre quando você aplica um novo label ao e-mail, se você for aplicar um label já existente, o bug não irá ocorrer.

Abaixo, o resultado esperado:

Pelas entranhas do bug

Com a explicação acima um bom desenvolvedor já iria descobrir o porquê do bug existir.

O que ocorre por de trás das câmeras quando você aplica um label ao e-mail, é que uma atualização via AJAX é feita em duas partes da página: no div da mensagem e no div dos labels.

O problema não é que a atualização não é feita no div dos labels, e sim que o elemento não é adicionado, provavelmente porque o novo label não foi adicionado na varíavel que contém os labels.

E como saber tudo isso?

Te contar que nem precisa entender muito de Javascript e HTML. Utilizando o formidável Firebug você já consegue observar esse comportamento. Difícil é entender o HTML gerado pelo javascript do Gmail (se estiver curioso em entender um pouco como o Gmail funciona esse artigo pode ser útil).

Como solucionar esse bug?

Eu passei pelo mesmo problema na implementação da funcionalidade de aplicação de tags nas menções no Vizir. A solução que encontrei foi dá um refresh na página, quando uma nova tag é inserida. Desta forma, o objeto que armazena os labels já é atualizado com o novo label.

Não deve ser a solução mais linda e elegante, talvez seja possível atualizar a lista de labels do combo-box, via Javascript. Mas como eu não sei fazer isso (preciso dá uma pesquisada se é possível e como fazer [canelada pra mim]),  e essa solução se comportou bem e foi eficiente para o problema que enfrentei. 🙂

Como esse bug escapou dos jardins do Google?

Sou usuário do Gmail desde 2007, e desde lá, só uso ele como cliente de e-mail, tanto para uso pessoal como profissional. E só no começo desse mês que encontrei esse bug.

Ou seja, acredito que este bug não se apresenta com tanta frequência, pois nem todos usuários utilizam esse recurso (diria até, que uma minoria utiliza). Além disso, o uso mais frequente dos labels, pelo menos o uso que mais faço e vejo as pessoas fazerem, é na criação dos filtros.

E a equipe de Teste de Software do Gmail, por que será que eles não encontraram esse bug?

Tenho duas especulações quanto a isso:

  • Encontraram o bug, porém como a sua ocorrência não é tão frequente e sua presença não atrapalha muito o usuário, o bug ainda não foi corrigido (tá na fila no bugtracking deles, com prioridade baixa);
  • Não encontraram, pois não tinham um caso de teste que cobria esse cenário.

A grande lição que podemos tirar com esse bug, é que um sistema pode muito bem ir para produção, ser super bem elogiado pelos usuários e mesmo assim conter dezenas de bugs (eu conheço uns 3 ou 4 só do Gmail rs). Se você for querer ser perfeccionista ao extremo, você nunca irá colocar um sistema em produção. Um sistema sem bugs não é algo comum, e esse fato é até justificável, é só olhar para as pessoas que desenvolvem e usam os sistemas, elas são perfeitas?

Fique por dentro das novidades, assine o feed do QualidadeBR.

Por que Testador é uma profissão tão desejada?

Na era da informação em que vivemos, uma das profissões mais cobiçadas é a de Testador. Ops, ela não é? Sério?

Infelizmente a profissão de Testador não é tão bem vista fora da área de Teste de Software. Mas não é para menos neh? A começar pelo nome: quando alguém pergunta a sua profissão, você fala Analista de Teste não é? No máximo, você fala que é um Tester, mas nunca Testador.

Uma pena que as pessoas tenham uma visão errada da profissão de Testador, afinal, para muitos ela é uma função que se resumi em executar tarefas repetitivas.

Tolos, mal sabem as maravilhas e exigências dessa profissão.

Estou falando sério, você não irá encontrar nenhum bazinga nós próximos parágrafos. Irei percorrer pelas maravilhas e exigências dessa profissão que deveria ser muito mais valorizada.

O Testador é um ser bipolar por natureza, ele vive num território onde se exige que ele tenha tanto a visão de um usuário, como a de um desenvolvedor. Digamos que ele está no meio do fogo cruzado entre os desenvolvedores e os usuários do sistema.

Ao longo de sua carreira essa bipolaridade, vai se transformando em multipolaridade. Pois o profissional percebe, que há vários tipos de usuários que podem usar o sistema, e portanto ele deve se colocar no papel de cada perfil de usuário.

Logo se nota que para ser um Testador é preciso de um grande talento e vocação para a arte cênica, a diferença é que o Testador pode ser o roteirista, o diretor e o ator ao mesmo tempo.

Em algumas cenas o Testador necessita de dublês e às vezes até um exército de figurantes.

E para poder receber o Oscar, o Testador necessita de criatividade, e até Tarantino ficaria sem entender o fluxo do filme do Testador.

O Testador não só salva a mocinha no final, como captura o bandido e tudo isso no menor números de passos possíveis.

Outra característica do Testador é seu faro e capacidade de exploração. Nem Indiana Jones poderia encontrar o bug perdido, apenas o Testador. Ele consegue ir por caminhos, que até os desenvolvedores duvidam, vasculhar os cantos obscuros da galáxia e estar sempre atento ao detalhes.

O Testador nunca está num dia de fúria, pois a calma e paciência fazem parte do seu arsenal.

Essa profissão em muitos momentos exige o entendimento do ser humano, e por isso não é difícil encontrar o Testador fazendo papel de psicólogo ao explicar uma falha ao desenvolvedor ou ao contar que uma falha grave foi encontrado às vésperas do sistema entrar em produção.

Suas qualidades na exploração também são usadas na pesquisa, pois o seu trabalho exige muitas pesquisas e ele está sempre aprendendo técnicas e ferramentas novas.

Investigações fazem parte da rotina desse profissional, que necessita colher o maior número de evidências para descobrir como a falha ocorreu, muitas dessas são dignas de casos do CSI e nem Dr. House conseguiria encontrar o que está causando a doença no sistema.

Tentar sintetizar o que esse profissional faz é uma missão difícil, mas podemos dizer, que o seu trabalho resumi em obter informações. Porém, assim como Clark Kent ele é também capaz de salvar o dia. (infelizmente o Testador não voa)

Sendo o Teste de Software um processo infinito de comparar o invísivel com o ambíguo, a fim de evitar que o impensável ocorra para o anônimo[1], tal profissional realmente necessita ser um super-heroí.

Porém, diferente da maioria dos super-heroís, a sua identidade não pode ficar anônima e ele não deve salvar o mundo sozinho. Precisamos valorizar o Testador, pois ele é capaz de evitar verdadeiras tragédias.

Fique por dentro das novidades, assine o feed do QualidadeBR.

[1] Tradução livre de uma das definições (a mais precisa na minha opinião) do Teste de Software, feita pelo James Bach. (“Testing is the INFINITE PROCESS of comparing the INVISIBLE to the AMBIGUOUS so as to avoid the UNTHINKABLE happening to the ANONYMOUS!).