Procure bugs como um modo de vida


O desenvolvimento de analisadores de código estático e a luta pela qualidade de projetos de código aberto por mais de seis anos não podem deixar de afetar minha interação com os programas após o expediente. Infelizmente, encontro constantemente vários bugs e, ainda mais, é quase impossível influenciar isso. Decidi coletar algumas histórias sobre bugs interessantes e suas correções ou ignorações. Apresento a você um formato alternativo para um artigo sobre como encontrar erros em programas que geralmente preenchem o blog do PVS-Studio.

1. Introdução


Na vida cotidiana, já usamos sites e aplicativos móveis com mais frequência do que aplicativos de computador. Existem muito poucos projetos de código aberto nessa área. A maioria dos projetos são produtos de grandes empresas com várias linhas de suporte. Relatar um bug através da primeira linha de suporte é uma atividade quase inútil. O problema é especialmente grave com aplicativos bancários. E os sites? Os proprietários de sites geralmente não têm uma equipe de desenvolvimento. E se um serviço é fornecido pelo site, a comunicação com os gerentes desses serviços fica ainda pior do que com a primeira linha de suporte. As histórias mais interessantes estarão abaixo. Espero que eles ajudem as empresas a prestarem atenção à qualidade de seus produtos de software.

Erros nos sites


Canal de TV 2x2



Talvez 2x2 seja o único canal de TV que eu assisto. Não conectei nenhuma televisão e fiquei muito satisfeito quando a transmissão ao vivo apareceu no site. Ter uma TV com acesso à Internet, era uma solução ideal para eu assistir canais de TV online. Mas, na realidade, acabou sendo muito mais complicado.

Viver através do navegador na TV não funcionou. Porque relatar bugs para desenvolvedores faz parte da minha carreira, encontrei rapidamente contatos no site oficial e tentei relatar um problema. Por que você tentou? Durante 2 meses, não foi possível receber respostas de dois endereços para correspondência. E o grupo VK não respondeu nada sensato (o profissional de marketing, promovendo o grupo nas redes sociais, claramente não estava de acordo comigo com um site que não funcionava).

Mas não me desesperei. O problema estava claramente na transmissão e eu consegui rastreá-lo. Ela veio de servidores Rutube. Demorou cerca de um mês para tentar entrar em contato com os especialistas. A comunicação mais bem-sucedida aconteceu com o administrador do grupo Rutube em VK. Recebi os contatos do administrador do sistema. Seu colega respondeu prontamente à carta e concordamos em nos conectar para registrar os registros. Verificou-se que o servidor não estava configurado para um cliente conectado (TV com Tizen). Demorou 2 horas para resolver o problema. Agradecimentos a Alexei Lebedev, da Rutube, e ao administrador do grupo em VK, que foram os únicos que reagiram com responsabilidade ao seu trabalho em toda essa cadeia de “contatos”.

Restaurante MaMa Mia



No site MaMa Mia , você não pode pagar por um pedido on-line. Pelo menos não deu certo para mim. E o motivo, como se viu depois, é a má qualidade do código. Mas vamos colocá-lo em ordem.

Quando a cesta estava totalmente formada, o botão "Fazer um pedido" não mostrava sinais de vida. E então no correio eu encontrei isso:


Cada clique no botão "inativo" formou um novo pedido. Como você pode ver, não me neguei o prazer de testar completamente esse bug: D

Não há nenhum formulário de feedback no site e outros contatos, exceto o telefone. É claro que existem gerentes que estão longe de tais problemas. Com o grupo VK deste restaurante a mesma situação. Não consegui contatos mais ou menos relevantes.

De fato, esse é um problema sério para os negócios, quando algumas falhas, principalmente nas finanças (eu queria pagar pelo pedido, mas não podia), permanecem invisíveis para a gerência. Além disso, até nós mesmos recentemente conseguimos entrar em uma situação semelhante quando o formulário de solicitação da chave de teste foi interrompido por cinco dias. Lamentamos muito os usuários perdidos :( E no restaurante, aparentemente não.

Como não recebi nenhum feedback da comunicação com os gerentes, abri o console do navegador e comecei a procurar (a propósito, eu mal entendo o desenvolvimento da Web):

Sim, esta é uma exceção não capturada! Que beleza. É aqui que um analisador estático pode ajudar.

Usando algumas consultas, o mecanismo de pesquisa conseguiu descobrir que esse é um contador para o Yandex.Metrica. A interpretação da página simplesmente para após a falha de qualquer componente externo. Como se costuma dizer, muitos rublos foram alocados para o desenvolvimento ... Então, por que a exceção é lançada? Uma extensão do Kaspersky Protect foi instalada no meu navegador. Desativar todos os tipos de beacons e contadores, aparentemente, está protegido contra rastreamento, ativado por padrão. Essa foi a causa do problema. Encomendei comida em outro site tecnicamente mais avançado.

Infelizmente, esse problema é bastante comum. Somente após esse incidente, percebi o comportamento incompreensível de outros sites que conheci. Espero que os desenvolvedores da Web que vieram para este artigo tenham mais experiência.

LK Rostelecom




Provavelmente, todo russo tem um histórico de comunicação "interessante" com representantes da Rostelecom. Mas o meu será sobre um pequeno bug. Em apoio, eles responderam que não pensavam assim, mas os programadores entenderiam a piada.

Captura de tela da minha conta pessoal:

Qual é o "n" nas iniciais? É isso mesmo, é NULL ! .. Porque nem todo mundo tem um nome do meio, você não pode especificá-lo:

O banco de dados armazena um valor NULL , os representantes da Rostelecom consideram normal exibir esse valor na tela. Na minha opinião, isso é completamente anormal. Talvez eu esteja pensando apenas como programador C ++, e esse valor me assusta: D

Aplicativos móveis


Passageiros da Russian Railways



Um erro interessante foi encontrado no aplicativo móvel Russian Railways.

Tela de um aplicativo móvel:

Eu li as respostas para as perguntas e não entendi nada. Os textos eram completamente incoerentes. Mas depois de uma página, tudo ficou claro:

Os parágrafos da documentação foram armazenados em uma matriz e exibidos em ordem inversa . O desenvolvedor estragou algo com os contadores de classificação ou loop no código. Na versão mais recente do aplicativo, esse bug foi corrigido.

VTB-Online



Era um banco maravilhoso, com uma aplicação conveniente. Mas no verão de 2019, aparentemente, o gerente "eficaz" chegou à equipe e o aplicativo foi mal. A maior vantagem para mim foi o suporte conveniente e rápido. Mas no verão de 2019, as experiências começaram com o bot no chat de suporte. Este bot era muito buggy. Por pelo menos três meses, houve uma grande dessincronização no bate-papo de suporte. Ninguém respondeu às mensagens, o bate-papo estava vazio e, após reiniciar o aplicativo, descobriu-se que o bate-papo estava cheio de mensagens de bot, mas elas foram exibidas apenas após uma reinicialização. Mas a sessão já estava fechada e, com a próxima mensagem, o mesmo bug foi repetido. Por email, o suporte ao VTB sempre respondeu rapidamente, mas não fez nada em essência.

A última gota para mim foi outro bug no chat de suporte, que ainda não foi corrigido:

O aplicativo estupidamente não baixa capturas de tela do telefone em que o aplicativo está sendo executado. Esta é uma falha épica. Recusei os cartões bancários e reduzi ao mínimo a atividade restante no banco.

Sberbank Online



Provavelmente o banco mais bancário da Rússia. O tempo médio para corrigir um erro confirmado nos meus muitos anos de prática é de 1 ano .

Aqui está o caso mais flagrante, na minha opinião.

Ao transmitir as leituras dos dispositivos de medição para pagamento de moradia e serviços comunitários (a seguir ZhKU), uma surpresa desagradável espera por você:

Surge imediatamente a pergunta por que meus dados não foram aceitos, mas uma olhada na captura de tela a seguir explica tudo:

Além disso, explicarei: as leituras de PU são feitas com um ponto e, para entrada no teclado, existe apenas um símbolo de "vírgula".

Esse bug interferiu francamente no uso do aplicativo, e muitas vezes entrei em contato com o suporte para corrigi-lo. Desde a descoberta, o bug durou 6 meses (fevereiro-junho). Em seguida, na atualização de julho, foi corrigido ativando o teclado padrão. Mas este não é o fim da história! No mês seguinte (agosto), na próxima atualização do aplicativo, o teclado foi retornado sem o caractere desejado! Não sei o que poderia ter acontecido na equipe de desenvolvimento, que tive que fazer uma reversão dessas alterações, mas parei de usar o banco. Este foi um dos muitos erros, e eles praticamente não são corrigidos.

Conexão com a busca de erros no código


A aparência dos problemas e erros descritos tem alguns motivos. Essas são falhas no processo de desenvolvimento de programas, bem como na organização do trabalho dos funcionários como um todo. Desde a escrita do código até a entrega do aplicativo ao usuário, há várias etapas.

Os problemas identificados são, em primeiro lugar, a aprovação dos departamentos de teste. Nas grandes empresas, essas geralmente são grandes equipes de teste. Mas sua eficácia pode sofrer de vários fatores.

Um dos fatores importantes que pioram o trabalho dos testadores são os erros que podem ser corrigidos mesmo no estágio de escrita do código. O processamento de erros encontrados leva tempo para algumas pessoas. Mas alguns deles podem não alcançar os testadores, o que, por sua vez, economiza o tempo dos testadores. Eles o teriam gasto em testes mais produtivos e de nível superior.

Portanto, nossa equipe de desenvolvedores do analisador de código PVS-Studio promove a metodologia de análise estática. Essa é a fase de desenvolvimento de software que enfrenta a transferência do aplicativo para o departamento de testes. Em nossa experiência, a maioria dos erros são falhas na fase de desenvolvimento. E eles podem ser corrigidos em um estágio inicial, economizando tempo e dinheiro.

Infelizmente, diferentemente dos programas de código aberto, aqui não tenho como verificar independentemente o código quanto a erros. Mas se o código for escrito em C, C ++, C # ou Java, seria útil que esses comandos fossem para o site e executassem o analisador no seu código. Para programas de código aberto, essa ferramenta oferece uma grande contribuição .

Conclusão


Não pararei de perceber bugs no software usado. Provavelmente não é a pior coisa que poderia ter acontecido. Tenho amigos que trabalham no cinema (animação). Então eles percebem erros ao assistir desenhos animados, e isso é inconveniente. Na minha opinião, isso é ainda pior. Pelo menos os programas podem ser modificados, diferentemente das imagens.

Como você notou, com o suporte ao usuário, tudo está completamente ruim. Além disso, isso é típico para grandes empresas. É quase impossível para eles comunicar algo e compartilhar sua experiência. Consegui algum sucesso ao participar de conferências de desenvolvedores. Muitas vezes, grandes empresas estão presentes lá, e algumas questões podem realmente ser discutidas e resolvidas.

Se você gosta do novo formato para revisar bugs e histórias com eles, continuarei na mesma linha.

Source: https://habr.com/ru/post/pt483742/


All Articles